You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Python or rust process implemented as a standalone python package (e.g. see packaging for ibex_bluesky_core/genie/lewis for how to do this) or rust project
e.g. named kafka_dae_journals, to sit alongside kafka_dae_control and kafka_dae_diagnostics
Listens to a kafka stream for run stop messages
Update a journal.xml file with metadata from the run when a wrdn is published - this then needs to read the file and pull out the journal metadata.
Format of written journal.xml should match existing journal.xml as closely as possible.
Create a follow up ticket to test against Journal Viewer (currently some missing data)
Notes
Some metadata won't currently be available from kafka. Create new ticket(s) for these cases. For this ticket, write the data which is currently available from kafka run start/stop messages and corresponds to a field in the journal.xml. Create follow up ticket(s) for data not currently available.
Journal contains some entries like total events, total proton charge, good frames, raw frames that need to be accumulated from the main _events stream (not just runInfo pl72/6s4t). Which means that this process would need some awareness of e.g. vetoes so that it can distinguish good and raw frames, etc - and would also need to subscribe to the high-rate _events stream.
A better option may be for this process to trigger from a wrdn message, where the wrdn's metadata would contain these sorts of accumulated quantities (or potentially everything that needs to be written to the journal?). This means:
Journal entries always correspond exactly 1-1 with filewriter files, and a journal entry is not created until the file is fully written
The good/raw frames, proton charge etc recorded in .nxs is identical to journal (since the same process calculated both - so in the case of dropped frames etc they will remain consistent)
kafka_journal_writer doesn't need to subscribe to the high-rate _events stream, only low-rate metadata topics, which reduces network load and makes this process less performance-sensitive.
Activity
[-]How do we write journals[/-][+]Data streaming: write journals[/+]Tom-Willemsen commentedon Jan 18, 2026
Journal contains some entries like total events, total proton charge, good frames, raw frames that need to be accumulated from the main
_eventsstream (not justrunInfopl72/6s4t). Which means that this process would need some awareness of e.g. vetoes so that it can distinguish good and raw frames, etc - and would also need to subscribe to the high-rate_eventsstream.A better option may be for this process to trigger from a
wrdnmessage, where thewrdn's metadata would contain these sorts of accumulated quantities (or potentially everything that needs to be written to the journal?). This means:.nxsis identical to journal (since the same process calculated both - so in the case of dropped frames etc they will remain consistent)kafka_journal_writerdoesn't need to subscribe to the high-rate_eventsstream, only low-rate metadata topics, which reduces network load and makes this process less performance-sensitive.