Skip to content

Commit 1b7dc9c

Browse files
Merge pull request ClickHouse#79633 from azat/tests/fix-filesystem-cache-tests
tests: fix flakiness of tests for system.filesystem_cache
2 parents 197719b + 2aeb3c5 commit 1b7dc9c

File tree

6 files changed

+53
-22
lines changed

6 files changed

+53
-22
lines changed

tests/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@ test_data
66

77
/queries/0_stateless/*.gen.sql
88
/queries/0_stateless/*.gen.reference
9+
10+
!*.lib

tests/docker_scripts/stateless_runner.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,10 @@ function prepare_stateful_data() {
243243
ENGINE = CollapsingMergeTree(Sign) PARTITION BY toYYYYMM(StartDate) ORDER BY (CounterID, StartDate, intHash32(UserID), VisitID)
244244
SAMPLE BY intHash32(UserID) SETTINGS index_granularity = 8192, storage_policy='s3_cache'"
245245

246+
# Avoid locking filesystem cache
247+
clickhouse-client --query "SYSTEM STOP MERGES test.hits"
248+
clickhouse-client --query "SYSTEM STOP MERGES test.visits"
249+
246250
clickhouse-client --max_execution_time 600 --max_memory_usage 25G --query "INSERT INTO test.hits SELECT * FROM datasets.hits_v1 SETTINGS enable_filesystem_cache_on_write_operations=0, max_insert_threads=16"
247251
clickhouse-client --max_execution_time 600 --max_memory_usage 25G --query "INSERT INTO test.visits SELECT * FROM datasets.visits_v1 SETTINGS enable_filesystem_cache_on_write_operations=0, max_insert_threads=16"
248252
clickhouse-client --query "DROP TABLE datasets.visits_v1 SYNC"
@@ -252,6 +256,8 @@ function prepare_stateful_data() {
252256
clickhouse-client --query "RENAME TABLE datasets.visits_v1 TO test.visits"
253257
fi
254258
clickhouse-client --query "CREATE TABLE test.hits_s3 (WatchID UInt64, JavaEnable UInt8, Title String, GoodEvent Int16, EventTime DateTime, EventDate Date, CounterID UInt32, ClientIP UInt32, ClientIP6 FixedString(16), RegionID UInt32, UserID UInt64, CounterClass Int8, OS UInt8, UserAgent UInt8, URL String, Referer String, URLDomain String, RefererDomain String, Refresh UInt8, IsRobot UInt8, RefererCategories Array(UInt16), URLCategories Array(UInt16), URLRegions Array(UInt32), RefererRegions Array(UInt32), ResolutionWidth UInt16, ResolutionHeight UInt16, ResolutionDepth UInt8, FlashMajor UInt8, FlashMinor UInt8, FlashMinor2 String, NetMajor UInt8, NetMinor UInt8, UserAgentMajor UInt16, UserAgentMinor FixedString(2), CookieEnable UInt8, JavascriptEnable UInt8, IsMobile UInt8, MobilePhone UInt8, MobilePhoneModel String, Params String, IPNetworkID UInt32, TraficSourceID Int8, SearchEngineID UInt16, SearchPhrase String, AdvEngineID UInt8, IsArtifical UInt8, WindowClientWidth UInt16, WindowClientHeight UInt16, ClientTimeZone Int16, ClientEventTime DateTime, SilverlightVersion1 UInt8, SilverlightVersion2 UInt8, SilverlightVersion3 UInt32, SilverlightVersion4 UInt16, PageCharset String, CodeVersion UInt32, IsLink UInt8, IsDownload UInt8, IsNotBounce UInt8, FUniqID UInt64, HID UInt32, IsOldCounter UInt8, IsEvent UInt8, IsParameter UInt8, DontCountHits UInt8, WithHash UInt8, HitColor FixedString(1), UTCEventTime DateTime, Age UInt8, Sex UInt8, Income UInt8, Interests UInt16, Robotness UInt8, GeneralInterests Array(UInt16), RemoteIP UInt32, RemoteIP6 FixedString(16), WindowName Int32, OpenerName Int32, HistoryLength Int16, BrowserLanguage FixedString(2), BrowserCountry FixedString(2), SocialNetwork String, SocialAction String, HTTPError UInt16, SendTiming Int32, DNSTiming Int32, ConnectTiming Int32, ResponseStartTiming Int32, ResponseEndTiming Int32, FetchTiming Int32, RedirectTiming Int32, DOMInteractiveTiming Int32, DOMContentLoadedTiming Int32, DOMCompleteTiming Int32, LoadEventStartTiming Int32, LoadEventEndTiming Int32, NSToDOMContentLoadedTiming Int32, FirstPaintTiming Int32, RedirectCount Int8, SocialSourceNetworkID UInt8, SocialSourcePage String, ParamPrice Int64, ParamOrderID String, ParamCurrency FixedString(3), ParamCurrencyID UInt16, GoalsReached Array(UInt32), OpenstatServiceName String, OpenstatCampaignID String, OpenstatAdID String, OpenstatSourceID String, UTMSource String, UTMMedium String, UTMCampaign String, UTMContent String, UTMTerm String, FromTag String, HasGCLID UInt8, RefererHash UInt64, URLHash UInt64, CLID UInt32, YCLID UInt64, ShareService String, ShareURL String, ShareTitle String, ParsedParams Nested(Key1 String, Key2 String, Key3 String, Key4 String, Key5 String, ValueDouble Float64), IslandID FixedString(16), RequestNum UInt32, RequestTry UInt8) ENGINE = MergeTree() PARTITION BY toYYYYMM(EventDate) ORDER BY (CounterID, EventDate, intHash32(UserID)) SAMPLE BY intHash32(UserID) SETTINGS index_granularity = 8192, storage_policy='s3_cache'"
259+
# Avoid locking filesystem cache
260+
clickhouse-client "SYSTEM STOP MERGES test.hits_s3"
255261
# AWS S3 is very inefficient, so increase memory even further:
256262
clickhouse-client --max_execution_time 600 --max_memory_usage 30G --max_memory_usage_for_user 30G --query "INSERT INTO test.hits_s3 SELECT * FROM test.hits SETTINGS enable_filesystem_cache_on_write_operations=0, max_insert_threads=16"
257263

tests/queries/0_stateless/02240_system_filesystem_cache_table.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
77
# shellcheck source=../shell_config.sh
88
. "$CUR_DIR"/../shell_config.sh
9+
# shellcheck source=./cache.lib
10+
. "$CUR_DIR"/cache.lib
911

1012
for STORAGE_POLICY in 's3_cache' 'local_cache' 'azure_cache'; do
1113
echo "Using storage policy: $STORAGE_POLICY"
12-
${CLICKHOUSE_CLIENT} --query "SYSTEM DROP FILESYSTEM CACHE"
14+
drop_filesystem_cache
1315
${CLICKHOUSE_CLIENT} --query "SYSTEM DROP MARK CACHE"
1416
${CLICKHOUSE_CLIENT} --query "SELECT count() FROM system.filesystem_cache"
1517

@@ -30,7 +32,7 @@ for STORAGE_POLICY in 's3_cache' 'local_cache' 'azure_cache'; do
3032
${CLICKHOUSE_CLIENT} --query "SELECT state, file_segment_range_begin, file_segment_range_end, size FROM system.filesystem_cache ORDER BY file_segment_range_begin, file_segment_range_end, size"
3133
${CLICKHOUSE_CLIENT} --query "SELECT uniqExact(key) FROM system.filesystem_cache";
3234

33-
${CLICKHOUSE_CLIENT} --query "SYSTEM DROP FILESYSTEM CACHE"
35+
drop_filesystem_cache
3436
echo 'Expect no cache'
3537
${CLICKHOUSE_CLIENT} --query "SELECT file_segment_range_begin, file_segment_range_end, size FROM system.filesystem_cache"
3638

@@ -40,7 +42,7 @@ for STORAGE_POLICY in 's3_cache' 'local_cache' 'azure_cache'; do
4042
${CLICKHOUSE_CLIENT} --query "SELECT state, file_segment_range_begin, file_segment_range_end, size FROM system.filesystem_cache ORDER BY file_segment_range_begin, file_segment_range_end, size"
4143
${CLICKHOUSE_CLIENT} --query "SELECT uniqExact(key) FROM system.filesystem_cache";
4244

43-
${CLICKHOUSE_CLIENT} --query "SYSTEM DROP FILESYSTEM CACHE"
45+
drop_filesystem_cache
4446
echo 'Expect no cache'
4547
${CLICKHOUSE_CLIENT} --query "SELECT file_segment_range_begin, file_segment_range_end, size FROM system.filesystem_cache"
4648

tests/queries/0_stateless/02241_filesystem_cache_on_write_operations.sh

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
88
# shellcheck source=../shell_config.sh
99
. "$CUR_DIR"/../shell_config.sh
10+
# shellcheck source=./cache.lib
11+
. "$CUR_DIR"/cache.lib
1012

1113
for STORAGE_POLICY in 's3_cache' 'local_cache' 'azure_cache'; do
1214
echo "Using storage policy: $STORAGE_POLICY"
@@ -15,7 +17,8 @@ for STORAGE_POLICY in 's3_cache' 'local_cache' 'azure_cache'; do
1517
$CLICKHOUSE_CLIENT --echo --query "CREATE TABLE test_02241 (key UInt32, value String) Engine=MergeTree() ORDER BY key SETTINGS storage_policy='$STORAGE_POLICY', min_bytes_for_wide_part = 10485760, compress_marks=false, compress_primary_key=false, min_bytes_for_full_part_storage=0, ratio_of_defaults_for_sparse_serialization = 1"
1618
$CLICKHOUSE_CLIENT --echo --query "SYSTEM STOP MERGES test_02241"
1719

18-
$CLICKHOUSE_CLIENT --echo --query "SYSTEM DROP FILESYSTEM CACHE"
20+
echo "SYSTEM DROP FILESYSTEM CACHE"
21+
drop_filesystem_cache
1922

2023
$CLICKHOUSE_CLIENT --echo --query "SELECT file_segment_range_begin, file_segment_range_end, size, state
2124
FROM
@@ -67,7 +70,8 @@ for STORAGE_POLICY in 's3_cache' 'local_cache' 'azure_cache'; do
6770

6871
$CLICKHOUSE_CLIENT --echo --query "SELECT count(), sum(size) size FROM system.filesystem_cache"
6972

70-
$CLICKHOUSE_CLIENT --echo --query "SYSTEM DROP FILESYSTEM CACHE"
73+
echo "SYSTEM DROP FILESYSTEM CACHE"
74+
drop_filesystem_cache
7175

7276
$CLICKHOUSE_CLIENT --echo --enable_filesystem_cache_on_write_operations=1 --query "INSERT INTO test_02241 SELECT number, toString(number) FROM numbers(100, 200)"
7377

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
#!/usr/bin/env bash
2-
# Tags: long, no-fasttest, no-parallel, no-object-storage, no-random-settings
2+
# Tags: long, no-fasttest, no-parallel, no-object-storage, no-random-settings, no-flaky-check
3+
# Tag no-flaky-check -- access to system.remote_data_path is too slow with thread fuzzer enabled
34

45
# set -x
56

67
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
78
# shellcheck source=../shell_config.sh
89
. "$CUR_DIR"/../shell_config.sh
10+
# shellcheck source=./cache.lib
11+
. "$CUR_DIR"/cache.lib
912

1013
for STORAGE_POLICY in 's3_cache' 'local_cache' 'azure_cache'; do
1114
echo "Using storage policy: $STORAGE_POLICY"
@@ -17,15 +20,15 @@ for STORAGE_POLICY in 's3_cache' 'local_cache' 'azure_cache'; do
1720
SETTINGS storage_policy='$STORAGE_POLICY', min_bytes_for_wide_part = 10485760"
1821

1922
$CLICKHOUSE_CLIENT --query "SYSTEM STOP MERGES test_02286"
20-
$CLICKHOUSE_CLIENT --query "SYSTEM DROP FILESYSTEM CACHE"
23+
drop_filesystem_cache
2124

2225
$CLICKHOUSE_CLIENT --query "SELECT count() FROM system.filesystem_cache"
2326
$CLICKHOUSE_CLIENT --enable_filesystem_cache_on_write_operations=0 --query "INSERT INTO test_02286 SELECT number, toString(number) FROM numbers(100)"
2427

2528
$CLICKHOUSE_CLIENT --query "SELECT * FROM test_02286 FORMAT Null"
2629
$CLICKHOUSE_CLIENT --query "SELECT count() FROM system.filesystem_cache"
2730

28-
$CLICKHOUSE_CLIENT --query "SYSTEM DROP FILESYSTEM CACHE"
31+
drop_filesystem_cache
2932
$CLICKHOUSE_CLIENT --query "SELECT count() FROM system.filesystem_cache"
3033

3134
$CLICKHOUSE_CLIENT --query "SELECT * FROM test_02286 FORMAT Null"
@@ -37,7 +40,6 @@ for STORAGE_POLICY in 's3_cache' 'local_cache' 'azure_cache'; do
3740

3841
$CLICKHOUSE_CLIENT --query "SELECT * FROM test_02286 FORMAT Null"
3942
$CLICKHOUSE_CLIENT --query "SELECT count() FROM system.filesystem_cache"
40-
4143
$CLICKHOUSE_CLIENT --query "SELECT count()
4244
FROM (
4345
SELECT
@@ -51,20 +53,26 @@ for STORAGE_POLICY in 's3_cache' 'local_cache' 'azure_cache'; do
5153
ON data_paths.cache_path = caches.cache_path"
5254

5355
$CLICKHOUSE_CLIENT --query "DROP TABLE test_02286 SYNC"
54-
$CLICKHOUSE_CLIENT --query "SELECT count() FROM system.filesystem_cache"
5556

56-
$CLICKHOUSE_CLIENT --query "SELECT cache_path FROM system.filesystem_cache"
57-
$CLICKHOUSE_CLIENT --query "SELECT cache_path, local_path
58-
FROM (
59-
SELECT
60-
arrayJoin(cache_paths) AS cache_path,
61-
local_path,
62-
remote_path
63-
FROM
64-
system.remote_data_paths
65-
) AS data_paths
66-
INNER JOIN system.filesystem_cache AS caches
67-
ON data_paths.cache_path = caches.cache_path"
57+
cache_entries=$($CLICKHOUSE_CLIENT --query "SELECT count() FROM system.filesystem_cache")
58+
echo "$cache_entries"
59+
# system.remote_data_paths is very slow for web disks, so let's avoid extra
60+
# call to it (we need it only for debugging of this tests, and only when we
61+
# have cache entries, which tests does not expect)
62+
if [ $cache_entries -gt 0 ]; then
63+
$CLICKHOUSE_CLIENT --query "SELECT cache_path FROM system.filesystem_cache"
64+
$CLICKHOUSE_CLIENT --query "SELECT cache_path, local_path
65+
FROM (
66+
SELECT
67+
arrayJoin(cache_paths) AS cache_path,
68+
local_path,
69+
remote_path
70+
FROM
71+
system.remote_data_paths
72+
) AS data_paths
73+
INNER JOIN system.filesystem_cache AS caches
74+
ON data_paths.cache_path = caches.cache_path "
75+
fi
6876

6977
$CLICKHOUSE_CLIENT --query "DROP TABLE IF EXISTS test_022862"
7078
done
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env bash
2+
3+
function drop_filesystem_cache()
4+
{
5+
while [ $($CLICKHOUSE_CURL -sS "$CLICKHOUSE_URL" -d "SELECT count() FROM system.filesystem_cache") -gt 0 ]; do
6+
$CLICKHOUSE_CURL -sS "$CLICKHOUSE_URL" -d "SYSTEM DROP FILESYSTEM CACHE"
7+
sleep 1
8+
done
9+
}

0 commit comments

Comments
 (0)