You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Added per-instance serialization for Spanner Admin database lifecycle operations so concurrent CreateDatabase and DropDatabase long-running operations do not collide on emulator or Omni instance admin paths.
Added retry-backed database drop cleanup with a longer database-specific timeout budget, including Clients.Close and rollback paths.
Added --with-default-database for spanemuboost serve omni to preserve the previous eager default database bootstrap behavior when needed.
Added Omni rollback smoke coverage for TestOpenOmniClientsRollsBackCreatedDatabaseOnFailure.
Added regression coverage for defensive Clients.ClientOptions() copies, deprecated NewClients fixed-resource teardown, failed setup rollback, admin lock cancellation, drop retry budgeting, NotFound cleanup completion, and forced teardown of reused databases.
Changed
Changed spanemuboost serve omni to skip instance and database bootstrap by default, leaving only Omni's built-in spanner-info database until clients create their own databases.
Routed deprecated NewEmulatorWithClients and NewClients through the shared rollback-capable bootstrap path so their teardown and rollback behavior matches the modern client helpers.
Kept Clients.InstanceClient consistently available even when instance creation is disabled, including the Omni default/default case where an instance admin client is still a coherent part of the public Clients shape.
Made Clients.ClientOptions() return a defensive copy.
Hardened Omni client connection options to use passthrough:/// with dial settings validation skipped, matching emulator-style endpoint handling.
Improved startup failure cleanup by using bounded close contexts and preserving both bootstrap and close errors where applicable.
Treat CreateDatabaseAlreadyExists as reuse of an already-bootstrapped database without re-applying setup DDLs. Reused resources are not rolled back or dropped on close by default, while explicit ForceSchemaTeardown() still forces teardown.
Database cleanup now treats NotFound as complete, uses timer-safe retry backoff, and gives database-only teardown a database-specific retry budget.
Pinned the lint workflow to the repository Go version and golangci-lint v2.12.2, and updated checkout/setup-go action majors for reproducibility.
Promoted golang.org/x/sync to a direct dependency for the semaphore used by the admin lifecycle lock.
Validation
git diff --check v0.4.4..origin/main
Release worktree at origin/main:
go test ./... -run '^$'
go test ./... -run 'TestWithInstanceAdminLockCancelsWhileWaiting|TestDropDatabaseRetryBudget|TestDropDatabaseComplete|TestParseServeArgs|TestParseServeArgsOmniWithDefaultDatabase|TestClientsCloseNilSafeAndIdempotent|TestClientsClientOptionsReturnsCopy'
make lint
GitHub Actions on origin/main commit c03b262: Go, golangci-lint, and dependency graph update succeeded.
PR checks for #67, #68, and #69 passed, including build-and-test, lint, omni-smoke, and podman-smoke.
Gemini Code Assist reviewed the final #69 head with no comments to address.
Merged PRs
#69 Serialize admin lifecycle ops and adjust Omni serve bootstrap
#68 ci: pin lint workflow and include Omni rollback smoke test
#67 Fix deprecated clients bootstrap and Omni runtime cleanup semantics