test: Check that RPCs do not time out, even under load #34927

pull maflcko wants to merge 2 commits into bitcoin:master from maflcko:2603-test-rpc-sla changing 3 files +62 −7
  1. maflcko commented at 4:35 pm on March 26, 2026: member

    It turns out there is no test currently to check that the RPC server does not time out under load. With “load” I mean a flood of trivial payloads. That is, the only work needed is JSON encoding and decoding of (let’s say) a block of data of 2 MB or so. This may take a few milliseconds, but should never take more than a few seconds.

    So add a test for this.

  2. test: [move-only] Extract create_new_rpc_connection
    Re-using the same rpc connection on multiple threads is obviously
    unsafe, so this helper can be used to create one connection per thread.
    
    This refactor does not change any behavior and can be reviewed with the
    git options:
    
    --color-moved=dimmed-zebra --color-moved-ws=ignore-all-space
    fa8fc5a237
  3. test: Check that RPCs do not time out, even under load fa94d878bc
  4. DrahtBot renamed this:
    test: Check that RPCs do not time out, even under load
    test: Check that RPCs do not time out, even under load
    on Mar 26, 2026
  5. DrahtBot added the label Tests on Mar 26, 2026
  6. maflcko marked this as a draft on Mar 26, 2026
  7. DrahtBot commented at 4:35 pm on March 26, 2026: contributor

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Reviews

    See the guideline for information on the review process. A summary of reviews will appear here.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #34566 (feature: Use different datadirs for different signets by ekzyis)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  8. maflcko commented at 4:36 pm on March 26, 2026: member

    Draft for now, because the test fails :(

    Edit: It fails in CI, but it passes locally for me:

    0./bld-cmake/test/functional/test_runner.py -j 16 $( printf 'rpc_echo_payload.py %.0s' {1..2000} )
    
  9. DrahtBot added the label CI failed on Mar 26, 2026
  10. maflcko commented at 5:30 pm on March 26, 2026: member

    Timed out after 40 minutes in https://github.com/bitcoin/bitcoin/actions/runs/23606118115/job/68749250793?pr=34927#step:11:3195:

    02026-03-26T16:46:08.3589405Z Remaining jobs: [interface_ipc_mining.py, rpc_echo_payload.py]
    12026-03-26T16:47:46.9801923Z ......................................................................................................................................................................................................
    22026-03-26T16:47:47.4805641Z                                                                                                                                                                                                       
    32026-03-26T16:47:47.4806053Z Remaining jobs: [rpc_echo_payload.py]
    42026-03-26T17:27:36.9551875Z ##[error]The operation was canceled.
    
  11. maflcko commented at 5:30 pm on March 26, 2026: member
    cc @dergoegge Can you copy-paste the Python test into Antithesis to see if it fails there?

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-03-30 00:13 UTC

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