Bedrock.ControlPlane.Config.TransactionSystemLayout (bedrock v0.6.0)
View SourceA 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.
Types
@type id() :: non_neg_integer()
@type log_map() :: %{ required(Bedrock.DataPlane.Log.id()) => Bedrock.ControlPlane.Config.LogDescriptor.t() }
@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.
@type proxy_list() :: [pid()]
@type resolver_list() :: [Bedrock.ControlPlane.Config.ResolverDescriptor.t()]
@type service_map() :: %{ required(Bedrock.Service.Worker.id()) => Bedrock.ControlPlane.Config.ServiceDescriptor.t() }
@type shard_layout() :: %{ required(Bedrock.key()) => {Bedrock.range_tag(), Bedrock.key()} }
@type shard_materializers() :: %{required(Bedrock.range_tag()) => pid()}
@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
@spec random_id() :: id()