Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
2b62a33
Adding super read only in cnf file
rsajwani Nov 14, 2022
1576a33
add new init sql file for unit test
rsajwani Nov 15, 2022
7ba072e
enable super-readonly by default
rsajwani Nov 22, 2022
0b7fa6a
Fixing some arrangement for super-read-only
rsajwani Nov 24, 2022
50e7907
Fix end to end tests
rsajwani Dec 1, 2022
d6b13f1
fix rpc_replication issue
rsajwani Dec 6, 2022
9fef193
Fixing backup tests
rsajwani Dec 7, 2022
8ff1c42
fixing error with spacing in init sql file
rsajwani Dec 9, 2022
a3b1ffa
vtgate end to end fixes
rsajwani Dec 10, 2022
e5c772a
some more test fixes
rsajwani Dec 10, 2022
093e6cc
fixing flag tests and more
rsajwani Dec 12, 2022
4c99a57
fixing schema sql
rsajwani Dec 14, 2022
a64fd4d
fixing unit tests
rsajwani Dec 16, 2022
80879a2
fixing vttest server test cases
rsajwani Dec 17, 2022
30aa865
fixing more downgrad upgrade test
rsajwani Dec 21, 2022
5c7eb2e
fixing reparent upgrade downgrade test
rsajwani Dec 22, 2022
ee952a4
Bug fix for replication position
rsajwani Jan 19, 2023
881f50b
Fixing vtexplain tests
rsajwani Jan 19, 2023
a8b230a
Fixing mariadb initialization
rsajwani Jan 23, 2023
605a308
fixing upgrade downgrade e2e test
rsajwani Jan 23, 2023
3bedb2b
Fixing assignment of init sql db file
rsajwani Jan 24, 2023
1256c71
code clean up
rsajwani Jan 24, 2023
211253e
Fixing backup test
rsajwani Jan 24, 2023
c025af6
adding super read only api for sql demon
rsajwani Jan 25, 2023
32789e6
converting read-only calls to super-read-only calls
rsajwani Jan 25, 2023
c857d25
restructure vtexplain code to be more generic
rsajwani Jan 26, 2023
c263a57
forgot to make proto vtadmin
rsajwani Jan 26, 2023
7f5d871
Code review part-1
rsajwani Jan 28, 2023
3d7bf35
remove code for redolog in test
rsajwani Jan 28, 2023
dca3838
fix ensureDB test
rsajwani Jan 29, 2023
7d43d0b
code review part-2
rsajwani Jan 30, 2023
cfa97fe
Remove setSuperReadOnly checks
rsajwani Jan 30, 2023
fad2b7d
code review part-3
rsajwani Jan 30, 2023
473fe4a
Try restoring without super_read_only
rsajwani Jan 31, 2023
0f4b189
test: simplify vtorc test to not require turning off super-read-only
GuptaManan100 Jan 31, 2023
fe21638
code review part-4
rsajwani Feb 1, 2023
62a4a22
Fixing typo
rsajwani Feb 1, 2023
9330333
test: fix vtorc test
GuptaManan100 Feb 2, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions .github/workflows/upgrade_downgrade_test_backups_e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,10 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vttablet
rm -f $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vttablet + mysqlctl + mysqlctld needs to be always at the same version during upgrades and downgrades. I am taking this assumption after talking to different folks and it look logical to me as well.

cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vttablet --version

# Run test with VTTablet at version N-1 and VTBackup at version N
Expand All @@ -181,9 +183,11 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vtbackup $PWD/bin/vttablet
rm -f $PWD/bin/vtbackup $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-current/bin/vtbackup $PWD/bin/vtbackup
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vtbackup --version
vttablet --version

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,10 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vttablet
rm -f $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vttablet --version

# Run test with VTTablet at version N+1 and VTBackup at version N
Expand All @@ -184,9 +186,11 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vtbackup $PWD/bin/vttablet
cp /tmp/vitess-build-current/bin/vtbackup $PWD/bin/vtbackup
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
rm -f $PWD/bin/vtbackup $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-other/bin/vtbackup $PWD/bin/vtbackup
cp /tmp/vitess-build-current/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-current/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-current/bin/mysqlctld $PWD/bin/mysqlctld
vtbackup --version
vttablet --version

Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/upgrade_downgrade_test_backups_manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -234,8 +234,10 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vttablet
rm -f $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vttablet --version

# Starting the tablets again, they will automatically start restoring the last backup.
Expand Down Expand Up @@ -290,8 +292,10 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vttablet
rm -f $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-current/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-current/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-current/bin/mysqlctld $PWD/bin/mysqlctld
vttablet --version

# Starting the tablets again and restoring the previous backup.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,10 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vttablet
rm -f $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vttablet --version

# Starting the tablets again, they will automatically start restoring the last backup.
Expand Down Expand Up @@ -293,8 +295,10 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vttablet
rm -f $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-current/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-current/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-current/bin/mysqlctld $PWD/bin/mysqlctld
vttablet --version

# Starting the tablets again and restoring the next backup.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,9 +209,11 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vtgate $PWD/bin/vttablet
rm -f $PWD/bin/vtgate $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-current/bin/vtgate $PWD/bin/vtgate
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vtgate --version
vttablet --version

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,9 +212,11 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vtgate $PWD/bin/vttablet
rm -f $PWD/bin/vtgate $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-current/bin/vtgate $PWD/bin/vtgate
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vtgate --version
vttablet --version

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,9 +209,11 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vtgate $PWD/bin/vttablet
rm -f $PWD/bin/vtgate $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-current/bin/vtgate $PWD/bin/vtgate
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vtgate --version
vttablet --version

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,9 +212,11 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vtgate $PWD/bin/vttablet
rm -f $PWD/bin/vtgate $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-current/bin/vtgate $PWD/bin/vtgate
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vtgate --version
vttablet --version

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,10 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vttablet
rm -f $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vtctl --version
vttablet --version

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,10 @@ jobs:
run: |
source build.env

rm -f $PWD/bin/vttablet
rm -f $PWD/bin/vttablet $PWD/bin/mysqlctl $PWD/bin/mysqlctld
cp /tmp/vitess-build-other/bin/vttablet $PWD/bin/vttablet
cp /tmp/vitess-build-other/bin/mysqlctl $PWD/bin/mysqlctl
cp /tmp/vitess-build-other/bin/mysqlctld $PWD/bin/mysqlctld
vtctl --version
vttablet --version

Expand Down
12 changes: 12 additions & 0 deletions config/init_db.sql
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@
###############################################################################
# Equivalent of mysql_secure_installation
###############################################################################
# We need to ensure that super_read_only is disabled so that we can execute
# these commands. Note that disabling it does NOT disable read_only.
# We save the current value so that we only re-enable it at the end if it was
# enabled before.
SET @original_super_read_only=IF(@@global.super_read_only=1, 'ON', 'OFF');
SET GLOBAL super_read_only='OFF';

# Changes during the init db should not make it to the binlog.
# They could potentially create errant transactions on replicas.
Expand Down Expand Up @@ -77,3 +83,9 @@ FLUSH PRIVILEGES;

RESET SLAVE ALL;
RESET MASTER;

# custom sql is used to add custom scripts like creating users/passwords. We use it in our tests
# add custom sql here

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instead of adding this, can't we just look for the line in the file that sets the readonly and add our custom commands above that?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought that would be more risky ... we don't know how would it react if client provide their own int_db.sql and it has some statements which does turns out true for our condition of readonly... Hence I thought this will be much cleaner approach...


# We need to set super_read_only back to what it was before
SET GLOBAL super_read_only=IFNULL(@original_super_read_only, 'OFF');
91 changes: 91 additions & 0 deletions config/init_testserver_db.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# This file is for testing purpose only.
# This file is executed immediately after mysql_install_db, to initialize a fresh data directory.
# It is equivalent of init_db.sql. Given init_db.sql is for mysql which has super_read_only
# related stuff therefore for testing purpose we avoid setting `super_read_only` during initialization.

###############################################################################
# WARNING: Any change to init_db.sql should gets reflected in this file as well.
###############################################################################

###############################################################################
# WARNING: This sql is *NOT* safe for production use,
# as it contains default well-known users and passwords.
# Care should be taken to change these users and passwords
# for production.
###############################################################################

###############################################################################
# Equivalent of mysql_secure_installation
###############################################################################
# We need to ensure that read_only is disabled so that we can execute
# these commands.
SET GLOBAL read_only='OFF';

# Changes during the init db should not make it to the binlog.
# They could potentially create errant transactions on replicas.
SET sql_log_bin = 0;
# Remove anonymous users.
DELETE FROM mysql.user WHERE User = '';

# Disable remote root access (only allow UNIX socket).
DELETE FROM mysql.user WHERE User = 'root' AND Host != 'localhost';

# Remove test database.
DROP DATABASE IF EXISTS test;

###############################################################################
# Vitess defaults
###############################################################################

# Admin user with all privileges.
CREATE USER 'vt_dba'@'localhost';
GRANT ALL ON *.* TO 'vt_dba'@'localhost';
GRANT GRANT OPTION ON *.* TO 'vt_dba'@'localhost';

# User for app traffic, with global read-write access.
CREATE USER 'vt_app'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE,
REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, REPLICATION CLIENT, CREATE VIEW,
SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER
ON *.* TO 'vt_app'@'localhost';

# User for app debug traffic, with global read access.
CREATE USER 'vt_appdebug'@'localhost';
GRANT SELECT, SHOW DATABASES, PROCESS ON *.* TO 'vt_appdebug'@'localhost';

# User for administrative operations that need to be executed as non-SUPER.
# Same permissions as vt_app here.
CREATE USER 'vt_allprivs'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE,
REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW,
SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER
ON *.* TO 'vt_allprivs'@'localhost';

# User for slave replication connections.
CREATE USER 'vt_repl'@'%';
GRANT REPLICATION SLAVE ON *.* TO 'vt_repl'@'%';

# User for Vitess VReplication (base vstreamers and vplayer).
CREATE USER 'vt_filtered'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE,
REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW,
SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER
ON *.* TO 'vt_filtered'@'localhost';

# User for general MySQL monitoring.
CREATE USER 'vt_monitoring'@'localhost';
GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD
ON *.* TO 'vt_monitoring'@'localhost';
GRANT SELECT, UPDATE, DELETE, DROP
ON performance_schema.* TO 'vt_monitoring'@'localhost';

FLUSH PRIVILEGES;

RESET SLAVE ALL;
RESET MASTER;

# custom sql is used to add custom scripts like creating users/passwords. We use it in our tests
# add custom sql here
4 changes: 4 additions & 0 deletions config/mycnf/mysql57.cnf
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,7 @@ plugin-load = rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisy
rpl_semi_sync_master_timeout = 1000000000000000000
rpl_semi_sync_master_wait_no_slave = 1

# In order to protect against any errand GTIDs we will start the mysql instance
# in super-read-only mode.
super-read-only

4 changes: 4 additions & 0 deletions config/mycnf/mysql80.cnf
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,7 @@ plugin-load = rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisy
loose_rpl_semi_sync_master_timeout = 1000000000000000000
loose_rpl_semi_sync_master_wait_no_slave = 1

# In order to protect against any errand GTIDs we will start the mysql instance
# in super-read-only mode.
super-read-only

1 change: 1 addition & 0 deletions config/mycnf/test-suite.cnf
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ sql_mode = STRICT_TRANS_TABLES

# set a short heartbeat interval in order to detect failures quickly
slave_net_timeout = 4
super-read-only = false

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change can have wide impacts. IMO, we should test it in as many ways as possible. i.e. we should use super-read-only in all of the tests, if possible.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

test-suite is used only in vttestserver. VtTestserver uses vtcombo which has one sql instance for all vttablet. We cannot turn 'on/'off' super-read-only because it will make vtcombo confuse due to one instance of mysql for all vttablets.

Copy link
Author

@rsajwani rsajwani Jan 28, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we using vttestserver in our test/e2e , i don't see instances where we are...

16 changes: 16 additions & 0 deletions go/cmd/vtbackup/vtbackup.go
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,7 @@ func takeBackup(ctx context.Context, topoServer *topo.Server, backupStorage back
}
// In initial_backup mode, just take a backup of this empty database.
if initialBackup {
log.Infof("Inside initialBackup creating initial binlog entry.")
// Take a backup of this empty DB without restoring anything.
// First, initialize it the way InitShardPrimary would, so this backup
// produces a result that can be used to skip InitShardPrimary entirely.
Expand All @@ -302,6 +303,19 @@ func takeBackup(ctx context.Context, topoServer *topo.Server, backupStorage back
if err := mysqld.ResetReplication(ctx); err != nil {
return fmt.Errorf("can't reset replication: %v", err)
}
// We need to switch off super-read-only before we create database.
resetFunc, err := mysqld.SetSuperReadOnly(false)
if err != nil {
return fmt.Errorf("can't turn-off super-read-only during backup: %v", err)
}
if resetFunc != nil {
defer func() {
err := resetFunc()
if err != nil {
log.Info("not able to set super_read_only to its original value during backup")
}
}()
}
cmd := mysqlctl.GenerateInitialBinlogEntry()
if err := mysqld.ExecuteSuperQueryList(ctx, []string{cmd}); err != nil {
return err
Expand Down Expand Up @@ -390,6 +404,8 @@ func takeBackup(ctx context.Context, topoServer *topo.Server, backupStorage back
return err
}

log.Infof("takeBackup: primary position is: %s", primaryPos.String())

// Remember the time when we fetched the primary position, not when we caught
// up to it, so the timestamp on our backup is honest (assuming we make it
// to the goal position).
Expand Down
2 changes: 1 addition & 1 deletion go/flags/endtoend/vttablet.txt
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ Usage of vttablet:
--tx_throttler_config string The configuration of the transaction throttler as a text formatted throttlerdata.Configuration protocol buffer message (default "target_replication_lag_sec: 2\nmax_replication_lag_sec: 10\ninitial_rate: 100\nmax_increase: 1\nemergency_decrease: 0.5\nmin_duration_between_increases_sec: 40\nmax_duration_between_increases_sec: 62\nmin_duration_between_decreases_sec: 20\nspread_backlog_across_sec: 20\nage_bad_rate_after_sec: 180\nbad_rate_increase: 0.1\nmax_rate_approach_threshold: 0.9\n")
--tx_throttler_healthcheck_cells strings A comma-separated list of cells. Only tabletservers running in these cells will be monitored for replication lag by the transaction throttler.
--unhealthy_threshold duration replication lag after which a replica is considered unhealthy (default 2h0m0s)
--use_super_read_only Set super_read_only flag when performing planned failover.
--use_super_read_only Set super_read_only flag when performing planned failover. (default true)
--v Level log level for V logs
-v, --version print binary version
--vmodule moduleSpec comma-separated list of pattern=N settings for file-filtered logging
Expand Down
2 changes: 1 addition & 1 deletion go/mysql/collations/integration/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ func verifyWeightString(t *testing.T, local collations.Collation, remote *remote
}

func exec(t *testing.T, conn *mysql.Conn, query string) *sqltypes.Result {
res, err := conn.ExecuteFetch(query, -1, true)
res, err := conn.ExecuteFetchWithSuperReadOnlyHandling(query, -1, true)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need super readonly handling here: does the test run DDLs?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah these test does not have vttablets. They just create mysql instance and run test against them...

require.NoError(t, err, "failed to execute %q: %v", query, err)

return res
Expand Down
Loading