googleapis / googleapis/ruby-spanner-activerecord
Can't compose db:drop db:create db:migrate in single call against Spanner Cloud
- Dominant language
- Ruby
- Stars
- 105
- Forks
- 37
- Avg merge
- 10h 2m
- Merged PRs (30d)
- 5
Description
When trying to do a database reset in a multi-database Rails app with `bin/rails db:drop:spanner db:create:spanner db:schema:load:spanner`, drop and create succeed but schema:load fails with `Database not found` from Spanner.
The problem is consistent when connected to Cloud Spanner projects, but does not occur when connected to the Spanner local emulator.
#### Environment details
- Programming language: Ruby
- OS: macos 14, Linux 31ff6731e7e0 6.4.16-linuxkit (in docker image)
- Language runtime version: 3.0.5
- Package version: `activerecord-spanner-adapter (1.4.4)`
#### Steps to reproduce
Have a cloud spanner project + instance set up.
```yaml
development:
primary:
adapter: sqlite
database: db/development.sqlite3
pool: 5
timeout: 5000
spanner:
adapter: spanner
pool: 2
project: dev-project
instance: ourapp
database: myapp_dev
credentials: config/credentials/shared-service-account.json
migrations_paths: db/spanner/migrate
```
1. Run `bin/rails db:drop:spanner db:create:spanner db:migrate:spanner` against the project + instance.
#### Full trace
```
Dropped database 'myapp_test'
Created database 'myapp_test'
rails aborted!
Google::Cloud::NotFoundError: 5:Database not found: projects/dev-project/instances/ourapp/databases/myapp_test. debug_error_string:{UNKNOWN:Error received from peer ipv4:172.111.11.11:443 {grpc_message:"Database not found: projects/dev-project/instances/ourapp/databases/myapp_test", grpc_status:5, created_time:"2023-11-06T20:09:22.197355469+00:00"}}
Caused by:
GRPC::NotFound: 5:Database not found: projects/dev-project/instances/ourapp/databases/myapp_test. debug_error_string:{UNKNOWN:Error received from peer ipv4:172.111.11.11:443 {grpc_message:"Database not found: projects/dev-project/instances/ourapp/databases/myapp_test", grpc_status:5, created_time:"2023-11-06T20:09:22.197355469+00:00"}}
```
#### Expected outcome
Drop, create, load schema on Cloud Spanner without errors in one shot like in MySQL, Postgres, or Sqlite.
Contributor guide
Assessment
This issue has not been assessed yet.