From 4a4e335fdfc1819a9c4f57df85dd91a2e769637e Mon Sep 17 00:00:00 2001 From: Benjamin Frueh Date: Mon, 23 Feb 2026 20:43:00 +0100 Subject: [PATCH 1/2] fix: keep lock cache consistent after extend and unlock Signed-off-by: Benjamin Frueh --- lib/Service/LockService.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/Service/LockService.php b/lib/Service/LockService.php index 74d25665..1858c8ca 100644 --- a/lib/Service/LockService.php +++ b/lib/Service/LockService.php @@ -162,6 +162,7 @@ public function lock(LockContext $lockScope): FileLock { ); $this->logger->notice('extending existing lock', ['fileLock' => $known]); $this->locksRequest->update($known); + $this->lockCache[$lockScope->getNode()->getId()] = $known; $this->injectMetadata($known); return $known; } @@ -204,6 +205,7 @@ public function unlock(LockContext $lock, bool $force = false): FileLock { } $this->locksRequest->delete($known); + $this->lockCache[$lock->getNode()->getId()] = false; $this->propagateEtag($lock); $this->injectMetadata($known); return $known; From cd90c5543b780ffc669321c56cd0bfdfb0003734 Mon Sep 17 00:00:00 2001 From: Benjamin Frueh Date: Mon, 23 Feb 2026 20:45:10 +0100 Subject: [PATCH 2/2] fix(test): clear stale user cache between tests Signed-off-by: Benjamin Frueh --- tests/Feature/LockFeatureTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/Feature/LockFeatureTest.php b/tests/Feature/LockFeatureTest.php index b8410cec..0ce84474 100644 --- a/tests/Feature/LockFeatureTest.php +++ b/tests/Feature/LockFeatureTest.php @@ -60,10 +60,16 @@ public function setUp(): void { } return time(); }); + + // switch to user2 to clear stale cache + $this->loginAndGetUserFolder(self::TEST_USER2); + $folder = $this->loginAndGetUserFolder(self::TEST_USER1); $folder->delete('test-file'); $folder->delete('test-file2'); $folder->delete('test-file3'); + $folder->delete('etag_test'); + \OC_Hook::$thrownExceptions = []; $this->overwriteService(ITimeFactory::class, $this->timeFactory); $this->toTheFuture(0);