mirror of
https://github.com/qdrant/qdrant.git
synced 2026-08-06 10:00:58 -05:00
48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
import multiprocessing
|
|
import pathlib
|
|
|
|
from .fixtures import create_collection, drop_collection
|
|
from .utils import *
|
|
|
|
N_PEERS = 3
|
|
N_SHARDS = 1
|
|
N_REPLICA = 3
|
|
|
|
|
|
def delete_collection_in_loop(peer_url, collection_name):
|
|
while True:
|
|
# fails if the response is NOT successful
|
|
drop_collection(peer_url, collection_name)
|
|
|
|
|
|
# Triggers repeatedly at most 2 concurrent collection deletions
|
|
def run_delete_collection_in_background(peer_url, collection_name):
|
|
p1 = multiprocessing.Process(target=delete_collection_in_loop, args=(peer_url, collection_name))
|
|
p2 = multiprocessing.Process(target=delete_collection_in_loop, args=(peer_url, collection_name))
|
|
p1.start()
|
|
p2.start()
|
|
return [p1, p2]
|
|
|
|
|
|
def test_cluster_operation_coalescing(tmp_path: pathlib.Path):
|
|
assert_project_root()
|
|
|
|
peer_api_uris, peer_dirs, bootstrap_uri = start_cluster(tmp_path, N_PEERS)
|
|
|
|
create_collection(peer_api_uris[0], shard_number=N_SHARDS, replication_factor=N_REPLICA)
|
|
wait_collection_exists_and_active_on_all_peers(
|
|
collection_name="test_collection",
|
|
peer_api_uris=peer_api_uris
|
|
)
|
|
|
|
[delete_p1, delete_p2] = run_delete_collection_in_background(peer_api_uris[1], "test_collection")
|
|
|
|
time.sleep(3)
|
|
|
|
# check that the delete processes did not fail
|
|
if not delete_p1.is_alive() or not delete_p2.is_alive():
|
|
raise Exception("Parallel delete processes failed")
|
|
|
|
delete_p1.kill()
|
|
delete_p2.kill()
|