Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates Sync Gateway to pass context.Context through to sg-bucket-backed APIs (datastore operations, DCP callbacks, query iterators, and related helpers), aligning the codebase with newer sg-bucket/rosmar context-aware method signatures.
Changes:
- Plumbs
ctxthrough bucket/datastore CRUD, counter, view, N1QL, DCP-feed, and iterator-close call paths (plus updated callback signatures). - Updates a broad set of unit/integration tests and test helpers to supply contexts consistently (commonly via
base.TestCtx(t)/rt.Context()). - Bumps module dependencies to newer
sg-bucketandrosmarversions that expose the updated context-aware APIs.
Reviewed changes
Copilot reviewed 166 out of 167 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| xdcr/rosmar_xdcr.go | Pass ctx into rosmar bucket datastore enumeration and DCP callback signature. |
| topologytest/peer_test.go | Update NamedDataStore call to accept ctx. |
| topologytest/couchbase_server_peer_test.go | Update NamedDataStore + WriteUpdate callback signatures to accept ctx. |
| rest/xattr_upgrade_test.go | Update DataStore.Add calls to accept ctx. |
| rest/view_api.go | Pass handler ctx into design doc operations. |
| rest/view_api_test.go | Update test setup to reuse ctx and pass ctx into bucket/datastore calls. |
| rest/utilities_testing.go | Pass ctx into metadata Incr and DefaultDataStore/NamedDataStore usage in helpers. |
| rest/utilities_testing_resttester.go | Pass ctx into GetRaw calls in polling helper. |
| rest/utilities_testing_attachment.go | Pass ctx into AddRaw and WriteUpdateWithXattrs callback signature. |
| rest/user_api_test.go | Normalize ctx initialization and pass ctx into DataStore.Get usage. |
| rest/upgradetest/upgrade_registry_test.go | Pass ctx into DefaultDataStore and KV ops for upgrade tests. |
| rest/upgradetest/remove_collection_test.go | Pass ctx into DropDataStore. |
| rest/sync_fn_test.go | Pass ctx into metadata store Get calls. |
| rest/session_test.go | Pass ctx into metadata Set/Delete session doc operations. |
| rest/server_context.go | Use ctx when acquiring DefaultDataStore during DB initialization. |
| rest/server_context_test.go | Normalize ctx creation and pass ctx into DefaultDataStore/ListDataStores/DropDataStore/AddRaw. |
| rest/rosmar_api.go | Pass handler ctx into ListDataStores/DropDataStore. |
| rest/rosmar_api_test.go | Pass ctx into bucket.ListDataStores. |
| rest/role_api_test.go | Reuse ctx when creating authenticators and calling GetRoleIncDeleted. |
| rest/revocation_test.go | Pass ctx into DataStore Get/Delete paths inside tests. |
| rest/rest_tester_cluster_test.go | Use ctx with DefaultDataStore and Remove. |
| rest/indextest/post_upgrade_test.go | Use ctx with DefaultDataStore for index initialization tests. |
| rest/indextest/index_test.go | Pass ctx into ListDataStores/NamedDataStore/DefaultDataStore. |
| rest/indextest/index_init_api_test.go | Use ctx-aware DefaultDataStore in AsN1QLStore. |
| rest/importuserxattrtest/revid_import_test.go | Pass ctx into DataStore.Set. |
| rest/importuserxattrtest/revcache_test.go | Pass ctx into DataStore.Get calls. |
| rest/importuserxattrtest/rawdoc_test.go | Normalize ctx and pass it into Get/UpdateXattrs flow. |
| rest/importuserxattrtest/import_test.go | Pass ctx into Get/Set calls; remove duplicate ctx declarations. |
| rest/importtest/import_logging_test.go | Pass ctx into Add. |
| rest/importtest/import_data_test.go | Pass ctx into bucket.GetMaxVbno. |
| rest/importtest/collections_import_test.go | Pass ctx into DataStore.Add across collections. |
| rest/functions_api.go | Close QueryResultIterator with ctx. |
| rest/doc_api.go | Pass handler ctx into attachment/local doc special doc ops. |
| rest/doc_api_test.go | Reuse ctx for ParseRevID calls. |
| rest/diagnostic_doc_api_test.go | Pass ctx into CreateDataStore/DropDataStore. |
| rest/diagnostic_api_test.go | Pass ctx into CreateDataStore/DropDataStore. |
| rest/config.go | Use ctx for Bucket.UUID in shared-bucket DB checks. |
| rest/config_manager_test.go | Pass ctx into DefaultDataStore and KV ops. |
| rest/config_legacy_test.go | Pass ctx into DefaultDataStore when constructing authenticator. |
| rest/changestest/changes_api_test.go | Normalize ctx reuse and pass ctx into AllocateTestSequence. |
| rest/changes_test.go | Pass ctx into AllocateTestSequence. |
| rest/changes_request_plus_test.go | Pass ctx into AllocateTestSequence. |
| rest/changes_api.go | Pass handler ctx into GetRequestPlusSequence. |
| rest/bulk_api.go | Pass handler ctx into PutSpecial for local docs. |
| rest/blip_legacy_revid_test.go | Pass ctx into DataStore.Get for xattr removal helper. |
| rest/blip_api_collections_test.go | Pass ctx into PutSpecial. |
| rest/blip_api_attachment_test.go | Pass ctx into GetRaw checks for attachments. |
| rest/audit_test.go | Reuse ctx in logging setup and bucket close; pass ctx into Add for import audit cases. |
| rest/attachmentmigrationtest/attachment_migration_api_test.go | Pass ctx into GetRaw on collection datastore. |
| rest/attachmentcompactiontest/attachment_compaction_api_test.go | Pass ctx into SetRaw/GetRaw/AddRaw/Delete operations. |
| rest/api_test_no_race_test.go | Reuse ctx and pass to setupServerConfig. |
| rest/adminapitest/resync_test.go | Use ctx-aware DefaultDataStore and pass ctx into WriteCas/GetRaw. |
| rest/adminapitest/admin_api_test.go | Pass ctx into DataStore.Add/Get, normalize ctx reuse in subtests. |
| go.mod | Bump sg-bucket and rosmar versions for ctx-aware APIs. |
| go.sum | Update checksums for bumped dependencies. |
| db/utilities_hlv_testing.go | Pass ctx into DataStore.Get for test helper. |
| db/special_docs.go | Add ctx plumbing to special-doc helpers (get/put/delete, getWithTouch, Update callback signature). |
| db/sg_replicate_cfg.go | Update listener GetNodes signature to accept ctx. |
| db/sequence_allocator.go | Thread ctx through sequence get/incr/release and CAS-fix paths. |
| db/sequence_allocator_test.go | Update tests to pass ctx into DefaultDataStore and datastore Set/getSequence. |
| db/revtree.go | Add ctx to RevTree revision body loader path. |
| db/revtree_test.go | Reuse ctx for revtree helpers. |
| db/revision.go | Pass ctx into GetRaw/SetRaw/Touch/Delete paths for old revision storage. |
| db/revision_old.go | Pass ctx into SetRaw for legacy rev pointer storage. |
| db/revision_cache_interface.go | Pass ctx into loadAttachmentsData calls. |
| db/repair_bucket.go | Update bucket.Update callback signature to accept ctx. |
| db/query.go | Update iterator methods to accept ctx (NextBytes/Close). |
| db/query_test.go | Close query iterators with ctx. |
| db/query_dual_metadata.go | Close iterators with ctx; update NextBytes/Close signatures. |
| db/indextest/util.go | Use ctx-aware DefaultDataStore for index setup. |
| db/indextest/post_upgrade_test.go | Pass ctx into GetDDocs/DeleteDDoc. |
| db/indextest/indextest_test.go | Close results with ctx. |
| db/indextest/indextest_dual_metadata_test.go | Use ctx-aware DefaultDataStore and AddRaw; close iterators with ctx. |
| db/indexes.go | Use ctx-aware NamedDataStore when removing unused indexes. |
| db/import_listener.go | Update feed event callback signature to accept ctx. |
| db/import_listener_test.go | Pass ctx into ProcessFeedEvent. |
| db/hybrid_logical_vector_test.go | Pass ctx into compact and WriteCas operations. |
| db/functions/n1ql_function.go | Use ctx-aware DefaultDataStore and Close(ctx) for iterators. |
| db/functions/n1ql_function_test.go | Close iterators with ctx; reuse ctx for CompileFunctions. |
| db/document.go | Add ctx to RevLoaderFunc, revision body persistence and deletion paths. |
| db/design_doc.go | Add ctx to GetDesignDoc/DeleteDesignDoc and view store operations; close view results with ctx. |
| db/design_doc_util_test.go | Update GetDDoc calls to pass ctx (via base.TestCtx). |
| db/design_doc_test.go | Use ctx-aware DefaultDataStore for view store acquisition. |
| db/dcp_sharded_upgrade_test.go | Pass ctx into UUID/GetMaxVbno and SetRaw calls. |
| db/database_collection.go | Update MetadataStore.Update callback signature to accept ctx. |
| db/crud.go | Pass ctx into GetRaw, attachment deletes, and WriteUpdateWithXattrs callback signature. |
| db/crud_test.go | Pass ctx into GetRaw/Add/Incr paths in tests. |
| db/changes_view.go | Close query results with ctx. |
| db/changes_test.go | Pass ctx into GetRaw/SetRaw in tests. |
| db/change_listener.go | Update feed callback signature to accept ctx. |
| db/change_listener_dual_metadata_test.go | Use ctx-aware DefaultDataStore in tests. |
| db/change_cache.go | Pass ctx into GetRaw for doc body fetches and metadata store reads. |
| db/change_cache_test.go | Pass ctx into MetadataStore.Add and Incr usage in tests. |
| db/blip_handler.go | Pass ctx into special-doc and attachment operations; pass ctx into ForEachStubAttachment. |
| db/blip_handler_collections.go | Pass ctx into GetSpecial. |
| db/blip_connected_client.go | Close query iterators with ctx. |
| db/background_mgr.go | Pass ctx into metadata store CRUD/Update/GetAndTouchRaw calls for cluster-aware status and heartbeat docs. |
| db/background_mgr_test.go | Use ctx-aware DefaultDataStore in tests. |
| db/background_mgr_resync_dcp.go | Update DCP callback signature; pass ctx into getSequence and SetSyncInfoMetadataID. |
| db/background_mgr_resync_dcp_test.go | Update callback type signatures and pass ctx into WriteCas/DefaultDataStore. |
| db/background_mgr_attachment_migration.go | Update DCP callback signature; pass ctx into SetSyncInfoMetaVersion. |
| db/background_mgr_attachment_migration_test.go | Pass ctx into GetRaw/Get/Add operations; update callback signature. |
| db/background_mgr_attachment_compaction.go | Use ctx-aware DefaultDataStore selection. |
| db/attachment.go | Add ctx to attachment loading and stub-attachment iteration; pass ctx into GetRaw/AddRaw. |
| db/attachment_compaction.go | Update DCP callback signature; pass ctx into GetRaw/Remove. |
| db/active_replicator_config.go | Add ctx to CheckpointHash (for UUID lookup). |
| db/active_replicator_common.go | Pass ctx into CheckpointHash/resetLocalCheckpoint/getWithTouch/putDocWithRevision. |
| db/active_replicator_checkpointer.go | Pass ctx into getSpecialBytes/putSpecial and resetLocalCheckpoint delete. |
| base/util_testing.go | Update TestBucket/utility helpers to ctx-aware Bucket/DataStore APIs. |
| base/sg_cluster_cfg.go | Pass ctx into datastore Get/WriteCas/Remove calls. |
| base/rosmar_dcp_client.go | Make metadata store access and PurgeCheckpoints ctx-aware. |
| base/rosmar_cluster.go | Pass ctx into NamedDataStore and KV ops. |
| base/main_test_bucket_pool.go | Use ctx-aware DefaultDataStore/MobileSystemDataStore and Close(ctx) for query results. |
| base/logging_context.go | Minor comment update and note about future t.Context() usage. |
| base/leaky_bucket.go | Make Bucket wrapper ctx-aware for UUID/GetMaxVbno/DefaultDataStore/ListDataStores/NamedDataStore/DropDataStore; update DCP callback wrapping signature. |
| base/heartbeat.go | Thread ctx through heartbeat listener GetNodes and KV ops for heartbeat docs. |
| base/heartbeat_test.go | Update GetNodes signature and pass ctx in calls. |
| base/gocb_dcp_feed.go | Pass ctx into GetMaxVbno for high-seq metadata creation. |
| base/gocb_dcp_client.go | Pass ctx into GetMaxVbno/DefaultDataStore; update PurgeCheckpoints signature. |
| base/dual_metadata_store.go | Add ctx-aware KV methods and GetMaxVbno; update all store operations to accept ctx. |
| base/dcp_test.go | Pass ctx into UUID calls in tests. |
| base/dcp_sharded.go | Pass ctx into GetMaxVbno/UUID; update cfg poller datastore.Get usage; update GetNodes signature. |
| base/dcp_common.go | Update feed callback invocation to include ctx; pass ctx into GetRaw/SetRaw for checkpoints. |
| base/dcp_client.go | Update DCPClient interface to PurgeCheckpoints(ctx) and pass ctx into high-seq metadata. |
| base/dcp_client_worker.go | Update worker mutation callback signature to include ctx. |
| base/dcp_client_metadata.go | Pass ctx into Set/Get/Delete for persisted DCP metadata. |
| base/constants_syncdocs.go | Pass ctx into syncInfo Get/Add/Update; add ctx to SetSyncInfoMetadataID/SetSyncInfoMetaVersion. |
| base/constants_syncdocs_test.go | Update tests to pass ctx into datastore ops. |
| base/config_persistence.go | Minor whitespace changes (no functional changes). |
| base/config_persistence_test.go | Pass ctx into datastore Set/Get/Delete calls. |
| base/collection.go | Make bucket APIs ctx-aware for GetMaxVbno/ListDataStores/DropDataStore/DefaultDataStore/NamedDataStore; UUID now accepts ctx. |
| base/collection_xattr_common.go | Pass ctx into WriteUpdateWithXattrs callback; pass ctx into Delete path. |
| base/collection_view.go | Add ctx to GetDDoc/GetDDocs/DeleteDDoc; close iterator with ctx. |
| base/collection_n1ql_common.go | Update QueryResultIterator NextBytes/Close usage to accept ctx. |
| base/bucket.go | Make CouchbaseBucketStore GetMaxVbno ctx-aware; make GetCounter ctx-aware; pass ctx into Exists/NamedDataStore/UUID calls. |
| base/bucket_view_test.go | Pass ctx into view-store ops, datastore ops, iterator NextBytes/Close. |
| base/bucket_test.go | Pass ctx into Get/GetRaw in tests. |
| base/bucket_n1ql_test.go | Pass ctx into AddRaw; close iterators with ctx; pass ctx into NextBytes loop. |
| auth/user_test.go | Normalize ctx creation and pass ctx into GetRaw helper. |
| auth/session.go | Pass authenticator log ctx into datastore Get/Set/Delete for sessions. |
| auth/session_test.go | Pass ctx into datastore Get/Set usage. |
| auth/role_test.go | Use ctx-aware DefaultDataStore in test setup. |
| auth/auth.go | Pass auth.LogCtx into datastore Update/Get/WriteCas/Set/Delete calls. |
| auth/auth_test.go | Use ctx-aware DefaultDataStore and pass ctx into leaky datastore Get calls. |
torcolvin
left a comment
There was a problem hiding this comment.
There are three things that I see.
Updateis changed to pass a context and then it is always ignored. If we always want to ignore it, then I don't think we should have this be an argument at all. If we want to consider its usage in the future and not modify existing code at this time, that's OK too.- Similar to
UpdatetheFeedEventFuncis changed to pass a context and then it is always ignored. If we always want to ignore it, then I don't think we should have this be an argument at all. If we want to consider its usage in the future and not modify existing code at this time, that's OK too. - There are a bunch of places in the test code where ctx := base.TestCtx(t) was moved from the subtest to the parent test. I did not exhaustively search test code.
| func (b *GocbV2Bucket) DropDataStore(name sgbucket.DataStoreName) error { | ||
| func (b *GocbV2Bucket) DropDataStore(ctx context.Context, name sgbucket.DataStoreName) error { | ||
| if b.cluster == nil { | ||
| return fmt.Errorf("bucket %s has been closed", MD(b.GetName())) |
There was a problem hiding this comment.
out of scope and not very important since we don't redact MD but this should be RedactErrorf, we could write a linter or code to find fmt.Errorf with MD/UD
| return nil | ||
| } | ||
| _, err := ds.Update(SGSyncInfo, 0, func(current []byte) (updated []byte, expiry *uint32, delete bool, err error) { | ||
| _, err := ds.Update(ctx, SGSyncInfo, 0, func(_ context.Context, current []byte) (updated []byte, expiry *uint32, delete bool, err error) { |
There was a problem hiding this comment.
This is an interesting API. In this case we aren't using context variable but I think you possibly do want to shadow ctx through this and not use the parent?
That is replace _ context.Context with ctx context.Context. I suspect these are always going to be the same but there's something that feels a bit weird about this callback API specifically.
| // In the event of an error we can return but continue - Worst case is an attachment which should be deleted won't | ||
| // be deleted. | ||
| callback := func(event sgbucket.FeedEvent) bool { | ||
| callback := func(_ context.Context, event sgbucket.FeedEvent) bool { |
There was a problem hiding this comment.
I have definitely wanted this before to have this take a ctx method but I have misgivings about not showing the ctx here. I don't think we need to change this code here necessarily.
This might just be a prior bad code smell where this is complicated nested function.
I'm curious if you had thoughts about what to do in short or long term. If we are never using to use this second context in future code, then maybe it is better to not have it?
There was a problem hiding this comment.
I'm leaning towards the callback function not needing ctx.
Update-specific code can log using ctx passed, and then the caller can already include their own log context as a closure that isn't passed as a parameter.
| func (b *BackgroundManager) updateMultiNodeClusterAwareStatus(ctx context.Context) error { | ||
| docID := b.clusterAwareOptions.StatusDocID() | ||
| _, err := b.clusterAwareOptions.metadataStore.Update(docID, 0, func(current []byte) ([]byte, *uint32, bool, error) { | ||
| _, err := b.clusterAwareOptions.metadataStore.Update(ctx, docID, 0, func(_ context.Context, current []byte) ([]byte, *uint32, bool, error) { |
There was a problem hiding this comment.
This is new code you can do func(ctx context.Context) here.
|
|
||
| // required to avoid missing audit fields in PUT | ||
| ctx := col.AddCollectionContext(ctx) | ||
| ctx = col.AddCollectionContext(ctx) |
There was a problem hiding this comment.
This is intentionally ctx := so that the collectio name doesn't leak outside of the for loop
There was a problem hiding this comment.
This comment is still relevant, but it is test only code.
| } | ||
| } | ||
| callback := func(event sgbucket.FeedEvent) bool { | ||
| callback := func(_ context.Context, event sgbucket.FeedEvent) bool { |
There was a problem hiding this comment.
Given this is test code, I feel fine about have ctx used from the callback.
|
|
||
| func TestViewQueryWithXattrAndNonXattr(t *testing.T) { | ||
|
|
||
| ctx := base.TestCtx(t) |
There was a problem hiding this comment.
I'm often inclined to move this below where RestTester is configured to show both test and database, but this is fine, and I haven't commented everywhere I saw this.
2f9f14e to
e61126e
Compare
torcolvin
left a comment
There was a problem hiding this comment.
Two quick test fixes, not very important. I'll re-approve when upstream changes get merged.
|
|
||
| // required to avoid missing audit fields in PUT | ||
| ctx := col.AddCollectionContext(ctx) | ||
| ctx = col.AddCollectionContext(ctx) |
There was a problem hiding this comment.
This comment is still relevant, but it is test only code.
Move t.Skip ahead of ctx := base.TestCtx(t) in three skipped tests so staticcheck (SA4006) doesn't flag the assignment as unreachable, and drop the duplicated ctx redeclaration in TestUpsertOptionPreserveExpiry (ineffassign) — the outer ctx already covers the loop body. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- bucket_view_test.go: close bytesIterator (not iterator, which was already closed) at end of NextBytes section to avoid double-close and leak. - indexes.go: stop shadowing dsName with the resolved DataStore in RemoveUnusedIndexes — the old shadowing made the "failed to get datastore" error log a nil/empty store. Use a separate dataStore var and keep the requested name for log/error formatting. - util_testing.go: TestBucket.DefaultDataStore now forwards the caller's ctx instead of discarding it for a fresh TestCtx, so cancellation and log context propagate now that Bucket is ctx-aware. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
UpdateFunc no longer takes ctx (sg-bucket change); drop ctx from all callback closures and rename `delete` named returns to `isDelete` to avoid shadowing the builtin (revive). Other review fixes: - db/indexes.go: switch fmt.Errorf to base.RedactErrorf for the RemoveUnusedIndexes errors that wrap base.MD()/base.UD() args. - db/util_testing.go: name the FeedEventCallbackFunc ctx parameter (test code; use the passed ctx in future). - rest tests: move `ctx := base.TestCtx(t)` back into the t.Run subtests where it had been hoisted to the parent test, scoping the test logger correctly per subtest. Affected: config_test.go, persistent_config_test.go, server_context_test.go. - rest/adminapitest/admin_api_test.go: drop the unused-then-shadowed initial ctx in TestTombstoneCompactionPurgeInterval. - rest/user_api_test.go: same in TestRemovingUserXattr — only the rt.Context() form is used. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Apply uniformly the same ctx-dropping treatment as for UpdateFunc: WriteUpdateWithXattrsFunc and FeedEventCallbackFunc no longer take ctx. Update all closures/callsites and rename now-unused parameters to _ to satisfy revive. This includes: - changeListener.ProcessFeedEvent and importListener.ProcessFeedEvent drop the unused ctx parameter on the method receiver too. - LeakyDataStore/LeakyBucket wrapper callbacks reflect the new signatures without ctx forwarding. - Tests updated; unused imports of "context" removed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
torcolvin's review noted ctx := base.TestCtx(t) had been moved out of
t.Run subtests in several tests; he flagged a sample but did not search
exhaustively. This sweeps the rest:
- auth/user_test.go: TestUserKeysHash
- rest/audit_test.go: TestRedactConfigAsStr, TestAuditLoggingGlobals
- rest/config_test.go: TestConfigValidation, TestConfigValidationImportPartitions, TestValidateUnsupportedSameSiteCookies
- rest/persistent_config_test.go: TestPersistentConfigRegistryRollback{AfterDbConfigRollback,CollectionConflictAfterDbConfigRollback,AfterCreateFailure,AfterUpdateFailure,AfterDeleteFailure}, TestPersistentConfigSlowCreateFailure, TestMigratev30PersistentConfig, TestMigratev30PersistentConfigCollision, TestLegacyDuplicate
- rest/replicatortest/replicator_test.go: TestActiveReplicatorPullMergeConflictingAttachments
- db/change_cache_test.go: TestAddPendingLogs (added subtest-local ctx alongside the parent one used for db lifecycle)
- xdcr/xdcr_test.go: restored ctx := base.TestCtx(t) inside the preXDCRFunc closure (was using captured parent ctx)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Squashed commit of the following: commit 8d1f7e9 Author: Ben Brooks <ben.brooks@couchbase.com> Date: Thu May 14 15:15:55 2026 +0100 CBG-5386: Grafana generator: Stamp `"version": 1` (#8274) commit f3e5570 Author: Gregory Newman-Smith <109068393+gregns1@users.noreply.github.com> Date: Thu May 14 12:46:37 2026 +0100 CBG-5381: fix resync regenerate sequences set sync info no-op (#8267) commit f277042 Author: Gregory Newman-Smith <109068393+gregns1@users.noreply.github.com> Date: Thu May 14 12:44:08 2026 +0100 CBG-5249: collect value of GOMEMLIMIT in sgcollect (#8269) commit 68fbc4c Author: Tor Colvin <tor.colvin@couchbase.com> Date: Wed May 13 20:07:59 2026 -0400 Move a db scoped function from DatabaseCollection (#8248) commit 8173a32 Author: Ben Brooks <ben.brooks@couchbase.com> Date: Wed May 13 00:21:18 2026 +0100 Improve agent instructions (#8260) commit d440374 Author: Tor Colvin <tor.colvin@couchbase.com> Date: Tue May 12 12:04:17 2026 -0400 CBG-5376 skip test temporarily (#8265) commit d17c077 Author: Ben Brooks <ben.brooks@couchbase.com> Date: Tue May 12 14:30:16 2026 +0100 CBG-5298: Cleanup for GetUser (#8259) commit a3952d3 Author: Ben Brooks <ben.brooks@couchbase.com> Date: Tue May 12 11:23:32 2026 +0100 Bump golang.org/x modules (#8255) commit fbd2d74 Author: Gregory Newman-Smith <109068393+gregns1@users.noreply.github.com> Date: Tue May 12 10:33:31 2026 +0100 CBG-5365-followup: fix escaping issue (#8256) commit 3452ce2 Author: Tor Colvin <tor.colvin@couchbase.com> Date: Mon May 11 11:45:54 2026 -0400 Fix issues from go vet: (#8251) commit f419c1e Author: Ben Brooks <ben.brooks@couchbase.com> Date: Mon May 11 16:45:40 2026 +0100 CBG-5266: Prevent downgrades across cluster compatibility versions (#8235) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> commit d09f0fd Author: Ben Brooks <ben.brooks@couchbase.com> Date: Mon May 11 16:41:09 2026 +0100 CI: upload rendered test logs as artifacts on failure (#8246) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> commit cb95e1d Author: Gregory Newman-Smith <109068393+gregns1@users.noreply.github.com> Date: Mon May 11 16:29:42 2026 +0100 CBG-5365: escape . characters for channel removal macro expansion (#8241) commit 51a86de Author: Ben Brooks <ben.brooks@couchbase.com> Date: Mon May 11 16:24:26 2026 +0100 CBG-5290: Wire up ctx into sg-bucket apis (#8240) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> commit 8ce49b3 Author: Gregory Newman-Smith <109068393+gregns1@users.noreply.github.com> Date: Mon May 11 14:44:56 2026 +0100 CBG-5260: remove panic call in rev cache Put (#8237) commit 455e037 Author: Tor Colvin <tor.colvin@couchbase.com> Date: Mon May 11 09:13:29 2026 -0400 Fix TestImportPartitionsServerless in CE mode (#8250) commit c049b7c Author: Ben Brooks <ben.brooks@couchbase.com> Date: Mon May 11 10:01:40 2026 +0100 CBG-5291: CAS-safe Update on dual MetadataStore wrapper (#8238) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> commit 6890541 Author: Tor Colvin <tor.colvin@couchbase.com> Date: Fri May 8 18:50:29 2026 -0400 CBG-4920 Fix test flake: TestActiveReplicatorHLVConflictCustom (#8247) commit 0c4ca83 Author: Tor Colvin <tor.colvin@couchbase.com> Date: Fri May 8 16:16:39 2026 -0400 CBG-5175: resync - purge checkpoints if needed (#8233) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> commit eb3acba Author: Tor Colvin <tor.colvin@couchbase.com> Date: Fri May 8 11:10:03 2026 -0400 CBG-4496 add regression test for SetRaw/AddRaw for rosmar (#8239) Co-authored-by: Ben Brooks <ben.brooks@couchbase.com> commit 24da9f1 Author: Gregory Newman-Smith <109068393+gregns1@users.noreply.github.com> Date: Fri May 8 14:46:41 2026 +0100 CBG-5355: fix panic for on demand get when ErrImportCancelled is returned from import (#8225)
CBG-5290
Wire up context into sg-bucket APIs
Dependencies
Integration Tests