Skip to content

Changelog

Unreleased

0.11.0 - 2026-09-21

Added

  • publish_timeout on ArrakisSink (default 30 s): a block whose delivery is not confirmed in time counts as a publish failure instead of stalling for the producer's own message timeout (5 minutes by default); 0 waits indefinitely

Fixed

  • ArrakisSink no longer keeps a failed pipeline alive: its publish thread is a daemon, so a failure elsewhere in the pipeline (which never delivers EOS to the sink) lets the process exit instead of waiting on the thread until the supervisor kills it
  • At EOS the sink drains its backlog only while publishing works; once a block fails the rest is dropped with a logged count, so a dead broker cannot hold the pipeline open for the length of the backlog

0.10.0 - 2026-09-03

Added

  • ArrakisSource.fast_forward (default True) passes through to the arrakis client's live-stream skip-ahead, so a source stuck behind its latency contract recovers with a bounded gap; False opts out

Changed

  • ArrakisSink catches arrakis.PublishError in the publish thread: the failed block is logged at ERROR and dropped so healthy partitions keep flowing, and the pipeline aborts only after max_publish_failures consecutive failures (default 10, 0 disables)
  • Require arrakis >= 0.19 for PublishError and the live-stream skip-ahead

Fixed

  • The publish thread drains the queue at EOS before exiting; it previously exited as soon as EOS was marked, dropping however many queued blocks thread scheduling left behind

0.9.0 - 2026-08-25

Added

  • ArrakisSource and ArrakisSink declare thread_safe = True, opting in to threaded pad dispatch under Pipeline.run(threaded=...)
  • summary_interval on ArrakisSource and ArrakisSink (default 900 s): periodic INFO summary of blocks received or queued and how far the newest block lags real time (plus the publish backlog for the sink), doubling as a liveness heartbeat; 0 disables
  • backlog_warn on ArrakisSink (default 10 blocks): warn once when the publish queue grows past the threshold, i.e. publishing is not keeping up, and log recovery once it drains below half of it

Changed

  • ArrakisSource and ArrakisSink now log at INFO: the publisher registered at startup, the first block received or queued, and the periodic summary, with per-block detail at DEBUG (the stream request itself is logged by the arrakis client when it opens). Previously neither element logged anything
  • ArrakisSink logs the exception when its publish thread fails, before surfacing it to the pipeline
  • The sgn-arrakis CLI configures the sgn logger (the parent of every element's logger) rather than the nonexistent sgn-ts, and defaults LOG_LEVEL to INFO instead of DEBUG
  • Declare gpstime as a direct dependency, used for the summaries' lag behind real time

0.8.0 - 2026-07-29

Changed

  • ArrakisSource is resilient to server interruptions: stream errors reconnect with capped exponential backoff, live streams bridge outages with gaps, and bounded streams resume from the last delivered timestamp
  • Update minimum arrakis version to 0.14.1: the reconnect handling relies on the client raising stream errors on the next read (older clients masked outages as gap-filled blocks until stream close) and on gRPC keepalives surfacing dead connections as errors instead of indefinite hangs
  • Update minimum sgn-ts version to 0.13, which introduces the TSResourceSource resource hook API the source now streams through

0.7.0 - 2026-07-07

Fixed

  • ArrakisSource: declare each channel's dtype to sgn-ts ahead of its first buffers via a zero-length data buffer

Changed

  • Update minimum sgn-ts version to 0.10.1

0.6.1 - 2026-06-03

Fixed

  • ArrakisSource: fix replay parameters not being forwarded to the worker subprocess in ArrakisSource, causing stream requests with replay_id to fail

0.6.0 - 2026-06-01

Added

  • ArrakisSource: add replay_id, replay_start, and replay_end options for streaming from replay windows
  • ArrakisSink: add replay_id option for publishing derived channels under a named replay namespace

0.5.1 - 2026-05-13

Fixed

  • ArrakisSink: check EOS before skipping heartbeat frames so the pipeline terminates when EOS arrives exclusively on heartbeat frames

0.5.0 - 2026-04-20

Added

  • ArrakisSink: derive block stride automatically from the publisher's registration, replacing the block_duration parameter

Changed

  • ArrakisSink and ArrakisSource: take an explicit channels argument instead of inferring channels from source/sink pad names
  • ArrakisSink: use upstream masked-array support from TSFrame instead of a bespoke buffer conversion
  • Update minimum arrakis version to 0.11
  • Update minimum sgn, sgn-ts versions: 0.8+

Fixed

  • ArrakisSink: preserve data in series that mix gap and non-gap regions rather than discarding the whole block
  • ArrakisSink: shut the publish thread down cleanly on exceptions so pipelines no longer hang on error

0.4.2 - 2026-04-02

Fixed

  • ArrakisSink: skip heartbeat frames
  • Improve assertion message in sink

Changed

  • Update minimum arrakis version to 0.10

0.4.1 - 2026-03-09

Added

  • Expose start/end/duration flags to CLI

Fixed

  • ArrakisSink: remove broken adapter config check; join thread at EOS

Changed

  • ArrakisSink: update to use process API

0.4.0 - 2026-03-04

Added

  • Update minimum sgn, sgn-ts versions to 0.6

Fixed

  • ArrakisSink: explicitly check that time_ns is not None
  • ArrakisSink: continue when queue is Empty instead of pass/suppress

Changed

  • Adjust to TSSource API changes
  • Bump minimum versions of arrakis and sgn packages

0.3.0 - 2025-11-07

Added

  • Register elements as entry points

Changed

  • Align buffers in sink to block duration boundaries
  • Port ArrakisSource to use new TSResourceSource based on parallelized source
  • Update minimum sgn, sgn-ts versions to 0.4

0.2.0 - 2025-07-29

Fixed

  • Handle upstream gaps in source element
  • Remove hack to adjust end time in source element

0.1.0 - 2025-04-02

  • Initial release
  • Working ArrakisSource and ArrakisSink elements
  • CLI with subcommand for sink/source spec