aboutsummaryrefslogtreecommitdiff
path: root/plugins/ObjectCacheServer/src/ObjectCacheServerEntry.cs
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2024-03-10 16:46:50 -0400
committerLibravatar vnugent <public@vaughnnugent.com>2024-03-10 16:46:50 -0400
commite5bb0ee302e789cb96e7ecfe839cbbcc8e3fd5d7 (patch)
tree6f4d824eaea0f4c433f98c0685bf66c06b30e16a /plugins/ObjectCacheServer/src/ObjectCacheServerEntry.cs
parent6b87785026ca57d6f41cff87ddbd066362f3cacc (diff)
Squashed commit of the following:
commit 2f7565976472f0f056db60520bf253a776112c10 Merge: 323ff67 6b87785 Author: vnugent <public@vaughnnugent.com> Date: Sun Mar 10 16:45:23 2024 -0400 merge master commit 323ff67badfc46ad638d75f059d60d9425ccb2fa Author: vnugent <public@vaughnnugent.com> Date: Sun Mar 10 15:50:07 2024 -0400 ci(server): Conainerize and add vncache server packages commit 5d4192880654fd6e00e587814169415b42621327 Author: vnugent <public@vaughnnugent.com> Date: Sat Mar 9 19:13:21 2024 -0500 chore: #2 Minor fixes and polish before release commit a4b3504bb891829074d1efde0433eae010862181 Author: vnugent <public@vaughnnugent.com> Date: Sat Mar 9 16:30:44 2024 -0500 package updates commit 4d8cfc10382105b0acbd94df93ad3d05ff91db54 Author: vnugent <public@vaughnnugent.com> Date: Wed Mar 6 21:30:58 2024 -0500 refactor: #2 Centralize server state, default discovery endpoints & more commit 016a96a80cce025a86c6cf26707738f6a2eb2658 Author: vnugent <public@vaughnnugent.com> Date: Thu Feb 29 21:22:38 2024 -0500 feat: add future support for memory diagnostics, and some docs commit 456ead9bc8b0f61357bae93152ad0403c4940101 Author: vnugent <public@vaughnnugent.com> Date: Tue Feb 13 14:46:35 2024 -0500 fix: #1 shared cluster index on linux & latested core updates commit a481d63f964a5d5204cac2e95141f37f9a28d573 Author: vnugent <public@vaughnnugent.com> Date: Tue Jan 23 15:43:50 2024 -0500 cache extension api tweaks
Diffstat (limited to 'plugins/ObjectCacheServer/src/ObjectCacheServerEntry.cs')
-rw-r--r--plugins/ObjectCacheServer/src/ObjectCacheServerEntry.cs71
1 files changed, 31 insertions, 40 deletions
diff --git a/plugins/ObjectCacheServer/src/ObjectCacheServerEntry.cs b/plugins/ObjectCacheServer/src/ObjectCacheServerEntry.cs
index aada787..42bd0c7 100644
--- a/plugins/ObjectCacheServer/src/ObjectCacheServerEntry.cs
+++ b/plugins/ObjectCacheServer/src/ObjectCacheServerEntry.cs
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2023 Vaughn Nugent
+* Copyright (c) 2024 Vaughn Nugent
*
* Library: VNLib
* Package: ObjectCacheServer
@@ -23,13 +23,11 @@
*/
using System;
-using System.Threading;
using System.Collections.Generic;
using VNLib.Plugins;
-using VNLib.Utils.Memory;
+using VNLib.Utils;
using VNLib.Utils.Logging;
-using VNLib.Utils.Memory.Diagnostics;
using VNLib.Plugins.Extensions.Loading;
using VNLib.Plugins.Extensions.Loading.Routing;
@@ -43,38 +41,15 @@ namespace VNLib.Data.Caching.ObjectCache.Server
{
public override string PluginName => "ObjectCache.Service";
- private readonly Lazy<IUnmangedHeap> _cacheHeap;
-
- internal IUnmangedHeap ListenerHeap => _cacheHeap.Value;
-
- public ObjectCacheServerEntry()
- {
- //Init heap
- _cacheHeap = new Lazy<IUnmangedHeap>(InitializeHeap, LazyThreadSafetyMode.PublicationOnly);
- }
-
- internal IUnmangedHeap InitializeHeap()
- {
- //Create default heap
- IUnmangedHeap _heap = MemoryUtil.InitializeNewHeapForProcess();
- try
- {
- //If the plugin is in debug mode enable heap tracking
- return this.IsDebug() ? new TrackedHeapWrapper(_heap, true) : _heap;
- }
- catch
- {
- _heap.Dispose();
- throw;
- }
- }
+ ObjectCacheSystemState? sysState;
protected override void OnLoad()
{
try
{
- //Get the node configuration first
- NodeConfig config = this.GetOrCreateSingleton<NodeConfig>();
+ //Initialize the cache node builder
+ sysState = this.GetOrCreateSingleton<ObjectCacheSystemState>();
+ sysState.Initialize();
//Route well-known endpoint
this.Route<WellKnownEndpoint>();
@@ -85,8 +60,8 @@ namespace VNLib.Data.Caching.ObjectCache.Server
//We must initialize the replication manager
_ = this.GetOrCreateSingleton<CacheNodeReplicationMaanger>();
- //Setup discovery endpoint
- if(!string.IsNullOrWhiteSpace(config.DiscoveryPath))
+ //Setup discovery endpoint only if the user enabled clustering
+ if(!string.IsNullOrWhiteSpace(sysState.ClusterConfig.DiscoveryPath))
{
this.Route<PeerDiscoveryEndpoint>();
}
@@ -101,18 +76,34 @@ namespace VNLib.Data.Caching.ObjectCache.Server
protected override void OnUnLoad()
{
- //dispose heap if initialized
- if(_cacheHeap.IsValueCreated)
- {
- _cacheHeap.Value.Dispose();
- }
-
Log.Information("Plugin unloaded");
}
protected override void ProcessHostCommand(string cmd)
{
- throw new NotImplementedException();
+ if(string.IsNullOrWhiteSpace(cmd))
+ {
+ return;
+ }
+
+ ArgumentList al = new(cmd.Split(" "));
+
+ if(al.Count == 0)
+ {
+ Log.Warn("Invalid command");
+ return;
+ }
+
+ switch (al[0].ToLower(null))
+ {
+ case "memstats":
+ sysState?.LogMemoryStats();
+ break;
+
+ default:
+ Log.Warn("Invalid command");
+ break;
+ }
}
}
}