mirror of
https://github.com/XRPLF/rippled.git
synced 2026-08-21 06:10:58 +00:00
The Transaction Overview panel "Queue Bypass Ratio (Direct Apply vs Enqueue)" reported a confident 0.50 on every node while the true bypass rate was zero. The two spans it divided are not disjoint alternatives: txq.apply_direct is a child of txq.enqueue. TxQ.cpp creates the apply_direct span as the first statement of tryDirectApply(), ahead of the account, sequence and fee-level guards, and tryDirectApply() is called from inside the live enqueue scope. The span therefore counts attempts, so the denominator direct + enqueue counts each transaction twice and pins the ratio to one half algebraically. Measured on a four-node fleet: 6082443 direct against 6082877 enqueue over the same population, panel output 0.5000170 on three nodes and 0.5000000 on the fourth. Grouping txq.enqueue by txq_status over seven days returns only "rejected" -- no transaction has ever taken the direct-apply path. Remove the panel rather than repoint it. A correct expression using txq_status as the disjoint discriminator would render permanently empty on this fleet, which reads no better than a wrong number. Widen the band partner "TxQ Enqueue Rate by Transaction Type" from 12 to 24 columns so the y=48 band still fills the grid. Every band in all ten dashboards sums to 24 columns; leaving a half-width hole would be the only exception. Panel order and every other panel's position, width and height are unchanged. The runbook already listed txq.apply_direct as available but not paneled, so that row becomes accurate. Rows describing the span itself are untouched -- the span and its metric are unchanged.