Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug Report: VDiff does not use any available cells by default #13972

Closed
mattlord opened this issue Sep 13, 2023 · 0 comments · Fixed by #13969
Closed

Bug Report: VDiff does not use any available cells by default #13972

mattlord opened this issue Sep 13, 2023 · 0 comments · Fixed by #13969

Comments

@mattlord
Copy link
Contributor

Overview of the Issue

The documented default value for the --source_cell and --target_cell flags is 'any available cell': https://vitess.io/docs/reference/vreplication/vdiff/#parameters

And you can see that in the help output as well:

❯ vtctlclient vdiff -- --help
W0913 13:58:48.039694   71302 log.go:39] Failed to read in config : Config File "vtconfig" Not Found in "[/Users/matt/git/vitess]". This is optional, and can be ignored if you are not using config files. For a detailed explanation, see https://github.com/vitessio/vitess/blob/main/doc/viper/viper.md#config-files.
Usage: vdiff [--source_cell=<cell>] [--target_cell=<cell>] [--tablet_types=in_order:RDONLY,REPLICA,PRIMARY] [--limit=<max rows to diff>] [--tables=<table list>] [--format=json] [--auto-retry] [--verbose] [--max_extra_rows_to_compare=1000] [--filtered_replication_wait_time=30s] [--debug_query] [--only_pks] [--wait] [--wait-update-interval=1m] <keyspace.workflow> [<action>] [<UUID>]

Perform a diff of all tables in the workflow

      --auto-retry                                Should this vdiff automatically retry and continue in case of recoverable errors (default true)
      --checksum                                  Use row-level checksums to compare, not yet implemented
      --debug_query                               Adds a mysql query to the report that can be used for further debugging
      --filtered_replication_wait_time duration   Specifies the maximum time to wait, in seconds, for filtered replication to catch up on primary migrations. The migration will be cancelled on a timeout. (default 30s)
      --format string                             Format of report (default "text")
      --limit int                                 Max rows to stop comparing after (default 9223372036854775807)
      --max_extra_rows_to_compare int             If there are collation differences between the source and target, you can have rows that are identical but simply returned in a different order from MySQL. We will do a second pass to compare the rows for any actual differences in this case and this flag allows you to control the resources used for this operation. (default 1000)
      --only_pks                                  When reporting missing rows, only show primary keys in the report.
      --sample_pct int                            How many rows to sample, not yet implemented (default 100)
      --source_cell string                        The source cell to compare from; default is any available cell
      --tables string                             Only run vdiff for these tables in the workflow
      --tablet_types string                       Tablet types for source (PRIMARY is always used on target) (default "in_order:RDONLY,REPLICA,PRIMARY")
      --target_cell string                        The target cell to compare with; default is any available cell
      --update-table-stats                        Update the table statistics, using ANALYZE TABLE, on each table involved in the VDiff during initialization. This will ensure that progress estimates are as accurate as possible -- but it does involve locks and can potentially impact query processing on the target keyspace.
      --v1                                        Use legacy VDiff v1
      --verbose                                   Show verbose vdiff output in summaries
      --wait                                      When creating or resuming a vdiff, wait for it to finish before exiting
      --wait-update-interval duration             When waiting on a vdiff to finish, check and display the current status this often (default 1m0s)

However, it does not actually use any available cell by default.

Reproduction Steps

git checkout main
make build

pushd ${VTROOT}/examples/local

source ../common/env.sh

./101_initial_cluster.sh

mysql < ../common/insert_commerce_data.sql

vtctldclient AddCellInfo --root /vitess/zone0 --server-address "${ETCD_SERVER}" zone0
vtctldclient AddCellInfo --root /vitess/zone2 --server-address "${ETCD_SERVER}" zone2

../common/scripts/vtorc-down.sh

for i in 200 201 202; do
        CELL=zone2 TABLET_UID=$i ../common/scripts/mysqlctl-up.sh
        CELL=zone2 KEYSPACE=customer TABLET_UID=$i ../common/scripts/vttablet-up.sh
done

vtctldclient InitShardPrimary --force customer/0 zone2-200

vtctldclient MoveTables --workflow commerce2customer --target-keyspace customer create --cells "zone1,zone2" --source-keyspace commerce --tables "customer,corder"

vtctlclient VDiff -- --format=json customer.commerce2customer

sleep 15

vtctlclient VDiff -- --format=json customer.commerce2customer show last | jq -r '.Progress'

grep -R "No healthy serving" ${VTDATAROOT}/tmp/*INFO*

./401_teardown.sh
popd

Binary Version

Version: 18.0.0-SNAPSHOT (Git revision 8377caa4466e50cf62daf7f955c7cb791dbc5eaf branch 'main') built on Wed Sep 13 15:08:24 EDT 2023 by matt@pslord.local using go1.21.1 darwin/arm64

Operating System and Environment details

N/A

Log Fragments

N/A
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

1 participant