我有一个看起来像这样的Actor方法:
ConditionalValue<Command> result = await this.StateManager.TryGetStateAsync<Command>(key);
await this.StateManager.TryRemoveStateAsync(key);
return result.Value;
当我从ActorMethod返回或调用this.SaveStateAsync()时,它抛出以下异常:
System.Fabric.FabricException: The given key was not present. ---> System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80071C13
at System.Fabric.Interop.NativeRuntime.IFabricKeyValueStoreReplica6.Remove
答案 0 :(得分:2)
我花了整整一天的时间然后把它想出来了。
在同一个actor的另一个方法中,我们将在其他方法调用中删除的项排入队列。
通过查看StateManager,我可以看到该值的CheckStatus为Add,所以我将follow调用添加到了enqueue方法
await this.SaveStateAsync();
然后排队然后没有任何问题。
这可能是一个边缘案例,但不要在一种方法中添加,在另一种方法中执行检索和删除,而不在其间保存状态。
提醒我一点EF背景。