Raxol.Agent.ThreadLog.Ets (Raxol Agent v2.6.0)

Copy Markdown View Source

ETS-backed Raxol.Agent.ThreadLog adapter.

Stores events in a named ETS ordered_set keyed on {thread_id, sequence}. Iteration is naturally sequence-ordered within a thread; list/3 walks the table starting at {thread_id, from} and stops when the thread changes or the limit is reached.

Sequence allocation uses a sibling ETS set keyed on thread_id with :ets.update_counter/3 for atomic per-thread increments. Counters live in {<table>_seq} (e.g. :raxol_agent_threads_seq by default).

Config

%{table: :my_agent_threads}

Defaults to :raxol_agent_threads. Two agents sharing the same table name share its events; isolate per-agent (or per-suite of agents) by passing distinct names.

Lifetime

Both tables live for the duration of the BEAM. Not supervised, not persisted. Use Raxol.Agent.ThreadLog.Postgrex when events must outlive the BEAM or be shared across nodes.

Summary

Functions

Ensure both the event table and its sibling sequence counter exist.

Functions

ensure_tables(config)

@spec ensure_tables(map()) :: {atom(), atom()}

Ensure both the event table and its sibling sequence counter exist.