(2.14) [FIXED] Cross-domain/account consumer acks and flow control#7860
Open
MauriceVanVeen wants to merge 1 commit intomainfrom
Open
(2.14) [FIXED] Cross-domain/account consumer acks and flow control#7860MauriceVanVeen wants to merge 1 commit intomainfrom
MauriceVanVeen wants to merge 1 commit intomainfrom
Conversation
Signed-off-by: Maurice van Veen <github@mauricevanveen.com>
This was referenced Feb 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements token version 2 from ADR-15:
Similarly also updating the
$JS.FC.<stream>.<consumer>.<random>to contain thedomainandaccount hash.This PR supports reading tokens from both versions, but currently also updates to only send the new version.
We should add an opt-in flag separately such that this change does not temporarily break flow control or acks during upgrades or breaks user-set subject permissions. 2.14.0 should likely ship with understanding both formats but still defaulting to the old format, the opt-in can be used for several versions to change to the new format early, we'll change the default so it becomes opt-out in a future release, and could then eventually remove old version support altogether.
Given an account A and B on different domains but using the same stream and consumer names, it's possible to import:
$JS.ACK.domainA.*.mystream.myconsumer.>$JS.ACK.domainB.*.mystream.myconsumer.>The account part can be used to deconflict across multiple accounts, however, since this is a hash of the account this will not be known by the user beforehand. Have now opted to using
getHashof the account name, which is also used for the Raft peer IDs. Would this be okay or do we need a separate hash? (We should also be aware that we can't change this anymore if the hash is explicitly used as part of subject permissions. But, even when using$JS.ACK.*.*.>as the import, given the new format, we'll always be able to deconflict properly).Resolves #6547, #6440, #7326
Relates to #6431
Signed-off-by: Maurice van Veen github@mauricevanveen.com