mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Merge branch 'fix/fix-stored-object-version-not-delete-when-not-exists-on-disk' into 'master'
Fix error when cleaning non-existent stored object versions See merge request Chill-Projet/chill-bundles!816
This commit is contained in:
commit
50c377ee22
6
.changes/unreleased/Fixed-20250416-162257.yaml
Normal file
6
.changes/unreleased/Fixed-20250416-162257.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
kind: Fixed
|
||||||
|
body: When cleaning the old stored object versions, do not throw an error if the stored object is not found on disk
|
||||||
|
time: 2025-04-16T16:22:57.309699258+02:00
|
||||||
|
custom:
|
||||||
|
Issue: ""
|
||||||
|
SchemaChange: No schema change
|
@ -62,7 +62,15 @@ final readonly class RemoveOldVersionMessageHandler implements MessageHandlerInt
|
|||||||
|
|
||||||
$storedObject = $storedObjectVersion->getStoredObject();
|
$storedObject = $storedObjectVersion->getStoredObject();
|
||||||
|
|
||||||
$this->storedObjectManager->delete($storedObjectVersion);
|
if ($this->storedObjectManager->exists($storedObjectVersion)) {
|
||||||
|
$this->storedObjectManager->delete($storedObjectVersion);
|
||||||
|
} else {
|
||||||
|
$this->logger->notice(
|
||||||
|
self::LOG_PREFIX.'Stored object version does not exists any more.',
|
||||||
|
['storedObjectVersionName' => $storedObjectVersion->getFilename()],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// to ensure an immediate deletion
|
// to ensure an immediate deletion
|
||||||
$this->entityManager->remove($storedObjectVersion);
|
$this->entityManager->remove($storedObjectVersion);
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ class RemoveOldVersionMessageHandlerTest extends TestCase
|
|||||||
$entityManager->expects($this->once())->method('clear');
|
$entityManager->expects($this->once())->method('clear');
|
||||||
|
|
||||||
$storedObjectManager = $this->createMock(StoredObjectManagerInterface::class);
|
$storedObjectManager = $this->createMock(StoredObjectManagerInterface::class);
|
||||||
|
$storedObjectManager->expects($this->once())->method('exists')->willReturn(true);
|
||||||
$storedObjectManager->expects($this->once())->method('delete')->with($this->identicalTo($version));
|
$storedObjectManager->expects($this->once())->method('delete')->with($this->identicalTo($version));
|
||||||
|
|
||||||
$handler = new RemoveOldVersionMessageHandler($storedObjectVersionRepository, new NullLogger(), $entityManager, $storedObjectManager, new MockClock());
|
$handler = new RemoveOldVersionMessageHandler($storedObjectVersionRepository, new NullLogger(), $entityManager, $storedObjectManager, new MockClock());
|
||||||
@ -51,6 +52,29 @@ class RemoveOldVersionMessageHandlerTest extends TestCase
|
|||||||
$handler(new RemoveOldVersionMessage(1));
|
$handler(new RemoveOldVersionMessage(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testInvokeForVersionNotExisting(): void
|
||||||
|
{
|
||||||
|
$object = new StoredObject();
|
||||||
|
$version = $object->registerVersion();
|
||||||
|
$storedObjectVersionRepository = $this->createMock(StoredObjectVersionRepository::class);
|
||||||
|
$storedObjectVersionRepository->expects($this->once())->method('find')
|
||||||
|
->with($this->identicalTo(1))
|
||||||
|
->willReturn($version);
|
||||||
|
|
||||||
|
$entityManager = $this->createMock(EntityManagerInterface::class);
|
||||||
|
$entityManager->expects($this->once())->method('remove')->with($this->identicalTo($version));
|
||||||
|
$entityManager->expects($this->once())->method('flush');
|
||||||
|
$entityManager->expects($this->once())->method('clear');
|
||||||
|
|
||||||
|
$storedObjectManager = $this->createMock(StoredObjectManagerInterface::class);
|
||||||
|
$storedObjectManager->expects($this->once())->method('exists')->willReturn(false);
|
||||||
|
$storedObjectManager->expects($this->never())->method('delete')->with($this->identicalTo($version));
|
||||||
|
|
||||||
|
$handler = new RemoveOldVersionMessageHandler($storedObjectVersionRepository, new NullLogger(), $entityManager, $storedObjectManager, new MockClock());
|
||||||
|
|
||||||
|
$handler(new RemoveOldVersionMessage(1));
|
||||||
|
}
|
||||||
|
|
||||||
public function testInvokeWithStoredObjectToDelete(): void
|
public function testInvokeWithStoredObjectToDelete(): void
|
||||||
{
|
{
|
||||||
$object = new StoredObject();
|
$object = new StoredObject();
|
||||||
@ -123,6 +147,6 @@ class DummyStoredObjectManager implements StoredObjectManagerInterface
|
|||||||
|
|
||||||
public function exists(StoredObject|StoredObjectVersion $document): bool
|
public function exists(StoredObject|StoredObjectVersion $document): bool
|
||||||
{
|
{
|
||||||
throw new \RuntimeException();
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user