Releases: couchbase/sync_gateway
4.0.3 — February 2026
https://docs.couchbase.com/sync-gateway/4.0/product-notes/release-notes.html
What's Changed
- [4.0.2.1 backport] CBG-5067 sgcollect: remove tmpdir by @torcolvin in #7944
- [4.0.3 backport] CBG-5055 make sure to marshal sequence on norev by @torcolvin in #7961
- [4.0.3 backport] CBG-4998 don't panic if no _vv but _sync.rev.ver by @torcolvin in #7964
- [4.0.3 backport] CBG-4893: Add eccv to cluster_info endpoint by @torcolvin in #7965
- [4.0.3 backport] CBG-4929 test fix topologytests by @torcolvin in #7968
- [4.0.3 backport] CBG-4951: TestUserXattrRevCache flake fix by @torcolvin in #7969
- [4.0.3 backport] CBG-4935 test fix: TestChangesFeedExitDisconnect by @torcolvin in #7970
- [4.0.3 backport] CBD-6543 update python version for testing by @torcolvin in #7976
- [4.0.3 backport] CBG-5092: Replace websocket with fork for extended control frame timeouts by @bbrks in #7973
- [4.0.3 backport] CBG-5016: fix panic in _config?include_runtime=true by @torcolvin in #7967
- [4.0.3 backport] CBG-4714: collect goroutine stack traces on signal by @torcolvin in #7980
- [4.0.3 backport] CBG-5079: Avoid logging at debug in pruning of cache by @torcolvin in #7985
- [4.0.3 backport] CBG-5076: remove serialisation from caching process by @torcolvin in #7984
- [4.0.3 backport] CBG-5073: Deduplicate channel set outside processEntry by @torcolvin in #7983
- [4.0.3 backport] CBG-4904: test-only active replicator tests to run in 4.x and 3.x by @torcolvin in #7981
- [4.0.3 backport] CBG-4949: Prevent Excessive conflict logging by @torcolvin in #7986
- [4.0.3 backport] CBG-4934 restart db initialization if needed by @torcolvin in #7982
- [4.0.3 backport] CBG-5042 don't panic if role documents can't be read by @torcolvin in #7962
- [4.0.3 backport] CBG-4953: test-only: wait for checkpointer by @torcolvin in #7993
- [4.0.3 backport] CBG-5081: pre allocate slices on processEntry by @torcolvin in #7994
- [4.0.3 backport] CBG-5111: assign Update call back to allChangedChannels by @gregns1 in #7995
- [4.0.3 backport] CBG-5114: Diagnostic API Improvements by @RIT3shSapata in #7998
- [4.0.3 backport] CBG-5121: Remove unused gocov by @gregns1 in #8003
- [4.0.3 backport] CBG-5108: don't add backup rev loads to opposite lookup map that you have fetched by by @gregns1 in #8002
- [4.0.3 backport] CBG-5107: Stamp channel information into backup revision documents by @bbrks in #8005
- [4.0.3 backport] CBG-5123: Fix diagnostic audit event test (#8006) by @RIT3shSapata in #8010
- [4.0.3 backport] CBG-4983: ignore updating local rev if BlipTesterCollectionClient is closed by @RIT3shSapata in #8011
- [4.0.3 backport] CBG-5068 send noRev if history can't be parsed by @torcolvin in #8014
- [4.0.3 Backport] CBG-5128: Restore warnings when the import filter function for a document fails by @bbrks in #8018
- [4.0.3 backport] Improve reliability of TestBlipDeltaComputationFromBackupRev by @bbrks in #8022
- [4.0.3 backport] CBG-5118: Support request-provided oldDoc values in Sync Function Dry-Run by @bbrks in #8024
- [4.0.3 backport] CBG-5132: fix panic when using bypass revision cache with delta sync by @gregns1 in #8030
- [4.0.3 backport] CBG-5135: attachment fetch is in wrong place when loading from bucket by CV by @bbrks in #8038
- [4.0.3 backport] CBG-5136: fix backup revs being marked as deleted when current rev is deleted by @bbrks in #8039
- [4.0.3 backport] CBG-5146: Support replacement revs for non-filtered replications by @bbrks in #8045
- [4.0.3 backport] CBG-5142: Only fetch backup revision for fromRev for delta sync by @gregns1 in #8048
Full Changelog: 4.0.2...4.0.3
3.3.3 — February 2026
https://docs.couchbase.com/sync-gateway/3.3/product-notes/release-notes.html
What's Changed
- [3.3.2.1 backport] CBG-5054 make sure to marshal sequence on norev by @torcolvin in #7927
- [3.3.2.2 backport] CBG-5066 sgcollect: remove tmpdir by @torcolvin in #7945
- [3.3.3 backport] CBG-5094: race detector: SkipList impl RemoveSkipped() / getOldestSkippedSequence() by @gregns1 in #7951
- [3.3.3 backport] CBG-5093: Replace websocket with fork for extended control frame timeouts by @bbrks in #7975
- [3.3.3 backport] CBD-6543 update python version for testing by @torcolvin in #7978
- [3.3.3 backport] CBG-5120: Remove unused gocov by @gregns1 in #8004
- [3.3.3 backport] CBG-5072: Deduplicate channel set outside processEntry by @RIT3shSapata in #8007
- [3.3.3 backport] CBG-5075: remove serialisation from caching process (#7885) by @RIT3shSapata in #8008
- [3.3.3 backport] CBG-5080: pre allocate slices on processEntry/addPendingLogs by @RIT3shSapata in #8012
- [3.3.3 backport] CBG-5077: Avoid logging at debug in pruning of cache (#7863) by @RIT3shSapata in #8009
- [3.3.3 backport] CBG-4984: Ignore updating local rev if BlipTesterCollectionClient is closed by @RIT3shSapata in #8013
- [3.3.3 backport] CBG-5116: Diagnostic API Improvements by @RIT3shSapata in #7999
- [3.3.3 Backport] CBG-5015: fix panic in _config?include_runtime=true endpoint by @bbrks in #8027
- [3.3.3 Backport] CBG-5124: assign Update call back to allChangedChannels by @gregns1 in #8015
- [3.3.3 backport] CBG-5131: fix panic when using bypass revision cache with delta sync by @gregns1 in #8031
- [3.3.3] Diagnostic API follow-up fixes by @bbrks in #8026
- [3.3.3 Backport] CBG-4933: restart db initialization if needed by @bbrks in #8028
- [3.3.3 backport] CBG-4952: TestUserXattrRevCache flake fix by @RIT3shSapata in #8034
- [3.3.3 backport] CBG-4938: Fix Flaky Test
TestBlipOneShotChangesSubscriptionby @RIT3shSapata in #8036 - [3.3.3 backport] CBG-4954: Fix flaky test TestActiveReplicatorRecoverFromRemoteRollback by @RIT3shSapata in #8037
Full Changelog: 3.3.2...3.3.3
4.0.2 — December 2025
https://docs.couchbase.com/sync-gateway/4.0/product-notes/release-notes.html
What's Changed
- [4.0.2] CBG-5007: Split ServerContext mutexes by @bbrks in #7898
- [4.0.2 backport] CBG-5029 fix panic in eviction based on out of sync stats by @adamcfraser in #7899
- [4.0.2 backport] CBG-5027 Move rev cache unlocks into defer by @adamcfraser in #7904
- [4.0.2 backport] CBG-5026 allow legacy rev documents to be resynced by @torcolvin in #7914
- [4.0.2 backport] CBG-5034: Add revcache value lock for synchronized delta generation by @bbrks in #7911
Full Changelog: 4.0.1...4.0.2
3.3.2 — December 2025
https://docs.couchbase.com/sync-gateway/3.3/product-notes/release-notes.html
What's Changed
- [3.3.2 backport] CBG-5030 Avoid panic during eviction based on out-of-sync stats by @adamcfraser in #7901
- [3.3.2 backport] CBG-5028 Move rev cache unlocks into defer by @adamcfraser in #7905
- [3.3.2] CBG-5035: Add revcache value lock for synchronized delta generation by @bbrks in #7912
- [3.3.2] CBG-5009: Split ServerContext mutexes by @bbrks in #7909
Full Changelog: 3.3.1...3.3.2
4.0.1 - November 2025
https://docs.couchbase.com/sync-gateway/current/product-notes/release-notes.html#maint-latest
What's Changed
- [4.0.0.1 backport] CBG-4943 obey db scope for CORS.LoginOrigin by @torcolvin in #7834
- [4.0.0.2 backport] CBG-4965 create cookie with SameSite=None if CORS enabled by @torcolvin in #7844
- [4.0.1 backport] CBG-4972 don't set SameSite:None without Secure by @torcolvin in #7852
- [4.0.1 backport] CBG-4978 update the documentation for CORS by @torcolvin in #7853
- [4.0.1 backport] CBG-4969 create a one time session id for blipsync by @torcolvin in #7856
Full Changelog: 4.0.0...4.0.1
3.3.1 - November 2025
https://docs.couchbase.com/sync-gateway/3.3/product-notes/release-notes.html
What's Changed
- [3.3.0.1 backport] CBG-4944 obey db scope for CORS.LoginOrigin by @torcolvin in #7835
- [3.3.0.2 backport] CBG-4964 create cookie with SameSite=None if CORS enabled by @torcolvin in #7843
- [3.3.1 backport] CBG-4973 don't set SameSite:None without Secure by @torcolvin in #7851
- [3.3.1 only] CBG-4941 block BLIP_3+CBMobile_4 from connecting by @torcolvin in #7850
- [3.3.1 backport] CBG-4975 update the documentation for CORS by @torcolvin in #7854
- [3.3.1 backport] CBG-4970 create a one time session id for blipsync by @torcolvin in #7857
Full Changelog: 3.3.0...3.3.1
3.2.7 - November 2025
https://docs.couchbase.com/sync-gateway/3.2/release-notes.html
What's Changed
- [3.2.7 backport] openapi improvements by @torcolvin in #7594
- [3.2.7 backport] CBG-4694 do not return invalid sessions with GET by @torcolvin in #7595
- [3.2.7 only] CBG-4940 block BLIP_3+CBMobile_4 from connecting by @torcolvin in #7849
- [3.2.7 backport] CBG-4976 update the documentation for CORS by @torcolvin in #7855
- [3.2.7 backport] CBG-4971 create a one time session id for blipsync by @torcolvin in #7858
Full Changelog: 3.2.6...3.2.7
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 https://github.com/couchbase/sync_gateway/...
3.3.0 — July 2025
https://docs.couchbase.com/sync-gateway/3.3/whatsnew.html
What's Changed
- Switch main builds to 3.3.0 by @adamcfraser in #7013
- CBG-4108 acquire lock to prevent NewWaiter data race by @torcolvin in #7012
- CBG-4110: Flip defaultDbAuditEnabled by @bbrks in #7015
- CBG-4117: Add type checking to mandatory audit fields during event validation by @bbrks in #7011
- CBG-4101 add AuditIDChangesFeedStarted from blip by @torcolvin in #7010
- CBG-4067: do not release doc sequence upon timeout error by @gregns1 in #7016
- CBG-4116 skip successful auth on silent handlers by @torcolvin in #7017
- CBG-4111: Differentiate between
nilset and empty set of enabled db audit events by @bbrks in #7024 - CBG-4087: remove configs from invalid tracking that are not found in config poll by @gregns1 in #7020
- CBG-4114 Fixes for db scoped audit enabled/disabled events by @adamcfraser in #7021
- CBG-4122 common func for getting file loggers by @torcolvin in #7022
- CBG-4101 avoid test flake by @torcolvin in #7032
- CBG-4088: If we error in removeCorruptConfigIfExists we don't unload/remove database by @gregns1 in #7014
- CBG-4023: Removal unmarshalled body on the rev cache by @gregns1 in #7030
- CBG-3713 use atomic pointers for loggers by @torcolvin in #7025
- CBG-4132 Enable sequence handling tests with xattrs=true by @torcolvin in #7031
- CBG-4017 Move to go-oidc v3.11.0, go-jose v4.0.2 by @adamcfraser in #7036
- CBG-4136: OpenAPI Specs: Limit db scopes to 1 and provide example by @bbrks in #7038
- CBG-4138: Enable log collation by default for audit logging by @bbrks in #7039
- CBG-3713 nil non console loggers in ResetGlobalLogging by @torcolvin in #7042
- CBG-4140: Cheaply clone additionalFields when producing audit event - avoids un… by @bbrks in #7041
- CBG-4132 wait for sequence id, not number of sequences by @torcolvin in #7045
- CBG-3818 Create and use GetChanges consistently (part 1) by @torcolvin in #7033
- CBG-3818 Create and use GetChanges consistently (part 2) by @torcolvin in #7034
- Add benchmark to get audit field overhead measurements by @bbrks in #7043
- CBG-4157: disable audit events bug/panic and fix by @bbrks in #7047
- CBG-3818 WaitForChanges before starting a Continuous:false replicator by @torcolvin in #7048
- CBG-4067 Only skip releasing sequences for timeouts by @adamcfraser in #7050
- CBG-3947 Do not remove loaded database on transient fetch error by @adamcfraser in #7035
- CBG-4125 use a non cancellable context for OIDC metadata by @torcolvin in #7055
- CBG-4147: Improve Audit performance (JSON marshalling / expandFields) by @bbrks in #7056
- CBG-4169 add 3.1.10 branch by @torcolvin in #7059
- CBG-4161 log the source of metadata ID by @torcolvin in #7051
- CBG-4121 improve logging for jwts by @torcolvin in #7064
- README.md: Replace coverage card with combined integration test coverage by @bbrks in #7068
- CBD-6003, build repo SHA changes to pickup GOPROXY change. by @mhocouchbase in #7077
- README refresh by @bbrks in #7075
- CBG-4135: new stat for rev cache capacity by @gregns1 in #7049
- CBG-4181: Bump third-party dependencies by @bbrks in #7078
- CBG-4143 add redocly targets for capella by @torcolvin in #7044
- CBG-4160: Replace base.WaitForStat with Assert/Require and fix missing stat incr by @bbrks in #7052
- CBG-3692: Improved logging for failed basic auth login by @bbrks in #7080
- CBG-3694: Improved logging for failed session auth by @bbrks in #7081
- CBG-3693: Improved logging for no-user/no auto-register case in JWT auth by @bbrks in #7082
- CBG-4188: Add audit logging metrics by @bbrks in #7083
- CBG-3933 allow console logs to be rotated by @torcolvin in #7058
- CBG-3933 correct docs for number of days audit logs are retained by @torcolvin in #7085
- CBG-4191 Switch version numbers to only show x.y by @torcolvin in #7086
- Set up 3.1.10.1 builds by @bbrks in #7089
- CBG-4167 add missing Stringer for SubChangesParams and ChangesOptions by @torcolvin in #7095
- CBG-4032: memory based rev cache implementation by @gregns1 in #7040
- CBG-4215 Move duplicate checks for pending sequences to read side by @adamcfraser in #7097
- CBG-4216 Don't increment high sequence cached for unused sequences on pendingLogs by @adamcfraser in #7098
- CBG-4227 Set up 3.1.11 builds by @adamcfraser in #7104
- CBG-4223 correct log message by @torcolvin in #7101
- CBG-4228 correct docs for /db/_config/audit by @torcolvin in #7108
- CBG-4226 remove allOf references by @torcolvin in #7103
- CBG-4134: link rev cache memory limit config option to rev cache by @gregns1 in #7084
- CBG-4234: clean up rev cache work by @gregns1 in #7113
- CBG-4241: Low risk refactoring in
_getOrAddDatabaseFromConfigby @bbrks in #7115 - CBG-4179 check early for context cancellation by @torcolvin in #7079
- CBG3026 prereq: More low-risk cleanup/refactoring by @bbrks in #7120
- CBG-4268: Remove DBOnlineCallback by @bbrks in #7122
- [3.2.1] CBG-4262: Set up 3.2.1 builds by @bbrks in #7123
- speed up db/indextest by 5 minutes by @torcolvin in #6911
- remove use of primary index in tests by @torcolvin in #7124
- CBG-4273: Lower BLIP frame/message logging to trace level by @bbrks in #7126
- CBG-4277: Remove unused totalBytesForHistory from getHistory by @gregns1 in #7137
- CBG-4236: Create SG log files on startup with 0644 permission bits set by @bbrks in #7128
- CBG-4291 Fix mou.cas for resync by @adamcfraser in #7148
- CBG-4293 recognize alma/rocky and other rhel variants by @torcolvin in #7150
- DOC-12637 Fix redocly plugins by @osfameron in #7153
- CBG-3026: Use
DatabaseInitManagerin all GSI cases by @bbrks in #7121 - CBG-4282 silence non-constant format govet error by @torcolvin in #7140
- CBG-3834 Close connected websocket connections on database close by @adamcfraser in #7157
- diable TestReleaseSequenceOnDocWriteFailure pending CBG-4242 by @gregns1 in #7163
- Update schemas.yaml by @ElliotFrancisHunter in #7165
- CBG-2838: Rely on index 'IF NOT EXISTS' and idempotent deferred index builds fo… by @bbrks in #7161
- CBG-4308 fix test race condition by @torcolvin in #7159
- CBG-4242: TestReleaseSequenceOnDocWriteFailure flake by @gregns1 in #7172
- CBG-4323: fix for per shard memory based eviction by @gregns1 in https://github.com/couchbase/sync...
3.2.6 — July 2025
https://docs.couchbase.com/sync-gateway/3.2/whatsnew.html
Fixed Issues
- Improved sgcollect execution and output