Partilhar via


IMembershipTable Interface

Definição

Interface para Tabela de Associação.

public interface IMembershipTable
type IMembershipTable = interface
Public Interface IMembershipTable
Derivado

Métodos

CleanupDefunctSiloEntries(DateTimeOffset)

Excluir todas as entradas de silo mortas mais antigas do que beforeDate

DeleteMembershipTableEntries(String)

Exclui todas as entradas de tabela da clusterId fornecida

InitializeMembershipTable(Boolean)

Inicializa a tabela de associação, será chamado antes de todos os outros métodos

InitializeMembershipTable(GlobalConfiguration, Boolean, Logger)

Inicializa a tabela de associação, será chamado antes de todos os outros métodos

InsertRow(MembershipEntry, TableVersion)

Tenta atomicamente inserir (adicionar) um novo MembershipEntry para um silo e também atualizar o TableVersion. Se a operação for bem-sucedida, as seguintes alterações serão feitas na tabela:

  1. Novo MembershipEntry será adicionado à tabela.
  2. O MembershipEntry recém-adicionado também será adicionado com a nova eTag gerada automaticamente.
  3. TableVersion.Version na tabela será atualizada para a nova TableVersion.Version.
  4. A etag TableVersion na tabela será atualizada para a nova eTag gerada automaticamente. Todas essas alterações na tabela, a inserção de uma nova linha e a atualização da versão da tabela e das etags associadas devem ocorrer atomicamente ou falhar atomicamente sem efeitos colaterais. A operação deve falhar em cada uma das seguintes condições:
  5. Um MembershipEntry para um determinado silo já existe na tabela
  6. Falha na atualização do TableVersion desde que a etag TableVersion fornecida (conforme especificado pela propriedade TableVersion.VersionEtag) não correspondeu à etag TableVersion na tabela.
ReadAll()

Lê atomicamente o conteúdo completo da Tabela de Associação. O MembershipTableData retornado inclui todas as entradas MembershipEntry para todos os silos na tabela e TableVersion para esta tabela. MembershipEntries e TableVersion precisam ser lidos atomicamente.

ReadRow(SiloAddress)

Lê atomicamente as informações da Tabela de Associação sobre um determinado silo. O MembershipTableData retornado inclui uma entrada MembershipEntry para um determinado silo e TableVersion para esta tabela. O MembershipEntry e o TableVersion precisam ser lidos atomicamente.

UpdateIAmAlive(MembershipEntry)

Atualizações a parte IAmAlive (coluna) do MembershipEntry para esse silo. Essa operação só deve atualizar a coluna IAmAlive e não alterar outras colunas. Essa operação é uma "gravação suja" ou "atualização in-loco" e é executada sem validação de etag. Com relação à atualização de eTags: essa operação pode atualizar automaticamente a eTag associada à linha de silo fornecida, mas não precisa. Ele também pode deixar a etag não alterada ("gravação suja"). Em relação a TableVersion: essa operação não deve alterar o TableVersion da tabela. Ele deve deixá-lo intocado. Não há nenhum cenário em que essa operação possa falhar devido a motivos semânticos de tabela. Ele só pode falhar devido a problemas de rede ou indisponibilidade de tabela.

UpdateRow(MembershipEntry, String, TableVersion)

Tenta atomicamente atualizar o MembershipEntry para um silo e também atualizar o TableVersion. Se a operação for bem-sucedida, as seguintes alterações serão feitas na tabela:

  1. O MembershipEntry desse silo será atualizado para o novo MembershipEntry (a entrada antiga será totalmente substituída pela nova entrada)
  2. A eTag da MembershipEntry atualizada também será eTag com a nova eTag gerada automaticamente.
  3. TableVersion.Version na tabela será atualizada para a nova TableVersion.Version.
  4. A etag TableVersion na tabela será atualizada para a nova eTag gerada automaticamente. Todas essas alterações na tabela, a atualização de uma nova linha e a atualização da versão da tabela e das etags associadas devem ocorrer atomicamente ou falhar atomicamente sem efeitos colaterais. A operação deve falhar em cada uma das seguintes condições:
  5. Um MembershipEntry para um determinado silo não existe na tabela
  6. Um MembershipEntry para um determinado silo existe na tabela, mas sua etag na tabela não corresponde à etag fornecida.
  7. Falha na atualização do TableVersion desde que a etag TableVersion fornecida (conforme especificado pela propriedade TableVersion.VersionEtag) não correspondeu à etag TableVersion na tabela.

Aplica-se a