Skip to content

Commit

Permalink
HDDS-11483. Make s3g object get and put operation buffer configuable
Browse files Browse the repository at this point in the history
  • Loading branch information
ChenSammi committed Sep 24, 2024
1 parent e2e30b8 commit c8c5973
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public final class S3GatewayConfigKeys {
public static final String OZONE_S3G_CLIENT_BUFFER_SIZE_KEY =
"ozone.s3g.client.buffer.size";
public static final String OZONE_S3G_CLIENT_BUFFER_SIZE_DEFAULT =
"4KB";
"1MB";

// S3G kerberos, principal config
public static final String OZONE_S3G_KERBEROS_KEYTAB_FILE_KEY =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,8 @@ public Response put(
long metadataLatencyNs =
getMetrics().updatePutKeyMetadataStats(startNanos);
perf.appendMetaLatencyNanos(metadataLatencyNs);
putLength = IOUtils.copyLarge(digestInputStream, output);
int bufferLength = length < bufferSize? (int) length: bufferSize;
putLength = IOUtils.copy(digestInputStream, output, bufferLength);
eTag = DatatypeConverter.printHexBinary(
digestInputStream.getMessageDigest().digest())
.toLowerCase();
Expand Down Expand Up @@ -443,7 +444,8 @@ public Response get(
if (rangeHeaderVal == null || rangeHeader.isReadFull()) {
StreamingOutput output = dest -> {
try (OzoneInputStream key = keyDetails.getContent()) {
long readLength = IOUtils.copyLarge(key, dest);
int bufferLength = keyDetails.getDataSize() < bufferSize? (int) keyDetails.getDataSize(): bufferSize;
long readLength = IOUtils.copy(key, dest, bufferLength);
getMetrics().incGetKeySuccessLength(readLength);
perf.appendSizeBytes(readLength);
}
Expand All @@ -466,8 +468,9 @@ public Response get(
StreamingOutput output = dest -> {
try (OzoneInputStream ozoneInputStream = keyDetails.getContent()) {
ozoneInputStream.seek(startOffset);
int bufferLength = copyLength < bufferSize? (int) copyLength: bufferSize;
long readLength = IOUtils.copyLarge(ozoneInputStream, dest, 0,
copyLength, new byte[bufferSize]);
copyLength, new byte[bufferLength]);
getMetrics().incGetKeySuccessLength(readLength);
perf.appendSizeBytes(readLength);
}
Expand Down Expand Up @@ -996,8 +999,9 @@ private Response createMultipartKey(OzoneVolume volume, String bucket,
partNumber, uploadID)) {
metadataLatencyNs =
getMetrics().updateCopyKeyMetadataStats(startNanos);
int bufferLength = length < bufferSize? (int) length: bufferSize;
copyLength = IOUtils.copyLarge(
sourceObject, ozoneOutputStream, 0, length);
sourceObject, ozoneOutputStream, 0, length, new byte[bufferLength]);
ozoneOutputStream.getMetadata()
.putAll(sourceKeyDetails.getMetadata());
outputStream = ozoneOutputStream;
Expand All @@ -1008,7 +1012,8 @@ private Response createMultipartKey(OzoneVolume volume, String bucket,
partNumber, uploadID)) {
metadataLatencyNs =
getMetrics().updateCopyKeyMetadataStats(startNanos);
copyLength = IOUtils.copyLarge(sourceObject, ozoneOutputStream);
int bufferLength = length < bufferSize? (int) length: bufferSize;
copyLength = IOUtils.copy(sourceObject, ozoneOutputStream, bufferLength);
ozoneOutputStream.getMetadata()
.putAll(sourceKeyDetails.getMetadata());
outputStream = ozoneOutputStream;
Expand All @@ -1024,7 +1029,8 @@ private Response createMultipartKey(OzoneVolume volume, String bucket,
partNumber, uploadID)) {
metadataLatencyNs =
getMetrics().updatePutKeyMetadataStats(startNanos);
putLength = IOUtils.copyLarge(digestInputStream, ozoneOutputStream);
int bufferLength = length < bufferSize? (int) length: bufferSize;
putLength = IOUtils.copy(digestInputStream, ozoneOutputStream, bufferLength);
byte[] digest = digestInputStream.getMessageDigest().digest();
ozoneOutputStream.getMetadata()
.put(ETAG, DatatypeConverter.printHexBinary(digest).toLowerCase());
Expand Down Expand Up @@ -1178,7 +1184,8 @@ void copy(OzoneVolume volume, DigestInputStream src, long srcKeyLen,
long metadataLatencyNs =
getMetrics().updateCopyKeyMetadataStats(startNanos);
perf.appendMetaLatencyNanos(metadataLatencyNs);
copyLength = IOUtils.copyLarge(src, dest);
int bufferLength = srcKeyLen < bufferSize? (int) srcKeyLen: bufferSize;
copyLength = IOUtils.copy(src, dest, bufferLength);
String eTag = DatatypeConverter.printHexBinary(src.getMessageDigest().digest()).toLowerCase();
dest.getMetadata().put(ETAG, eTag);
}
Expand Down

0 comments on commit c8c5973

Please sign in to comment.