4.0.0 — October 2025
https://docs.couchbase.com/sync-gateway/4.0/whatsnew.html
What's Changed
- CBG-4420: fix legacy rev handling on processRev by @gregns1 in #7248
- CBG-4421 create a simpler test setup for two cluster by @torcolvin in #7246
- CBG-4430: fix conflict on hlv comparison when parent rev is in history by @gregns1 in #7249
- CBG-4257 implement more parts of CouchbaseLiteMockPeer by @torcolvin in #7250
- CBG-4416 Use waitForTombstoneVersion to validate tombstone versions by @adamcfraser in #7252
- CBG-4442 proposeChanges fix for VV proposed version and legacy previousRev by @adamcfraser in #7253
- CBG-4432: Implement Delete on the BlipTesterClient and enable delete-related topology tests by @bbrks in #7251
- CBG-4257 add HLV into BlipTesterCollectionClient by @torcolvin in #7264
- Move assertions into blip test code by @torcolvin in #7267
- CBG-4407 synchronously stop xdcr from CBS by @torcolvin in #7270
- CBG-4418 Assert on full HLV in topology tests by @adamcfraser in #7271
- CBG-4448: updates to fix python lint by @torcolvin in #7277
- CBG-4419 wait for xdcr to be finished by @torcolvin in #7278
- CBG-4402 do not terminate attachment migration error on document deletion by @torcolvin in #7268
- Make CouchbaseLiteMockReplication run unidirectional only by @bbrks in #7282
- shorten xattr name to <15 characters, the max length of an xattr name by @torcolvin in #7285
- Topology test fixes by @adamcfraser in #7284
- Various small BlipTesterClient stability improvements by @bbrks in #7283
- Write dummy system xattr on resurrection by @torcolvin in #7292
- CBG-4460 Strip unused HLV content from proposeChanges messages by @adamcfraser in #7294
- Add replication stats logging to topologytests by @torcolvin in #7296
- CBG-4467 do not check revpos for documents replicated using HLV by @torcolvin in #7297
- Add trace logging for changes response by @torcolvin in #7301
- CBG-4468 do not check legacy revtree if hlv is dominating by @torcolvin in #7298
- CBG-4469 Evaluate full HLV when available during proposeChanges by @adamcfraser in #7300
- CBG-4466 Add MV support by @adamcfraser in #7304
- CBG-4474 Fix for MV invalidation ordering by @adamcfraser in #7306
- Do not error when getting stats by @torcolvin in #7307
- CBG-4203 pass RevSeqNo for on demand imports by @torcolvin in #7273
- CBG-4479 wait for correct stop message by @torcolvin in #7317
- CBG-4233 move rosmar to c8f72480 by @torcolvin in #7388
- CBG-4451 use atomic pointer to store testing.T by @torcolvin in #7387
- CBG-4440: HLC implementation for blip tester client by @gregns1 in #7399
- merge main (7e89160) into anemone by @torcolvin in #7403
- CBG-4538 do not expect revSeqNo as a particular value by @torcolvin in #7404
- CBG-4541: rev cache changes merge into anemone by @gregns1 in #7405
- Update Jenkinsfile to drop cobertura plugin and update to go 1.24 by @torcolvin in #7591
- CBG-3936 use BestEffortRetryStrategy for DCPClient by @torcolvin in #7579
- CBG-4705: Branch release/3.3.0 and disable main by @bbrks in #7613
- CBG-4505 update cbgt to latest by @torcolvin in #7616
- CBG-2717: Replace replicator rev stat assertions with a wait for stats by @bbrks in #7619
- Switch version numbers to 4.0, enable builds by @torcolvin in #7623
- tighten github workflow permissions by @torcolvin in #7624
- Update jenkins image to a GA build by @torcolvin in #7625
- add ruff as a dev dependency by @torcolvin in #7612
- CBG-3811 do not assert on processed DCP docs by @torcolvin in #7622
- DOC-13103-updated the description for bootstrap.server by @iamfortune in #7617
- Add a test for import feed panic by @torcolvin in #7626
- Bump github.com/go-jose/go-jose/v4 from 4.0.5 to 4.1.1 by @dependabot[bot] in #7614
- Bump golang.org/x/net from 0.41.0 to 0.42.0 by @dependabot[bot] in #7629
- [4.0.0 forward port] CBG-4740 remove process output from sgcollect by @torcolvin in #7627
- sort openapi properties for readabilty by @torcolvin in #7615
- CBG-4742 purge all xattrs over DCP feed by @torcolvin in #7620
- make XDCR stop integration test more robust by @torcolvin in #7631
- CBG-4379 default LWW for XDCR in test by @torcolvin in #7632
- Bump github.com/couchbase/gocb/v2 from 2.10.0 to 2.10.1 by @dependabot[bot] in #7634
- Increase topologytest high memory watermark by @torcolvin in #7638
- Add Test Coverage: TestCollectionsPublicChannel to ensure changes feed coverage for syncfn granted public docs by @bbrks in #7633
- Test race fix: TestRevocationGetSyncDataError - Replace racy throw bool to atomic by @bbrks in #7639
- Increase WaitUntilReady for tests by @torcolvin in #7642
- CBG-4761: use FrontKey() function for getOldest() by @gregns1 in #7641
- Use WaitUntilReady retry strategy for test pool by @torcolvin in #7643
- CBG-4754: move silent handler to trace level by @gregns1 in #7644
- Revert "Added quick-and-dirty mode to capture failed multipart PUTs" by @bbrks in #7645
- CBG-4280 Improve test assertions for attachments by @torcolvin in #7637
- CBG-4768: add missing silent handler logging level for admin port _expvar by @gregns1 in #7646
- Return when sending a 422 to a rev by @torcolvin in #7651
- CBG-4757: better logging around reconnect for ISGR by @gregns1 in #7650
- CBG-4767: Make
_rawendpoint return actual state of persisted doc by @bbrks in #7649 - CBG-4767 2: Make
AuditIDDocumentReadtolerant to invalidSyncDatain_rawendpoint by @bbrks in #7653 - CBG-4750: Remove
show_cvparameter and always return_cvin documents on REST API by @bbrks in #7654 - Simplify bucket names and sourceID for rosmar by @torcolvin in #7655
- CBG-4280 consolidate Attachment on document by @torcolvin in #7647
- CBG-4734: fix for race when removing a value that is being loaded into rev cache by @gregns1 in #7640
- Bump github.com/coreos/go-oidc/v3 from 3.13.0 to 3.15.0 by @dependabot[bot] in #7663
- Improve topologytest logging by @torcolvin in #7664
- CBG-3661: allow configurable sub-protocol version for active replicator by @gregns1 in #7660
- CBG-4452 remove failing test that is not useful by @torcolvin in #7666
- Test-only tech-debt cleanup: Make
TestCtxuse stdlibtesting.Context()instead of a DIY version by @bbrks in #7669 - Print doc state on all peers on failure by @torcolvin in #7670
- Revert "Test-only tech-debt cleanup: Make
TestCtxuse stdlibtesting.Context()instead of a DIY version" by @bbrks in #7672 - CBG-4780: basic ISGR push and pull for 4.0 by @gregns1 in #7668
- CBG-4782: new rev tree property for ISGR replications by @gregns1 in #7671
- CBG-4797: make GetCV mirror GetRev and add request for history to it by @gregns1 in #7673
- CBG-4735: Remove the _globalSync xattr with purge to avoid attachment metadata hanging around by @bbrks in #7667
- CBG-4798: add test for revID replicator write HLV generation by @gregns1 in #7674
- Support new jenkins by @torcolvin in #7680
- Bump golang.org/x/net from 0.42.0 to 0.43.0 by @dependabot[bot] in #7677
- CBG-4737: Remove basic auth command line flags by @bbrks in #7679
- CBG-4538 tests: do not expect revSeqNo as a particular value by @torcolvin in #7675
- CBG-4267 implement LWW conflict resolution for blip tester by @torcolvin in #7657
- fix test flakes by @torcolvin in #7682
- CBG-4753: Add
version_typepreference for/_changesto allow CV-aware consumers by @bbrks in #7659 - GitHub PR template: Fix Integration Test links by @bbrks in #7684
- CBG-4790: reconcile rev tree on write for ISGR by @gregns1 in #7681
- Fix wait group race in test by @torcolvin in #7685
- CBG-4806: move conflict detection to common function by @gregns1 in #7683
- CBG-4810 blip test: separate user creation by @torcolvin in #7686
- fix race condition by @torcolvin in #7689
- Wait for pending changes after doc updates by @gregns1 in #7690
- CBG-4434 enable conflict tests by @torcolvin in #7688
- CBG-4729: Add metrics to count tombstones per database by @RIT3shSapata in #7691
- Store supported subprotocols on BlipTestClientRunner by @torcolvin in #7692
- CBG-4273: More Frequent log rotation by @RIT3shSapata in #7695
- CBG-4751: Allow CV to be used as OCC value in REST API for document writes (updates/deletes) by @bbrks in #7693
- CBG-4776: Fetch by CV REST API by @bbrks in #7694
- CBG-4800: Remove
pending CBG-3814 support of channel removal for CV:error - let not found error bubble up by @bbrks in #7699 - CBG-3778: Remove usages of RestTester DocDirectly functions by @bbrks in #7697
- CBG-4832: Handle legacy rev IDs as deltaSrc even when running in HLV mode by @bbrks in #7698
- CBG-4166: Unskip vv subtests by @bbrks in #7700
- CBG-4813 refactor tests to use consistent HLV format by @torcolvin in #7687
- CBG-4428 re-enable disabled test by @torcolvin in #7701
- Keep collection scoped context by @torcolvin in #7703
- CBG-4428 test: make sure two revisions get pushed as one by @torcolvin in #7702
- fix test wait condition by @torcolvin in #7709
- fix assert to retry until true by @torcolvin in #7707
- CBG-4665 wait for stat by @torcolvin in #7708
- Close buckets in bucket pool by @torcolvin in #7652
- CBG-4829 add test cases for hlv conflicts by @torcolvin in #7704
- CBG-4787 move SyncData.HLV to Document.HLV by @torcolvin in #7710
- CBG-4785: sendChanges support for legacy rev by @gregns1 in #7711
- Fix build for #7711 after #7710 refactoring by @bbrks in #7712
- Strip
_cvinstripSpecialPropertiesby @bbrks in #7713 - Relax document processed assertions for SG_TEST_USE_GSI=true by @torcolvin in #7715
- Remove warning assertion, other tests can leak warnings by @torcolvin in #7716
- CBG-4752: Bulk APIs for CV (read and write) by @bbrks in #7714
- CBG-4778: LWW conflict resolution for ISGR by @gregns1 in #7696
- CBG-4836: legacy rev documents not handled in createChangesEntry by @gregns1 in #7717
- CBG-4776 do not show empty CV if present by @torcolvin in #7719
- CBG-4779: custom conflict resolution for HLV by @gregns1 in #7720
- Improve VV logging by @torcolvin in #7722
- CBG-4258 allow support of a CBL V3 client by @torcolvin in #7721
- CBG-4826 do not managle history if only mv present by @torcolvin in #7723
- CBG-4826 increase wait time for slow computers by @torcolvin in #7724
- Add debug logging by @torcolvin in #7725
- CBG-3748: Support legacy RevTree IDs for Delta Sync by @bbrks in #7718
- CBG-4429: Audit with CV as doc version where possible by @bbrks in #7726
- CBG-4762 make msg ordering agnostic in test by @torcolvin in #7730
- CBG-4846: legacy rev api should not write _vv xattr at all by @gregns1 in #7727
- CBG-3748 follow-up: Remove test skips / re-enable some BLIP legacy rev delta sync codepaths by @bbrks in #7731
- CBG-4841 write legacy rev versions with special encoding by @torcolvin in #7732
- CBG-3806 reenable skipped tests by @torcolvin in #7733
- CBG-4826 increase timeout for CI=true (jenkins/gh) by @torcolvin in #7734
- CBG-4316: Remove allow_conflicts option by @RIT3shSapata in #7729
- CBG-4791: reconcile rev tree on v4 ISGR conflict by @gregns1 in #7728
- CBG-4769: Omit cas mismatch log messages by @RIT3shSapata in #7741
- CBG-4726: Validate disabling xattrs by @RIT3shSapata in #7742
- CBG-4784: non conflicting legacy rev testing cases for ISGR by @gregns1 in #7740
- CBG-4847: legacy rev loading from bucket leave rev cache in inconsistent state by @gregns1 in #7744
- Bump github.com/couchbase/cbgt from 1.4.10-0.20250613153003-c142c64552b2 to 1.4.10 by @dependabot[bot] in #7736
- Bump github.com/couchbase/gocbcore/v10 from 10.7.1 to 10.8.0 by @dependabot[bot] in #7739
- CBG-4830 allow ISGR testing with 3.x protocol by @torcolvin in #7743
- CBG-4830 remove test data race by @torcolvin in #7746
- CBG-4316 wait for database online in test by @torcolvin in #7745
- add back suspend sequence batching for TestReplicationHeartbeatRemoval by @gregns1 in #7747
- CBG-3796: Disable setting
enable_star_channelto false by @RIT3shSapata in #7748 - CBG-4341: Compatibility check for Couchbase Server by @RIT3shSapata in #7750
- CBG-3203: Remove non-leaf channel history information from sync metadata by @bbrks in #7753
- CBG-4828: pre upgraded document conflict resolution by @gregns1 in #7751
- CBG-4858: Fix the version compatibility check by @RIT3shSapata in #7758
- Create temporary skip for mobile jenkins by @torcolvin in #7752
- CBG-4826: Ensure blip tester is terminated before Rest Tester by @torcolvin in #7749
- CBG-4808: Add TestXDCRBeforeAttachmentMigration by @bbrks in #7759
- CBG-4855 format Jenkinsfile by @torcolvin in #7760
- CBG-4855 Disable concurrent builds for pipeline jobs by @torcolvin in #7761
- CBG-4851: Compact old PreviousVersion entries from HLV on write by @bbrks in #7763
- CBG-4852 replace go2xunit with gotestsum by @torcolvin in #7754
- CBG-4811: logging changes for versions by @gregns1 in #7764
- CBG-4856 do not create merge versions for remote wins/local wins by @torcolvin in #7767
- CBG-4865: Update database schema for API Docs by @RIT3shSapata in #7765
- CBG-4870 avoid test flakes by @torcolvin in #7771
- CBG-4840: Backup temporary revisions only by revtree ID by @bbrks in #7773
- CBG-4833: Send replacement revision as CV where possible by @bbrks in #7774
- CBG-4849: updates to api docs for ISGR by @gregns1 in #7772
- CBG-4864 Import document if cv changes, even if body is unchanged by @torcolvin in #7775
- CBG-4879: fix for data race when invalidating cache for local wins by @gregns1 in #7778
- CBG-4880: Use versionPruningWindowHrs for HLV Compaction instead of metadata purge interval by @bbrks in #7777
- CBG-4883: decrement stats when removing stale value from cache list in add to lookup map functions by @gregns1 in #7779
- CBG-4839 get maxcas for each vbucket by @torcolvin in #7776
- CBG-4878 Set _mou from attachment migration by @torcolvin in #7781
- CBG-4839 allow vBucketsMaxCas to not be populated by @torcolvin in #7782
- CBG-4884: Skip removal of obsolete attachments if ECCV is set by @bbrks in #7783
New Contributors
- @iamfortune made their first contribution in #7617
- @RIT3shSapata made their first contribution in #7691
Full Changelog: 3.3.0...4.0.0