From 789cdf001464c83b12d9375dbfe7bca66e4a2a55 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Mon, 1 Dec 2025 19:40:03 +0100 Subject: [PATCH] fix: add missing lock in list repositories --- .../repositories/repositories.service.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/app/server/modules/repositories/repositories.service.ts b/app/server/modules/repositories/repositories.service.ts index 5631938e..ea23a161 100644 --- a/app/server/modules/repositories/repositories.service.ts +++ b/app/server/modules/repositories/repositories.service.ts @@ -255,14 +255,19 @@ const getSnapshotDetails = async (name: string, snapshotId: string) => { throw new NotFoundError("Repository not found"); } - const snapshots = await restic.snapshots(repository.config); - const snapshot = snapshots.find((snap) => snap.id === snapshotId || snap.short_id === snapshotId); + const releaseLock = await repoMutex.acquireShared(repository.id, `snapshot_details:${snapshotId}`); + try { + const snapshots = await restic.snapshots(repository.config); + const snapshot = snapshots.find((snap) => snap.id === snapshotId || snap.short_id === snapshotId); - if (!snapshot) { - throw new NotFoundError("Snapshot not found"); + if (!snapshot) { + throw new NotFoundError("Snapshot not found"); + } + + return snapshot; + } finally { + releaseLock(); } - - return snapshot; }; const checkHealth = async (repositoryId: string) => {