Skip to content

Commit b344b53

Browse files
committed
fix(collaboration): Replace NonExisting* check on NodeDeletedEvent by a try/catch
Deleted nodes are always non existing, but some of them have a fileInfo. This ensure that we still run the cleanup but in a safe way. Signed-off-by: Louis Chmn <[email protected]>
1 parent f960afc commit b344b53

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

lib/private/Collaboration/Reference/File/FileReferenceEventListener.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,22 @@
88

99
namespace OC\Collaboration\Reference\File;
1010

11-
use OC\Files\Node\NonExistingFile;
12-
use OC\Files\Node\NonExistingFolder;
1311
use OCP\Collaboration\Reference\IReferenceManager;
1412
use OCP\EventDispatcher\Event;
1513
use OCP\EventDispatcher\IEventDispatcher;
1614
use OCP\EventDispatcher\IEventListener;
1715
use OCP\Files\Events\Node\NodeDeletedEvent;
1816
use OCP\Files\Events\Node\NodeRenamedEvent;
17+
use OCP\Files\NotFoundException;
1918
use OCP\Share\Events\ShareCreatedEvent;
2019
use OCP\Share\Events\ShareDeletedEvent;
20+
use Psr\Log\LoggerInterface;
2121

2222
/** @template-implements IEventListener<Event|NodeDeletedEvent|ShareDeletedEvent|ShareCreatedEvent> */
2323
class FileReferenceEventListener implements IEventListener {
2424
public function __construct(
2525
private IReferenceManager $manager,
26+
private LoggerInterface $logger,
2627
) {
2728
}
2829

@@ -38,11 +39,12 @@ public static function register(IEventDispatcher $eventDispatcher): void {
3839
*/
3940
public function handle(Event $event): void {
4041
if ($event instanceof NodeDeletedEvent) {
41-
if ($event->getNode() instanceof NonExistingFolder || $event->getNode() instanceof NonExistingFile) {
42-
return;
42+
try {
43+
$this->manager->invalidateCache((string)$event->getNode()->getId());
44+
} catch (NotFoundException $e) {
45+
// Non existing node might not have an id
46+
$this->logger->debug('Could not invalidate reference cache for deleted node', ['exception' => $e]);
4347
}
44-
45-
$this->manager->invalidateCache((string)$event->getNode()->getId());
4648
}
4749
if ($event instanceof NodeRenamedEvent) {
4850
$this->manager->invalidateCache((string)$event->getTarget()->getId());

0 commit comments

Comments
 (0)