mirror of
https://github.com/nextcloud/server.git
synced 2026-03-30 06:14:09 -04:00
fix: Add logging statement for cases when updating the version fails
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
e8a2847bad
commit
9d348950c0
1 changed files with 29 additions and 8 deletions
|
|
@ -40,6 +40,7 @@ use OCA\Files_Versions\Db\VersionEntity;
|
|||
use OCA\Files_Versions\Db\VersionsMapper;
|
||||
use OCA\Files_Versions\Storage;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\DB\Exception;
|
||||
use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
use OCP\Files\Events\Node\BeforeNodeCopiedEvent;
|
||||
|
|
@ -57,6 +58,7 @@ use OCP\Files\Folder;
|
|||
use OCP\Files\IMimeTypeLoader;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\Files\Node;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class FileEventsListener implements IEventListener {
|
||||
private IRootFolder $rootFolder;
|
||||
|
|
@ -74,15 +76,18 @@ class FileEventsListener implements IEventListener {
|
|||
*/
|
||||
private array $versionsDeleted = [];
|
||||
private IMimeTypeLoader $mimeTypeLoader;
|
||||
private LoggerInterface $logger;
|
||||
|
||||
public function __construct(
|
||||
IRootFolder $rootFolder,
|
||||
VersionsMapper $versionsMapper,
|
||||
IMimeTypeLoader $mimeTypeLoader
|
||||
IMimeTypeLoader $mimeTypeLoader,
|
||||
LoggerInterface $logger,
|
||||
) {
|
||||
$this->rootFolder = $rootFolder;
|
||||
$this->versionsMapper = $versionsMapper;
|
||||
$this->mimeTypeLoader = $mimeTypeLoader;
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
public function handle(Event $event): void {
|
||||
|
|
@ -234,13 +239,29 @@ class FileEventsListener implements IEventListener {
|
|||
// Unless both versions have the same mtime.
|
||||
$this->created($node);
|
||||
} else {
|
||||
// If no new version was stored in the FS, no new version should be added in the DB.
|
||||
// So we simply update the associated version.
|
||||
$currentVersionEntity = $this->versionsMapper->findVersionForFileId($node->getId(), $writeHookInfo['previousNode']->getMtime());
|
||||
$currentVersionEntity->setTimestamp($node->getMTime());
|
||||
$currentVersionEntity->setSize($node->getSize());
|
||||
$currentVersionEntity->setMimetype($this->mimeTypeLoader->getId($node->getMimetype()));
|
||||
$this->versionsMapper->update($currentVersionEntity);
|
||||
try {
|
||||
// If no new version was stored in the FS, no new version should be added in the DB.
|
||||
// So we simply update the associated version.
|
||||
$currentVersionEntity = $this->versionsMapper->findVersionForFileId($node->getId(), $writeHookInfo['previousNode']->getMtime());
|
||||
$currentVersionEntity->setTimestamp($node->getMTime());
|
||||
$currentVersionEntity->setSize($node->getSize());
|
||||
$currentVersionEntity->setMimetype($this->mimeTypeLoader->getId($node->getMimetype()));
|
||||
$this->versionsMapper->update($currentVersionEntity);
|
||||
} catch (Exception $e) {
|
||||
$this->logger->error('Failed to update existing version for ' . $node->getPath(), [
|
||||
'exception' => $e,
|
||||
'versionCreated' => $writeHookInfo['versionCreated'],
|
||||
'previousNode' => [
|
||||
'size' => $writeHookInfo['previousNode']->getSize(),
|
||||
'mtime' => $writeHookInfo['previousNode']->getMTime(),
|
||||
],
|
||||
'node' => [
|
||||
'size' => $node->getSize(),
|
||||
'mtime' => $node->getMTime(),
|
||||
]
|
||||
]);
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
unset($this->writeHookInfo[$node->getId()]);
|
||||
|
|
|
|||
Loading…
Reference in a new issue