# MembershipTableTestRunner Methods

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/)

## CleanupDefunctSiloEntries_RemovesOnlyStrictlyOldDeadRows(CancellationToken) {#cleanupdefunctsiloentries-removesonlystrictlyolddeadrows-system-threading-cancel-0d0f0719}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/cleanupdefunctsiloentries-removesonlystrictlyolddeadrows-system-threading-cancel-0d0f0719/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L393-L432)

```csharp
public Task CleanupDefunctSiloEntries_RemovesOnlyStrictlyOldDeadRows(CancellationToken cancellationToken = default(CancellationToken))
```

G25: eligible Dead rows compact at the same version or in atomic +1 batches; retained canonical fields are preserved.

### Parameters

- `cancellationToken` (`CancellationToken`)

## Clusters_SharedBackendWithOverlappingSiloAddresses_AreIsolated(CancellationToken) {#clusters-sharedbackendwithoverlappingsiloaddresses-areisolated-system-threading-473ec34c}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/clusters-sharedbackendwithoverlappingsiloaddresses-areisolated-system-threading-473ec34c/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L361-L390)

```csharp
public Task Clusters_SharedBackendWithOverlappingSiloAddresses_AreIsolated(CancellationToken cancellationToken = default(CancellationToken))
```

G24: shared-backend overlapping identities are isolated by cluster, not service or address.

### Parameters

- `cancellationToken` (`CancellationToken`)

## ConcurrentCrossRowUpdates_SharedTableVersion_HaveExactlyOneWinner(CancellationToken) {#concurrentcrossrowupdates-sharedtableversion-haveexactlyonewinner-system-threadi-2dd1590c}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/concurrentcrossrowupdates-sharedtableversion-haveexactlyonewinner-system-threadi-2dd1590c/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L309-L331)

```csharp
public Task ConcurrentCrossRowUpdates_SharedTableVersion_HaveExactlyOneWinner(CancellationToken cancellationToken = default(CancellationToken))
```

G20: two armed cross-row writes using one table candidate have exactly one winner.

### Parameters

- `cancellationToken` (`CancellationToken`)

## ConcurrentReadAll_ReturnsOnlyAtomicCommittedViews(CancellationToken) {#concurrentreadall-returnsonlyatomiccommittedviews-system-threading-cancellationt-b008e03a}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/concurrentreadall-returnsonlyatomiccommittedviews-system-threading-cancellationt-b008e03a/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L335)

```csharp
public Task ConcurrentReadAll_ReturnsOnlyAtomicCommittedViews(CancellationToken cancellationToken = default(CancellationToken))
```

G21: bounded simultaneous full reads match only complete before/after committed views.

### Parameters

- `cancellationToken` (`CancellationToken`)

## ConcurrentReadRow_ReturnsOnlyAtomicCommittedViews(CancellationToken) {#concurrentreadrow-returnsonlyatomiccommittedviews-system-threading-cancellationt-4a5fc72d}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/concurrentreadrow-returnsonlyatomiccommittedviews-system-threading-cancellationt-4a5fc72d/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L339)

```csharp
public Task ConcurrentReadRow_ReturnsOnlyAtomicCommittedViews(CancellationToken cancellationToken = default(CancellationToken))
```

G22: each changing, sentinel, or missing point read matches its own legal atomic view.

### Parameters

- `cancellationToken` (`CancellationToken`)

## DeleteMembershipTableEntries_DeletesOwnClusterAndPreservesOtherCluster(CancellationToken) {#deletemembershiptableentries-deletesownclusterandpreservesothercluster-system-th-e223a133}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/deletemembershiptableentries-deletesownclusterandpreservesothercluster-system-th-e223a133/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L435-L442)

```csharp
public Task DeleteMembershipTableEntries_DeletesOwnClusterAndPreservesOtherCluster(CancellationToken cancellationToken = default(CancellationToken))
```

G26: native verification confirms deletion before owner disposal, while the other cluster remains intact.

### Parameters

- `cancellationToken` (`CancellationToken`)

## DeleteMembershipTableEntries_DifferentClusterId_NeverDeletesConfiguredCluster(CancellationToken) {#deletemembershiptableentries-differentclusterid-neverdeletesconfiguredcluster-sy-6c3df82a}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/deletemembershiptableentries-differentclusterid-neverdeletesconfiguredcluster-sy-6c3df82a/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L445-L464)

```csharp
public Task DeleteMembershipTableEntries_DifferentClusterId_NeverDeletesConfiguredCluster(CancellationToken cancellationToken = default(CancellationToken))
```

G27: deleting a different populated cluster never deletes the configured cluster.

### Parameters

- `cancellationToken` (`CancellationToken`)

## Handles_IndependentlyConstructed_ShareCommittedBackingState(CancellationToken) {#handles-independentlyconstructed-sharecommittedbackingstate-system-threading-can-b9318110}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/handles-independentlyconstructed-sharecommittedbackingstate-system-threading-can-b9318110/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L161-L168)

```csharp
public Task Handles_IndependentlyConstructed_ShareCommittedBackingState(CancellationToken cancellationToken = default(CancellationToken))
```

G09: distinct constructed handles share one committed backing table.

### Parameters

- `cancellationToken` (`CancellationToken`)

## InitializeMembershipTable_RepeatedWithData_PreservesCommittedState(CancellationToken) {#initializemembershiptable-repeatedwithdata-preservescommittedstate-system-thread-745ef17b}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/initializemembershiptable-repeatedwithdata-preservescommittedstate-system-thread-745ef17b/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L342-L358)

```csharp
public Task InitializeMembershipTable_RepeatedWithData_PreservesCommittedState(CancellationToken cancellationToken = default(CancellationToken))
```

G23: repeated initialization on existing and new handles preserves nonempty state exactly.

### Parameters

- `cancellationToken` (`CancellationToken`)

## InsertRow_CurrentTableVersion_CommitsExactlyOneVersion(CancellationToken) {#insertrow-currenttableversion-commitsexactlyoneversion-system-threading-cancella-1fe5886b}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/insertrow-currenttableversion-commitsexactlyoneversion-system-threading-cancella-1fe5886b/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L32-L37)

```csharp
public Task InsertRow_CurrentTableVersion_CommitsExactlyOneVersion(CancellationToken cancellationToken = default(CancellationToken))
```

G01: insertion and its version are one exact +1 commit, preserving the sentinel.

### Parameters

- `cancellationToken` (`CancellationToken`)

## InsertRow_DuplicateIdentity_ReturnsFalseWithoutSideEffects(CancellationToken) {#insertrow-duplicateidentity-returnsfalsewithoutsideeffects-system-threading-canc-00f22ace}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/insertrow-duplicateidentity-returnsfalsewithoutsideeffects-system-threading-canc-00f22ace/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L208-L215)

```csharp
public Task InsertRow_DuplicateIdentity_ReturnsFalseWithoutSideEffects(CancellationToken cancellationToken = default(CancellationToken))
```

G13: duplicate identity with a current valid candidate is rejected atomically.

### Parameters

- `cancellationToken` (`CancellationToken`)

## InsertRow_MutatingInputAndSuspectList_DoesNotMutateStoredState(CancellationToken) {#insertrow-mutatinginputandsuspectlist-doesnotmutatestoredstate-system-threading-1cc0fd39}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/insertrow-mutatinginputandsuspectlist-doesnotmutatestoredstate-system-threading-1cc0fd39/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L276-L283)

```csharp
public Task InsertRow_MutatingInputAndSuspectList_DoesNotMutateStoredState(CancellationToken cancellationToken = default(CancellationToken))
```

G17: inserted caller entry and nested suspect-list aliases cannot mutate storage.

### Parameters

- `cancellationToken` (`CancellationToken`)

## InsertRow_StaleTableToken_ReturnsFalseWithoutSideEffects(CancellationToken) {#insertrow-staletabletoken-returnsfalsewithoutsideeffects-system-threading-cancel-34fe7a2b}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/insertrow-staletabletoken-returnsfalsewithoutsideeffects-system-threading-cancel-34fe7a2b/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L171-L177)

```csharp
public Task InsertRow_StaleTableToken_ReturnsFalseWithoutSideEffects(CancellationToken cancellationToken = default(CancellationToken))
```

G10: stale-table insertion has no side effects.

### Parameters

- `cancellationToken` (`CancellationToken`)

## Lifecycle_DeadRemainsTerminalAfterCompaction_SuccessorUsesNewGeneration(CancellationToken) {#lifecycle-deadremainsterminalaftercompaction-successorusesnewgeneration-system-t-39b436f3}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/lifecycle-deadremainsterminalaftercompaction-successorusesnewgeneration-system-t-39b436f3/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L99-L124)

```csharp
public Task Lifecycle_DeadRemainsTerminalAfterCompaction_SuccessorUsesNewGeneration(CancellationToken cancellationToken = default(CancellationToken))
```

G05: legal lifecycle, terminal ledger, and a distinct successor generation.

### Parameters

- `cancellationToken` (`CancellationToken`)

## ReadRow_AndReadAll_AgreeForPresentAndAbsentIdentities(CancellationToken) {#readrow-andreadall-agreeforpresentandabsentidentities-system-threading-cancellat-8b6c4653}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/readrow-andreadall-agreeforpresentandabsentidentities-system-threading-cancellat-8b6c4653/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L241-L252)

```csharp
public Task ReadRow_AndReadAll_AgreeForPresentAndAbsentIdentities(CancellationToken cancellationToken = default(CancellationToken))
```

G15: point/full reads agree for distinct generations, other endpoints, and absent identities.

### Parameters

- `cancellationToken` (`CancellationToken`)

## Reads_MaySkipCommittedVersions_WithoutSkippingHistoryValidation(CancellationToken) {#reads-mayskipcommittedversions-withoutskippinghistoryvalidation-system-threading-1295bf8b}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/reads-mayskipcommittedversions-withoutskippinghistoryvalidation-system-threading-1295bf8b/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L84-L96)

```csharp
public Task Reads_MaySkipCommittedVersions_WithoutSkippingHistoryValidation(CancellationToken cancellationToken = default(CancellationToken))
```

G04: reads may skip two separately validated commits.

### Parameters

- `cancellationToken` (`CancellationToken`)

## Reads_MutatingReturnedEntryAndSuspectList_DoesNotMutateStoredState(CancellationToken) {#reads-mutatingreturnedentryandsuspectlist-doesnotmutatestoredstate-system-thread-2133de2c}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/reads-mutatingreturnedentryandsuspectlist-doesnotmutatestoredstate-system-thread-2133de2c/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L296-L306)

```csharp
public Task Reads_MutatingReturnedEntryAndSuspectList_DoesNotMutateStoredState(CancellationToken cancellationToken = default(CancellationToken))
```

G19: caller mutations of point and full read results cannot mutate storage.

### Parameters

- `cancellationToken` (`CancellationToken`)

## Reads_RetainedObjectsRemainUnchangedAfterLaterWrites(CancellationToken) {#reads-retainedobjectsremainunchangedafterlaterwrites-system-threading-cancellati-94bb8470}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/reads-retainedobjectsremainunchangedafterlaterwrites-system-threading-cancellati-94bb8470/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L255-L273)

```csharp
public Task Reads_RetainedObjectsRemainUnchangedAfterLaterWrites(CancellationToken cancellationToken = default(CancellationToken))
```

G16: the actual retained data, entries, and nested lists remain unchanged after later writes.

### Parameters

- `cancellationToken` (`CancellationToken`)

## Reads_SameVersion_PreservesRetainedCanonicalFields(CancellationToken) {#reads-sameversion-preservesretainedcanonicalfields-system-threading-cancellation-0b83ba42}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/reads-sameversion-preservesretainedcanonicalfields-system-threading-cancellation-0b83ba42/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L63-L81)

```csharp
public Task Reads_SameVersion_PreservesRetainedCanonicalFields(CancellationToken cancellationToken = default(CancellationToken))
```

G03: equal versions retain canonical fields and non-Dead rows while liveness varies and Dead rows compact.

### Parameters

- `cancellationToken` (`CancellationToken`)

## UpdateIAmAlive_OwnerWrites_PreserveCanonicalFieldsAndTableVersion(CancellationToken) {#updateiamalive-ownerwrites-preservecanonicalfieldsandtableversion-system-threadi-8768fd05}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/updateiamalive-ownerwrites-preservecanonicalfieldsandtableversion-system-threadi-8768fd05/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L127-L134)

```csharp
public Task UpdateIAmAlive_OwnerWrites_PreserveCanonicalFieldsAndTableVersion(CancellationToken cancellationToken = default(CancellationToken))
```

G06: owner liveness writes preserve canonical membership fields and the table version and ETag.

### Parameters

- `cancellationToken` (`CancellationToken`)

## UpdateRow_CurrentTokens_CommitsExactlyOneVersion(CancellationToken) {#updaterow-currenttokens-commitsexactlyoneversion-system-threading-cancellationto-6d7f21f5}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/updaterow-currenttokens-commitsexactlyoneversion-system-threading-cancellationto-6d7f21f5/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L40-L60)

```csharp
public Task UpdateRow_CurrentTokens_CommitsExactlyOneVersion(CancellationToken cancellationToken = default(CancellationToken))
```

G02: a current-token forward update replaces exactly its intended row.

### Parameters

- `cancellationToken` (`CancellationToken`)

## UpdateRow_MissingIdentityWithRealToken_ReturnsFalseWithoutSideEffects(CancellationToken) {#updaterow-missingidentitywithrealtoken-returnsfalsewithoutsideeffects-system-thr-c3397490}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/updaterow-missingidentitywithrealtoken-returnsfalsewithoutsideeffects-system-thr-c3397490/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L218-L238)

```csharp
public Task UpdateRow_MissingIdentityWithRealToken_ReturnsFalseWithoutSideEffects(CancellationToken cancellationToken = default(CancellationToken))
```

G14: a real row token cannot create a missing row through UpdateRow.

### Parameters

- `cancellationToken` (`CancellationToken`)

## UpdateRow_MutatingInputAndSuspectList_DoesNotMutateStoredState(CancellationToken) {#updaterow-mutatinginputandsuspectlist-doesnotmutatestoredstate-system-threading-9171db29}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/updaterow-mutatinginputandsuspectlist-doesnotmutatestoredstate-system-threading-9171db29/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L286-L293)

```csharp
public Task UpdateRow_MutatingInputAndSuspectList_DoesNotMutateStoredState(CancellationToken cancellationToken = default(CancellationToken))
```

G18: updated caller entry and nested suspect-list aliases cannot mutate storage.

### Parameters

- `cancellationToken` (`CancellationToken`)

## UpdateRow_StaleSnapshotAfterSameRowCommit_ReturnsFalseWithoutSideEffects(CancellationToken) {#updaterow-stalesnapshotaftersamerowcommit-returnsfalsewithoutsideeffects-system-b5dfa8fb}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/updaterow-stalesnapshotaftersamerowcommit-returnsfalsewithoutsideeffects-system-b5dfa8fb/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L195-L205)

```csharp
public Task UpdateRow_StaleSnapshotAfterSameRowCommit_ReturnsFalseWithoutSideEffects(CancellationToken cancellationToken = default(CancellationToken))
```

G12: a snapshot preceding a commit to the same row is rejected without partial effects.

### Parameters

- `cancellationToken` (`CancellationToken`)

## UpdateRow_StaleTableTokenWithCurrentRowToken_ReturnsFalseWithoutSideEffects(CancellationToken) {#updaterow-staletabletokenwithcurrentrowtoken-returnsfalsewithoutsideeffects-syst-ba458a25}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/updaterow-staletabletokenwithcurrentrowtoken-returnsfalsewithoutsideeffects-syst-ba458a25/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L180-L192)

```csharp
public Task UpdateRow_StaleTableTokenWithCurrentRowToken_ReturnsFalseWithoutSideEffects(CancellationToken cancellationToken = default(CancellationToken))
```

G11: a stale table token is rejected even with freshly read target-row metadata.

### Parameters

- `cancellationToken` (`CancellationToken`)

## UpdateRow_TokensCapturedBeforeHeartbeat_CommitStatusChange(CancellationToken) {#updaterow-tokenscapturedbeforeheartbeat-commitstatuschange-system-threading-canc-fe803436}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/updaterow-tokenscapturedbeforeheartbeat-commitstatuschange-system-threading-canc-fe803436/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L138)

```csharp
public Task UpdateRow_TokensCapturedBeforeHeartbeat_CommitStatusChange(CancellationToken cancellationToken = default(CancellationToken))
```

G07: tokens captured before an owner heartbeat commit a canonical status change exactly once.

### Parameters

- `cancellationToken` (`CancellationToken`)

## UpdateRow_TokensCapturedBeforeHeartbeat_CommitVoteChange(CancellationToken) {#updaterow-tokenscapturedbeforeheartbeat-commitvotechange-system-threading-cancel-3167d458}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.clustering.testkit/orleans.clustering.testkit.membershiptabletestrunner/methods/updaterow-tokenscapturedbeforeheartbeat-commitvotechange-system-threading-cancel-3167d458/)

[Source](https://github.com/dotnet/orleans/blob/8bc9fd244427351ad24ccc039a9e7642a42c1cc4/src/Orleans.Clustering.TestKit/MembershipTableTestRunner.cs#L142)

```csharp
public Task UpdateRow_TokensCapturedBeforeHeartbeat_CommitVoteChange(CancellationToken cancellationToken = default(CancellationToken))
```

G08: tokens captured before an owner heartbeat commit a canonical suspect-vote change exactly once.

### Parameters

- `cancellationToken` (`CancellationToken`)
