0

我目前正在开发一个保留多个IReliableDictionary对象的 Service Fabric 有状态服务。正如本文所推荐的那样,其中一些字典具有ImmutableListsas 值。 例如,我有一个. 字典被完美地填充和检索,但是当应用程序升级时,我所有的不可变列表都返回为空。所有其他数据都完好无损,如果我切换到,则集合保留得很好。为了进行此测试,我正在填充列表,增加服务版本号,并在我的本地集群上点击“发布 > 升级”。我已经测试了 1 和 5 节点配置,效果相同。 是否存在与和 的兼容性问题

IReliableDictionary<string,ImmutableList<string>>IReliableDictionary<string,List<string>>

ImmutableListIReliableDictionary我应该注意什么?我该如何正确存储我的状态?我很乐意根据需要分享任何代码,但我不确定哪些部分是相关的。

首次运行时初始化并在后续运行时检索:


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();
}
4

1 回答 1

0

事实证明,出于对我来说仍然是个谜的原因,不能将ImmutableList其用作IReliableDictionary. 相反,必须在需要时使用IEnumerable<T>和设置它。.ToImmutableList()

于 2017-04-24T19:44:28.573 回答