Conversation
Upstream hardcodes a 2 MiB channel window (64 * 32 KiB packets, following OpenSSH) with no configuration hook. PeerDB tunnels bulk CDC traffic over SSH; on high-bandwidth, high-latency links the 2 MiB window caps throughput well below link capacity. 8 MiB covers the bandwidth-delay product of the links we see in practice. This is the only behavioral change this fork carries.
Documents how the fork works and automates tracking upstream releases: a daily workflow cherry-picks the fork-local commits onto new upstream release tags, validates with PeerDB's Go version, pushes a matching fork tag, and opens/bumps a sync-failure issue when something needs a human. The peerdb branch itself is PR-managed and never rewritten by automation.
Ref/tag semantics as a table, sync flow as a numbered list, direct scope statement.
The sync workflow now updates the peerdb branch on each upstream release (rebase + force-push) in addition to cutting the tag, so the default branch tracks the latest upstream base.
master...peerdb is then always the full fork delta. The sync workflow fast-forwards master alongside each release.
Fork tags reuse upstream tag names with different content, so fetching an upstream tag by name is rejected as a clobber once the fork has released. Fetch the new upstream tag into FETCH_HEAD, derive the rebase base via merge-base, and pass the upstream commit to the push step so master gets the unpatched base.
Public-repo cron workflows are disabled after 60 days without repository activity, and this repo is only active when upstream releases. Re-enabling the (already enabled) workflow via the API resets the timer. Inline gh call with the built-in token; no third-party action.
Each failing run opens its own issue; a green run closes every open sync-failure issue. Alerting subscribes to issue open/close events, so each failure and each recovery notifies exactly once.
Upstream only tags vX.Y.0 and the fork always carries at least one commit, so every cut gets a fresh tag name and published tags are never recreated. Fixup releases between upstream tags get their number from the same rule.
The target tag is the upstream base's major.minor plus the number of extra commits in the fork. Any run — cron or dispatch — releases when that tag doesn't exist yet, covering new upstream releases and freshly merged fork PRs with one code path. Hand-cut fixup tags retire; the bump rides the normal weekly gomod group PR in peerdb.
create-github-app-token v3 deprecated the app-id input.
Author
|
Wrong review shape — replaced by a proper re-land PR. |
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.
Review venue for the fork's delta against upstream v0.55.0 (
mastermirrors the unpatched upstream base, so the diff below is everything this fork changes). The content is already live onpeerdband released asv0.55.16, validated by green sync runs.ssh/channel.go— the one behavioral change: 8 MiB channel receive window (upstream hardcodes 2 MiB; throughput caps at window ÷ RTT).README.md— replaces upstream's: branch/tag layout, sync mechanics, maintenance runbook..github/workflows/sync-upstream.yml— daily upstream sync: computes the target tag (upstream base + number of extra commits in the fork), rebases, validates (rootsshtests only —ssh/test/ssh/agentreplay transcripts that embed the 2 MiB window), pushes branch/tag/master, opens async-failureissue per failing run.Kept as a draft and never merged —
masterstays the unpatched upstream mirror. Address findings with follow-up PRs topeerdb; close this when review is done.Consumed by PeerDB via PeerDB-io/peerdb#4764.
🤖 Generated with Claude Code