我目前正在开发一个保留多个IReliableDictionary
对象的 Service Fabric 有状态服务。正如本文所推荐的那样,其中一些字典具有ImmutableLists
as 值。
例如,我有一个. 字典被完美地填充和检索,但是当应用程序升级时,我所有的不可变列表都返回为空。所有其他数据都完好无损,如果我切换到,则集合保留得很好。为了进行此测试,我正在填充列表,增加服务版本号,并在我的本地集群上点击“发布 > 升级”。我已经测试了 1 和 5 节点配置,效果相同。
是否存在与和
的兼容性问题IReliableDictionary<string,ImmutableList<string>>
IReliableDictionary<string,List<string>>
ImmutableList
IReliableDictionary
我应该注意什么?我该如何正确存储我的状态?我很乐意根据需要分享任何代码,但我不确定哪些部分是相关的。
首次运行时初始化并在后续运行时检索:
private readonly IReliableDictionary> itemData;
private readonly IReliableDictionary> buildHistory;
public ItemProcessor(IReliableStateManager stateManager, string itemDictionaryName, string historyDictionaryName)
{
itemData = stateManager.GetOrAddAsync<IReliableDictionary<string, ImmutableList<Item>>>(itemDictionaryName).GetAwaiter().GetResult();
buildHistory = stateManager.GetOrAddAsync<IReliableDictionary<DateTime, ImmutableList<long>>>(historyDictionaryName).GetAwaiter().GetResult();
}