@ -47,7 +47,7 @@ use OCP\Files\ObjectStore\IObjectStore;
use OCP\Files\ObjectStore\IObjectStoreMultiPartUpload;
use OCP\Files\Storage\IChunkedFileWrite;
use OCP\Files\Storage\IStorage;
use OCP\ILogger ;
use Psr\Log\LoggerInterface ;
class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFileWrite {
use CopyDirectory;
@ -56,7 +56,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil
protected string $id;
private string $objectPrefix = 'urn:oid:';
private I Logger $logger;
private LoggerInterface $logger;
private bool $handleCopiesAsOwned;
protected bool $validateWrites = true;
@ -84,7 +84,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil
}
$this->handleCopiesAsOwned = (bool)($params['handleCopiesAsOwned'] ?? false);
$this->logger = \OC::$server->getLogger( );
$this->logger = \OCP\Server::get(LoggerInterface::class );
}
public function mkdir($path, bool $force = false) {
@ -220,10 +220,13 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil
$this->objectStore->deleteObject($this->getURN($entry->getId()));
} catch (\Exception $ex) {
if ($ex->getCode() !== 404) {
$this->logger->logException($ex, [
$this->logger->error(
'Could not delete object ' . $this->getURN($entry->getId()) . ' for ' . $entry->getPath(),
[
'app' => 'objectstore',
'message' => 'Could not delete object ' . $this->getURN($entry->getId()) . ' for ' . $entry->getPath(),
]);
'exception' => $ex,
]
);
return false;
}
//removing from cache is ok as it does not exist in the objectstore anyway
@ -286,7 +289,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil
return IteratorDirectory::wrap($files);
} catch (\Exception $e) {
$this->logger->logException($e );
$this->logger->error($e->getMessage(), ['exception' => $e] );
return false;
}
}
@ -336,16 +339,22 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil
}
return $handle;
} catch (NotFoundException $e) {
$this->logger->logException($e, [
$this->logger->error(
'Could not get object ' . $this->getURN($stat['fileid']) . ' for file ' . $path,
[
'app' => 'objectstore',
'message' => 'Could not get object ' . $this->getURN($stat['fileid']) . ' for file ' . $path,
]);
'exception' => $e,
]
);
throw $e;
} catch (\Exception $ex) {
$this->logger->logException($ex, [
} catch (\Exception $e) {
$this->logger->error(
'Could not get object ' . $this->getURN($stat['fileid']) . ' for file ' . $path,
[
'app' => 'objectstore',
'message' => 'Could not get object ' . $this->getURN($stat['fileid']) . ' for file ' . $path,
]);
'exception' => $e,
]
);
return false;
}
} else {
@ -442,10 +451,13 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil
];
$this->getCache()->put($path, $stat);
} catch (\Exception $ex) {
$this->logger->logException($ex, [
$this->logger->error(
'Could not create object for ' . $path,
[
'app' => 'objectstore',
'message' => 'Could not create object for ' . $path,
]);
'exception' => $ex,
]
);
throw $ex;
}
}
@ -540,15 +552,21 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil
* Else people lose access to existing files
*/
$this->getCache()->remove($uploadPath);
$this->logger->logException($ex, [
$this->logger->error(
'Could not create object ' . $urn . ' for ' . $path,
[
'app' => 'objectstore',
'message' => 'Could not create object ' . $urn . ' for ' . $path,
]);
'exception' => $ex,
]
);
} else {
$this->logger->logException($ex, [
$this->logger->error(
'Could not update object ' . $urn . ' for ' . $path,
[
'app' => 'objectstore',
'message' => 'Could not update object ' . $urn . ' for ' . $path,
]);
'exception' => $ex,
]
);
}
throw $ex; // make this bubble up
}
@ -713,10 +731,13 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil
}
} catch (S3MultipartUploadException|S3Exception $e) {
$this->objectStore->abortMultipartUpload($urn, $writeToken);
$this->logger->logException($e, [
$this->logger->error(
'Could not compete multipart upload ' . $urn . ' with uploadId ' . $writeToken,
[
'app' => 'objectstore',
'message' => 'Could not compete multipart upload ' . $urn . ' with uploadId ' . $writeToken,
]);
'exception' => $e,
]
);
throw new GenericFileException('Could not write chunked file');
}
return $size;