@Override public UploadPartResponse apply(UploadPartRequest request) { InputStream stream = request.getUploadPartBody(); BmcException ex = null; for (int i = 1; i <= MAX_RETRIES; i++) { try { return service.uploadPart(request); } catch (BmcException e) { ex = e; if (canRetry(stream, e, i)) { request = UploadPartRequest.builder() .copy(request) .uploadPartBody( ((DuplicatableInputStream) stream).duplicate()) .build(); } else { break; } } } throw ex; } };
private int doUploadPart( InputStream stream, long contentLength, String md5, int partNumber, boolean allowPartOverwrite) { validateState(); String ifNoneMatch = ObjectStorageUtils.getIfNoneMatchHeader(allowPartOverwrite); UploadPartRequest request = UploadPartRequest.builder() .namespaceName(namespaceName) .bucketName(bucketName) .objectName(objectName) .contentMD5(md5) .contentLength(contentLength) .uploadId(manifest.getUploadId()) .ifNoneMatch(ifNoneMatch) .uploadPartNum(partNumber) .uploadPartBody(stream) .opcClientRequestId(createClientRequestId("-" + partNumber)) .build(); transferManager.startTransfer(request); return partNumber; }