Update libmultiprocess subtree to add `ThreadMap.makePool` method #35661

pull ryanofsky wants to merge 2 commits into bitcoin:master from ryanofsky:pr/subtree-11 changing 25 files +658 −332
  1. ryanofsky commented at 9:36 PM on July 5, 2026: contributor

    The changes can be verified by running test/lint/git-subtree-check.sh src/ipc/libmultiprocess as described in developer notes and lint instructions.

    Changes since last subtree update (#34977):

    • Adds makePool method on ThreadMap to support thread pool routing, allowing requests without a specific client thread to be dispatched to a pool using a shortest-queue strategy (#283).
    • Adds std::unordered_set support, a BuildList helper, and a ReadList helper to reduce duplication in list build and read handlers (#277, #285).
    • Adds support for translating C++ std::optional<T> struct fields to pairs of T + hasT :Bool Cap'n Proto struct fields, allowing unset optional primitive fields to be represented (#243).
    • Produces more readable log output for Proxy object lifecycle events and IPC server-side failures (#218).
    • Handles exceptions thrown by destroy methods by logging instead of aborting (#273). This can prevent server crashes when non-libmultiprocess clients disconnect without destroying objects, in the case where a server object owns client objects and the server destructor tries to call the disconnected client to free them (#219).
    • Handles unexpected exceptions thrown by callbacks (that should never happen) by logging errors instead of deadlocking (#260).
    • Fixes a rare mptest hang on musl builds caused by a lost wakeup bug in Waiter (#295).
    • Fixes a race condition in a log print detected by TSan (#286).
    • Build improvements: makes target_capnp_sources work correctly when libmultiprocess is used as a CMake subproject (#289), adds mp_headers target for better lint tool support (#291), and fixes compatibility with recent Nix and CMake 4.0 (#238).
    • Test, CI, documentation, and minor code improvements: design document corrections (#278), field constant comments (#279), clang-tidy fix (#292), new smoke test for double-precision float values (#294), new test for recursive async IPC calls (#301), removal of libevent from Core CI builds (#299), and rename of EventLoop::m_num_clients to m_num_refs (#302).
  2. Squashed 'src/ipc/libmultiprocess/' changes from 3edbe8f67c1..16bf05dea02
    16bf05dea02 Merge bitcoin-core/libmultiprocess#302: refactor: rename EventLoop::m_num_clients to m_num_refs
    dd537da9e40 Merge bitcoin-core/libmultiprocess#301: test: recursive async IPC calls and cleanups
    400291de000 Merge bitcoin-core/libmultiprocess#299: ci: remove libevent from Core CIs
    092be515adf Merge bitcoin-core/libmultiprocess#285: Add ReadList helper
    5b617880c51 Merge bitcoin-core/libmultiprocess#283: Add `makePool` method on `ThreadMap`
    d4998304154 refactor: rename EventLoop::m_num_clients to m_num_refs
    6450345c985 type: reserve first when reading std::unordered_set
    4d0f8db5f99 proxy: add ReadList helper and dedup map/set/vector read handlers
    0e49d911867 Add `makePool` method on `ThreadMap`
    5519f7f9485 test: recursive async IPC calls
    a29ceff40bc ci: remove libevent from Core CIs
    8412fcdc659 Merge bitcoin-core/libmultiprocess#295: Mark Waiter m_cv as guarded by m_mutex
    1593ee2d18a Merge bitcoin-core/libmultiprocess#294: test: Add passDouble smoke test
    9885d7dd33c Merge bitcoin-core/libmultiprocess#286: proxy-client: fix TSan data race in clientDestroy
    fa35501c4f0 Mark Waiter m_cv as guarded by m_mutex
    faaedb11f8a test: Add passDouble smoke test
    733c64318d1 Merge bitcoin-core/libmultiprocess#292: type-number: fix clang-tidy modernize-use-nullptr
    9cc3479ab33 Merge bitcoin-core/libmultiprocess#291: cmake: Add `mp_headers` custom target
    201abd9e3a5 Merge bitcoin-core/libmultiprocess#289: cmake: make target_capnp_sources use CURRENT dirs
    99820c8aecb Merge bitcoin-core/libmultiprocess#279: doc: Add comments to FIELD_* constants in proxy.h
    73b985540c5 Merge bitcoin-core/libmultiprocess#278: doc: Fix and expand design.md
    e7e91b2e23e Merge bitcoin-core/libmultiprocess#277: Add std::unordered_set support and a helper BuildList to dedup list build handlers
    91a951f59ac tidy fix: modernize-use-nullptr
    16362f42d01 cmake: Add `mp_headers` custom target
    615a94fe3a2 cmake: document ONLY_CAPNP option in target_capnp_sources
    90982f75c6b mpgen: iwyu changes required by previous commit
    25bb3e67f39 proxy-client: fix TSan data race in clientDestroy
    620f297f311 cmake: make target_capnp_sources use CURRENT dirs
    9de4b885aa6 test: use camelCase + $Proxy.name for FooStruct fields
    011b91793dd type: add std::unordered_set support
    20d19b9644e proxy: add BuildList helper and dedup map/set/vector build handlers
    e863c6cdf61 doc: Add comments to FIELD_* constants in proxy.h
    18db0ab9570 doc: Fix and expand design.md
    61de6975362 Merge bitcoin-core/libmultiprocess#273: proxy-client: tolerate exceptions from remote destroy during cleanup
    9cec9d6ca55 Merge bitcoin-core/libmultiprocess#243: mpgen: support primitive std::optional struct fields
    4aaff113745 Merge bitcoin-core/libmultiprocess#238: cmake, ci: updates for recent nixpkgs
    2ac55a56b58 Merge bitcoin-core/libmultiprocess#218: Better error and log messages
    6de92e1c732 proxy-client: tolerate exceptions from remote destroy during cleanup
    90be8354d47 test: regression for ~ProxyClient destroy after peer disconnect
    3c69d125a17 Merge bitcoin-core/libmultiprocess#260: event loop: tolerate unexpected exceptions in `post()` callbacks
    b8a48c65e60 event loop: tolerate unexpected exceptions in `post()` callbacks
    f787863d2cd Merge bitcoin-core/libmultiprocess#270: doc: Bump version 10 > 11
    a22f6029103 doc: Bump version 10 > 11
    4eae445d6d8 debug: Add TypeName() function and log statements for Proxy objects being created and destroyed
    f326c5b1b7b logging: Add better logging on IPC server-side failures
    6dbfa56a040 mpgen: support primitive std::optional struct fields
    8d1277deb55 mpgen refactor: add AccessorType function
    db716bbcba7 mpgen refactor: Move field handling code to FieldList class
    db7acb3ce27 ci: Fix shell.nix compatibility with CMake 4.0
    91a7759a9ab cmake: Fix IWYU in nix by adding CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES
    
    git-subtree-dir: src/ipc/libmultiprocess
    git-subtree-split: 16bf05dea02651f75733ff08531181aa774fc5a8
    6b0a907302
  3. Merge commit '6b0a907302364649dcaffeb0340b985f14141b4e' into pr/subtree-11 02afa66169
  4. DrahtBot commented at 9:36 PM on July 5, 2026: contributor

    <!--e57a25ab6845829454e8d69fc972939a-->

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

    <!--006a51241073e994b41acfe9ec718e94-->

    Code Coverage & Benchmarks

    For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/35661.

    <!--021abf342d371248e50ceaed478a90ca-->

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    ACK fanquake, hebasto

    If your review is incorrectly listed, please copy-paste <code>&lt;!--meta-tag:bot-skip--&gt;</code> into the comment that the bot should ignore.

    <!--174a7506f384e20aa4161008e828411d-->

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #35037 (ipc: support per-address max-connections options on -ipcbind by enirox001)
    • #29409 (multiprocess: Add capnp wrapper for Chain interface by ryanofsky)
    • #19461 (multiprocess: Add bitcoin-gui -ipcconnect option by ryanofsky)
    • #19460 (multiprocess: Add bitcoin-wallet -ipcconnect option by ryanofsky)
    • #10102 (Multiprocess bitcoin by ryanofsky)

    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.

    <!--5faf32d7da4f0f540f40219e4f7537a3-->

  5. fanquake commented at 2:53 PM on July 6, 2026: member

    ACK 02afa66169b5dc58d0fc6f608d0c6f4facefd5ec

  6. hebasto approved
  7. hebasto commented at 4:18 PM on July 6, 2026: member

    ACK 02afa66169b5dc58d0fc6f608d0c6f4facefd5ec.


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-07-07 06:51 UTC

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