次の方法で共有


VolatileActorStateProvider.IStateProvider.UpdateEpochAsync メソッド

定義

プライマリ レプリカの変更または変更の試行によってレプリカ セットの構成が変更されたことをレプリカに示します。 この変更は、以前のプライマリ レプリカの障害または負荷分散が原因で発生します。 エポック変更は、特定のプライマリ レプリカによって送信された正確な構成期間に操作をセグメント化することで、バリアとして機能します。

System.Threading.Tasks.Task IStateProvider.UpdateEpochAsync (System.Fabric.Epoch epoch, long previousEpochLastSequenceNumber, System.Threading.CancellationToken cancellationToken);
abstract member System.Fabric.IStateProvider.UpdateEpochAsync : System.Fabric.Epoch * int64 * System.Threading.CancellationToken -> System.Threading.Tasks.Task
override this.System.Fabric.IStateProvider.UpdateEpochAsync : System.Fabric.Epoch * int64 * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Function UpdateEpochAsync (epoch As Epoch, previousEpochLastSequenceNumber As Long, cancellationToken As CancellationToken) As Task Implements IStateProvider.UpdateEpochAsync

パラメーター

epoch
Epoch

新しい Epoch

previousEpochLastSequenceNumber
Int64

前のエポックで観察されている必要がある最大シーケンス番号 (LSN)。

cancellationToken
CancellationToken

CancellationToken操作が監視しているオブジェクト。 操作を取り消す必要があることを示す通知を送信するために使用できます。 取り消しはアドバイザリであり、取り消された場合でも操作が完了する可能性があることに注意してください。

戻り値

Task を返します。

実装

注釈

このメソッドは、レプリカ セットのプライマリ レプリカが変更されたか、変更が試行されたために呼び出されます。 セカンダリ レプリカは、新しいプライマリ レプリカになりそうになったとき、または新しいプライマリ レプリカでない場合は、レプリケーション ストリームから新しいプライマリ レプリカから最初の操作を取得しようとしたときに、このメソッドを受け取ります。 プライマリ レプリカをスワップしようとすると、プライマリ レプリカがこの方法を受け取る場合がありますが、これは失敗します。

メソッドの UpdateEpochAsync(Epoch, Int64, CancellationToken) 情報を使用すると、サービスは進行状況ベクトルを維持できます。これは、レプリカが受信した各エポックと、それらが含まれている最大 LSN の一覧です。 現在適用されている最大 LSN と共に進行状況ベクトル データは、セカンダリ レプリカがコピー操作中に送信して、操作の進行状況を説明するのに役立ちます。 コピー操作中にセカンダリ レプリカから受信した進行状況ベクトルを比較すると、プライマリ レプリカは、セカンダリ レプリカが最新かどうか、セカンダリ レプリカに送信する必要がある状態、およびセカンダリ レプリカが誤った進行状況を行ったかどうかを判断できます。 False の進行状況は、前のエポックの LSN が、プライマリ レプリカが受け取る LSN よりも大きかったことを意味します。

適用対象