Conversation
|
Droid finished @torcolvin's task —— View job LGTM, no high-confidence actionable issues found in the changes. The ISGR test harness updates should make BLIP subprotocol negotiation consistent across additional active nodes and reduce flakiness. |
There was a problem hiding this comment.
Pull request overview
This PR stabilizes ISGR-related test runs by ensuring additional (test-only) active peers in an ISGR “cluster” negotiate the same BLIP subprotocol as the primary active peer, preventing occasional protocol mismatches that caused flaky replication assertions.
Changes:
- Added a test-only
RestTesterConfigoption to force ISGR BLIP subprotocols per node, and delayed ISGR replication startup until the subprotocol override is applied. - Refactored ISGR test peer setup to build per-node
RestTesterConfig(avoiding mutation/reuse issues) and to support adding additional active nodes consistently. - Updated replicator/BLIP tests to use the new peers helper and to explicitly pass supported BLIP subprotocols where active replicators are constructed directly.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| rest/utilities_testing.go | Adds ISGRSupportedBLIPSubprotocols and delays replication startup so the override is applied before ISGR begins. |
| rest/utilities_testing_isgr.go | Refactors ISGR peer setup to generate per-node configs, share buckets correctly, and support adding additional active peers with consistent subprotocols. |
| rest/replicatortest/replicator_test.go | Switches tests to the new peers helper and threads supported subprotocols into direct replicator configs where needed. |
| rest/replicatortest/replicator_test_legacy_rev_test.go | Updates legacy revision tests to use the new peers helper and delta-sync option handling. |
| rest/replicatortest/replicator_test_helper.go | Removes the old addActiveRT helper in favor of TestISGRPeers.AddActiveRT. |
| rest/replicatortest/replicator_revtree_test.go | Updates revtree tests to use peers helper and to pass supported BLIP subprotocols to active replicators. |
| rest/replicatortest/replicator_conflict_test.go | Updates conflict tests to use peers helper and additional active node creation via AddActiveRT. |
| rest/replicatortest/replicator_collection_test.go | Updates collection tests to use the new peers helper return type. |
| rest/blip_api_crud_test.go | Updates BLIP CRUD test to use the new peers helper return type. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
addActiveRT built extra active nodes without ISGRSupportedBLIPSubprotocols, so in revtree subtests node 2 negotiated CBMobile_4. A replication reassigned to it re-pulled already-replicated docs over V4 and wrote them as new revs, adding sequences and breaking the "exactly N changes since X" assertions (TestReplicationHeartbeatRemoval flake). If the replication didn't get reassigend, the test would pass. - Do a magic dance of recreating open channel for DatabaseConfig.ServerContextHasStarted and closing it after setting subprotocol. - DatabaseConfig is a mutable object when adding to a Database, so removed RestTesterConfig from places in order to add the specific options. - Now match the SyncFn and other parameters for second RestTester Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
CBG-4625: test-only additional ISGR peers now take same subprotocol
addActiveRT built extra active nodes without ISGRSupportedBLIPSubprotocols, so in revtree subtests node 2 negotiated CBMobile_4, causing occaisonal downstream failure. A replication
reassigned to it re-pulled already-replicated docs over V4 and wrote them as new revs, adding sequences and breaking the "exactly N changes since X" assertions (TestReplicationHeartbeatRemoval flake). If the replication didn't get reassigned, the test would pass.
Pre-review checklist
base.UD(docID),base.MD(dbName))docs/apiIntegration Tests