mirror of
https://github.com/XRPLF/rippled.git
synced 2026-09-27 07:26:51 +00:00
c531ac569basserted txq.accept -> txq.accept_tx. Run 32990348089 failed it: "txq.accept_tx not found in txq.accept traces", the only failure in 278 checks. Skipped rather than left red. Not a missing span, and not an xrpld defect. Both ends emit on that same run, 5 traces each with all their attributes. The assertion was simply stronger than the check can evaluate, and the reason is a conditional child meeting newest-N sampling. The parent is created once per accept pass, so every ledger close (TxQ.cpp:1499). The child is created inside the loop over queued transactions and behind `if (feeLevelPaid >= requiredFeeLevel)` (TxQ.cpp:1530), so it exists only for a close where the queue actually held a transaction whose fee cleared the level. _validate_parent_child searches the parent with limit=3 (validate_telemetry.py:803). Queue pressure comes from workload phase 5 of 7, txq-burst, and mixed-peak (60s) then cooldown (30s) run after it -- so by the time validation queries, the three newest txq.accept traces are quiet closes with an empty queue and no child to find. That is the same shape as the rpc.command.* skips already in this file: sampling the newest traces of the parent is wrong whenever the child is conditional on load that has since stopped. Recorded in the reason, with the two real fixes in preference order -- prefer parent traces that contain the child via a TraceQL child filter instead of newest-N, or move txq-burst to the final workload phase. Raising the limit alone only shifts the odds, which would make the check flaky rather than correct, so it is named and rejected there. The other 13 assertions added inc531ac569ball PASS, including the three consensus.round children, the two consensus.establish children, rpc.http_request -> rpc.process and the three ledger.acquire phases. The regression gate is clean at 0 regressions now that phase-10 recaptured the baseline, and both reverse-coverage checks pass. Verification: JSON parses; 18 relationships, 13 asserted and 5 skipped; counters still 41 span types; churn 3/1, surgical; otel-naming exits 0; pre-commit clean.