현재 여러 개의 IReliableDictionary
개체를 유지하는 서비스 패브릭 상태 저장 서비스에서 작업하고 있습니다. 이러한 사전 중 일부는 this article에서 권장하는 값으로 ImmutableLists
입니다.
예를 들어 IReliableDictionary<string,ImmutableList<string>>
입니다. 사전은 채워지고 완벽하게 검색되지만 응용 프로그램을 업그레이드하면 모든 불변 목록이 다시 비어 있습니다. 다른 모든 데이터는 그대로 있으며 IReliableDictionary<string,List<string>>
으로 전환하면 컬렉션이 잘 유지됩니다. 이 테스트를 위해 목록을 채우고 서비스 버전 번호를 증가 시키며 로컬 클러스터에서 "게시> 업그레이드"를 누르는 중입니다. 나는 1과 5 노드 구성을 같은 효과로 테스트했다.
내가 알아야 할 ImmutableList
및 IReliableDictionary
과의 호환성 문제가 있습니까? 이렇게 주를 어떻게 적절하게 보관합니까? 필요에 따라 코드를 공유하게되어 기쁩니다. 그러나 어떤 부분이 관련이 있는지 잘 모르겠습니다. 후속 실행에 첫 번째 실행 및 검색에
초기화는 :서비스 패브릭 : 응용 프로그램 업그레이드시 IReliableDictionary에있는 ImmutableList가 비어있는 상태로 반환됩니다.
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();
}