Bedrock.DataPlane.Log.Shale.State (bedrock v0.5.2)

View Source

Internal state struct for Shale log servers.

Summary

Types

init_state()

@type init_state() :: :initialized | {:retrying, attempt :: pos_integer()}

mode()

@type mode() :: :locked | :running | :recovering

t()

@type t() :: %Bedrock.DataPlane.Log.Shale.State{
  active_segment: Bedrock.DataPlane.Log.Shale.Segment.t() | nil,
  cluster: module(),
  demux: pid() | nil,
  demux_supervisor: pid() | nil,
  director: Bedrock.ControlPlane.Director.ref() | nil,
  epoch: Bedrock.epoch() | nil,
  foreman: Bedrock.Service.Foreman.ref(),
  id: Bedrock.Service.Worker.id(),
  init_state: init_state(),
  last_version: Bedrock.version(),
  min_durable_version: Bedrock.version() | nil,
  mode: mode(),
  object_storage: module() | nil,
  oldest_version: Bedrock.version(),
  otp_name: Bedrock.Service.Worker.otp_name(),
  params: %{default_pull_limit: pos_integer(), max_pull_limit: pos_integer()},
  path: String.t(),
  pending_pushes: %{
    required(Bedrock.version()) =>
      {encoded_transaction :: Bedrock.DataPlane.Transaction.encoded(),
       ack_fn :: (:ok | {:error, term()} -> :ok)}
  },
  pending_transactions: term(),
  segment_recycler: Bedrock.DataPlane.Log.Shale.SegmentRecycler.server() | nil,
  segments: [Bedrock.DataPlane.Log.Shale.Segment.t()],
  waiting_pullers: %{
    required(Bedrock.version()) => [
      {Bedrock.timestamp_in_ms(), reply_to_fn :: (any() -> :ok),
       opts :: [limit: integer(), timeout: timeout()]}
    ]
  },
  writer: Bedrock.DataPlane.Log.Shale.Writer.t() | nil
}