Bedrock.ControlPlane.Config.TransactionSystemLayout (bedrock v0.6.0)

View Source

A TransactionSystemLayout is a data structure that describes the layout of the transaction system within the cluster.

Summary

Types

Struct representing the layout of the transaction system within the cluster.

t()

Types

id()

@type id() :: non_neg_integer()

log_map()

process_ref()

@type process_ref() :: pid() | nil

Struct representing the layout of the transaction system within the cluster.

Fields

  • id - The unique identifier of the layout.
  • director - The full otp name of the cluster director.
  • sequencer - The full otp name of the cluster sequencer.
  • rate_keeper - The full otp name of the system rate-keeper.
  • read_version_proxies - The full otp names of the read-version proxies.
  • commit_proxies - The full otp names of the commit proxies.
  • resolvers - The pids of the transaction resolvers.
  • logs - A list of logs that are responsible for storing the transactions on their way to the materializers. Each log contains a list of the tags that it services, and the full otp name of the log worker process that is responsible for the log.
  • services - A list of all of the workers within the system, their types, ids and the otp names used to communicate with them.
  • metadata_materializer - The pid of the metadata materializer process, or nil if not yet started.
  • shard_layout - A map from end_key to {tag, start_key} describing the shard boundaries.
  • shard_materializers - A map from shard tag to materializer pid.

proxy_list()

@type proxy_list() :: [pid()]

resolver_list()

service_map()

@type service_map() :: %{
  required(Bedrock.Service.Worker.id()) =>
    Bedrock.ControlPlane.Config.ServiceDescriptor.t()
}

shard_layout()

@type shard_layout() :: %{
  required(Bedrock.key()) => {Bedrock.range_tag(), Bedrock.key()}
}

shard_materializers()

@type shard_materializers() :: %{required(Bedrock.range_tag()) => pid()}

t()

@type t() :: %{
  :id => id(),
  :epoch => non_neg_integer(),
  :director => process_ref() | :unavailable,
  :sequencer => process_ref(),
  :rate_keeper => process_ref(),
  :proxies => proxy_list(),
  :resolvers => resolver_list(),
  :logs => log_map(),
  :services => service_map(),
  optional(:metadata_materializer) => process_ref(),
  optional(:shard_layout) => shard_layout() | nil,
  optional(:shard_materializers) => shard_materializers()
}

Functions

random_id()

@spec random_id() :: id()