From 20df215e637491b366f80db325bc36da7531fbd3 Mon Sep 17 00:00:00 2001 From: Camden Narzt Date: Mon, 9 Sep 2024 10:46:04 -0600 Subject: [PATCH] add generation field to process --- .../Core/ApplicationPool/Group/InternalUtils.cpp | 4 ++-- src/agent/Core/ApplicationPool/Process.h | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp b/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp index 034e43ce31..d8250332ad 100644 --- a/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +++ b/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp @@ -178,7 +178,7 @@ Group::createNullProcessObject() { LockGuard l(context->memoryManagementSyncher); Process *process = context->processObjectPool.malloc(); Guard guard(context, process); - process = new (process) Process(&info, args); + process = new (process) Process(&info, info.group->restartsInitiated, args); process->shutdownNotRequired(); guard.clear(); return ProcessPtr(process, false); @@ -215,7 +215,7 @@ Group::createProcessObject(const SpawningKit::Spawner &spawner, LockGuard l(context->memoryManagementSyncher); Process *process = context->processObjectPool.malloc(); Guard guard(context, process); - process = new (process) Process(&info, spawnResult, args); + process = new (process) Process(&info, info.group->restartsInitiated, spawnResult, args); guard.clear(); return ProcessPtr(process, false); } diff --git a/src/agent/Core/ApplicationPool/Process.h b/src/agent/Core/ApplicationPool/Process.h index cd91f2e0e9..c5ad2700ae 100644 --- a/src/agent/Core/ApplicationPool/Process.h +++ b/src/agent/Core/ApplicationPool/Process.h @@ -384,6 +384,10 @@ class Process { /** Last time when a session was opened for this Process. */ unsigned long long lastUsed; + /** Which gereration of app processes this one belongs to, + inherited from the app group, incremented when a restart + is initiated*/ + const unsigned int generation; /** Number of sessions currently open. * @invariant session >= 0 */ @@ -446,8 +450,7 @@ class Process { /** Collected by Pool::collectAnalytics(). */ ProcessMetrics metrics; - - Process(const BasicGroupInfo *groupInfo, const Json::Value &args) + Process(const BasicGroupInfo *groupInfo, const unsigned int gen, const Json::Value &args) : info(this, groupInfo, args), socketsAcceptingHttpRequestsCount(0), spawnerCreationTime(getJsonUint64Field(args, "spawner_creation_time")), @@ -458,6 +461,7 @@ class Process { refcount(1), index(-1), lastUsed(spawnEndTime), + generation(gen), sessions(0), processed(0), lifeStatus(ALIVE), @@ -471,7 +475,7 @@ class Process { indexSocketsAcceptingHttpRequests(); } - Process(const BasicGroupInfo *groupInfo, const SpawningKit::Result &skResult, + Process(const BasicGroupInfo *groupInfo, const unsigned int gen, const SpawningKit::Result &skResult, const Json::Value &args) : info(this, groupInfo, skResult), socketsAcceptingHttpRequestsCount(0), @@ -483,6 +487,7 @@ class Process { refcount(1), index(-1), lastUsed(spawnEndTime), + generation(gen), sessions(0), processed(0), lifeStatus(ALIVE),