aboutsummaryrefslogtreecommitdiff
path: root/plugins/ObjectCacheServer/src/Clustering
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2023-11-02 01:50:05 -0400
committerLibravatar vnugent <public@vaughnnugent.com>2023-11-02 01:50:05 -0400
commitd2d812213b99ee17f9433f81871b694c4053ff23 (patch)
tree11a1106602112c134e65bf197ef701d1b8d63b67 /plugins/ObjectCacheServer/src/Clustering
parent483c014b938e2d55ea7c89b67f6d19ba2c2d5b5e (diff)
also carried away
Diffstat (limited to 'plugins/ObjectCacheServer/src/Clustering')
-rw-r--r--plugins/ObjectCacheServer/src/Clustering/CacheNodeReplicationMaanger.cs18
1 files changed, 16 insertions, 2 deletions
diff --git a/plugins/ObjectCacheServer/src/Clustering/CacheNodeReplicationMaanger.cs b/plugins/ObjectCacheServer/src/Clustering/CacheNodeReplicationMaanger.cs
index 19f09dc..dbfd091 100644
--- a/plugins/ObjectCacheServer/src/Clustering/CacheNodeReplicationMaanger.cs
+++ b/plugins/ObjectCacheServer/src/Clustering/CacheNodeReplicationMaanger.cs
@@ -231,18 +231,25 @@ namespace VNLib.Data.Caching.ObjectCache.Server.Clustering
private async Task ReplicationWorkerDoWorkAsync(FBMClient client, ILogProvider log, CancellationToken exitToken)
{
//Reusable request message
- using FBMRequest request = new(client.Config);
+ using FBMRequest request = new(in client.Config);
+
+ WaitForChangeResult changedObject = new();
//Listen for changes
while (true)
{
//Wait for changes
- WaitForChangeResult changedObject = await client.WaitForChangeAsync(exitToken);
+ await client.WaitForChangeAsync(changedObject, exitToken);
log.Debug("Object changed {typ} {obj}", changedObject.Status, changedObject.CurrentId);
switch (changedObject.Status)
{
+ /*
+ * During a WFC operation, if a NotFound response is received, it
+ * means a wait queue was not found for the connection, usually meaning
+ * the server does not support replication.
+ */
case ResponseCodes.NotFound:
log.Error("Server cache not properly configured, worker exiting");
return;
@@ -254,8 +261,15 @@ namespace VNLib.Data.Caching.ObjectCache.Server.Clustering
//Reload the record from the store
await UpdateRecordAsync(client, request, log, changedObject.CurrentId, changedObject.NewId, exitToken);
break;
+ default:
+ log.Error("Unknown status {status} received from server", changedObject.Status);
+ break;
}
+ changedObject.Status = null;
+ changedObject.CurrentId = null;
+ changedObject.NewId = null;
+
//Reset request message
request.Reset();
}