Skip to content

Recorder

The recorder writes Parquet recordings, owns the in-memory catalog, and exports completed Recordings to a configured destination.

Module id: recorder.

Configuration

Config type Component ref Description
recstorage recorder.recstorage.main RecStorageConfiguration is the singleton recorder.recstorage.main storage config (RFC-017).
s3upload recorder.s3upload.<id> S3UploadConfiguration is one recorder export profile (recorder.s3upload.<id>, RFC-015).
usbexport recorder.usbexport.<id> UsbExportConfiguration is one recorder export profile writing to a removable filesystem (recorder.usbexport.<id>, RFC-024).

Event: recording_completed (notification; the lifecycle journal is the durable authority).

Recording path

A measurement window from flower causes the recorder to persist channel data as Parquet parts. Completions are journaled, then the catalog is updated, then export workers are notified. Temp files use the _tmp_ prefix and are swept on the next recstorage activation.

Shutdown drops in-flight parts on purpose (power-cut). Completed parts are already renamed and parent-directory synced. See RFC-015.

Catalog

Authoritative inventory is the catalog, served over NATS - not a JetStream Recording stream. algol recording ls / info are the operator surface.

NATS endpoints

Command Request Description
recorder.recstorage.<id>.recording_get JSON One catalogued Recording by its own ref - the ref column of a recording_list page - with its measurement, channel, size, digest and context.
recorder.recstorage.<id>.recording_list JSON Lists one page of the recorder's catalog: the Recordings a measurement and a channel filter match, in path order, with the page's place in the whole set - the effective offset and the total the filter matches.
recorder.s3upload.<id>.start none Opens an export run on this S3 upload profile; a start during a run is dropped.
recorder.s3upload.<id>.stop none Ends the export run on this S3 upload profile once the Recording in hand is finished; a stop while idle is dropped.
recorder.usbexport.<id>.start none Opens an export run on this USB export profile; a start during a run is dropped.
recorder.usbexport.<id>.stop none Ends the export run on this USB export profile once the Recording in hand is finished; a stop while idle is dropped.

recording_list and recording_get are algol recording ls / info; an export run is started and stopped from a trigger.

Request/response: Messaging.