2016-11-02 4 views
2

Azure 클러스터에서 서비스 패브릭 응용 프로그램을 실행하고 있습니다. 응용 프로그램이 문제없이 며칠 동안 잘 실행되었습니다. 그러나 어제 우리는 서비스 중 하나가 "오류"상태로 갔고 이후 회복되지 않았 음을 알았습니다.서비스 패브릭 FailFast로 상태 저장 서비스 실패

이 서비스는 1 개의 파티션과 3 개의 복제본 (즉, 1 개의 기본, 2 개의 보조)으로 구성된 신뢰할 수있는 상태 저장 서비스입니다. 이 서비스는 장기 실행 RunAsync()를 구현하고 RunAsync() 중에 동시에 많은 ReliableDictionary 항목을 읽고 씁니다. 지금까지 우리는 푸른 클러스터에서이 관찰 한,

Description: The application requested process termination through System.Environment.FailFast(string message). 
Message: ProgressVectorEntry.Lsn == failureLsn 
Stack: 
    at System.Environment.FailFast(System.String) 
    at Microsoft.ServiceFabric.Replicator.ProgressVector.FindSharedVector(Microsoft.ServiceFabric.Replicator.ProgressVector, Microsoft.ServiceFabric.Replicator.ProgressVector) 
    at Microsoft.ServiceFabric.Replicator.ProgressVector.FindCopyModePrivate(Microsoft.ServiceFabric.Replicator.CopyContextParameters, Microsoft.ServiceFabric.Replicator.CopyContextParameters, Int64) 
    at Microsoft.ServiceFabric.Replicator.ProgressVector.FindCopyMode(Microsoft.ServiceFabric.Replicator.CopyContextParameters, Microsoft.ServiceFabric.Replicator.CopyContextParameters, Int64) 
    at Microsoft.ServiceFabric.Replicator.LoggingReplicator.GetLogRecordsToCopy(Microsoft.ServiceFabric.Replicator.ProgressVector, System.Fabric.Epoch, Microsoft.ServiceFabric.Replicator.LogicalSequenceNumber, Microsoft.ServiceFabric.Replicator.LogicalSequenceNumber, Int64, Int64, Microsoft.ServiceFabric.Replicator.LogicalSequenceNumber ByRef, Microsoft.ServiceFabric.Replicator.LogicalSequenceNumber ByRef, Microsoft.ServiceFabric.Data.IAsyncEnumerator`1<Microsoft.ServiceFabric.Replicator.LogRecord> ByRef, Microsoft.ServiceFabric.Replicator.BeginCheckpointLogRecord ByRef) 
    at Microsoft.ServiceFabric.Replicator.LoggingReplicatorCopyStream+<GetNextAsyncSafe>d__3.MoveNext() 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Start[[Microsoft.ServiceFabric.Replicator.LoggingReplicatorCopyStream+<GetNextAsyncSafe>d__3, Microsoft.ServiceFabric.Data.Impl, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]](<GetNextAsyncSafe>d__3 ByRef) 
    at Microsoft.ServiceFabric.Replicator.LoggingReplicatorCopyStream.GetNextAsyncSafe(System.Threading.CancellationToken) 
    at Microsoft.ServiceFabric.Replicator.LoggingReplicatorCopyStream.GetNextAsync(System.Threading.CancellationToken) 
    at System.Fabric.StateProviderBroker+AsyncEnumerateOperationDataBroker.<BeginGetNext>b__8(System.Threading.CancellationToken) 
    at System.Fabric.Interop.Utility.WrapNativeAsyncMethodImplementation(System.Func`2<System.Threading.CancellationToken,System.Threading.Tasks.Task>, IFabricAsyncOperationCallback, System.String, System.Fabric.Interop.InteropApi) 
    at System.Fabric.StateProviderBroker+AsyncEnumerateOperationDataBroker.BeginGetNext(IFabricAsyncOperationCallback) 

우리는 우리 지역의 개발 환경이 관찰 적이 :

우리는 기본 노드의 이벤트 로그에 다음과 같은 오류를 발견했습니다 .

  1. 여기가 어떻게됩니까? 손상된 복제 정보처럼 보입니다.
  2. 이 문제의 원인이 될 수있는 코드는 무엇이 될 수 있습니까?
+0

단일 거래 내에서 동일한 사전의 여러 사전 항목에 편지를 쓰고 있습니까? –

+0

아니요, tx 당 하나의 항목입니다. 하나의 사전에 여러 항목으로 여러 개의 동시 tx. –

+1

좋습니다, 잘 알고 있습니다. 여기서 보시는 것은 중등 학교의 잘못된 진전에 대한 일반적인 확인입니다. 왜 우리에게 이것이 맞았는지 디버깅하는 가장 좋은 방법은 클러스터 로그를 보는 것입니다. Azure Portal을 통해 지원 티켓을 열고이 SO 게시물에 대한 링크를 포함 할 수 있습니까? 지원 팀이 거기에서 가져와야합니다. –

답변

0

이것은 Service Fabric의 문제로 5.3.311으로 수정되었습니다.

관련 문제