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)

原子尝试插入 () 为一个接收器添加新的 MembershipEntry,并更新 TableVersion。 如果操作成功,将对表进行以下更改:

  1. 新的 MembershipEntry 将添加到表中。
  2. 新添加的 MembershipEntry 也将随新的唯一自动生成的 eTag 一起添加。
  3. 表中的 TableVersion.Version 将更新为新的 TableVersion.Version。
  4. 表中的 TableVersion etag 将更新为新的唯一自动生成的 eTag。 对表所做的所有这些更改、插入新行和更新表版本和关联的 etag 时,都应以原子方式发生,或者以原子方式失败,且不会产生副作用。 操作应在以下每种情况下失败:
  5. 表中已存在给定接收器的 MembershipEntry
  6. 由于由 TableVersion.VersionEtag 属性指定的给定 TableVersion etag (更新失败,) 与表中的 TableVersion etag 不匹配。
ReadAll()

以原子方式读取成员身份表的完整内容。 返回的 MembershipTableData 包括表中所有接收器的所有 MembershipEntry 条目,以及此表的 TableVersion。 MembershipEntries 和 TableVersion 必须以原子方式读取。

ReadRow(SiloAddress)

以原子方式读取有关给定接收器的成员身份表信息。 返回的 MembershipTableData 包括给定接收器的一个 MembershipEntry 条目,以及此表的 TableVersion。 MembershipEntry 和 TableVersion 必须以原子方式读取。

UpdateIAmAlive(MembershipEntry)

汇报此接收器的 MembershipEntry 的 IAmAlive 部分 (列) 。 此操作应仅更新 IAmAlive 列,而不应更改其他列。 此操作是“脏写入”或“就地更新”,无需进行 etag 验证即可执行。 对于 eTags 更新:此操作可能会自动更新与给定接收器行关联的 eTag,但它不必。 它还会使 etag 不会更改 (“脏写入”) 。 对于 TableVersion:此操作不应更改表的 TableVersion。 它应该保持不变。 没有这种情况,因为表语义原因,此操作可能会失败。 它只能由于网络问题或表不可用而失败。

UpdateRow(MembershipEntry, String, TableVersion)

原子方式尝试更新一个接收器的 MembershipEntry,并更新 TableVersion。 如果操作成功,将对表进行以下更改:

  1. 此接收器的 MembershipEntry 将更新为新的 MembershipEntry (旧条目将完全替换为新条目)
  2. 更新的 MembershipEntry 的 eTag 也将是具有新的唯一自动生成 eTag 的 eTag。
  3. 表中的 TableVersion.Version 将更新为新的 TableVersion.Version。
  4. 表中的 TableVersion etag 将更新为新的唯一自动生成的 eTag。 对表所做的所有这些更改、更新新行和更新表版本和相关 etag 时,都应以原子方式发生,或者以原子方式失败,且不会产生副作用。 操作应在以下每种情况下失败:
  5. 表中不存在给定接收器的 MembershipEntry
  6. 给定接收器的 MembershipEntry 存在于表中,但表中的 etag 与提供的 etag 不匹配。
  7. 由于由 TableVersion.VersionEtag 属性指定的给定 TableVersion etag (更新失败,) 与表中的 TableVersion etag 不匹配。

适用于