aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/zenserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenserver/zenserver.cpp')
-rw-r--r--src/zenserver/zenserver.cpp49
1 files changed, 36 insertions, 13 deletions
diff --git a/src/zenserver/zenserver.cpp b/src/zenserver/zenserver.cpp
index ebc56d7d9..66b6cb858 100644
--- a/src/zenserver/zenserver.cpp
+++ b/src/zenserver/zenserver.cpp
@@ -54,8 +54,18 @@ ZEN_THIRD_PARTY_INCLUDES_END
#include "config.h"
#include "diag/logging.h"
+#include <zencore/memory/llm.h>
+
namespace zen {
+static const FLLMTag&
+GetZenserverTag()
+{
+ static FLLMTag _("zenserver");
+
+ return _;
+}
+
namespace utils {
extern std::atomic_uint32_t SignalCounter[NSIG];
}
@@ -117,6 +127,7 @@ ZenServer::OnReady()
int
ZenServer::Initialize(const ZenServerOptions& ServerOptions, ZenServerState::ZenServerEntry* ServerEntry)
{
+ ZEN_MEMSCOPE(GetZenserverTag());
const std::string MutexName = fmt::format("zen_{}", ServerOptions.BasePort);
if (NamedMutex::Exists(MutexName))
@@ -232,19 +243,22 @@ ZenServer::Initialize(const ZenServerOptions& ServerOptions, ZenServerState::Zen
ZEN_INFO("instantiating project service");
- m_ProjectStore =
- new ProjectStore(*m_CidStore,
- m_DataRoot / "projects",
- m_GcManager,
- *m_JobQueue,
- ProjectStore::Configuration{.StoreAttachmentMetaData = ServerOptions.ProjectStoreConfig.StoreAttachmentMetaData});
+ m_ProjectStore = new ProjectStore(*m_CidStore,
+ m_DataRoot / "projects",
+ m_GcManager,
+ *m_JobQueue,
+ *m_OpenProcessCache,
+ ProjectStore::Configuration{});
m_HttpProjectService.reset(new HttpProjectService{*m_CidStore, m_ProjectStore, m_StatsService, *m_AuthMgr});
if (ServerOptions.WorksSpacesConfig.Enabled)
{
m_Workspaces.reset(new Workspaces());
m_HttpWorkspacesService.reset(
- new HttpWorkspacesService(m_StatsService, {.SystemRootDir = ServerOptions.SystemRootDir}, *m_Workspaces));
+ new HttpWorkspacesService(m_StatsService,
+ {.SystemRootDir = ServerOptions.SystemRootDir,
+ .AllowConfigurationChanges = ServerOptions.WorksSpacesConfig.AllowConfigurationChanges},
+ *m_Workspaces));
}
if (ServerOptions.StructuredCacheConfig.Enabled)
@@ -318,10 +332,11 @@ ZenServer::Initialize(const ZenServerOptions& ServerOptions, ZenServerState::Zen
.DiskSizeSoftLimit = ServerOptions.GcConfig.DiskSizeSoftLimit,
.MinimumFreeDiskSpaceToAllowWrites = ServerOptions.GcConfig.MinimumFreeDiskSpaceToAllowWrites,
.LightweightInterval = std::chrono::seconds(ServerOptions.GcConfig.LightweightIntervalSeconds),
- .UseGCVersion = ServerOptions.GcConfig.UseGCV2 ? GcVersion::kV2 : GcVersion::kV1,
+ .UseGCVersion = ServerOptions.GcConfig.UseGCV2 ? GcVersion::kV2 : GcVersion::kV1_Deprecated,
.CompactBlockUsageThresholdPercent = ServerOptions.GcConfig.CompactBlockUsageThresholdPercent,
.Verbose = ServerOptions.GcConfig.Verbose,
- .SingleThreaded = ServerOptions.GcConfig.SingleThreaded};
+ .SingleThreaded = ServerOptions.GcConfig.SingleThreaded,
+ .AttachmentPassCount = ServerOptions.GcConfig.AttachmentPassCount};
m_GcScheduler.Initialize(GcConfig);
// Create and register admin interface last to make sure all is properly initialized
@@ -518,15 +533,14 @@ ZenServer::InitializeStructuredCache(const ZenServerOptions& ServerOptions)
Config.NamespaceConfig.DiskLayerConfig.MemCacheTargetFootprintBytes = ServerOptions.StructuredCacheConfig.MemTargetFootprintBytes;
Config.NamespaceConfig.DiskLayerConfig.MemCacheTrimIntervalSeconds = ServerOptions.StructuredCacheConfig.MemTrimIntervalSeconds;
Config.NamespaceConfig.DiskLayerConfig.MemCacheMaxAgeSeconds = ServerOptions.StructuredCacheConfig.MemMaxAgeSeconds;
- Config.NamespaceConfig.DiskLayerConfig.BucketConfig.StoreAttachmentMetaData =
- ServerOptions.StructuredCacheConfig.StoreAttachmentMetaData;
if (ServerOptions.IsDedicated)
{
Config.NamespaceConfig.DiskLayerConfig.BucketConfig.LargeObjectThreshold = 128 * 1024 * 1024;
}
- m_CacheStore = new ZenCacheStore(m_GcManager, *m_JobQueue, m_DataRoot / "cache", Config, m_GcManager.GetDiskWriteBlocker());
+ m_CacheStore = new ZenCacheStore(m_GcManager, *m_JobQueue, m_DataRoot / "cache", Config, m_GcManager.GetDiskWriteBlocker());
+ m_OpenProcessCache = std::make_unique<OpenProcessCache>();
const ZenUpstreamCacheConfig& UpstreamConfig = ServerOptions.UpstreamCacheConfig;
@@ -608,7 +622,8 @@ ZenServer::InitializeStructuredCache(const ZenServerOptions& ServerOptions)
m_StatsService,
m_StatusService,
*m_UpstreamCache,
- m_GcManager.GetDiskWriteBlocker());
+ m_GcManager.GetDiskWriteBlocker(),
+ *m_OpenProcessCache);
m_Http->RegisterService(*m_StructuredCacheService);
m_Http->RegisterService(*m_UpstreamService);
@@ -789,6 +804,7 @@ ZenServer::Cleanup()
m_UpstreamService.reset();
m_UpstreamCache.reset();
m_CacheStore = {};
+ m_OpenProcessCache.reset();
m_HttpWorkspacesService.reset();
m_Workspaces.reset();
@@ -809,6 +825,7 @@ ZenServer::Cleanup()
void
ZenServer::EnsureIoRunner()
{
+ ZEN_MEMSCOPE(GetZenserverTag());
if (!m_IoRunner.joinable())
{
m_IoRunner = std::thread{[this] {
@@ -821,6 +838,7 @@ ZenServer::EnsureIoRunner()
void
ZenServer::EnqueueProcessMonitorTimer()
{
+ ZEN_MEMSCOPE(GetZenserverTag());
m_PidCheckTimer.expires_after(std::chrono::seconds(1));
m_PidCheckTimer.async_wait([this](const asio::error_code&) { CheckOwnerPid(); });
@@ -830,6 +848,7 @@ ZenServer::EnqueueProcessMonitorTimer()
void
ZenServer::EnqueueStateMarkerTimer()
{
+ ZEN_MEMSCOPE(GetZenserverTag());
m_StateMakerTimer.expires_after(std::chrono::seconds(5));
m_StateMakerTimer.async_wait([this](const asio::error_code&) { CheckStateMarker(); });
EnsureIoRunner();
@@ -838,6 +857,7 @@ ZenServer::EnqueueStateMarkerTimer()
void
ZenServer::EnqueueSigIntTimer()
{
+ ZEN_MEMSCOPE(GetZenserverTag());
m_SigIntTimer.expires_after(std::chrono::milliseconds(500));
m_SigIntTimer.async_wait([this](const asio::error_code&) { CheckSigInt(); });
EnsureIoRunner();
@@ -846,6 +866,7 @@ ZenServer::EnqueueSigIntTimer()
void
ZenServer::EnqueueStateExitFlagTimer()
{
+ ZEN_MEMSCOPE(GetZenserverTag());
m_StateExitFlagTimer.expires_after(std::chrono::milliseconds(500));
m_StateExitFlagTimer.async_wait([this](const asio::error_code&) { CheckStateExitFlag(); });
EnsureIoRunner();
@@ -854,6 +875,7 @@ ZenServer::EnqueueStateExitFlagTimer()
void
ZenServer::EnqueueStatsReportingTimer()
{
+ ZEN_MEMSCOPE(GetZenserverTag());
m_StatsReportingTimer.expires_after(std::chrono::milliseconds(500));
m_StatsReportingTimer.async_wait([this](const asio::error_code& Ec) {
if (!Ec)
@@ -868,6 +890,7 @@ ZenServer::EnqueueStatsReportingTimer()
void
ZenServer::CheckStateMarker()
{
+ ZEN_MEMSCOPE(GetZenserverTag());
std::filesystem::path StateMarkerPath = m_DataRoot / "state_marker";
try
{