Skip to content

v0.4.5

Latest

Choose a tag to compare

@apstndb apstndb released this 17 Jun 06:10
c03b262

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 CreateDatabase AlreadyExists 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