diff options
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Files/ObjectStore/Swift.php | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/private/Files/ObjectStore/Swift.php b/lib/private/Files/ObjectStore/Swift.php index 9a2aa82295e..33a8310fc9f 100644 --- a/lib/private/Files/ObjectStore/Swift.php +++ b/lib/private/Files/ObjectStore/Swift.php @@ -32,6 +32,8 @@ use OCP\Files\ObjectStore\IObjectStore; use OCP\Files\StorageAuthException; use OpenStack\Common\Error\BadResponseError; +const SWIFT_SEGMENT_SIZE = 1073741824; // 1GB + class Swift implements IObjectStore { /** * @var array @@ -80,10 +82,18 @@ class Swift implements IObjectStore { file_put_contents($tmpFile, $stream); $handle = fopen($tmpFile, 'rb'); - $this->getContainer()->createObject([ - 'name' => $urn, - 'stream' => stream_for($handle) - ]); + if (filesize($tmpFile) < SWIFT_SEGMENT_SIZE) { + $this->getContainer()->createObject([ + 'name' => $urn, + 'stream' => stream_for($handle) + ]); + } else { + $this->getContainer()->createLargeObject([ + 'name' => $urn, + 'stream' => stream_for($handle), + 'segmentSize' => SWIFT_SEGMENT_SIZE + ]); + } } /** |