Skip to content

Fix #128: Align transport config defaults between async and blocking runners#147

Open
mcurrier2 wants to merge 1 commit into
mainfrom
fix/128-transport-config-parity
Open

Fix #128: Align transport config defaults between async and blocking runners#147
mcurrier2 wants to merge 1 commit into
mainfrom
fix/128-transport-config-parity

Conversation

@mcurrier2

Copy link
Copy Markdown
Collaborator

Summary

  • Aligns two cosmetic config inconsistencies between src/benchmark.rs (async) and src/benchmark_blocking.rs (blocking) that made the code confusing but did not affect benchmark metrics
  • Adds documenting comments explaining the three intentional design differences so future contributors understand why they exist

Changes

Change Before After
message_queue_depth (non-PMQ) 100 in blocking 10 (matches async)
PMQ name format /ipc_benchmark_{uuid} /ipc_benchmark_pmq_{uuid} (matches async)
max_connections: 1 Uncommented Documented: blocking is single-threaded
SHM round-trip skip Brief comment Explains ring buffer is unidirectional
Shutdown messages Brief comment Explains PMQ/SHM need explicit shutdown vs stream EOF

Why This Is Safe

  • Non-PMQ transports ignore message_queue_depth entirely
  • PMQ name only needs to be unique (UUID guarantees this)
  • Comments are documentation only — no logic changes
  • No functional behavior changes, no metric impact

Test plan

  • cargo fmt — clean
  • cargo clippy --all-targets -- -D warnings — zero warnings
  • cargo test — all 476 tests pass (unit + integration + doc)
  • cargo build --release — clean build
  • Pre-commit hooks pass

Closes #128

Made with Cursor

…runners

- Change non-PMQ message_queue_depth from 100 to 10 in blocking runner
  to match async runner (non-PMQ transports ignore this field, but
  alignment removes confusion when reading configs)
- Change PMQ name format from /ipc_benchmark_{uuid} to
  /ipc_benchmark_pmq_{uuid} in blocking runner to match async runner
  (both are unique via UUID, this is a cosmetic consistency fix)
- Add documenting comment at max_connections: 1 explaining that
  blocking mode is single-threaded by design (vs async concurrency.max(16))
- Add documenting comment at SHM round-trip skip explaining that the
  blocking ring buffer is physically unidirectional
- Add documenting comment at PMQ/SHM shutdown messages explaining why
  message-oriented transports need explicit shutdown (vs stream-based
  EOF detection in async mode)
- No functional behavior changes, no metric impact
- All tests pass, clippy clean, cargo fmt applied

AI-assisted-by: Claude Opus 4 (claude-sonnet-4-20250514)
Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

Failed to post review comments.

GitHub was unavailable or timed out while CodeRabbit was posting the review. Please request a new review later if the pull request still needs one. Use @coderabbitai full review to retry the review.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Enterprise

Run ID: 79c8cfdc-4904-4cb2-9913-fe9379f25af2

📥 Commits

Reviewing files that changed from the base of the PR and between d586320 and cb86b93.

📒 Files selected for processing (1)
  • src/benchmark_blocking.rs
⏰ Context from checks skipped due to timeout. (5)
  • GitHub Check: Build and Test (ubuntu-latest, stable)
  • GitHub Check: Build and Test (ubuntu-latest, stable, quay.io/centos/centos:stream9)
  • GitHub Check: Build and Test (windows-latest, stable)
  • GitHub Check: Build and Test (macOS-latest, stable)
  • GitHub Check: Build and Test (ubuntu-latest, beta)
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.

Files:

  • src/benchmark_blocking.rs
📝 Walkthrough

Summary by CodeRabbit

  • Bug Fixes
    • Adjusted blocking transport defaults for message-queue-related settings, including a lower fallback queue depth in some environments.
    • Updated Linux message queue naming to use a distinct namespace, helping avoid naming collisions.
  • Documentation
    • Clarified blocking-mode behavior and transport assumptions in the code comments for round trips, warmup shutdown handling, and single-threaded operation.

Walkthrough

This PR adjusts blocking-mode transport configuration defaults in src/benchmark_blocking.rs: reducing the adaptive_queue_depth default from 100 to 10, and renaming the PMQ message queue namespace to include a "pmq" segment. It also expands inline documentation explaining blocking-mode behavior for SHM round-trips, single-threaded connections, and PMQ/SHM shutdown handling.

Changes

Blocking transport config alignment

Layer / File(s) Summary
Transport config defaults and PMQ naming
src/benchmark_blocking.rs
adaptive_queue_depth default reduced from 100 to 10 for non-PMQ/non-Linux branches; PMQ message_queue_name prefix changed from /ipc_benchmark_{uuid} to /ipc_benchmark_pmq_{uuid}.
Documentation clarifications for blocking-mode behavior
src/benchmark_blocking.rs
Added comments explaining max_connections: 1 single-threaded rationale, SHM round-trip's need for two segments, and PMQ/SHM's requirement for explicit Shutdown messages plus 50ms delay in warmup.

Estimated code review effort: 2 (Simple) | ~10 minutes

Related issues: #128 (Transport config parity: async vs blocking runners use different defaults) — this PR partially addresses the queue depth and PMQ naming discrepancies noted in the issue, but does not appear to address max_connections, SHM round-trip skipping, or get_msg_count() parity.

Suggested labels: documentation, bug

Suggested reviewers: (none identified from provided context)

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The PR matches the queue-depth and PMQ-name parts, but it leaves the connection-limit, SHM round-trip, and warmup-parity requirements unresolved. Align max_connections, SHM round-trip, and warmup cleanup with async, or narrow #128 to the two cosmetic fixes actually implemented.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title succinctly captures the main change: aligning blocking runner transport defaults with the async runner.
Description check ✅ Passed The description covers summary, safety, and testing, but it omits the template's Type of Change and checklist sections.
Out of Scope Changes check ✅ Passed The changes stay within scope, limited to transport defaults and related documentation comments.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

📈 Changed lines coverage: 100.00% (2/2)

✅ All new and modified lines are covered by tests!

📊 Code Coverage Summary

File Line Coverage Uncovered Lines
src/benchmark.rs 84.13%
(509/605)
75, 78, 89, 93, 102, 105, 107, 124, 424, 429-434, 441-446, 513-516, 621, 705, 717-719, 739, 808-810, 815, 836, 841, 859, 965, 969-972, 974, 983-986, 988, 1064, 1095, 1098, 1100-1101, 1110-1111, 1253, 1266, 1283, 1406, 1415, 1417-1418, 1421-1422, 1428-1429, 1434-1435, 1437, 1442-1443, 1447-1449, 1454-1455, 1458-1459, 1491, 1549-1553, 1555-1561, 1563, 1566, 1723, 1738
src/benchmark_blocking.rs 74.32%
(327/440)
97, 111, 127, 263, 369, 380-382, 402, 434, 495, 594, 607, 621, 651-654, 741-744, 763, 767, 785, 827, 829-831, 835, 838-840, 842, 845, 847-851, 853-854, 866-870, 872-876, 879-880, 884-885, 920, 969, 1051, 1062, 1092, 1095, 1160-1165, 1167, 1225-1228, 1233, 1246, 1249-1252, 1256, 1258-1261, 1263, 1265-1266, 1268-1269, 1272, 1274-1279, 1281, 1285-1286, 1288, 1290, 1314, 1326-1331, 1333, 1353-1356
src/cli.rs 92.39%
(85/92)
691, 790, 830, 832, 853-855
src/execution_mode.rs 100.00%
(14/14)
``
src/ipc/mod.rs 63.64%
(49/77)
134, 458, 460-463, 773-774, 789-790, 808-809, 840, 843, 846, 851, 878-879, 893, 895, 915, 917, 1040-1042, 1231-1233
src/ipc/posix_message_queue.rs 46.09%
(59/128)
139-140, 213-215, 217, 224, 229, 332-335, 337, 345, 437, 441-442, 446, 449-452, 454-458, 539, 679, 782, 789-790, 807-808, 819-820, 831-832, 849-850, 906, 910-911, 914-919, 921-923, 927, 929-931, 933, 935-937, 941-943, 945-947, 994-995, 1017
src/ipc/posix_message_queue_blocking.rs 72.16%
(127/176)
172, 182, 221, 251-255, 274, 325, 368, 387-390, 416-418, 422-423, 425-426, 436, 455, 457-458, 460-461, 474-475, 477-478, 484, 486-491, 493-495, 497-498, 503, 505-506, 508-509
src/ipc/shared_memory.rs 69.36%
(163/235)
69, 152, 156, 257-258, 268-269, 273, 401-402, 428-430, 432, 450-452, 454-455, 457-461, 478, 485, 491, 494-495, 499, 503, 507-508, 513-514, 677-678, 681-682, 685, 687, 692-693, 720-721, 724-725, 732-734, 736, 738-743, 745-746, 749-750, 752-756, 763, 793, 795-796, 798, 802
src/ipc/shared_memory_blocking.rs 75.96%
(218/287)
177, 199-201, 203-204, 207-209, 212-213, 215, 220, 222, 226-228, 233, 241-243, 246-248, 251-252, 254, 257, 260-261, 264-265, 269-270, 272, 276-277, 279, 314-316, 322-323, 403-404, 428-432, 544, 552, 602, 619, 706, 772, 805-806, 808-809, 816, 833, 835-836, 838, 871, 880, 890, 912
src/ipc/shared_memory_direct.rs 83.25%
(159/191)
400-403, 472-479, 483, 511, 536-539, 543-544, 590-591, 603, 633, 640-641, 697-698, 704, 726, 731-732
src/ipc/tcp_socket.rs 59.43%
(63/106)
31-32, 61, 96, 113-114, 118, 124-125, 129, 136-137, 141, 147-148, 152, 171-172, 175-177, 184-185, 188, 362-363, 366-367, 370-371, 376-377, 422, 429, 447-449, 478, 480-482, 484, 487
src/ipc/tcp_socket_blocking.rs 94.23%
(98/104)
145, 170, 322-325
src/ipc/unix_domain_socket.rs 59.43%
(63/106)
29-30, 58, 93, 103, 122-123, 127, 133-134, 138, 145-146, 150, 156-157, 161, 180-181, 184-186, 193-194, 197, 346-347, 350-351, 354-355, 360-361, 412-414, 443, 445-447, 449, 452, 468
src/ipc/unix_domain_socket_blocking.rs 92.06%
(116/126)
287-288, 294-296, 298, 363-366
src/logging.rs 100.00%
(13/13)
``
src/main.rs 45.76%
(162/354)
85-87, 89, 130-131, 141-145, 149-151, 153-154, 156-157, 177-180, 204-208, 216, 222, 225, 230-233, 238-239, 245, 251, 253-255, 257, 263-264, 270, 275, 278-279, 283, 285-286, 290-291, 293, 299, 303-304, 306-311, 313-314, 317, 326, 329-330, 333, 380-383, 390, 392-396, 399-402, 404-405, 407-408, 410, 412-418, 422, 424-427, 430, 434-436, 440, 442, 445, 449, 454-457, 463-464, 470-471, 477, 479-480, 484, 486, 491-493, 497, 500-501, 503-504, 509, 511-513, 517-518, 520, 527, 532-533, 535-540, 542-543, 547, 556, 559-560, 563, 565, 584, 591, 595-597, 599, 627-628, 636, 669, 704, 729, 733, 736-739, 795-796, 803-804, 807, 834-835, 838, 875, 896-897, 901-904, 926, 953, 962, 967, 972-973
src/metrics.rs 84.04%
(158/188)
455-460, 493-494, 552, 558, 579-582, 732-734, 736, 768, 833, 838, 881, 904, 952, 980, 984, 1005, 1007-1008, 1013
src/results.rs 56.60%
(253/447)
726, 735-737, 739-740, 743-744, 747, 769, 772-773, 776, 778, 781, 785-790, 800-801, 804-809, 826, 838-839, 841, 843, 846-847, 849, 853, 880, 904-906, 909-910, 914-916, 919, 945, 950, 955, 961, 980, 982-983, 985, 987-991, 993, 995-996, 1030, 1071-1072, 1075, 1081-1082, 1086, 1090-1092, 1094-1095, 1119-1123, 1126-1129, 1132-1141, 1151-1152, 1171-1172, 1174-1178, 1180, 1197-1198, 1200-1205, 1207, 1225, 1227-1232, 1250, 1253, 1269-1270, 1285-1287, 1289-1291, 1293-1294, 1296-1297, 1299-1300, 1302, 1304-1305, 1307-1310, 1312-1314, 1316-1318, 1321, 1325-1326, 1334-1339, 1341-1342, 1346-1347, 1351-1353, 1355, 1359-1360, 1369-1372, 1376-1378, 1382, 1384-1385, 1393-1394, 1399, 1406-1410, 1412, 1610-1611, 1831-1832, 1834-1835
src/results_blocking.rs 95.51%
(298/312)
489-490, 492-493, 544, 769, 774, 779, 815, 818-819, 827-828, 886
src/standalone_client.rs 84.57%
(636/752)
40, 68-69, 79, 84-85, 87, 96-99, 109-111, 113, 117, 133, 154, 256, 276, 320, 361, 365, 396, 414, 513, 531, 542, 549, 614, 617-618, 626-646, 648-649, 651, 675, 682, 698, 736, 739, 761-763, 768-769, 857, 877, 893, 921, 924-925, 962, 966, 997, 1001, 1015, 1022, 1105, 1123, 1134, 1141, 1144, 1201, 1204-1205, 1213-1233, 1235-1236, 1238, 1262, 1269, 1272, 1284, 1321, 1324
src/standalone_server.rs 77.97%
(400/513)
138, 161, 187, 204-205, 207, 217-219, 221, 260, 285-286, 309-311, 335-336, 421-422, 425-426, 446-447, 457-458, 461, 463, 465, 475-478, 485, 493-496, 521, 553-554, 569-570, 580-581, 584, 586, 588, 598-601, 608, 619-622, 668, 747-748, 766-768, 772-774, 824-826, 830-831, 834-835, 851-852, 859-862, 871, 876-877, 880, 882, 884, 894, 901-904, 926, 956-958, 962-963, 975-976, 983-986, 995, 1000-1001, 1004, 1006, 1008, 1018, 1027-1030
src/utils.rs 75.00%
(42/56)
143, 147-148, 153, 159, 198-202, 239-242
Total 75.39%
(4012/5322)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Transport config parity: async vs blocking runners use different defaults

1 participant