2016-07-14 1 views
3

У меня есть метод, который актер выглядит следующим образом:Service Fabric Actor государственный Actiing Как Queue

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

Весь день я потратил на это, а затем я понял это.

В другом методе того же актера мы помещаем элемент, который удаляется в другом вызове метода.

Глядя на StateManager я мог видеть, что значение имело CheckStatus С, поэтому я добавил последующий вызов в метод Епдиеих

await this.SaveStateAsync(); 

И де-очередь затем работал без каких-либо проблем.

Это, вероятно, краевой кейс, но не следует добавлять один метод, извлекать и удалять другим способом без сохранения состояния между ними.

Напоминал мне немного контекста EF.