refactor: build the persisted stream dedupe key with keyenc - #416
Merged
Conversation
The key concatenated a literal, a Plex user id, a rating key and two stream ids with ':'. Only the two stream ids are numeric; the user id comes from the sessions response and the rating key from a WebSocket notification, and neither is validated separator-free. The trailing colon-free fields kept the old form injective, so this is a robustness adoption rather than a live fix: the injectivity was a property of the current field ORDER, not of the encoding, and adding a field or moving one would have silently ended it. Byte-identical for every ordinary input, which matters because these keys are persisted in state.json: only a tuple whose fields actually contain ':' or '\' re-keys, and that is exactly the tuple that was colliding. Such an entry is re-processed once (one redundant, idempotent propagation) and then dedupes normally.
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.
refactor: build the persisted stream dedupe key with keyenc
The key concatenated a literal, a Plex user id, a rating key and two stream ids
with ':'. Only the two stream ids are numeric; the user id comes from the
sessions response and the rating key from a WebSocket notification, and neither
is validated separator-free. The trailing colon-free fields kept the old form
injective, so this is a robustness adoption rather than a live fix: the
injectivity was a property of the current field ORDER, not of the encoding, and
adding a field or moving one would have silently ended it.
Byte-identical for every ordinary input, which matters because these keys are
persisted in state.json: only a tuple whose fields actually contain ':' or ''
re-keys, and that is exactly the tuple that was colliding. Such an entry is
re-processed once (one redundant, idempotent propagation) and then dedupes
normally.