-
Notifications
You must be signed in to change notification settings - Fork 55
broker: assign event seqs in the broker not overlay #7221
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Problem: flux-framework#7109 moved all event publishing from the broker to the overlay subsystem so that the peer multicast portion could eventually run in separate thread. Unfortunately, moving all event publication machinery to overlay creates an unnecessary requirement that overlay be running on a size=1 instance, and will complicate 'flux module reload overlay', should that be useful. Leave the resource intensive event mcast code in overlay but move the rest of it back into the broker. TL;DR Recall there are two ways that event messages are routed per RFC 3: 1) A bare event message is forwarded upstream on the TBON and published when it arrives on rank 0. 2) An event message is base64 encoded and encapsulated in a request message that is sent to rank 0, where it is published. Publication occurs only on rank 0 and consists of assigning a monotonically increasing sequence number, distributing the message to local broker and module subscribers, and sending the event message to the overlay via the interthread message channel for further distribution. The overlay now routes events as follows: - If received from the local broker on the interthread channel: On rank 0, messages are mcast to all children. On rank > 0, messages are forwarded to the parent for publication. - If received from an overlay child: On rank 0, messages are forwarded to the local broker for publication. On rank > 0, message are forwarded to the parent for publication - If received from the overlay parent (rank > 0), messages are mcast to all children AND sent to the local broker on the interthread channel for distribution to local broker and module subscribers. Update the overlay unit test that were exercising full event publication. Update some event sharness tests that used the other RPC name.
aace27d to
b504473
Compare
|
Rebased on current master. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
|
Thanks I'll set MWP |
Merge Queue Status✅ The pull request has been merged at b504473 This pull request spent 6 seconds in the queue, with no time running CI. Required conditions to merge
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #7221 +/- ##
==========================================
- Coverage 83.66% 83.66% -0.01%
==========================================
Files 554 554
Lines 92625 92646 +21
==========================================
+ Hits 77496 77509 +13
- Misses 15129 15137 +8
🚀 New features to boost your workflow:
|
Problem: #7109 moved all event publishing from the broker to the overlay subsystem so that the peer multicast portion could eventually run in separate thread. Unfortunately, moving all event publication machinery to overlay creates an unnecessary requirement that overlay be running on a size=1 instance, and will complicate
flux module reload overlay, should that be useful.Leave the resource intensive event mcast code in overlay but move the rest of it back into the broker.
TL;DR
Recall there are two ways that event messages are routed per RFC 3:
A bare event message is forwarded upstream on the TBON and published when it arrives on rank 0.
An event message is base64 encoded and encapsulated in a request message that is sent to rank 0, where it is published.
Publication occurs only on rank 0 and consists of assigning a monotonically increasing sequence number, distributing the message to local broker and module subscribers, and sending the event message to the overlay via the interthread message channel for further distribution.
The overlay now routes events as follows:
If received from the local broker on the interthread channel: On rank 0, messages are mcast to all children. On rank > 0, messages are forwarded to the parent for publication.
If received from an overlay child: On rank 0, messages are forwarded to the local broker for publication. On rank > 0, message are forwarded to the parent for publication
If received from the overlay parent (rank > 0), messages are mcast to all children AND sent to the local broker on the interthread channel for distribution to local broker and module subscribers.
Update the overlay unit test that were exercising full event publication. Update some event sharness tests that used the other RPC name.