Skip to content

Commit 015f612

Browse files
emrochaebozduman
authored andcommitted
PutObjectAsync with Snowball header must not use multipart
PutObjectAsync must not use multipart if has header "X-Amz-Meta-Snowball-Auto-Extract=true" See minio/minio#17033
1 parent 26fb848 commit 015f612

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

Minio/ApiEndpoints/ObjectOperations.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -561,8 +561,12 @@ public async Task<PutObjectResponse> PutObjectAsync(PutObjectArgs args,
561561
args?.Validate();
562562
args.SSE?.Marshal(args.Headers);
563563

564-
// Upload object in single part if size falls under restricted part size.
565-
if (args.ObjectSize < Constants.MinimumPartSize && args.ObjectSize >= 0 && args.ObjectStreamData is not null)
564+
var isSnowball = args.Headers.ContainsKey("X-Amz-Meta-Snowball-Auto-Extract") &&
565+
Convert.ToBoolean(args.Headers["X-Amz-Meta-Snowball-Auto-Extract"]);
566+
567+
// Upload object in single part if size falls under restricted part size
568+
// or the request has snowball objects
569+
if ((args.ObjectSize < Constants.MinimumPartSize || isSnowball) && args.ObjectSize >= 0 && args.ObjectStreamData is not null)
566570
{
567571
var bytes = await ReadFullAsync(args.ObjectStreamData, (int)args.ObjectSize).ConfigureAwait(false);
568572
var bytesRead = bytes.Length;
@@ -1376,4 +1380,4 @@ private async Task MultipartCopyUploadAsync(string bucketName, string objectName
13761380
await CompleteMultipartUploadAsync(destBucketName, destObjectName,
13771381
uploadId, etags, cancellationToken).ConfigureAwait(false);
13781382
}
1379-
}
1383+
}

0 commit comments

Comments
 (0)