Taylor Bantle
a0c0fa6e51
Fix existant typo
2023-12-01 11:10:55 -08:00
Aaron Son
0913c5eb8c
integration-tests/go-sql-server-driver: sql-server-cluster-users-and-grants.yaml: branch_control_block_on_write_replication: Add an assertion on a connection to server2 after the branch control perms replicate, to ensure we don't send the TERM signal to the server process at the end of the test before it is fully started up.
2023-11-10 15:03:50 -08:00
Aaron Son
ce544697da
[no-release-notes] integration-tests/go-sql-server-driver: Change our approach to JWTs and X.509 certificates so that we generate what we need when we run the tests.
...
Fixes a bug where we had expiring certificates and JWTs in the repository and
old commits of the repository would stop passing integration tests and some
time in the future.
2023-11-01 12:54:48 -07:00
Aaron Son
bbe8070270
integration-tests/go-sql-server-driver: sql-server-cluster.yaml: Add a test for dolt_cluster_transition_to_standby when there are no dolt databases.
2023-10-18 14:40:24 -07:00
Aaron Son
0c72ec5205
go: sqle: cluster: Take mysql and dolt_branch_control replication state into account when performing a graceful transition to standby.
2023-10-17 15:01:46 -07:00
Aaron Son
17c451c12e
Merge remote-tracking branch 'origin/main' into aaron/undrop-cluster-tests
2023-10-06 17:20:22 -07:00
Aaron Son
dcc009509e
Merge remote-tracking branch 'origin/fulghum/undrop' into aaron/undrop-cluster-tests
2023-10-06 17:20:15 -07:00
Aaron Son
de3eed8b73
go: sqle: cluster: Make users and grants replication respect dolt_cluster_ack_writes_timeout_secs.
2023-10-06 15:46:42 -07:00
Aaron Son
6376098755
go: sqle: cluster: Make branch control replication respect dolt_cluster_ack_writes_timeout_secs
2023-10-06 14:33:33 -07:00
Aaron Son
b381903a2f
integration-tests/go-sql-server-driver: Add a test for undropping a cluster replicated database.
2023-10-04 10:14:20 -07:00
Aaron Son
7d412a14e8
go: sqle: cluster: Improvements for DROP DATABASE replication.
...
Fix a bug in session handling for the replication api endpoint which would
prevent a dropped database from being recreated on a replica.
Fix a race condition when a database is recreated after it is dropped. In that
case, we stop attempting to replicate the drop, so that it does not replicate
after the new database does.
2023-10-03 14:50:57 -07:00
Aaron Son
e4aa6ffad8
go/libraries/doltcore/sqle/cluster: First pass at replicating drop database.
2023-09-29 14:14:09 -07:00
Aaron Son
3b0ca8bb21
go/libraries/doltcore/sqle: cluster: When a database is dropped, shutdown the replication goroutines and stop returning its status in the dolt_cluster_status table.
2023-09-20 15:47:46 -07:00
Aaron Son
1002a5d542
go: sqle: cluster: First pass at replicating branch control permissions.
2023-09-14 13:37:35 -07:00
Aaron Son
8021bc5f02
sqle: cluster: Set the engine to read-only when a replica is in standby mode. Set it back to read-write when it becomes primary.
...
This prevents standby replicas from running some DDL which they were previously
erroneously allowed to run, including CREATE USER, GRANT, CREATE DATABASE and
DROP DATABASE.
2023-09-01 10:47:23 -07:00
Aaron Son
48cf308d05
Merge pull request #6454 from dolthub/aaron/cluster-replication-users-and-grants
...
go/libraries/doltcore/sqle/cluster: Add replication of user and grant changes from primary to standby replicas.
2023-08-22 13:28:35 -07:00
Aaron Son
6d7c73575d
dolt sql-server: Add a system_variables: key to config.yaml, which allows setting global system variables.
...
For example, this can be used to set `secure_file_priv` when the server starts
up. That variable is non-dynamic, so it cannot be set with `SET @@GLOBAL...`
2023-08-15 15:53:18 -07:00
Aaron Son
08f91f74a0
go/libraries/doltcore/sqle/cluster: Add replication of user and grant changes from primary to standby replicas.
2023-08-04 11:33:57 -07:00
Aaron Son
c0b0cc42d1
dolt clone: Fix dolt clone run against a sql-server where the database has been GCd.
...
A long-standing bug in the remotesapi which the sql-server exposes could cause
a `dolt clone` to fail when running against a database which had been garbage
collected. This change fixes the bug in the server. It also patches the client
behavior so that it will tolerate responses from older versions of dolt.
2023-06-27 16:41:22 -07:00
Aaron Son
6314e27de9
Merge pull request #6204 from dolthub/aaron/cluster-assume-role-standby-changes
...
sqle: cluster: Add dolt_cluster_transition_to_standby stored procedure.
2023-06-22 14:03:13 -07:00
Aaron Son
155884711e
sqle: cluster: dolt_cluster_transition_to_standby: Add logic to respect and enforce minCaughtUpReplicas.
2023-06-21 16:29:45 -07:00
Aaron Son
0a7cd7e033
sqle: cluster: dolt_cluster_transition_to_standby: Register the implementation (without transition transition thresholds) and test it.
2023-06-21 16:03:59 -07:00
Zach Musgrave
0b52f6c424
Revert "Revert "Merge pull request #5968 from dolthub/zachmu/tx-6""
...
This reverts commit bb03b8cb25 .
2023-06-08 11:09:54 -07:00
Zach Musgrave
bb03b8cb25
Revert "Merge pull request #5968 from dolthub/zachmu/tx-6"
...
This reverts commit 51c2129e51 , reversing
changes made to 9692f6ef92 .
2023-06-07 17:27:06 -07:00
Zach Musgrave
e672c304ab
Merge main
2023-06-06 15:17:07 -07:00
Taylor Bantle
ea2e87eac8
Fix go-sql-server-driver tests
2023-06-05 13:39:58 -07:00
Taylor Bantle
ed8f23481c
Integration tests for load data ignore/replace
2023-06-05 13:23:35 -07:00
Zach Musgrave
9b2cd87c57
Added a README
2023-05-22 13:49:32 -07:00
Aaron Son
6ea915ca4d
Merge remote-tracking branch 'origin/main' into aaron/block-on-cluster-replication
2023-05-16 16:57:09 -07:00
Aaron Son
6ccae75a8d
integration-tests/go-sql-server-driver: Add TestCluster/last_updated_heartbeats test which asserts that last_updated does not grow while there are no writes to replicate.
2023-05-16 14:21:41 -07:00
Aaron Son
535e59141d
integration-tests/go-sql-server-driver: Cluster, dolt_cluster_ack_writes_timeout_secs, add a failing test to assert that dolt_branch modifications are waited on.
2023-05-15 14:00:04 -07:00
Aaron Son
dfdb4a4b2a
go: sqle: cluster: Implement a first pass at dolt_cluster_ack_writes_timeout_secs.
...
Setting this system variable to a non-zero value on a primary replica in a
sql-server cluster will cause dolt to block a SQL client performing a commit
until that client's commit is fully replicated to the replicas.
If there is a timeout, currently a warning is logged in the logs.
2023-05-11 15:50:43 -07:00
Aaron Son
2674c3cf2a
sql-server: Allow dolt_log_level system variable to receive writes and dynamically update the log level.
2023-05-10 14:46:45 -07:00
Aaron Son
663d2e3181
sql-server: Expose the current server log level through the dolt_log_level system variable.
2023-05-10 14:25:41 -07:00
Aaron Son
6e6ed1b77b
Fix result ordering in integration test.
2023-05-09 14:08:19 -07:00
Aaron Son
acf99f1edf
go: sqle: dolt_gc.go: Disable CALL dolt_gc() on a standby replica, where it is not currently safe. Shallow GC is still available.
2023-05-09 13:41:16 -07:00
Zach Musgrave
75b1395510
New integration test ala aaron
2023-05-05 07:42:32 -07:00
Aaron Son
1d0a6001ac
go/libraries/doltcore/sqle: database_provider.go: When cloning a remote into a sql-server, always run the InitDatabaseHook on it.
...
Failing to run the hook means that the cloned database is not appropriately
configured for replication, for example.
Fixes : #5850
2023-05-01 12:42:02 -07:00
Aaron Son
d1bb4f6807
integration-tests/go-sql-server-driver: Add a test which fails when a non-chunk journal repo first switches to chunk journal and runs call dolt_gc.
2023-03-24 09:43:54 -07:00
Aaron Son
f7c69bf881
Merge pull request #4749 from dolthub/aaron/cluster-jwks-auth
...
go/libraries/doltcore/sqle/cluster: Add JWT authentication for peer communication to cluster replicas.
2022-11-15 12:21:55 -08:00
Aaron Son
6d7a569e61
integration-tests/go-sql-server-driver: Use 385{1,2} instead of 5005{1,2} for cluster remotesapi ports.
2022-11-10 16:34:49 -08:00
Aaron Son
b22fbf11f2
go/libraries/doltcore/sqle/cluster: Add JWT authentication for peer communication to cluster replicas.
...
A remotesapi server running on a cluster replica publishes a JWKS.
Every outbound GRPC call the cluster replica makes includes a JWT signed with a
private key.
remotesapi servers running on cluster replicas require and validate incoming
JWTs for cluster traffic. The set of valid signing keys is taken from the
JWKSes which are published at /.well-known/jwks.json on the standby replica
hosts.
It is possible to configure tls_ca on cluster remotesapi to configure the set
of trusted roots for outbound TLS connections. Because the JWKSes are served
over the same connection, and becuase signed JWTs are not replay resistent, TLS
is recommended for all deployment topologies.
2022-11-10 09:26:38 -08:00
Aaron Son
57523a9323
go/libraries/doltcore/sqle/cluster: Add the ability to generate a keypair, serve a JWKS, and sign outbound RPCs with a JWT.
2022-11-02 09:54:09 -07:00
Aaron Son
363248538e
Merge pull request #4659 from dolthub/aaron/remotesrv-tls-san
...
go/libraries/doltcore/sqle/cluster: Add the ability to configure SAN assertions on URIs and DNS names in the server certificate when configuring TLS.
2022-10-28 16:29:39 -07:00
Aaron Son
d85ad51b4b
Merge remote-tracking branch 'origin/main' into aaron/bats-move-sql-server-temporary-table-test
2022-10-28 13:33:00 -07:00
Aaron Son
248be8b21a
go/libraries/doltcore/sqle/cluster: Add the ability to configure SAN assertions on URIs and DNS names in the server certificate when configuring TLS.
2022-10-28 10:31:14 -07:00
Aaron Son
4d93b69ef3
integration-tests/bats/sql-server.bats: Move the temporary table session specific test to go-sql-server-driver.
2022-10-27 09:43:29 -07:00
Aaron Son
27a528e498
go/libraries/doltcore/sqle/cluster: Add support for configured tls_{cert,key,ca} on the cluster.remotesapi.
...
For now, this is server-side TLS, not mTLS.
If a tls_ca is configured, the certificates in that file are PEM encoded. They
are the only trusted roots for server certificate verification on both gRPC and
HTTP connections. If tls_ca is set, no server name verification is done for
now.
2022-10-26 16:13:51 -07:00
Aaron Son
995e3818cd
go: sqle: remotesrv: Successfully replicate CREATE DATABASE commands by instantiating new databases on the standby on demand.
2022-10-05 12:37:39 -07:00
Aaron Son
cc82355269
integration-tests/go-sql-server-driver: Fix JSON test for LD_1.
2022-10-04 11:49:11 -07:00