Merge pull request #6767 from dolthub/aaron/fix-cluster-drop-database-race

go: sqle: cluster: Improvements for DROP DATABASE replication.
This commit is contained in:
Aaron Son
2023-10-04 10:13:48 -07:00
committed by GitHub
13 changed files with 297 additions and 192 deletions
@@ -1417,71 +1417,6 @@ tests:
- exec: 'call dolt_gc()'
error_match: "must be the primary"
- exec: 'call dolt_gc("--shallow")'
- name: dropped database no longer in dolt_cluster_status
multi_repos:
- name: server1
with_files:
- name: server.yaml
contents: |
log_level: trace
listener:
host: 0.0.0.0
port: 3309
cluster:
standby_remotes:
- name: standby
remote_url_template: http://localhost:3852/{database}
bootstrap_role: primary
bootstrap_epoch: 1
remotesapi:
port: 3851
server:
args: ["--config", "server.yaml"]
port: 3309
- name: server2
with_files:
- name: server.yaml
contents: |
log_level: trace
listener:
host: 0.0.0.0
port: 3310
cluster:
standby_remotes:
- name: standby
remote_url_template: http://localhost:3851/{database}
bootstrap_role: standby
bootstrap_epoch: 1
remotesapi:
port: 3852
server:
args: ["--config", "server.yaml"]
port: 3310
connections:
- on: server1
queries:
- exec: 'create database repo1'
- exec: 'use repo1'
- exec: 'SET @@GLOBAL.dolt_cluster_ack_writes_timeout_secs = 10'
- exec: 'create table vals (i int primary key)'
- query: "select `database`, standby_remote, role, epoch, replication_lag_millis is not null as `replication_lag_millis`, current_error from dolt_cluster.dolt_cluster_status"
result:
columns: ["database","standby_remote","role","epoch","replication_lag_millis","current_error"]
rows:
- ["repo1", "standby", "primary", "1", "1", "NULL"]
- exec: 'use dolt_cluster'
- exec: 'drop database repo1'
- query: 'show databases'
result:
columns: ["Database"]
rows:
- ["dolt_cluster"]
- ["information_schema"]
- ["mysql"]
- query: "select `database`, standby_remote, role, epoch, replication_lag_millis is not null as `replication_lag_millis`, current_error from dolt_cluster.dolt_cluster_status"
result:
columns: ["database","standby_remote","role","epoch","replication_lag_millis","current_error"]
rows: []
- name: dropped database is no longer present on replica
multi_repos:
- name: server1
@@ -1570,3 +1505,100 @@ tests:
columns: ["database","standby_remote","role","epoch",]
rows:
- ["repo1", "standby", "standby", "1"]
- name: dropped database recreated quiesces to expected state
multi_repos:
- name: server1
with_files:
- name: server.yaml
contents: |
log_level: trace
listener:
host: 0.0.0.0
port: 3309
cluster:
standby_remotes:
- name: standby
remote_url_template: http://localhost:3852/{database}
bootstrap_role: primary
bootstrap_epoch: 1
remotesapi:
port: 3851
server:
args: ["--config", "server.yaml"]
port: 3309
- name: server2
with_files:
- name: server.yaml
contents: |
log_level: trace
listener:
host: 0.0.0.0
port: 3310
cluster:
standby_remotes:
- name: standby
remote_url_template: http://localhost:3851/{database}
bootstrap_role: standby
bootstrap_epoch: 1
remotesapi:
port: 3852
server:
args: ["--config", "server.yaml"]
port: 3310
connections:
- on: server1
queries:
- exec: 'SET @@GLOBAL.dolt_cluster_ack_writes_timeout_secs = 10'
- exec: 'create database repo1'
- exec: 'use repo1'
- exec: 'create table vals (a int)'
- exec: 'use mysql'
- exec: 'drop database repo1'
- exec: 'create database repo1'
- exec: 'use repo1'
- exec: 'create table vals (b int)'
- exec: 'use mysql'
- exec: 'drop database repo1'
- exec: 'create database repo1'
- exec: 'use repo1'
- exec: 'create table vals (c int)'
- exec: 'use mysql'
- exec: 'drop database repo1'
- query: "select `database`, standby_remote, role, epoch, replication_lag_millis is not null as `replication_lag_millis`, current_error from dolt_cluster.dolt_cluster_status"
result:
columns: ["database","standby_remote","role","epoch","replication_lag_millis","current_error"]
rows: []
- on: server2
queries:
- query: 'show databases'
result:
columns: ["Database"]
rows:
- ["dolt_cluster"]
- ["information_schema"]
- ["mysql"]
retry_attempts: 100
- query: "select `database`, standby_remote, role, epoch from dolt_cluster.dolt_cluster_status"
result:
columns: ["database","standby_remote","role","epoch",]
rows: []
- on: server1
queries:
- exec: 'create database repo1'
- exec: 'use repo1'
- exec: 'create table vals (d int)'
- on: server2
queries:
- query: 'show databases'
result:
columns: ["Database"]
rows:
- ["dolt_cluster"]
- ["information_schema"]
- ["mysql"]
- ["repo1"]
- exec: 'use repo1'
- query: "select d from vals"
result:
columns: ["d"]
rows: []