diff options
author | vnugent <public@vaughnnugent.com> | 2023-11-02 01:50:05 -0400 |
---|---|---|
committer | vnugent <public@vaughnnugent.com> | 2023-11-02 01:50:05 -0400 |
commit | d2d812213b99ee17f9433f81871b694c4053ff23 (patch) | |
tree | 11a1106602112c134e65bf197ef701d1b8d63b67 /plugins/ObjectCacheServer/src/Clustering/CacheNodeReplicationMaanger.cs | |
parent | 483c014b938e2d55ea7c89b67f6d19ba2c2d5b5e (diff) |
also carried away
Diffstat (limited to 'plugins/ObjectCacheServer/src/Clustering/CacheNodeReplicationMaanger.cs')
-rw-r--r-- | plugins/ObjectCacheServer/src/Clustering/CacheNodeReplicationMaanger.cs | 18 |
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(); } |