From dfc886a96ccc7266d5ad2f75fa726235bbc1648f Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 20 Jul 2026 03:58:03 +0100 Subject: [PATCH] Correlate commands before receipt delivery --- .../EveUnityCultMeshLiveProviderTransport.cs | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/packages/org.gamecult.eve.unity-scene/Runtime/CultMesh/EveUnityCultMeshLiveProviderTransport.cs b/packages/org.gamecult.eve.unity-scene/Runtime/CultMesh/EveUnityCultMeshLiveProviderTransport.cs index 404701b..edf1e38 100644 --- a/packages/org.gamecult.eve.unity-scene/Runtime/CultMesh/EveUnityCultMeshLiveProviderTransport.cs +++ b/packages/org.gamecult.eve.unity-scene/Runtime/CultMesh/EveUnityCultMeshLiveProviderTransport.cs @@ -387,21 +387,29 @@ namespace GameCult.Eve.UnityScene if (string.IsNullOrWhiteSpace(commandId)) throw new InvalidOperationException("Eve command invocations require an idempotency key."); - var recordKey = ChildRecordKey(interaction.CommandRecordRef, commandId); - var message = _networkRegistry!.CreateRawDocumentPutMessage( - $"eve-unity-{commandId}", - new CultRecordHandle(new CultRecordKey(recordKey)), - request, - new CultNetDocumentMessageOptions - { - SourceRuntimeId = _runtimeId, - SourceRole = "eve-unity" - }); - new CultNetSchemaWriteForwarder(new CultNetSchemaWriteForwarderOptions()) - .ForwardPutAsync(_replicaShard!, message) - .GetAwaiter() - .GetResult(); _pendingCommandIds.Add(commandId); + try + { + var recordKey = ChildRecordKey(interaction.CommandRecordRef, commandId); + var message = _networkRegistry!.CreateRawDocumentPutMessage( + $"eve-unity-{commandId}", + new CultRecordHandle(new CultRecordKey(recordKey)), + request, + new CultNetDocumentMessageOptions + { + SourceRuntimeId = _runtimeId, + SourceRole = "eve-unity" + }); + new CultNetSchemaWriteForwarder(new CultNetSchemaWriteForwarderOptions()) + .ForwardPutAsync(_replicaShard!, message) + .GetAwaiter() + .GetResult(); + } + catch + { + _pendingCommandIds.Remove(commandId); + throw; + } } public void Dispose()