mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
Merge pull request #52968 from nextcloud/backport/52963/stable30
[stable30] fix(files_versions): Log error instead of crashing when event listeners get called on non-existing files
This commit is contained in:
commit
6d32c682ed
1 changed files with 43 additions and 1 deletions
|
|
@ -124,6 +124,22 @@ class FileEventsListener implements IEventListener {
|
|||
}
|
||||
|
||||
public function touch_hook(Node $node): void {
|
||||
// Do not handle folders.
|
||||
if ($node instanceof Folder) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($node instanceof NonExistingFile) {
|
||||
$this->logger->error(
|
||||
'Failed to create or update version for {path}, node does not exist',
|
||||
[
|
||||
'path' => $node->getPath(),
|
||||
]
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$previousNode = $this->nodesTouched[$node->getId()] ?? null;
|
||||
|
||||
if ($previousNode === null) {
|
||||
|
|
@ -151,7 +167,22 @@ class FileEventsListener implements IEventListener {
|
|||
|
||||
public function created(Node $node): void {
|
||||
// Do not handle folders.
|
||||
if ($node instanceof File && $this->versionManager instanceof INeedSyncVersionBackend) {
|
||||
if (!($node instanceof File)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($node instanceof NonExistingFile) {
|
||||
$this->logger->error(
|
||||
'Failed to create version for {path}, node does not exist',
|
||||
[
|
||||
'path' => $node->getPath(),
|
||||
]
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->versionManager instanceof INeedSyncVersionBackend) {
|
||||
$this->versionManager->createVersionEntity($node);
|
||||
}
|
||||
}
|
||||
|
|
@ -189,6 +220,17 @@ class FileEventsListener implements IEventListener {
|
|||
return;
|
||||
}
|
||||
|
||||
if ($node instanceof NonExistingFile) {
|
||||
$this->logger->error(
|
||||
'Failed to create or update version for {path}, node does not exist',
|
||||
[
|
||||
'path' => $node->getPath(),
|
||||
]
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$writeHookInfo = $this->writeHookInfo[$node->getId()] ?? null;
|
||||
|
||||
if ($writeHookInfo === null) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue