Conversation
Signed-off-by: Artem Lytvyn <alytvyn@redhat.com>
Signed-off-by: Artem Lytvyn <alytvyn@redhat.com>
Signed-off-by: Artem Lytvyn <alytvyn@redhat.com>
Signed-off-by: Artem Lytvyn <alytvyn@redhat.com>
Signed-off-by: Artem Lytvyn <alytvyn@redhat.com>
letv1nnn
requested review from
a team,
derekwaynecarr,
mrunalp and
sjenning
as code owners
September 23, 2026 14:15
7 tasks
This branch has not been deployed
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.
Summary
Follow-up A from #3209: closes two remaining WatchSandbox resume gaps, a lock race between the log and platform tail reads, and a coverage gap where an asymmetric replay depth between the two sources could let a resumable cursor imply coverage a shallower source never actually delivered, silently dropping events on the next reconnect with no
OUT_OF_RANGE.Related Issue
Refs #3055 (partial; addresses the interleaving concern @varshaprasad96 raised on #3209, tracked there as follow-up A. Issue stays open until the SDK helpers (B/C/D) and e2e coverage (E) also land.)
Changes
TracingLogBus::snapshot_afterreads the log and platform buses under one lock hold instead of two independenttail_aftercalls, so a publish can no longer land between them and desync their high-water marks. Removes the now-redundant post-read epoch re-check this race previously required.tail_with_floorreports the newest event a bounded tail read excluded. On connect, the server takes the smallest nonzero floor across followed sources and withholds any event, from either source, at or above it, a log event that clears its own bus's floor can still sit past the platform bus's floor, and handing it out would let the client's single shared cursor outrun platform's unreplayed backlog. This can withhold the entire initial batch when a followed sibling has any backlog outside its requested tail depth (e.g.event_tailleft at its default of 0); that's intentional, an emptier connect beats a resume that silently and permanently drops events.log_tail_lines,event_tail,resume_after_cursor), architecture/gateway.md (new Coverage floor subsection, rewritten atomic-snapshot description), and a short SDK-facing note in docs/observability/accessing-logs.mdx (openshell logs itself is unaffected, it doesn't expose asymmetric tail depths).Testing
mise run pre-commitpassesChecklist