Skip to content
Snippets Groups Projects
Unverified Commit 1ade6b08 authored by Bjoern Schiessle's avatar Bjoern Schiessle
Browse files

only create the file cache entry after the empty file was created...

only create the file cache entry after the empty file was created successfully, otherwise file_exists() call on the initial file_put_content() will indicate that the file already exists

Signed-off-by: default avatarBjoern Schiessle <bjoern@schiessle.org>
parent eeb0cfda
No related branches found
No related tags found
No related merge requests found
......@@ -351,25 +351,24 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
$stat['mtime'] = $mtime;
$this->getCache()->update($stat['fileid'], $stat);
} else {
$mimeType = \OC::$server->getMimeTypeDetector()->detectPath($path);
// create new file
$stat = array(
'etag' => $this->getETag($path),
'mimetype' => $mimeType,
'size' => 0,
'mtime' => $mtime,
'storage_mtime' => $mtime,
'permissions' => \OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE,
);
$fileId = $this->getCache()->put($path, $stat);
try {
//read an empty file from memory
//create a empty file, need to have at least on char to make it
// work with all object storage implementations
$this->file_put_contents($path, ' ');
$mimeType = \OC::$server->getMimeTypeDetector()->detectPath($path);
$stat = array(
'etag' => $this->getETag($path),
'mimetype' => $mimeType,
'size' => 0,
'mtime' => $mtime,
'storage_mtime' => $mtime,
'permissions' => \OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE,
);
$this->getCache()->put($path, $stat);
} catch (\Exception $ex) {
$this->getCache()->remove($path);
$this->logger->logException($ex, [
'app' => 'objectstore',
'message' => 'Could not create object ' . $this->getURN($fileId) . ' for ' . $path,
'message' => 'Could not create object for ' . $path,
]);
return false;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment