Поделиться через


IMembershipTable Интерфейс

Определение

Интерфейс для таблицы членства.

public interface IMembershipTable
type IMembershipTable = interface
Public Interface IMembershipTable
Производный

Методы

CleanupDefunctSiloEntries(DateTimeOffset)

Удаление всех недоставленных записей слоу старше beforeDate

DeleteMembershipTableEntries(String)

Удаляет все записи таблицы заданного идентификатора clusterId.

InitializeMembershipTable(Boolean)

Инициализирует таблицу членства, будет вызываться перед всеми другими методами.

InitializeMembershipTable(GlobalConfiguration, Boolean, Logger)

Инициализирует таблицу членства, будет вызываться перед всеми другими методами.

InsertRow(MembershipEntry, TableVersion)

Atomically пытается вставить (добавить) новый MembershipEntry для одного сило, а также обновить TableVersion. Если операция завершится успешно, в таблицу будут внесены следующие изменения:

  1. В таблицу будет добавлен новый membershipEntry.
  2. Добавленный membershipEntry также будет добавлен с новым уникальным автоматически созданным eTag.
  3. TableVersion.Version в таблице будет обновлена до новой версии TableVersion.Version.
  4. Тег etag TableVersion в таблице будет обновлен до нового уникального автоматически созданного eTag. Все эти изменения в таблице, вставка новой строки и обновление версии таблицы и связанных etags должны происходить атомарным образом или завершаться атомарным сбоем без побочных эффектов. Операция должна завершиться ошибкой в каждом из следующих условий:
  5. MembershipEntry для заданного сило уже существует в таблице
  6. Обновление объекта TableVersion завершилось сбоем, так как заданный etag TableVersion (как указано в свойстве TableVersion.VersionEtag) не совпадал с тегом TableVersion etag в таблице.
ReadAll()

Атомарным образом считывает полное содержимое таблицы членства. Возвращенная запись MembershipTableData включает все записи MembershipEntry для всех силосов в таблице и TableVersion для этой таблицы. Членства и TableVersion должны быть считываться атомарным образом.

ReadRow(SiloAddress)

Атомарны считывает сведения о таблице членства по заданному сило. Возвращенная запись MembershipTableData включает одну запись MembershipEntry для заданного сило и TableVersion для этой таблицы. MembershipEntry и TableVersion должны быть считываться атомарным образом.

UpdateIAmAlive(MembershipEntry)

Обновления часть IAmAlive (столбец) объекта MembershipEntry для этого сило. Эта операция должна обновлять только столбец IAmAlive и не изменять другие столбцы. Эта операция является "грязной записью" или "обновлением на месте" и выполняется без проверки etag. Что касается обновления eTags: эта операция может автоматически обновлять eTag, связанный с заданной строкой с расширением silo, но это не обязательно. Он также может оставить etag не измененным ("грязная запись"). Что касается TableVersion: эта операция не должна изменять TableVersion таблицы. Он должен оставить его нетронутым. Нет сценария, в котором эта операция может завершиться сбоем из-за семантических причин таблицы. Это может завершиться ошибкой только из-за проблем с сетью или недоступности таблицы.

UpdateRow(MembershipEntry, String, TableVersion)

Atomically пытается обновить MembershipEntry для одного сило, а также обновить TableVersion. Если операция завершится успешно, в таблицу будут внесены следующие изменения:

  1. MembershipEntry для этого silo будет обновлен до нового MembershipEntry (старая запись будет полностью заменена новой записью).
  2. ETag для обновленного MembershipEntry также будет eTag с новым уникальным автоматически созданным eTag.
  3. TableVersion.Version в таблице будет обновлена до новой версии TableVersion.Version.
  4. Тег etag TableVersion в таблице будет обновлен до нового уникального автоматически созданного eTag. Все эти изменения в таблице, обновление новой строки и обновление версии таблицы и связанных etags должны происходить атомарным образом или завершаться атомарным сбоем без побочных эффектов. Операция должна завершиться ошибкой в каждом из следующих условий:
  5. MembershipEntry для заданного сило не существует в таблице
  6. MembershipEntry для заданного силона существует в таблице, но его etag в таблице не соответствует предоставленному etag.
  7. Обновление объекта TableVersion завершилось сбоем, так как заданный etag TableVersion (как указано в свойстве TableVersion.VersionEtag) не совпадал с тегом TableVersion etag в таблице.

Применяется к