Skip to content

Commit fc956ac

Browse files
committed
remove contentRange validation since part size could different
1 parent 391a506 commit fc956ac

File tree

2 files changed

+0
-75
lines changed

2 files changed

+0
-75
lines changed

services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/multipart/MultipartDownloaderSubscriber.java

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,6 @@ public class MultipartDownloaderSubscriber implements Subscriber<AsyncResponseTr
7777
*/
7878
private volatile String eTag;
7979

80-
/**
81-
* The size of each part of the object being downloaded.
82-
*/
83-
private volatile Long partSize;
84-
85-
/**
86-
* The total size of the object being downloaded.
87-
*/
88-
private volatile Long totalContentLength;
89-
9080
/**
9181
* The Subscription lock
9282
*/
@@ -174,15 +164,6 @@ private void requestMoreIfNeeded(GetObjectResponse response) {
174164
totalParts = partCount;
175165
}
176166

177-
String actualContentRange = response.contentRange();
178-
if (actualContentRange != null && partSize == null) {
179-
getRangeInfo(actualContentRange);
180-
log.debug(() -> String.format("Part size of the object to download: " + partSize));
181-
log.debug(() -> String.format("Total Content Length of the object to download: " + totalContentLength));
182-
}
183-
184-
validateContentRange(totalComplete, actualContentRange);
185-
186167
synchronized (lock) {
187168
if (totalParts != null && totalParts > 1 && totalComplete < totalParts) {
188169
subscription.request(1);
@@ -231,34 +212,4 @@ private void validatePartsCount(int currentGetCount) {
231212
onError(exception);
232213
}
233214
}
234-
235-
private void validateContentRange(int partNumber, String contentRange) {
236-
if (contentRange == null) {
237-
return;
238-
}
239-
240-
long expectedStart = (partNumber - 1) * partSize;
241-
long expectedEnd = partNumber == totalParts ? totalContentLength - 1 : expectedStart + partSize - 1;
242-
243-
String expectedContentRange = String.format("bytes %d-%d/%d", expectedStart, expectedEnd, totalContentLength);
244-
245-
if (!expectedContentRange.equals(contentRange)) {
246-
String errorMessage = String.format(
247-
"Content-Range validation failed for part %d. Expected: %s, Actual: %s",
248-
partNumber, expectedContentRange, contentRange);
249-
log.error(() -> errorMessage);
250-
onError(SdkClientException.create(errorMessage));
251-
}
252-
}
253-
254-
private void getRangeInfo(String contentRange) {
255-
String rangeInfo = contentRange.substring(6);
256-
String[] parts = rangeInfo.split("/");
257-
258-
this.totalContentLength = Long.parseLong(parts[1]);
259-
String[] rangeParts = parts[0].split("-");
260-
long startByte = Long.parseLong(rangeParts[0]);
261-
long endByte = Long.parseLong(rangeParts[1]);
262-
this.partSize = endByte - startByte + 1;
263-
}
264215
}

services/s3/src/test/java/software/amazon/awssdk/services/s3/internal/multipart/MultipartDownloaderSubscriberWiremockTest.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -160,32 +160,6 @@ <T> void errorOnThirdRequest_shouldCompleteExceptionallyOnlyPartsGreaterThanTwo(
160160
}
161161
}
162162

163-
@ParameterizedTest
164-
@MethodSource("argumentsProvider")
165-
<T> void wrongContentRangeOnSecondRequest_should(AsyncResponseTransformerTestSupplier<T> supplier,
166-
int amountOfPartToTest,
167-
int partSize) {
168-
util.stubForPart(testBucket, testKey, 1, 3, partSize);
169-
util.stubForPartwithWrongContentRange(testBucket, testKey, 2, 3, partSize);
170-
util.stubForPart(testBucket, testKey, 3, 3, partSize);
171-
//byte[] expectedBody = util.stubAllParts(testBucket, testKey, amountOfPartToTest, partSize);
172-
AsyncResponseTransformer<GetObjectResponse, T> transformer = supplier.transformer();
173-
AsyncResponseTransformer.SplitResult<GetObjectResponse, T> split = transformer.split(
174-
SplittingTransformerConfiguration.builder()
175-
.bufferSizeInBytes(1024 * 32L)
176-
.build());
177-
Subscriber<AsyncResponseTransformer<GetObjectResponse, GetObjectResponse>> subscriber = new MultipartDownloaderSubscriber(
178-
s3AsyncClient,
179-
GetObjectRequest.builder()
180-
.bucket(testBucket)
181-
.key(testKey)
182-
.build());
183-
184-
split.publisher().subscribe(subscriber);
185-
T response = split.resultFuture().join();
186-
187-
}
188-
189163
private static Stream<Arguments> argumentsProvider() {
190164
// amount of part, individual part size
191165
List<Pair<Integer, Integer>> partSizes = Arrays.asList(

0 commit comments

Comments
 (0)