In a high frequency Command (part of our combat system) we are sending an attack Command to the simulator just as the target object has been destroyed over the network. The internal of the Sync.SendCommand is throwing an exception because the sync.CoherenceBridge is already null. This is a problem because to our application the Sync object is still active an enabled.
It looks like network destroys spawn “destroyRoutine” task that waits a frame before truly cleaning up (line 1189 of CoherenceSync). If we happen to send a command during this one frame delay the internals of the Sync are half destroyed and throws the exception below.
System.NullReferenceException: Object reference not set to an instance of an object
at Coherence.Toolkit.CommandsHandler.GetCommandNameAndValidateEntityId (System.Type targetType, System.String methodName, System.String& commandName) [0x000b0] in ./Library/PackageCache/io.coherence.sdk@1.1.5/Coherence.Toolkit/CommandHandler.cs:320
at Coherence.Toolkit.CommandsHandler.SendCommand (System.Type targetType, System.String methodName, Coherence.MessageTarget target, System.Boolean sendToAllBindings, System.Object[] args) [0x00001] in ./Library/PackageCache/io.coherence.sdk@1.1.5/Coherence.Toolkit/CommandHandler.cs:152
at Coherence.Toolkit.CoherenceSync.SendCommand (System.Type targetType, System.String methodName, Coherence.MessageTarget target, System.Object[] args) [0x00001] in ./Library/PackageCache/io.coherence.sdk@1.1.5/Coherence.Toolkit/CoherenceSync.cs:1476
at Coherence.Toolkit.CoherenceSync.SendCommand[TTarget] (System.String methodName, Coherence.MessageTarget target, System.Object[] args) [0x00001] in ./Library/PackageCache/io.coherence.sdk@1.1.5/Coherence.Toolkit/CoherenceSync.cs:1463
Expected behaviour
Either the sync should be null right when the network destroy comes in, or the Command should gracefully fail by checking if the Sync.CoherenceBridge is null before checking if connected.
Screenshots
How to reproduce
You need to be in a situation where you send a command during the 1 frame delay during network destroys.
As a workaround I can probably manually check the sync.CoherenceBridge for null before trying the SendCommand.
Environment
SDK: 1.1.5
Unity: 2022.3.19f1
OS/Platform: OSX
Thanks!