@@ -479,7 +479,9 @@ def to_int(value):
479479 )
480480 assert r_cache_count_2 == r_cache_count
481481
482- assert node .query ("select current_size from system.filesystem_cache_settings where cache_name = 'force_cache_on_merges'" ) == node .query ("select sum(downloaded_size) from system.filesystem_cache" )
482+ assert node .query (
483+ "select current_size from system.filesystem_cache_settings where cache_name = 'force_cache_on_merges'"
484+ ) == node .query ("select sum(downloaded_size) from system.filesystem_cache" )
483485
484486 node .query ("SYSTEM DROP FILESYSTEM CACHE" )
485487 node .query ("OPTIMIZE TABLE test FINAL" )
@@ -644,6 +646,7 @@ def test_keep_up_size_ratio(cluster):
644646 time .sleep (1 )
645647 assert elements <= expected
646648
649+
647650cache_dynamic_resize_config = """
648651<clickhouse>
649652 <storage_configuration>
@@ -661,6 +664,16 @@ def test_keep_up_size_ratio(cluster):
661664 <boundary_alignment>10</boundary_alignment>
662665 <path>./cache_dynamic_reload/</path>
663666 </cache_dynamic_resize>
667+ <cache_dynamic_resize_disabled>
668+ <type>cache</type>
669+ <disk>hdd_blob</disk>
670+ <max_size>{}</max_size>
671+ <max_elements>{}</max_elements>
672+ <max_file_segment_size>10</max_file_segment_size>
673+ <boundary_alignment>10</boundary_alignment>
674+ <allow_dynamic_cache_resize>0</allow_dynamic_cache_resize>
675+ <path>./cache_dynamic_reload_disabled/</path>
676+ </cache_dynamic_resize_disabled>
664677 </disks>
665678 </storage_configuration>
666679 <filesystem_cache_log>
@@ -670,6 +683,7 @@ def test_keep_up_size_ratio(cluster):
670683</clickhouse>
671684"""
672685
686+
673687def test_dynamic_resize (cluster ):
674688 node = cluster .instances ["cache_dynamic_resize" ]
675689 max_elements = 20
@@ -692,25 +706,32 @@ def test_dynamic_resize(cluster):
692706 )
693707
694708 def get_downloaded_size ():
695- return int (node .query (
696- f"SELECT sum(downloaded_size) FROM system.filesystem_cache WHERE cache_name = '{ cache_name } '"
697- ))
709+ return int (
710+ node .query (
711+ f"SELECT sum(downloaded_size) FROM system.filesystem_cache WHERE cache_name = '{ cache_name } '"
712+ )
713+ )
698714
699715 def get_queue_size ():
700- return int (node .query (
701- f"SELECT current_size FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
702- ))
716+ return int (
717+ node .query (
718+ f"SELECT current_size FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
719+ )
720+ )
703721
704722 def get_downloaded_elements ():
705- return int (node .query (
706- f"SELECT count() FROM system.filesystem_cache WHERE cache_name = '{ cache_name } '"
707- ))
723+ return int (
724+ node .query (
725+ f"SELECT count() FROM system.filesystem_cache WHERE cache_name = '{ cache_name } '"
726+ )
727+ )
708728
709729 def get_queue_elements ():
710- return int (node .query (
711- f"SELECT current_elements_num FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
712- ))
713-
730+ return int (
731+ node .query (
732+ f"SELECT current_elements_num FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
733+ )
734+ )
714735
715736 size = get_downloaded_size ()
716737 assert size > 100
@@ -720,9 +741,11 @@ def get_queue_elements():
720741 assert elements > 10
721742 assert elements == get_queue_elements ()
722743
723- default_config = cache_dynamic_resize_config .format (100000 , 100 )
724- new_config = cache_dynamic_resize_config .format (100000 , 10 )
725- node .replace_config ("/etc/clickhouse-server/config.d/cache_dynamic_resize.xml" , new_config )
744+ default_config = cache_dynamic_resize_config .format (100000 , 100 , 100000 , 100 )
745+ new_config = cache_dynamic_resize_config .format (100000 , 10 , 100000 , 100 )
746+ node .replace_config (
747+ "/etc/clickhouse-server/config.d/cache_dynamic_resize.xml" , new_config
748+ )
726749
727750 node .query ("SYSTEM RELOAD CONFIG" )
728751
@@ -731,43 +754,59 @@ def get_queue_elements():
731754
732755 node .query (f"SYSTEM ENABLE FAILPOINT file_cache_dynamic_resize_fail_to_evict" )
733756
734- new_config = cache_dynamic_resize_config .format (100000 , 5 )
735- node .replace_config ("/etc/clickhouse-server/config.d/cache_dynamic_resize.xml" , new_config )
757+ new_config = cache_dynamic_resize_config .format (100000 , 5 , 100000 , 100 )
758+ node .replace_config (
759+ "/etc/clickhouse-server/config.d/cache_dynamic_resize.xml" , new_config
760+ )
736761
737762 node .query ("SYSTEM RELOAD CONFIG" )
738763
739764 assert 10 == get_queue_elements ()
740765 assert 10 == get_downloaded_elements ()
741766
742- assert 100000 == int (node .query (
743- f"SELECT max_size FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
744- ))
745- assert 10 == int (node .query (
746- f"SELECT max_elements FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
747- ))
767+ assert 100000 == int (
768+ node .query (
769+ f"SELECT max_size FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
770+ )
771+ )
772+ assert 10 == int (
773+ node .query (
774+ f"SELECT max_elements FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
775+ )
776+ )
748777
749778 node .query (f"SYSTEM DISABLE FAILPOINT file_cache_dynamic_resize_fail_to_evict" )
750779 node .query ("SYSTEM RELOAD CONFIG" )
751780
752781 assert 5 == get_downloaded_elements ()
753782 assert 5 == get_queue_elements ()
754783
755- assert 100000 == int (node .query (
756- f"SELECT max_size FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
757- ))
758- assert 5 == int (node .query (
759- f"SELECT max_elements FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
760- ))
784+ assert 100000 == int (
785+ node .query (
786+ f"SELECT max_size FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
787+ )
788+ )
789+ assert 5 == int (
790+ node .query (
791+ f"SELECT max_elements FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
792+ )
793+ )
761794
762- node .replace_config ("/etc/clickhouse-server/config.d/cache_dynamic_resize.xml" , default_config )
795+ node .replace_config (
796+ "/etc/clickhouse-server/config.d/cache_dynamic_resize.xml" , default_config
797+ )
763798 node .query ("SYSTEM RELOAD CONFIG" )
764799
765- assert 100000 == int (node .query (
766- f"SELECT max_size FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
767- ))
768- assert 100 == int (node .query (
769- f"SELECT max_elements FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
770- ))
800+ assert 100000 == int (
801+ node .query (
802+ f"SELECT max_size FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
803+ )
804+ )
805+ assert 100 == int (
806+ node .query (
807+ f"SELECT max_elements FROM system.filesystem_cache_settings WHERE cache_name = '{ cache_name } '"
808+ )
809+ )
771810
772811
773812def test_filesystem_cache_log (cluster ):
@@ -799,7 +838,11 @@ def test_filesystem_cache_log(cluster):
799838 )
800839
801840 node .query ("SYSTEM FLUSH LOGS" )
802- assert 0 == int (node .query (f"SELECT count() FROM system.filesystem_cache_log WHERE query_id = '{ query_id } '" ))
841+ assert 0 == int (
842+ node .query (
843+ f"SELECT count() FROM system.filesystem_cache_log WHERE query_id = '{ query_id } '"
844+ )
845+ )
803846
804847 query_id = "system_filesystem_cache_log_2"
805848 node .query (
@@ -808,4 +851,69 @@ def test_filesystem_cache_log(cluster):
808851 )
809852
810853 node .query ("SYSTEM FLUSH LOGS" )
811- assert 0 < int (node .query (f"SELECT count() FROM system.filesystem_cache_log WHERE query_id = '{ query_id } '" ))
854+ assert 0 < int (
855+ node .query (
856+ f"SELECT count() FROM system.filesystem_cache_log WHERE query_id = '{ query_id } '"
857+ )
858+ )
859+
860+
861+ def test_dynamic_resize_disabled (cluster ):
862+ node = cluster .instances ["cache_dynamic_resize" ]
863+ max_elements = 20
864+ cache_name = "cache_dynamic_resize_disabled"
865+ node .query (
866+ f"""
867+ DROP TABLE IF EXISTS test;
868+ SYSTEM DROP FILESYSTEM CACHE;
869+ CREATE TABLE test (a String)
870+ ENGINE = MergeTree() ORDER BY tuple()
871+ SETTINGS disk = '{ cache_name } ', min_bytes_for_wide_part = 10485760;
872+ """
873+ )
874+
875+ node .query (
876+ """
877+ INSERT INTO test SELECT randomString(200);
878+ SELECT * FROM test;
879+ """
880+ )
881+
882+ def get_downloaded_size ():
883+ return int (
884+ node .query (
885+ f"SELECT sum(downloaded_size) FROM system.filesystem_cache WHERE cache_name = '{ cache_name } '"
886+ )
887+ )
888+
889+ def get_downloaded_elements ():
890+ return int (
891+ node .query (
892+ f"SELECT count() FROM system.filesystem_cache WHERE cache_name = '{ cache_name } '"
893+ )
894+ )
895+
896+ size = get_downloaded_size ()
897+ assert size > 100
898+
899+ elements = get_downloaded_elements ()
900+ assert elements > 10
901+
902+ default_config = cache_dynamic_resize_config .format (100000 , 100 , 100000 , 100 )
903+ new_config = cache_dynamic_resize_config .format (100000 , 100 , 100000 , 10 )
904+ node .replace_config (
905+ "/etc/clickhouse-server/config.d/cache_dynamic_resize.xml" , new_config
906+ )
907+
908+ node .query ("SYSTEM RELOAD CONFIG" )
909+
910+ assert size == get_downloaded_size ()
911+ assert elements == get_downloaded_elements ()
912+
913+ assert node .contains_in_log (
914+ f"FileCache({ cache_name } ): Filesystem cache size was modified, but dynamic cache resize is disabled"
915+ )
916+ # Return config back to initial state.
917+ node .replace_config (
918+ "/etc/clickhouse-server/config.d/cache_dynamic_resize.xml" , default_config
919+ )
0 commit comments