2024-09-10 15:22:19 +00:00
|
|
|
from collections.abc import Iterable
|
2024-09-27 10:19:39 +00:00
|
|
|
|
2024-09-10 15:22:19 +00:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
from helpers.cluster import ClickHouseCluster, ClickHouseInstance
|
|
|
|
|
|
|
|
cluster = ClickHouseCluster(__file__)
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
|
|
def started_cluster() -> Iterable[ClickHouseCluster]:
|
|
|
|
try:
|
|
|
|
cluster.add_instance(
|
|
|
|
"node1",
|
|
|
|
main_configs=["configs/storage_conf.xml"],
|
|
|
|
with_minio=True,
|
|
|
|
with_zookeeper=True,
|
|
|
|
)
|
|
|
|
cluster.start()
|
|
|
|
|
|
|
|
yield cluster
|
|
|
|
finally:
|
|
|
|
cluster.shutdown()
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("storage_policy", ["s3", "encrypted"])
|
|
|
|
def test_unfreeze(storage_policy: str, started_cluster: ClickHouseCluster) -> None:
|
|
|
|
node1: ClickHouseInstance = started_cluster.instances["node1"]
|
|
|
|
node1.query(
|
|
|
|
f"""\
|
|
|
|
CREATE TABLE test1 (a Int)
|
2024-09-11 14:02:36 +00:00
|
|
|
ENGINE = ReplicatedMergeTree('/clickhouse-tables/test1', 'r1')
|
2024-09-10 15:22:19 +00:00
|
|
|
ORDER BY a
|
|
|
|
SETTINGS storage_policy = '{storage_policy}'
|
|
|
|
"""
|
|
|
|
)
|
|
|
|
|
|
|
|
node1.query(
|
|
|
|
"""\
|
|
|
|
INSERT INTO test1
|
|
|
|
SELECT *
|
|
|
|
FROM system.numbers
|
|
|
|
LIMIT 20
|
|
|
|
"""
|
|
|
|
)
|
|
|
|
|
|
|
|
node1.query("ALTER TABLE test1 FREEZE WITH NAME 'test'")
|
|
|
|
node1.query("SYSTEM UNFREEZE WITH NAME 'test'")
|
|
|
|
uuid = node1.query("SELECT uuid FROM system.tables WHERE name = 'test1'").strip()
|
|
|
|
# ensure that zero copy lock parent still exists
|
|
|
|
kazoo = started_cluster.get_kazoo_client("zoo1")
|
|
|
|
part_path = f"/clickhouse/zero_copy/zero_copy_s3/{uuid}/all_0_0_0/"
|
|
|
|
children: list[str] = kazoo.get_children(part_path)
|
|
|
|
assert len(children) == 1
|
|
|
|
part_name = children[0]
|
|
|
|
assert len(kazoo.get_children(part_path + part_name)) == 1
|
|
|
|
assert node1.query("SELECT count() FROM test1").strip() == "20"
|
|
|
|
node1.query("DROP TABLE test1")
|
2024-09-11 14:02:36 +00:00
|
|
|
node1.query("SYSTEM DROP REPLICA 'r1' FROM ZKPATH '/clickhouse-tables/test1'")
|