Skip to content

Fix state tracking for sequenced triggers. Improve logging - #522

Merged
eflumerf merged 12 commits into
developfrom
eflumerf/SequenceHandling
Nov 10, 2026
Merged

eflumerf merged 12 commits into
developfrom
eflumerf/SequenceHandling

Conversation

@eflumerf

@eflumerf eflumerf commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Description

In the case where TRBModule decides to sequence a trigger decision, DataflowStatusModule needs to be able to allow the trigger to be in both "building" and "writing" states, as early sequences can complete building and writing while later sequences are still being built.

Fix logging in DFOModule::is_busy, TLOG() will always print logs, even when given a TRACE level.
Improve DataflowStatusModule ERS issues, including sequence number and current run number for comparison.

Work on drain_dataflow and stop correctness. drain_dataflow will now cause DataWriterModule to stop retrying when it encounters a writing issue (e.g. insufficient_disk_space_test). DataflowStatusModule now runs its heartbeat thread from start to stop (instead of conf to scrap).

Type of change

  • Documentation (non-breaking change that adds or improves the documentation)
  • New feature or enhancement (non-breaking change which adds functionality)
  • Optimization (non-breaking change that improves code/performance)
  • Bug fix (non-breaking change which fixes an issue)
  • Breaking change (whatever its nature)

Testing checklist

  • Unit tests pass (e.g. dbt-build --unittest)
  • Minimal system quicktest passes (pytest -s minimal_system_quick_test.py)
  • Full set of integration tests pass (dunedaq_integtest_bundle.sh)
  • Python tests pass if applicable (e.g. python -m pytest)
  • Pre-commit hooks run successfully if applicable (e.g. pre-commit run --all-files)

At time of PR creation, integration tests are ongoing.

Further checks

  • Code is commented where needed, particularly in hard-to-understand areas
  • Code style is correct (dbt-build --lint, and/or see https://dune-daq-sw.readthedocs.io/en/latest/packages/styleguide/)
  • If applicable, new tests have been added or an issue has been opened to tackle that in the future.
    (Indicate issue here: # (issue))

@eflumerf
eflumerf requested a review from bieryAtFnal November 5, 2026 13:55
@eflumerf eflumerf added the bug Something isn't working label Nov 5, 2026
@eflumerf
eflumerf marked this pull request as draft November 5, 2026 17:48
@eflumerf

This comment was marked as outdated.

@eflumerf

This comment was marked as outdated.

@eflumerf

eflumerf commented Nov 6, 2026

Copy link
Copy Markdown
Member Author

Output from dunedaq_integtest_bundle.sh -r all -x dfo_protocol_test -x offline

+++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++ SUMMARY ++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++

Fri Nov  6 01:09:08 PM CST 2026
Log file is: /tmp/pytest-of-eflumerf/dunedaq_integtest_bundle_20261106112820.log

⮕ Running crtmodules/crt_frame_builder_test.py ⬅
======================== 4 passed ✅ in 129.63s (0:02:09) =========================
⮕ Running daqsystemtest/3ru_1df_multirun_test.py ⬅
======================== 6 passed ✅ in 248.52s (0:04:08) =========================
⮕ Running daqsystemtest/3ru_3df_multirun_test.py ⬅
======================== 6 passed ✅ in 243.52s (0:04:03) =========================
⮕ Running daqsystemtest/disabled_tpg_test.py ⬅
========================= 3 passed ✅ in 61.13s (0:01:01) =========================
⮕ Running daqsystemtest/example_system_test.py ⬅
======================== 6 passed ✅ in 129.18s (0:02:09) =========================
⮕ Running daqsystemtest/fake_data_producer_test.py ⬅
======================== 6 passed ✅ in 237.24s (0:03:57) =========================
⮕ Running daqsystemtest/long_window_readout_test.py ⬅
======================== 3 passed ✅ in 202.45s (0:03:22) =========================
⮕ Running daqsystemtest/minimal_system_quick_test.py ⬅
============================== 4 passed ✅ in 55.98s ==============================
⮕ Running daqsystemtest/readout_type_scan_test.py ⬅
======================== 33 passed ✅ in 630.83s (0:10:30) ========================
⮕ Running daqsystemtest/sample_ehn1_multihost_test.py ⬅
============================== 4 skipped 🟡 in 5.65s ==============================
⮕ Running daqsystemtest/small_footprint_quick_test.py ⬅
============================== 3 passed ✅ in 58.14s ==============================
⮕ Running daqsystemtest/tpg_state_collection_test.py ⬅
============================== 1 skipped 🟡 in 0.39s ==============================
⮕ Running daqsystemtest/tpreplay_test.py ⬅
======================== 6 passed ✅ in 129.07s (0:02:09) =========================
⮕ Running daqsystemtest/tpstream_writing_test.py ⬅
======================== 4 passed ✅ in 113.54s (0:01:53) =========================
⮕ Running daqsystemtest/trigger_bitwords_test.py ⬅
======================== 18 passed ✅ in 325.99s (0:05:25) ========================
⮕ Running dfmodules/disabled_output_test.py ⬅
======================== 8 passed ✅ in 289.81s (0:04:49) =========================
⮕ Running dfmodules/hdf5_compression_test.py ⬅
======================== 4 passed ✅ in 381.92s (0:06:21) =========================
⮕ Running dfmodules/insufficient_disk_space_test.py ⬅
======================== 3 passed ✅ in 141.20s (0:02:21) =========================
⮕ Running dfmodules/large_trigger_record_test.py ⬅
======================== 6 passed ✅ in 281.37s (0:04:41) =========================
⮕ Running dfmodules/max_file_size_test.py ⬅
======================== 4 passed ✅ in 423.01s (0:07:03) =========================
⮕ Running dfmodules/multiple_data_writers_test.py ⬅
======================== 3 passed ✅ in 113.92s (0:01:53) =========================
⮕ Running dfmodules/trmonrequestor_test.py ⬅
======================== 3 passed ✅ in 118.38s (0:01:58) =========================
⮕ Running drunc/basic_multiapp_test.py ⬅
========================= 3 passed ✅ in 63.98s (0:01:03) =========================
⮕ Running drunc/controller_test.py ⬅
======================== 21 passed ✅ in 113.13s (0:01:53) ========================
⮕ Running drunc/failure_mode_death_on_boot_nest_app_test.py ⬅
============================== 5 skipped 🟡 in 0.29s ==============================
⮕ Running drunc/failure_mode_death_on_boot_top_app_test.py ⬅
============================== 5 skipped 🟡 in 0.29s ==============================
⮕ Running drunc/failure_mode_death_post_boot_nest_app_test.py ⬅
============================== 7 skipped 🟡 in 0.29s ==============================
⮕ Running drunc/failure_mode_death_post_boot_top_app_test.py ⬅
============================== 8 skipped 🟡 in 0.29s ==============================
⮕ Running drunc/failure_mode_fsm_cmd_death_nest_app_test.py ⬅
============================== 6 skipped 🟡 in 0.29s ==============================
⮕ Running drunc/failure_mode_fsm_cmd_death_top_app_test.py ⬅
============================== 6 skipped 🟡 in 0.28s ==============================
⮕ Running drunc/failure_mode_fsm_cmd_timeout_nest_app_test.py ⬅
============================== 6 skipped 🟡 in 0.29s ==============================
⮕ Running drunc/failure_mode_fsm_cmd_timeout_top_app_test.py ⬅
============================== 6 skipped 🟡 in 0.28s ==============================
⮕ Running drunc/pmaas_test.py ⬅
======================== 10 passed ✅ in 148.34s (0:02:28) ========================
⮕ Running drunc/pm_pms_test.py ⬅
======================== 14 passed ✅ in 98.79s (0:01:38) =========================
⮕ Running drunc/pm_us_test.py ⬅
======================== 28 passed ✅ in 241.01s (0:04:01) ========================
⮕ Running drunc/process_manager_test.py ⬅
======================== 11 passed ✅ in 107.87s (0:01:47) ========================
⮕ Running drunc/rc_rcs_test.py ⬅
============================== 3 passed ✅ in 9.26s ===============================
⮕ Running hsilibs/iceberg_real_hsi_test.py ⬅
============================== 3 skipped 🟡 in 7.77s ==============================
⮕ Running listrev/listrev_test.py ⬅
======================== 14 passed ✅ in 359.94s (0:05:59) ========================
⮕ Running snbmodules/simple_transform_test.py ⬅
======================== 6 passed ✅ in 130.98s (0:02:10) =========================
⮕ Running trigger/change_rate_test.py ⬅
======================== 3 passed ✅ in 284.51s (0:04:44) =========================
⮕ Running trigger/no_duplicate_ta_test.py ⬅
======================== 3 passed ✅ in 111.57s (0:01:51) =========================

@eflumerf
eflumerf marked this pull request as ready for review November 6, 2026 19:33

@wesketchum wesketchum left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've tested and I also see that the tests are passing (modulo connectivity service issues) that aren't the dfo_protocol_test.

(Identified maybe a separate issue when trying to run the dfo_protocol_test here: #526. Still working on closing the loop on that.)

So, looks ok to me and I think it will help with tests passing.

@eflumerf
eflumerf merged commit 21d4ef0 into develop Nov 10, 2026
5 checks passed
@eflumerf
eflumerf deleted the eflumerf/SequenceHandling branch November 10, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants