2017-04-24 3 views
0

현재 여러 개의 IReliableDictionary 개체를 유지하는 서비스 패브릭 상태 저장 서비스에서 작업하고 있습니다. 이러한 사전 중 일부는 this article에서 권장하는 값으로 ImmutableLists입니다.

예를 들어 IReliableDictionary<string,ImmutableList<string>>입니다. 사전은 채워지고 완벽하게 검색되지만 응용 프로그램을 업그레이드하면 모든 불변 목록이 다시 비어 있습니다. 다른 모든 데이터는 그대로 있으며 IReliableDictionary<string,List<string>>으로 전환하면 컬렉션이 잘 유지됩니다. 이 테스트를 위해 목록을 채우고 서비스 버전 번호를 증가 시키며 로컬 클러스터에서 "게시> 업그레이드"를 누르는 중입니다. 나는 1과 5 노드 구성을 같은 효과로 테스트했다.

내가 알아야 할 ImmutableListIReliableDictionary과의 호환성 문제가 있습니까? 이렇게 주를 어떻게 적절하게 보관합니까? 필요에 따라 코드를 공유하게되어 기쁩니다. 그러나 어떤 부분이 관련이 있는지 잘 모르겠습니다. 후속 실행에 첫 번째 실행 및 검색에

초기화는 :서비스 패브릭 : 응용 프로그램 업그레이드시 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(); 
} 

답변

0

그것은 나에게 여전히 이유 신비를 들어, 하나 IReliableDictionary의 값으로 ImmutableList을 사용할 수없는 것으로 밝혀졌습니다. 대신, 필요할 때마다 을 사용하고 .ToImmutableList()으로 설정해야합니다.

관련 문제