Only update the filecache entry once the file has been written to S3
If we already update before we have no way to revert if the upload fails. Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
parent
704f515175
commit
952ec3370e
|
@ -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,6 +467,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
|
|||
if (is_resource($countStream)) {
|
||||
fclose($countStream);
|
||||
}
|
||||
$stat['size'] = $size;
|
||||
} else {
|
||||
$this->objectStore->writeObject($urn, $stream);
|
||||
}
|
||||
|
@ -484,7 +491,9 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
|
|||
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