docs(perf): group send chain-lock split (whatsapp-rust#807) - #290
Conversation
…app-rust#807) New changelog entry and signal-protocol.mdx update for PR #807: - Two-phase split of encrypt_for_devices into ensure_sessions_for_devices (network) and encrypt_for_devices_with_sessions (CPU) - SenderKeyStore::session_setup_lock new defaulted trait method - Chain lock now covers only SKDM creation + encrypt, never network I/O - Concurrent group sends to same group no longer serialize behind RTT https://claude.ai/code/session_01AAq2FjyoGjKk61Y2AdkoNe
|
Warning Review limit reached
More reviews will be available in 27 minutes and 5 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
Summary
Documents the group-send performance improvement from oxidezap/whatsapp-rust#807.
changelog/2026-06-09-group-send-perf.mdx: explains the two-phase split ofencrypt_for_devices, the newSessionPlantype,SenderKeyStore::session_setup_lock, and the tracing change.advanced/signal-protocol.mdx— expands the chain-lock<Note>in "Parallelized group encrypt fan-out" to describe the two-lock scheme (session-setup lock for the network phase, chain lock for the CPU phase) and the new public halvesensure_sessions_for_devices/encrypt_for_devices_with_sessions.docs.json— registers the new changelog page.What changed in #807
prepare_group_stanzapreviously held the per-(group, sender) sender-key chain lock across the entire SKDM path including prekey fetch and X3DH — forcing concurrent sends to the same group to serialize behind a server RTT. The chain lock now covers only SKDM creation + pairwise fan-out + skmsg encrypt (pure CPU). A newSenderKeyStore::session_setup_lock(held only duringensure_sessions_for_devices) serializes same-group cold sends' session writes without blocking warm sends.Test plan
https://claude.ai/code/session_01AAq2FjyoGjKk61Y2AdkoNe
Generated by Claude Code