From 5a53a3ba74fb8c00fd63c163a2e79151d7f068b7 Mon Sep 17 00:00:00 2001 From: naliyi <154817482+naliyi@users.noreply.github.com> Date: Wed, 9 Sep 2026 14:37:07 +0000 Subject: [PATCH] docs: fix dangling issue-evaluation.md references issue-evaluation.md (the working investigation doc for the delivery- stall fixes in #19) was removed from the repo, including history, per request. Five comments/changelog lines still pointed at it -- repoint them at PR #19 instead, which has the same content. --- CHANGELOG.md | 4 ++-- relay/config.go | 4 ++-- relay/session.go | 6 +++--- relay/session_backpressure_test.go | 2 +- relay/subscription_test.go | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 904f2a3..68d383a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,8 +12,8 @@ connection, indefinitely. Default is now 30s (overridable, including back to `0`, via the existing `WithSessionWriteTimeouts`). `sendPacket` also now logs a warning when a single write exceeds 250ms — previously - there was no observable signal for this at all. Root-cause writeup and - regression tests in `issue-evaluation.md`. (#19) + there was no observable signal for this at all. See PR #19 for the full + root-cause writeup and regression tests. (#19) - `relay/store.EventStore.FindEventBytes` returned a bbolt-transaction- scoped byte slice after its own read transaction had already closed — invalid per bbolt's own contract, and reproducibly served corrupted diff --git a/relay/config.go b/relay/config.go index 61fae5c..3b843b7 100644 --- a/relay/config.go +++ b/relay/config.go @@ -14,8 +14,8 @@ const ( // may block on conn.WriteJSON before the session gives up and closes // the connection. Every subscription on a connection shares one // outgoing pipe, so an unbounded deadline let one stuck reader stall - // delivery to all of them indefinitely (see issue-evaluation.md). 30s - // is a deliberately generous default, not a tuned optimum. Override + // delivery to all of them indefinitely (see PR #19). 30s is a + // deliberately generous default, not a tuned optimum. Override // via WithSessionWriteTimeouts (0 restores the old unbounded behavior). defaultDataWriteTimeout = 30 * time.Second diff --git a/relay/session.go b/relay/session.go index 62e84de..38c1811 100644 --- a/relay/session.go +++ b/relay/session.go @@ -32,9 +32,9 @@ const ( // slowSendWarnThreshold is how long a single sendPacket call may take // before it's logged as a warning -- surfaces a backed-up outgoing - // pipe (see issue-evaluation.md), which previously had no observable - // signal at all. Several multiples of the poll interval, to avoid - // firing on ordinary jitter. + // pipe (see PR #19), which previously had no observable signal at + // all. Several multiples of the poll interval, to avoid firing on + // ordinary jitter. slowSendWarnThreshold = 250 * time.Millisecond ) diff --git a/relay/session_backpressure_test.go b/relay/session_backpressure_test.go index 54d9cf0..bec1f78 100644 --- a/relay/session_backpressure_test.go +++ b/relay/session_backpressure_test.go @@ -97,7 +97,7 @@ func readUntil(t testing.TB, conn *websocket.Conn, deadline time.Time, fn func(w } // TestSessionSlowReaderStallsEveryOtherSubscriptionOnThatConnection -// reproduces the delivery stall (issue-evaluation.md) at report-realistic +// reproduces the delivery stall fixed in PR #19 at report-realistic // scale: 3 fresh events on the filter under test, not the 55+ // TestSubscriptionBackpressureDelaysButNeverLosesEvents needs. // diff --git a/relay/subscription_test.go b/relay/subscription_test.go index d82a214..23b704e 100644 --- a/relay/subscription_test.go +++ b/relay/subscription_test.go @@ -180,9 +180,9 @@ func TestSubscriptionCombinedKindBurstDoesNotStarveFreshEvent(t *testing.T) { } // TestSubscriptionBackpressureDelaysButNeverLosesEvents reproduces the -// no-timeout blocking-send mechanism behind the delivery stall in -// issue-evaluation.md: storeScan.handleEvents' send into a subscription's -// outgoing channel (eventBufferCapacity, 55 slots) has no timeout, and +// no-timeout blocking-send mechanism behind the delivery stall fixed in +// PR #19: storeScan.handleEvents' send into a subscription's outgoing +// channel (eventBufferCapacity, 55 slots) has no timeout, and // Subscription.Start's poll loop calls Fetch synchronously on every tick -- // so once the channel is full, the next poll tick blocks inside Fetch until // the consumer drains it, stalling delivery of any new matching event.