Condividi tramite


IMembershipTable Interfaccia

Definizione

Interfaccia per la tabella di appartenenza.

public interface IMembershipTable
type IMembershipTable = interface
Public Interface IMembershipTable
Derivato

Metodi

CleanupDefunctSiloEntries(DateTimeOffset)

Eliminare tutte le voci di silo non aggiornate rispetto a beforeDate

DeleteMembershipTableEntries(String)

Elimina tutte le voci di tabella del clusterId specificato

InitializeMembershipTable(Boolean)

Inizializza la tabella di appartenenza, verrà chiamata prima di tutti gli altri metodi

InitializeMembershipTable(GlobalConfiguration, Boolean, Logger)

Inizializza la tabella di appartenenza, verrà chiamata prima di tutti gli altri metodi

InsertRow(MembershipEntry, TableVersion)

Atomicamente tenta di inserire (aggiungere) un nuovo membershipEntry per un silo e aggiornare anche TableVersion. Se l'operazione ha esito positivo, le modifiche seguenti verranno apportate alla tabella:

  1. La nuova appartenenzaEntry verrà aggiunta alla tabella.
  2. Il nuovo elemento MembershipEntry aggiunto verrà aggiunto anche con il nuovo eTag generato automaticamente.
  3. TableVersion.Version nella tabella verrà aggiornato al nuovo TableVersion.Version.
  4. TableVersion etag nella tabella verrà aggiornato al nuovo eTag generato automaticamente. Tutte le modifiche apportate alla tabella, l'inserimento di una nuova riga e l'aggiornamento della versione della tabella e degli etag associati, devono verificarsi in modo atomico o non hanno effetti collaterali. L'operazione deve non riuscire in ognuna delle condizioni seguenti:
  5. Un elemento MembershipEntry per un determinato silo esiste già nella tabella
  6. L'aggiornamento di TableVersion non è riuscito poiché l'etag TableVersion specificato (come specificato dalla proprietà TableVersion.VersionEtag) non corrispondeva all'etag TableVersion nella tabella.
ReadAll()

Legge in modo atomico il contenuto completo della tabella di appartenenza. L'oggetto MembershipTableData restituito include tutte le voci MembershipEntry per tutti i silo nella tabella e TableVersion per questa tabella. Le voci MembershipE e TableVersion devono essere lette atomicamente.

ReadRow(SiloAddress)

Legge atomicamente le informazioni sulla tabella di appartenenza su un determinato silo. L'oggetto MembershipTableData restituito include una voce MembershipEntry per un determinato silo e TableVersion per questa tabella. L'appartenenzaEntry e TableVersion devono essere letti atomicamente.

UpdateIAmAlive(MembershipEntry)

Aggiornamenti la parte IAmAlive (colonna) di MembershipEntry per questo silo. Questa operazione deve aggiornare solo la colonna IAmAlive e non modificare altre colonne. Questa operazione è una "scrittura sporca" o "aggiornamento sul posto" e viene eseguita senza convalida etag. Per quanto riguarda l'aggiornamento di eTags: questa operazione può aggiornare automaticamente l'eTag associato alla riga silo specificata, ma non deve essere necessario. Può anche lasciare l'etag non modificato ("scrittura sporca"). Per quanto riguarda TableVersion: questa operazione non deve modificare TableVersion della tabella. Dovrebbe lasciare che non sia toccato. Non esiste uno scenario in cui questa operazione potrebbe non riuscire a causa di motivi semantici della tabella. Può avere esito negativo solo a causa di problemi di rete o di indisponibilità della tabella.

UpdateRow(MembershipEntry, String, TableVersion)

Atomicamente tenta di aggiornare MembershipEntry per un silo e aggiornare anche TableVersion. Se l'operazione ha esito positivo, le modifiche seguenti verranno apportate alla tabella:

  1. L'appartenenzaEntry per questo silo verrà aggiornato al nuovo membershipEntry (la voce precedente verrà sostituita completamente dalla nuova voce)
  2. L'eTag per l'eTag aggiornato sarà anche eTag con il nuovo eTag generato automaticamente.
  3. TableVersion.Version nella tabella verrà aggiornato al nuovo TableVersion.Version.
  4. TableVersion etag nella tabella verrà aggiornato al nuovo eTag generato automaticamente. Tutte le modifiche apportate alla tabella, l'aggiornamento di una nuova riga e l'aggiornamento della versione della tabella e degli etag associati, devono verificarsi in modo atomico o non hanno effetti collaterali. L'operazione deve non riuscire in ognuna delle condizioni seguenti:
  5. Una proprietà MembershipEntry per un determinato silo non esiste nella tabella
  6. Un oggetto MembershipEntry per un determinato silo esiste nella tabella, ma il relativo etag nella tabella non corrisponde all'etag fornito.
  7. L'aggiornamento di TableVersion non è riuscito poiché l'etag TableVersion specificato (come specificato dalla proprietà TableVersion.VersionEtag) non corrispondeva all'etag TableVersion nella tabella.

Si applica a