Repository navigation
Document stuck base copies, purge-bound retention copies and unnamed origins for 5.4 - #791
Conversation
…origins for 5.4 Companion to HarperFast/harper-pro#1249: the cluster_status stuckCopy field (retrying, held, refused), the per-log purge-bound rule that stops idle databases from forcing base copies, and unnamed-origin-<id>@<node> naming. Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness
Name the reporting node for reverse copies, count refusal-reason changes as log transitions, scope `held` to one database, and list manual delete_transaction_logs_before purges among the conservative copy cases. Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness
Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness
Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness
There was a problem hiding this comment.
Code Review
This pull request updates the documentation for version 5.4.0, detailing changes to replication behavior such as when a peer forces a base copy, handling rows from unnamed origins, and the introduction of the stuckCopy status in cluster_status. The review feedback suggests several improvements to readability and clarity, including splitting a long warning sentence in transaction.md into distinct sentences, correcting awkward phrasing in the replication guides, and replacing mid-sentence <VersionBadge> components with plain text as per the repository's guidelines.
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-791 This preview will update automatically when you push new commits. |
Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-791 This preview will update automatically when you push new commits. |
Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-791 This preview will update automatically when you push new commits. |
…origins for 5.4 (HarperFast/documentation#791) * Document stuck base copies, purge-bound retention copies and unnamed origins for 5.4 Companion to HarperFast/harper-pro#1249: the cluster_status stuckCopy field (retrying, held, refused), the per-log purge-bound rule that stops idle databases from forcing base copies, and unnamed-origin-<id>@<node> naming. Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness * Tighten stuck-copy and purge-copy wording from review Name the reporting node for reverse copies, count refusal-reason changes as log transitions, scope `held` to one database, and list manual delete_transaction_logs_before purges among the conservative copy cases. Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness * Describe the manual-purge copy point as at most the given timestamp Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness * Point the Learn copy statements at the 5.4 base-copy rule Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness * Smooth the purged-history wording and split the purge warning Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness * Link the health-checks returning-node note to the 5.4 base-copy rule Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
…origins for 5.4 (HarperFast/documentation#791) * Document stuck base copies, purge-bound retention copies and unnamed origins for 5.4 Companion to #1249: the cluster_status stuckCopy field (retrying, held, refused), the per-log purge-bound rule that stops idle databases from forcing base copies, and unnamed-origin-<id>@<node> naming. Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness * Tighten stuck-copy and purge-copy wording from review Name the reporting node for reverse copies, count refusal-reason changes as log transitions, scope `held` to one database, and list manual delete_transaction_logs_before purges among the conservative copy cases. Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness * Describe the manual-purge copy point as at most the given timestamp Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness * Point the Learn copy statements at the 5.4 base-copy rule Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness * Smooth the purged-history wording and split the purge warning Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness * Link the health-checks returning-node note to the 5.4 base-copy rule Co-Authored-By: Claude Opus 5.5 <[email protected]> Dispatch-Task: docs-harper-pro-1249-base-copy-liveness --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
⊙ Problem
Stop forcing base copies that never finish (harper-pro#1249) changes three undocumented replication behaviors for 5.4.
cluster_statusgains astuckCopyfield with no schema here. The overview and Learn pages still say any position older than a peer's retained history forces a base copy, which 5.4 no longer does for idle databases.🤔 Should this land here, while the pages may move?
Yes, for now. The 5.4 replication and
cluster_statuspages are still in this repo. Move the Harper Pro reference pages into docs/ (harper-pro#1237) and Assemble the v5 reference from harper and harper-pro (#788) are open. Whichever merges first, this text must reach harper-pro'sdocs/too.💡 Solution
stuckCopy: its fields, theretrying,heldandrefusedstates, the fixed hold schedule, how it clears and what it logs.unnamed-origin-<id>@<node name>.🔧 Changes
reference/replication/clustering.md: new Stuck Copies section with an example, field table, states, clearing rules and log lines.reference/replication/overview.md: the resync paragraph now says "purged history the node would need to replay"; new When a Peer Forces a Base Copy and Rows From Unnamed Origins sections.release-notes/v5-lincoln/5.4.md: one Replication entry covering all three changes, with the upgrade impact.reference/operations-api/operations.md: thecluster_statussummary links to Stuck Copies.reference/database/transaction.md: thedelete_transaction_logs_beforewarning states when the purge forces a copy.learn/administration/operating-replication.mdx: the returning-node row and retention paragraph link to the 5.4 rule; newstuckCopybullet.learn/administration/backup-and-recovery.mdx: the restore warning uses the 5.4 wording.learn/administration/health-checks-and-traffic-admission.mdx: the returning-node note links to the 5.4 rule.🤔 Exact numbers and name format are published
The page states the 5 attempts, 60-second first hold, 15-minute ceiling, 60-second quiet period, 64-name cap and the name escaping. Operators can alert on them. Any later tuning in harper-pro then needs a docs change.
✅ Verification
fix/base-copy-liveness@ cd77935 (copyStall.ts,clusterStatus.ts,unnamedOrigins.ts,replicationConnection.ts) and harperfix/base-copy-liveness-core@ 2e99e52 (auditStore.ts,audit-retention.md).stuckCopyreporting matches harper-pro'sunnamedOriginCopyandshardedIdleRetentionintegration tests.npm run build(broken links fail it),format:check,lint,typecheckandtest:examplespass.Refs HarperFast/harper-pro#1249
Depends-on: HarperFast/harper-pro#1249
Depends-on: HarperFast/harper#3958
🤖 Generated with Claude Code
— Claude Opus 5.5
Related PRs: #788 overlaps (removes these pages and assembles them from harper and harper-pro)
Complexity: easy
Origin — the dispatch brief this PR was written from
Companion docs PR for HarperFast/harper-pro#1249 (draft, milestone v5.4). Update the Harper Pro 5.4 replication reference and the cluster_status reference for the behavior below. Read the harper-pro PR description and its replication/DESIGN.md notes 26, 34 and 35 to verify each claim against the code before writing.
Document the replication behavior changes in harper-pro PR HarperFast/harper-pro#1249 (milestone v5.4), for the 5.4 replication / cluster_status reference pages.
cluster_statusgains a per-database-socket fieldstuckCopy, present only while a base copy from that peer is stuck, omitted otherwise:{ state: 'retrying' | 'held' | 'refused', reason: string, count: number, since: ISO time, retryAt?: ISO time }.retrying: the copy restarted from the same position at least twice without durable progress.held: after 5 such attempts (fixed; no setting) the receiver stops reconnecting to that peer for a hold that starts at 60 s and doubles per failed attempt up to 15 minutes;retryAtis when it tries again.refused: this node owns sharding slots and refused a full copy from a peer that is not a complete co-owner ("Owned sharding slots require a complete co-owner or backup restore"); reconnects are held the same way. It clears once a later connection stays open a minute without a refusal.Each state change logs one line (warn for retrying/refused, error for held, info when it clears).
logging.auditRetentionwhen the node simply wrote nothing to that database since (an idle or never-written transaction log). A copy is still forced when a prune removed history the peer had not received. After upgrading, a log that was already empty may force one more copy per stale peer.unnamed-origin-<id>@<node name>on the wire. Operators may see such names in logs and in a receiver's node id mapping.Public-safe: no customer names. Link the harper-pro PR.
Acceptance
A draft PR on HarperFast/documentation that documents the stuckCopy cluster_status field, the retention-copy behavior change and unnamed-origin naming, cross-linked to harper-pro#1249; cross-model reviewed per the engineering guidelines; no customer names; no settings that do not exist in the code.
Dispatch: task
docs-harper-pro-1249-base-copy-liveness· queued by task:harper-pro-base-copy-liveness · ran by claude/opus/xhigh · worker kzyp-xps-1Ready-For-Promotion: 33a9412 urgency=normal late=none
Review-Coverage: authored=claude; ran=gemini,cursor-composer,codex; adjudicated=domain; declined=cursor-grok,muse; rounds=6; full=1 @ 33a9412
Review-Attention: skim ~2m (decisions: fixed-constants-as-contract, origin-name-encoding-public, purge-bound-detail-level) @ 33a9412