Changelog for Oban Met v1.3

View Source

v1.3.0 — 2026-08-01

Enhancements

  • [Recorder] Restore :compressed option to series table

    The larger metrics_series table is now compressed, while the smaller metrics_latest remains uncompressed because it stays small.

  • [Recorder] Bound compaction with chunking

    Prevent overlapping compactions and use a dedicated ETS table for chunked compaction. The resulting peak memory usage is ~61x lower with a relevant sample of ~260k rows.

    CompactionTimePeak memoryTable beforeTable after
    Unbounded849.7 ms258.5 MiB147.1 MiB143.6 MiB
    Bounded806.2 ms4.2 MiB147.1 MiB143.5 MiB
  • [Recorder] Restrict metric handoff to the PG notifier

    Handoff passes entire recorded tables between nodes over pubsub. The handoff size can easily be larger than what Postgres can deliver, which the notifier blocks. Rather than silently failing, handoff is restricted to the PG notifier.

  • [Recorder] Chunk recorded table handoffs with acking

    Recorder handoff copied the entire table in a single payload using tab2list and term_to_binary. That spiked memory on both the sender and receiver, using hundreds of MB of memory with larger tables.

    The sender now streams the table through ETS continuation, sending 5k rows per message awaiting an ack before the next batch. Only one chunk is in flight at a time.

    The result is a ~5x smaller overall peak process heap:

    elapsedpeak processwire
    legacy full table645 ms202.0 MiB3.53 MiB
    chunked 5,000965 ms39.4 MiB3.62 MiB
    round trip 5,0001817 ms34.8 MiB3.62 MiB