qa: failure in p2p_private_broadcast.py #34387

issue Sjors openend this issue on January 23, 2026
  1. Sjors commented at 7:56 am on January 23, 2026: member

    Noticed on the test-each-commit job for #32857:

    https://github.com/bitcoin/bitcoin/actions/runs/21254115595/job/61163625701?pr=32857

     0 node1 2026-01-22T16:33:40.225497Z [http] [httpserver.cpp:308] [http_request_cb] [http] Received a POST request for / from 127.0.0.1:40648 
     1 node1 2026-01-22T16:33:40.225559Z [httpworker.1] [rpc/request.cpp:243] [parse] [rpc] ThreadRPCServer method=getrawmempool user=__cookie__ 
     2 test  2026-01-22T16:33:40.276527Z TestFramework.utils (ERROR): wait_until() failed. Predicate: '''' 
     3                                           self.wait_until(lambda: len(tx_receiver.getrawmempool()) > 0)
     4                                   '''
     5 test  2026-01-22T16:33:40.276665Z TestFramework (ERROR): Unexpected exception 
     6                                   Traceback (most recent call last):
     7                                     File "/home/runner/work/bitcoin/bitcoin/test/functional/test_framework/test_framework.py", line 142, in main
     8                                       self.run_test()
     9                                     File "/home/runner/work/bitcoin/bitcoin/ci_build/test/functional/p2p_private_broadcast.py", line 331, in run_test
    10                                       self.wait_until(lambda: len(tx_receiver.getrawmempool()) > 0)
    11                                     File "/home/runner/work/bitcoin/bitcoin/test/functional/test_framework/test_framework.py", line 746, in wait_until
    12                                       return wait_until_helper_internal(test_function, timeout=timeout, timeout_factor=self.options.timeout_factor, check_interval=check_interval)
    13                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    14                                     File "/home/runner/work/bitcoin/bitcoin/test/functional/test_framework/util.py", line 420, in wait_until_helper_internal
    15                                       raise AssertionError("Predicate {} not true after {} seconds".format(predicate_source, timeout))
    16                                   AssertionError: Predicate ''''
    17                                           self.wait_until(lambda: len(tx_receiver.getrawmempool()) > 0)
    18                                   ''' not true after 60 seconds
    19 test  2026-01-22T16:33:40.277541Z TestFramework (DEBUG): Closing down network thread 
    20 test  2026-01-22T16:33:40.327831Z TestFramework (INFO): Not stopping nodes as test failed. The dangling processes will be cleaned up later. 
    
  2. fanquake added the label CI failed on Jan 23, 2026
  3. fanquake commented at 8:00 am on January 23, 2026: member
    cc @vasild
  4. vasild commented at 11:44 am on January 23, 2026: contributor

    The failure is because a network-specific connection sneaked before the private broadcast one. It is a race in the test, I am considering how to best resolve it.

    Longer explanation: the tx originator bitcoind makes 10 initial connections as expected (apparently none of them are to Tor). Then the test sends a private broadcast and expects that the next connection to be made is a private broadcast and thus redirects it to nodes[1] instead of to a dummy Python P2P node. So, nodes[1] receives the network specific connection to Tor instead of the private broadcast connection. So, nodes[1] never receives the transaction and its mempool stays empty.

  5. vasild referenced this in commit 590a7b2595 on Jan 26, 2026
  6. vasild commented at 12:05 pm on January 26, 2026: contributor

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-01-27 06:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me