Bedrock.SystemKeys (bedrock v0.6.0)

View Source

Centralized definition of all system keys used for cluster configuration and transaction system layout persistence.

This module provides a single source of truth for system key names, preventing magic strings from being scattered throughout the codebase.

Key Categories

  • Cluster Configuration: Static cluster settings (coordinators, policies, parameters)
  • Transaction Layout: Dynamic transaction system state (sequencer, proxies, resolvers, logs, storage)
  • Legacy Compatibility: Monolithic keys for backward compatibility and coordinator handoff

Summary

Functions

Returns all cluster configuration keys as a list. Useful for batch operations or validation.

Returns all legacy compatibility keys as a list. Useful for migration and cleanup operations.

List of coordinator nodes in the cluster

Current cluster epoch number

Cluster parameter: desired number of commit proxies

Cluster parameter: desired number of coordinators

Cluster parameter: desired number of logs

Cluster parameter: desired number of read version proxies

Cluster parameter: desired replication factor

Cluster parameter: empty transaction timeout in milliseconds

Cluster parameter: ping rate in Hz

Cluster parameter: retransmission rate in Hz

Cluster parameter: transaction window in milliseconds

Cluster policy: allow volunteer nodes to join

Monolithic cluster configuration (for coordinator epoch handoff)

Legacy epoch key (use cluster_epoch instead)

Legacy last recovery timestamp (use recovery_last_completed instead)

Transaction system layout ID

Configuration for a specific log by ID

All log configurations (for range queries)

Map of all services in the transaction system

Materializers for a key range (ceiling search by end_key)

Prefix for materializer_keys (for range queries)

Parses a system key and extracts its type and parameter.

Current recovery attempt number

Timestamp of last successful recovery

Current recovery state

Shard metadata by tag

Shard key mapping (ceiling search by end_key) -> tag

Prefix for shard_keys (for range queries)

Prefix for shards (for range queries)

Checks if a key is a system key (starts with the system prefix).

Returns the system key prefix.

Functions

all_cluster_keys()

@spec all_cluster_keys() :: [Bedrock.key()]

Returns all cluster configuration keys as a list. Useful for batch operations or validation.

all_legacy_keys()

@spec all_legacy_keys() :: [Bedrock.key()]

Returns all legacy compatibility keys as a list. Useful for migration and cleanup operations.

cluster_coordinators()

@spec cluster_coordinators() :: Bedrock.key()

List of coordinator nodes in the cluster

cluster_epoch()

@spec cluster_epoch() :: Bedrock.key()

Current cluster epoch number

cluster_parameters_desired_commit_proxies()

@spec cluster_parameters_desired_commit_proxies() :: Bedrock.key()

Cluster parameter: desired number of commit proxies

cluster_parameters_desired_coordinators()

@spec cluster_parameters_desired_coordinators() :: Bedrock.key()

Cluster parameter: desired number of coordinators

cluster_parameters_desired_logs()

@spec cluster_parameters_desired_logs() :: Bedrock.key()

Cluster parameter: desired number of logs

cluster_parameters_desired_read_version_proxies()

@spec cluster_parameters_desired_read_version_proxies() :: Bedrock.key()

Cluster parameter: desired number of read version proxies

cluster_parameters_desired_replication()

@spec cluster_parameters_desired_replication() :: Bedrock.key()

Cluster parameter: desired replication factor

cluster_parameters_empty_transaction_timeout_ms()

@spec cluster_parameters_empty_transaction_timeout_ms() :: Bedrock.key()

Cluster parameter: empty transaction timeout in milliseconds

cluster_parameters_ping_rate_in_hz()

@spec cluster_parameters_ping_rate_in_hz() :: Bedrock.key()

Cluster parameter: ping rate in Hz

cluster_parameters_retransmission_rate_in_hz()

@spec cluster_parameters_retransmission_rate_in_hz() :: Bedrock.key()

Cluster parameter: retransmission rate in Hz

cluster_parameters_transaction_window_in_ms()

@spec cluster_parameters_transaction_window_in_ms() :: Bedrock.key()

Cluster parameter: transaction window in milliseconds

cluster_policies_volunteer_nodes()

@spec cluster_policies_volunteer_nodes() :: Bedrock.key()

Cluster policy: allow volunteer nodes to join

config_monolithic()

@spec config_monolithic() :: Bedrock.key()

Monolithic cluster configuration (for coordinator epoch handoff)

epoch_legacy()

@spec epoch_legacy() :: Bedrock.key()

Legacy epoch key (use cluster_epoch instead)

last_recovery_legacy()

@spec last_recovery_legacy() :: Bedrock.key()

Legacy last recovery timestamp (use recovery_last_completed instead)

layout_id()

@spec layout_id() :: Bedrock.key()

Transaction system layout ID

layout_log(log_id)

@spec layout_log(Bedrock.service_id()) :: Bedrock.key()

Configuration for a specific log by ID

layout_logs_prefix()

@spec layout_logs_prefix() :: Bedrock.key()

All log configurations (for range queries)

layout_services()

@spec layout_services() :: Bedrock.key()

Map of all services in the transaction system

materializer_key(end_key)

@spec materializer_key(end_key :: Bedrock.key()) :: Bedrock.key()

Materializers for a key range (ceiling search by end_key)

materializer_keys_prefix()

@spec materializer_keys_prefix() :: Bedrock.key()

Prefix for materializer_keys (for range queries)

parse_key(key)

@spec parse_key(Bedrock.key()) ::
  {:layout_log, String.t()}
  | {:shard_key, String.t()}
  | {:shard, String.t()}
  | {:materializer_key, String.t()}
  | :unknown
  | :error

Parses a system key and extracts its type and parameter.

Returns:

  • {:layout_log, log_id} for log keys
  • {:shard_key, end_key} for shard key mappings
  • {:shard, tag} for shard metadata keys
  • {:materializer_key, end_key} for materializer keys
  • :unknown for unrecognized system keys
  • :error for non-system keys

recovery_attempt()

@spec recovery_attempt() :: Bedrock.key()

Current recovery attempt number

recovery_last_completed()

@spec recovery_last_completed() :: Bedrock.key()

Timestamp of last successful recovery

recovery_state()

@spec recovery_state() :: Bedrock.key()

Current recovery state

shard(tag)

@spec shard(tag :: non_neg_integer()) :: Bedrock.key()

Shard metadata by tag

shard_key(end_key)

@spec shard_key(end_key :: Bedrock.key()) :: Bedrock.key()

Shard key mapping (ceiling search by end_key) -> tag

shard_keys_prefix()

@spec shard_keys_prefix() :: Bedrock.key()

Prefix for shard_keys (for range queries)

shards_prefix()

@spec shards_prefix() :: Bedrock.key()

Prefix for shards (for range queries)

system_key?(key)

@spec system_key?(Bedrock.key()) :: boolean()
@spec system_key?(term()) :: boolean()

Checks if a key is a system key (starts with the system prefix).

system_prefix()

@spec system_prefix() :: Bedrock.key()

Returns the system key prefix.