diff --git a/tools/deploy/mysql_test/test_suite/trx/t/tx_free_route.test b/tools/deploy/mysql_test/test_suite/trx/t/tx_free_route.test index eb1ac80e6..31952beff 100644 --- a/tools/deploy/mysql_test/test_suite/trx/t/tx_free_route.test +++ b/tools/deploy/mysql_test/test_suite/trx/t/tx_free_route.test @@ -6,12 +6,18 @@ connect (sys,$OBMYSQL_MS0,root,"",oceanbase,$OBMYSQL_PORT); connect (conn0,$OBMYSQL_MS0,admin@mysql,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connect (conn1,$OBMYSQL_MS0,admin@mysql,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection sys; + +# change tenant primary zone to RANDOM let $saved_primary_zone=`select primary_zone from oceanbase.__all_tenant where tenant_name = 'mysql'`; --echo change mysql tenant primary_zone from $saved_primary_zone to RANDOM alter tenant mysql set primary_zone = 'RANDOM'; + let $tenant_id=`select tenant_id from oceanbase.__all_tenant where tenant_name = 'mysql'`; + +# check tenant has multiple ls let $break_loop=0; let $i=0; +let $fail = 0; while ($break_loop == 0) { --inc $i @@ -20,10 +26,15 @@ while ($break_loop == 0) --inc $break_loop } if ($i >= 300) { + --inc $fail --inc $break_loop } --sleep 0.2 } +if ($fail > 0) { + --echo "tenant normal ls not distributed to multiple server" + eval select * from oceanbase.__all_virtual_ls where tenant_id = $tenant_id; +} connection conn0; @@ -41,23 +52,41 @@ commit; --enable_result_log --enable_query_log +# check tablet of target table distributed to multiple ls let $table_id=`select table_id from oceanbase.__all_virtual_table where table_name = 't' and tenant_id = $tenant_id`; -let $ls_count=`select count(distinct ls_id) from oceanbase.__all_tablet_to_ls where table_id = $table_id`; -if ($ls_count <= 1) { ---echo "error, table should distributed to all ls" -eval select * from oceanbase.__all_tablet_to_ls where table_id = $table_id; -select * from oceanbase.__all_ls; +let $break_loop=0; +let $i=0; +let $fail=0; +while ($break_loop == 0) +{ + --inc $i + let $ls_count=`select count(distinct ls_id) from oceanbase.__all_tablet_to_ls where table_id = $table_id`; + if ($ls_cnt > 1) { + --inc $break_loop + } + if ($i >= 300) { + --inc $fail + --inc $break_loop + } + --sleep 0.2 } -if $($ls_count > 1) { + +if ($fail > 0) { + --echo "error, table should distributed to all ls" + eval select * from oceanbase.__all_tablet_to_ls where table_id = $table_id; + select * from oceanbase.__all_ls; +} + +# check ls leader distributed to multiple server let $check_ts=`select now()`; let $svr_cnt=`select count(distinct svr_ip,svr_port) from oceanbase.__all_virtual_ls_meta_table where role = 1 and ls_id in (select distinct ls_id from oceanbase.__all_tablet_to_ls where table_id = $table_id)`; if ($svr_cnt <= 1) { ---echo "ls leader not distributed to all server, check_ts=$check_ts, table_id=$table_id, ls_count=$ls_count" -eval select * from oceanbase.__all_tablet_to_ls where table_id = $table_id; -select * from oceanbase.__all_virtual_ls_meta_table where role = 1 order by ls_id; -select * from oceanbase.__all_ls; -} + --echo "ls leader not distributed to all server, check_ts=$check_ts, table_id=$table_id, ls_count=$ls_count" + eval select * from oceanbase.__all_tablet_to_ls where table_id = $table_id; + select * from oceanbase.__all_virtual_ls_meta_table where role = 1 order by ls_id; + select * from oceanbase.__all_ls; } + --echo "-------------- 1 - basic in txn free route -----------------" #-------------------------------------------------------------------------- # Server1 Server2