Merge pull request #22521 from nextcloud/backport/22514/stable19
[stable19] Fix S3 error handling
This commit is contained in:
commit
c83bd2a7fd
|
@ -446,7 +446,13 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
|
|||
|
||||
$exists = $this->getCache()->inCache($path);
|
||||
$uploadPath = $exists ? $path : $path . '.part';
|
||||
$fileId = $this->getCache()->put($uploadPath, $stat);
|
||||
|
||||
if ($exists) {
|
||||
$fileId = $stat['fileid'];
|
||||
} else {
|
||||
$fileId = $this->getCache()->put($uploadPath, $stat);
|
||||
}
|
||||
|
||||
$urn = $this->getURN($fileId);
|
||||
try {
|
||||
//upload to object storage
|
||||
|
@ -461,19 +467,33 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
|
|||
if (is_resource($countStream)) {
|
||||
fclose($countStream);
|
||||
}
|
||||
$stat['size'] = $size;
|
||||
} else {
|
||||
$this->objectStore->writeObject($urn, $stream);
|
||||
}
|
||||
} catch (\Exception $ex) {
|
||||
$this->getCache()->remove($uploadPath);
|
||||
$this->logger->logException($ex, [
|
||||
'app' => 'objectstore',
|
||||
'message' => 'Could not create object ' . $urn . ' for ' . $path,
|
||||
]);
|
||||
if (!$exists) {
|
||||
/*
|
||||
* Only remove the entry if we are dealing with a new file.
|
||||
* Else people lose access to existing files
|
||||
*/
|
||||
$this->getCache()->remove($uploadPath);
|
||||
$this->logger->logException($ex, [
|
||||
'app' => 'objectstore',
|
||||
'message' => 'Could not create object ' . $urn . ' for ' . $path,
|
||||
]);
|
||||
} else {
|
||||
$this->logger->logException($ex, [
|
||||
'app' => 'objectstore',
|
||||
'message' => 'Could not update object ' . $urn . ' for ' . $path,
|
||||
]);
|
||||
}
|
||||
throw $ex; // make this bubble up
|
||||
}
|
||||
|
||||
if (!$exists) {
|
||||
if ($exists) {
|
||||
$this->getCache()->update($fileId, $stat);
|
||||
} else {
|
||||
if ($this->objectStore->objectExists($urn)) {
|
||||
$this->getCache()->move($uploadPath, $path);
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue