2022-03-31 18:16:51 +00:00
|
|
|
#!/usr/bin/env bash
|
2023-08-04 11:09:59 +00:00
|
|
|
# Tags: race, no-fasttest, no-parallel
|
2022-03-31 18:16:51 +00:00
|
|
|
|
|
|
|
# Test tries to reproduce a race between threads:
|
|
|
|
# - deletes user
|
|
|
|
# - creates user
|
|
|
|
# - uses it as session user
|
|
|
|
# - apply role to the user
|
|
|
|
#
|
|
|
|
# https://github.com/ClickHouse/ClickHouse/issues/35714
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
|
|
# shellcheck source=../shell_config.sh
|
|
|
|
. "$CURDIR"/../shell_config.sh
|
|
|
|
|
|
|
|
$CLICKHOUSE_CLIENT -nm -q "
|
|
|
|
DROP ROLE IF EXISTS test_role_02242;
|
|
|
|
CREATE ROLE test_role_02242;
|
|
|
|
"
|
|
|
|
|
|
|
|
function delete_user()
|
|
|
|
{
|
2023-07-11 12:25:30 +00:00
|
|
|
while true; do
|
|
|
|
$CLICKHOUSE_CLIENT -q "DROP USER IF EXISTS test_user_02242" ||:
|
|
|
|
sleep 0.$RANDOM;
|
|
|
|
done
|
2022-03-31 18:16:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function create_and_login_user()
|
|
|
|
{
|
2023-07-11 12:25:30 +00:00
|
|
|
while true; do
|
|
|
|
$CLICKHOUSE_CLIENT -q "CREATE USER IF NOT EXISTS test_user_02242" ||:
|
|
|
|
$CLICKHOUSE_CLIENT -u "test_user_02242" -q "SELECT COUNT(*) FROM system.session_log WHERE user == 'test_user_02242'" > /dev/null ||:
|
|
|
|
sleep 0.$RANDOM;
|
|
|
|
done
|
2022-03-31 18:16:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function set_role()
|
|
|
|
{
|
2023-07-11 12:25:30 +00:00
|
|
|
while true; do
|
|
|
|
$CLICKHOUSE_CLIENT -q "SET DEFAULT ROLE test_role_02242 TO test_user_02242" ||:
|
|
|
|
sleep 0.$RANDOM;
|
|
|
|
done
|
2022-03-31 18:16:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export -f delete_user
|
|
|
|
export -f create_and_login_user
|
|
|
|
export -f set_role
|
|
|
|
|
2022-04-27 12:35:58 +00:00
|
|
|
TIMEOUT=10
|
2022-03-31 18:16:51 +00:00
|
|
|
|
2023-07-11 12:25:30 +00:00
|
|
|
|
|
|
|
timeout $TIMEOUT bash -c create_and_login_user 2> /dev/null &
|
|
|
|
timeout $TIMEOUT bash -c delete_user 2> /dev/null &
|
|
|
|
timeout $TIMEOUT bash -c set_role 2> /dev/null &
|
2022-03-31 18:16:51 +00:00
|
|
|
|
|
|
|
wait
|
|
|
|
|
2022-05-17 20:53:17 +00:00
|
|
|
$CLICKHOUSE_CLIENT -q "DROP ROLE IF EXISTS test_role_02242"
|
|
|
|
$CLICKHOUSE_CLIENT -q "DROP USER IF EXISTS test_user_02242"
|