fix: close internal semantic review gaps
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Shared, daemon-scoped lock for operations that stop or replace one Compose Qdrant volume.
|
||||
# The stopped container name is the atomic primitive; ownership labels prevent a cleanup trap
|
||||
# from deleting a lock that it did not create.
|
||||
vector_operation_lock_init() {
|
||||
operation_lock_name="${expected_volume_name}-operation-lock"
|
||||
operation_lock_owner="${project_name}-$$-$(date -u +%Y%m%dT%H%M%S)"
|
||||
operation_lock_acquired=0
|
||||
}
|
||||
|
||||
acquire_vector_operation_lock() {
|
||||
if docker create \
|
||||
--name "$operation_lock_name" \
|
||||
--label "com.thothii.qdrant-operation-owner=$operation_lock_owner" \
|
||||
--label "com.thothii.qdrant-operation-project=$project_name" \
|
||||
--label "com.thothii.qdrant-operation-volume=$expected_volume_name" \
|
||||
"$helper_image" /bin/true >/dev/null 2>&1; then
|
||||
operation_lock_acquired=1
|
||||
return 0
|
||||
fi
|
||||
|
||||
if docker inspect "$operation_lock_name" >/dev/null 2>&1; then
|
||||
echo "Qdrant operation already in progress for $expected_volume_name" >&2
|
||||
else
|
||||
echo "Unable to acquire Qdrant operation lock for $expected_volume_name" >&2
|
||||
fi
|
||||
return 2
|
||||
}
|
||||
|
||||
release_vector_operation_lock() {
|
||||
[ "${operation_lock_acquired:-0}" -eq 1 ] || return 0
|
||||
metadata=$(docker inspect --format \
|
||||
'{{ index .Config.Labels "com.thothii.qdrant-operation-owner" }} {{ index .Config.Labels "com.thothii.qdrant-operation-volume" }}' \
|
||||
"$operation_lock_name" 2>/dev/null || true)
|
||||
set -- $metadata
|
||||
if [ "${1-}" != "$operation_lock_owner" ] || [ "${2-}" != "$expected_volume_name" ]; then
|
||||
echo "Qdrant operation lock ownership changed; refusing to remove it" >&2
|
||||
operation_lock_acquired=0
|
||||
return 1
|
||||
fi
|
||||
if ! docker rm -f "$operation_lock_name" >/dev/null; then
|
||||
echo "Unable to release Qdrant operation lock for $expected_volume_name" >&2
|
||||
operation_lock_acquired=0
|
||||
return 1
|
||||
fi
|
||||
operation_lock_acquired=0
|
||||
}
|
||||
Reference in New Issue
Block a user