summaryrefslogtreecommitdiffstats
path: root/lib/private/Files/ObjectStore
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2018-02-08 14:31:23 +0100
committerGitHub <noreply@github.com>2018-02-08 14:31:23 +0100
commit197c97e242e9238057662c847685b3d2534f7c5b (patch)
tree0063dc393a413dc19cb88d277f8dafc78916a18e /lib/private/Files/ObjectStore
parente2cb6a3b3c784d2882bb1e690560a1de0d0f1f48 (diff)
parent7ab3a7e2c34658668fc7f4cf4511d963623edcf8 (diff)
downloadnextcloud-server-197c97e242e9238057662c847685b3d2534f7c5b.tar.gz
nextcloud-server-197c97e242e9238057662c847685b3d2534f7c5b.zip
Merge pull request #8102 from nextcloud/s3-uploader-13
[13] Use S3Client::upload instead of splitting single/multipart upload ourselves
Diffstat (limited to 'lib/private/Files/ObjectStore')
-rw-r--r--lib/private/Files/ObjectStore/S3ObjectTrait.php45
1 files changed, 2 insertions, 43 deletions
diff --git a/lib/private/Files/ObjectStore/S3ObjectTrait.php b/lib/private/Files/ObjectStore/S3ObjectTrait.php
index 9c5cf9ccc6c..defeda4c21a 100644
--- a/lib/private/Files/ObjectStore/S3ObjectTrait.php
+++ b/lib/private/Files/ObjectStore/S3ObjectTrait.php
@@ -75,51 +75,10 @@ trait S3ObjectTrait {
* @since 7.0.0
*/
function writeObject($urn, $stream) {
- $stat = fstat($stream);
-
- if ($stat['size'] && $stat['size'] < S3_UPLOAD_PART_SIZE) {
- $this->singlePartUpload($urn, $stream);
- } else {
- $this->multiPartUpload($urn, $stream);
- }
-
- }
-
- protected function singlePartUpload($urn, $stream) {
- $this->getConnection()->putObject([
- 'Bucket' => $this->bucket,
- 'Key' => $urn,
- 'Body' => $stream
- ]);
- }
-
- protected function multiPartUpload($urn, $stream) {
- $uploader = new MultipartUploader($this->getConnection(), $stream, [
- 'bucket' => $this->bucket,
- 'key' => $urn,
+ $this->getConnection()->upload($this->bucket, $urn, $stream, 'private', [
+ 'mup_threshold' => S3_UPLOAD_PART_SIZE,
'part_size' => S3_UPLOAD_PART_SIZE
]);
-
- $tries = 0;
-
- do {
- try {
- $result = $uploader->upload();
- } catch (MultipartUploadException $e) {
- \OC::$server->getLogger()->logException($e);
- rewind($stream);
- $tries++;
-
- if ($tries < 5) {
- $uploader = new MultipartUploader($this->getConnection(), $stream, [
- 'state' => $e->getState()
- ]);
- } else {
- $this->getConnection()->abortMultipartUpload($e->getState()->getId());
- throw $e;
- }
- }
- } while (!isset($result) && $tries < 5);
}
/**