Summary
interface_zmq_dash.py can time out waiting for an InstantLock on older/stale branches that do not contain the later wait_for_instantlock() sync fixes now present on develop.
Failing CI examples
Failure mode
test/functional/interface_zmq_dash.py times out at:
DashZMQTest.test_instantsend_publishers()
- line 300:
self.wait_for_instantlock(rpc_raw_tx_1_hash, self.nodes[0])
CI traceback excerpt:
AssertionError: Predicate ''''
def check_instantlock():
try:
return node.getrawtransaction(txid, True)["instantlock"]
except Exception:
return False
''' not true after 240.0 seconds
Root cause
This is not caused by PR #7237's own changes.
I verified in the PR worktree:
git log upstream/develop..HEAD -- test/functional/interface_zmq_dash.py test/functional/test_framework/test_framework.py
which returns no commits, so the PR branch itself does not modify the failing test/helper path.
develop already contains the fixes for this exact issue:
c79c2d981d — refactor: improve is-waiting helper by including mempool sync bump of mocktime
d8ac7815e3 — test: fix additional IS lock sync sites that passed nodes=[self.nodes[0]]
Those commits restore the wait_for_instantlock() behavior to bump mocktime and sync mempools across the relevant nodes, which is required so the MN signer nodes actually see the transaction before InstantLock signing.
The failing branch is behind develop and does not contain those fixes, so it can still hit the old timeout.
Reproduction notes
- Use a branch that predates
c79c2d981d / d8ac7815e3
- Run
python3 test/functional/interface_zmq_dash.py in a CI-capable environment with python3-zmq installed
- Observe intermittent timeout waiting for
getrawtransaction(...)["instantlock"]
Expected behavior
Branches with the current develop test framework fixes should not rely on the old unsynchronized behavior and should avoid this timeout.
Suggested resolution
For stale backport branches, rebase or cherry-pick the helper/test fixes from:
Summary
interface_zmq_dash.pycan time out waiting for an InstantLock on older/stale branches that do not contain the laterwait_for_instantlock()sync fixes now present ondevelop.Failing CI examples
dashpay/dash#7237, headc425124c7e57a3f5e851d9f5ceb8934d850e84ff):Failure mode
test/functional/interface_zmq_dash.pytimes out at:DashZMQTest.test_instantsend_publishers()self.wait_for_instantlock(rpc_raw_tx_1_hash, self.nodes[0])CI traceback excerpt:
Root cause
This is not caused by PR #7237's own changes.
I verified in the PR worktree:
which returns no commits, so the PR branch itself does not modify the failing test/helper path.
developalready contains the fixes for this exact issue:c79c2d981d—refactor: improve is-waiting helper by including mempool sync bump of mocktimed8ac7815e3—test: fix additional IS lock sync sites that passed nodes=[self.nodes[0]]Those commits restore the
wait_for_instantlock()behavior to bump mocktime and sync mempools across the relevant nodes, which is required so the MN signer nodes actually see the transaction before InstantLock signing.The failing branch is behind
developand does not contain those fixes, so it can still hit the old timeout.Reproduction notes
c79c2d981d/d8ac7815e3python3 test/functional/interface_zmq_dash.pyin a CI-capable environment withpython3-zmqinstalledgetrawtransaction(...)["instantlock"]Expected behavior
Branches with the current
developtest framework fixes should not rely on the old unsynchronized behavior and should avoid this timeout.Suggested resolution
For stale backport branches, rebase or cherry-pick the helper/test fixes from:
c79c2d981dd8ac7815e3