Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
// (c) Copyright 2023 Supertenant Ltd. - all rights reserved.
// See LICENSE file in project root for license terms.
"use strict";const fs=require("fs"),EventEmitter=require("events").EventEmitter,internalPidStore=require("./internalPidStore"),agentOpts=require("../agent/opts");let logger;logger=require("../logger").getLogger("pidStore",newLogger=>{logger=newLogger});const eventName="pidChanged",eventEmitter=new EventEmitter;if(exports.onPidChange=eventEmitter.on.bind(eventEmitter,eventName),logger.info("Starting with pid %s",internalPidStore.pid),Object.defineProperty(exports,"pid",{get:function(){return internalPidStore.pid},set:function(newPid){internalPidStore.pid!==newPid&&(logger.info("Changing pid to %s",newPid),internalPidStore.pid=newPid,eventEmitter.emit(eventName,internalPidStore.pid))}}),exports.getEntityId=function(){return internalPidStore.pid},exports.getFrom=function(){return{e:String(exports.pid),h:agentOpts.agentUuid}},!process.env.CONTINUOUS_INTEGRATION){const pidInParentNamespace=getPidFromParentNamespace();pidInParentNamespace&&(internalPidStore.pid=pidInParentNamespace,logger.info("Changing pid to %s due to successful identification of PID in parent namespace",pidInParentNamespace))}function getPidFromParentNamespace(){try{var pidInSchedFile,match=fs.readFileSync(`/proc/${process.pid}/sched`,{encoding:"utf8"}).match(/^[^(]+\((\d+),/im);return match?(pidInSchedFile=parseInt(match[1],10))===process.pid?(logger.debug("PID in sched file matches process.pid. Probably not running inside a PID namespace"),null):pidInSchedFile:(logger.debug("Could not locate PID in sched file"),null)}catch(err){"ENOENT"!==err.code&&logger.warn("PID could not be read from sched file. Reason: %s",err.message)}}