Skip to content

Commit 0fbf57c

Browse files
committed
Fix merge conflict
1 parent 0b662e6 commit 0fbf57c

File tree

11 files changed

+75
-40
lines changed

11 files changed

+75
-40
lines changed

services-custom/s3-transfer-manager/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@
101101
<artifactId>protocol-core</artifactId>
102102
<version>${awsjavasdk.version}</version>
103103
</dependency>
104+
<dependency>
105+
<groupId>software.amazon.awssdk</groupId>
106+
<artifactId>http-client-spi</artifactId>
107+
<version>${awsjavasdk.version}</version>
108+
</dependency>
104109
<dependency>
105110
<groupId>software.amazon.awssdk</groupId>
106111
<artifactId>service-test-utils</artifactId>

services-custom/s3-transfer-manager/src/it/java/software/amazon/awssdk/transfer/s3/S3TransferManagerUploadPauseResumeIntegrationTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ void pause_singlePart_shouldResume() {
9595

9696
FileUpload resumedUpload = tm.resumeUploadFile(resumableFileUpload);
9797
resumedUpload.completionFuture().join();
98-
System.out.println(resumedUpload.progress().snapshot().transferSizeInBytes());
98+
System.out.println(resumedUpload.progress().snapshot().transferredBytes());
9999

100100
//assertThat(resumedUpload.progress().snapshot().transferSizeInBytes()).hasValue((long) bytes.length);
101101
}
@@ -119,7 +119,7 @@ void pause_fileNotChanged_shouldResume() {
119119

120120
FileUpload resumedUpload = tm.resumeUploadFile(resumableFileUpload);
121121
resumedUpload.completionFuture().join();
122-
System.out.println(resumedUpload.progress().snapshot().transferSizeInBytes());
122+
System.out.println(resumedUpload.progress().snapshot().transferredBytes());
123123

124124
//assertThat(resumedUpload.progress().snapshot().transferSizeInBytes()).hasValue((long) bytes.length);
125125
}
@@ -164,7 +164,7 @@ void pause_fileChanged_resumeShouldStartFromBeginning() throws Exception {
164164
FileUpload resumedUpload = tm.resumeUploadFile(resumableFileUpload);
165165
resumedUpload.completionFuture().join();
166166
verifyMultipartUploadIdNotExist(resumableFileUpload);
167-
assertThat(resumedUpload.progress().snapshot().transferSizeInBytes()).hasValue((long) bytes.length);
167+
assertThat(resumedUpload.progress().snapshot().totalBytes()).hasValue(bytes.length);
168168
}
169169

170170
private void verifyMultipartUploadIdExists(ResumableFileUpload resumableFileUpload) {
@@ -182,7 +182,7 @@ private void verifyMultipartUploadIdNotExist(ResumableFileUpload resumableFileUp
182182

183183
private static void waitUntilFirstByteBufferDelivered(FileUpload upload) {
184184
Waiter<TransferProgressSnapshot> waiter = Waiter.builder(TransferProgressSnapshot.class)
185-
.addAcceptor(WaiterAcceptor.successOnResponseAcceptor(r -> r.bytesTransferred() > 0))
185+
.addAcceptor(WaiterAcceptor.successOnResponseAcceptor(r -> r.transferredBytes() > 0))
186186
.addAcceptor(WaiterAcceptor.retryOnResponseAcceptor(r -> true))
187187
.overrideConfiguration(o -> o.waitTimeout(Duration.ofMinutes(1))
188188
.maxAttempts(Integer.MAX_VALUE)

services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3TransferManager.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ public FileUpload resumeUploadFile(ResumableFileUpload resumableFileUpload) {
215215
resumableFileUpload.fileLastModified(),
216216
resumableFileUpload.uploadFileRequest().source());
217217

218-
boolean noResumeToken = noResumeToken(resumableFileUpload);
218+
boolean noResumeToken = !hasResumeToken(resumableFileUpload);
219219

220220
if (fileModified || noResumeToken) {
221221
return uploadFromBeginning(resumableFileUpload, fileModified);
@@ -228,8 +228,8 @@ private FileUpload doResumeUpload(ResumableFileUpload resumableFileUpload) {
228228
UploadFileRequest uploadFileRequest = resumableFileUpload.uploadFileRequest();
229229
PutObjectRequest putObjectRequest = uploadFileRequest.putObjectRequest();
230230

231-
CrtUploadResumeToken token = new CrtUploadResumeToken(resumableFileUpload.totalNumOfParts().get(),
232-
resumableFileUpload.partSizeInBytes().get(),
231+
CrtUploadResumeToken token = new CrtUploadResumeToken(resumableFileUpload.totalNumOfParts().getAsLong(),
232+
resumableFileUpload.partSizeInBytes().getAsLong(),
233233
resumableFileUpload.multipartUploadId().orElse(null));
234234
String marshalledToken = marshallResumeToken(token);
235235

@@ -275,8 +275,8 @@ private FileUpload uploadFromBeginning(ResumableFileUpload resumableFileUpload,
275275
return uploadFile(uploadFileRequest);
276276
}
277277

278-
private boolean noResumeToken(ResumableFileUpload resumableFileUpload) {
279-
return !resumableFileUpload.totalNumOfParts().isPresent() || !resumableFileUpload.partSizeInBytes().isPresent();
278+
private boolean hasResumeToken(ResumableFileUpload resumableFileUpload) {
279+
return resumableFileUpload.totalNumOfParts().isPresent() && resumableFileUpload.partSizeInBytes().isPresent();
280280
}
281281

282282
private PutObjectRequest attachSdkAttribute(PutObjectRequest putObjectRequest,
@@ -291,7 +291,9 @@ private PutObjectRequest attachSdkAttribute(PutObjectRequest putObjectRequest,
291291

292292
AwsRequestOverrideConfiguration modifiedRequestOverrideConfig =
293293
putObjectRequest.overrideConfiguration().map(o -> o.toBuilder().applyMutation(attachSdkHttpAttributes).build())
294-
.orElseGet(() -> AwsRequestOverrideConfiguration.builder().applyMutation(attachSdkHttpAttributes).build());
294+
.orElseGet(() -> AwsRequestOverrideConfiguration.builder()
295+
.applyMutation(attachSdkHttpAttributes)
296+
.build());
295297

296298
return putObjectRequest.toBuilder()
297299
.overrideConfiguration(modifiedRequestOverrideConfig)

services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/model/DefaultFileUpload.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ private ResumableFileUpload doPause() {
7878
}
7979
}
8080

81-
// upload hasn't started yet or it's a single object upload
81+
// upload hasn't started yet, or it's a single object upload
8282
if (token == null) {
8383
return ResumableFileUpload.builder()
8484
.fileLastModified(fileLastModified)

services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/utils/FileUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import java.io.File;
1919
import java.nio.file.Path;
2020
import java.time.Instant;
21+
import software.amazon.awssdk.annotations.SdkInternalApi;
2122

23+
@SdkInternalApi
2224
public final class FileUtils {
2325

2426
private FileUtils() {

services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/model/ResumableFileUpload.java

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.time.Instant;
1919
import java.util.Objects;
2020
import java.util.Optional;
21+
import java.util.OptionalLong;
2122
import java.util.function.Consumer;
2223
import software.amazon.awssdk.annotations.SdkPublicApi;
2324
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
@@ -39,6 +40,7 @@
3940
* </ul>
4041
*
4142
* @see S3TransferManager#uploadFile(UploadFileRequest)
43+
* @see S3TransferManager#resumeUploadFile(ResumableFileUpload)
4244
*/
4345
@SdkPublicApi
4446
public final class ResumableFileUpload implements ResumableTransfer,
@@ -71,20 +73,32 @@ public boolean equals(Object o) {
7173

7274
ResumableFileUpload that = (ResumableFileUpload) o;
7375

76+
if (fileLength != that.fileLength) {
77+
return false;
78+
}
7479
if (!uploadFileRequest.equals(that.uploadFileRequest)) {
7580
return false;
7681
}
82+
if (!fileLastModified.equals(that.fileLastModified)) {
83+
return false;
84+
}
7785
if (!Objects.equals(multipartUploadId, that.multipartUploadId)) {
7886
return false;
7987
}
80-
return fileLastModified.equals(that.fileLastModified);
88+
if (!Objects.equals(partSizeInBytes, that.partSizeInBytes)) {
89+
return false;
90+
}
91+
return Objects.equals(totalNumOfParts, that.totalNumOfParts);
8192
}
8293

8394
@Override
8495
public int hashCode() {
8596
int result = uploadFileRequest.hashCode();
86-
result = 31 * result + (multipartUploadId != null ? multipartUploadId.hashCode() : 0);
8797
result = 31 * result + fileLastModified.hashCode();
98+
result = 31 * result + (multipartUploadId != null ? multipartUploadId.hashCode() : 0);
99+
result = 31 * result + (partSizeInBytes != null ? partSizeInBytes.hashCode() : 0);
100+
result = 31 * result + (totalNumOfParts != null ? totalNumOfParts.hashCode() : 0);
101+
result = 31 * result + (int) (fileLength ^ (fileLength >>> 32));
88102
return result;
89103
}
90104

@@ -111,21 +125,21 @@ public long fileLength() {
111125
}
112126

113127
/**
114-
* @return
128+
* Return the part size in bytes
115129
*/
116-
public Optional<Long> partSizeInBytes() {
117-
return Optional.ofNullable(partSizeInBytes);
130+
public OptionalLong partSizeInBytes() {
131+
return partSizeInBytes == null ? OptionalLong.empty() : OptionalLong.of(partSizeInBytes);
118132
}
119133

120134
/**
121-
* @return
135+
* Return the total number of parts associated with this tranfser
122136
*/
123-
public Optional<Long> totalNumOfParts() {
124-
return Optional.ofNullable(totalNumOfParts);
137+
public OptionalLong totalNumOfParts() {
138+
return totalNumOfParts == null ? OptionalLong.empty() : OptionalLong.of(totalNumOfParts);
125139
}
126140

127141
/**
128-
* The total size of the transfer in bytes, or {@link Optional#empty()} if unknown
142+
* The multipart upload ID, or {@link Optional#empty()} if unknown
129143
*
130144
* @return the optional total size of the transfer.
131145
*/
@@ -139,9 +153,9 @@ public String toString() {
139153
.add("fileLastModified", fileLastModified)
140154
.add("multipartUploadId", multipartUploadId)
141155
.add("uploadFileRequest", uploadFileRequest)
142-
.add("fileLength", fileLength)
143-
.add("totalNumOfParts", totalNumOfParts)
144-
.add("partSizeInBytes", partSizeInBytes)
156+
.add("fileLength", fileLength)
157+
.add("totalNumOfParts", totalNumOfParts)
158+
.add("partSizeInBytes", partSizeInBytes)
145159
.build();
146160
}
147161

@@ -214,18 +228,19 @@ private static final class DefaultBuilder implements Builder {
214228
private UploadFileRequest uploadFileRequest;
215229
private Long partSizeInBytes;
216230
private Long totalNumOfParts;
217-
218231
private Instant fileLastModified;
219232
private Long fileLength;
220233

221234
private DefaultBuilder() {
222235
}
223236

224237
private DefaultBuilder(ResumableFileUpload persistableFileUpload) {
238+
this.multipartUploadId = persistableFileUpload.multipartUploadId;
225239
this.uploadFileRequest = persistableFileUpload.uploadFileRequest;
226240
this.partSizeInBytes = persistableFileUpload.partSizeInBytes;
227241
this.fileLastModified = persistableFileUpload.fileLastModified;
228242
this.totalNumOfParts = persistableFileUpload.totalNumOfParts;
243+
this.fileLength = persistableFileUpload.fileLength;
229244
}
230245

231246
@Override

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/DefaultFileUploadTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,16 @@
1717

1818
import nl.jqno.equalsverifier.EqualsVerifier;
1919
import org.junit.jupiter.api.Test;
20+
import software.amazon.awssdk.services.s3.internal.crt.S3MetaRequestPauseObservable;
2021
import software.amazon.awssdk.transfer.s3.internal.model.DefaultFileUpload;
2122

2223
public class DefaultFileUploadTest {
2324

2425
@Test
2526
public void equals_hashcode() {
2627
EqualsVerifier.forClass(DefaultFileUpload.class)
27-
.withNonnullFields("completionFuture", "progress")
28+
.withNonnullFields("completionFuture", "progress", "request", "observable", "resumableFileUpload")
29+
.withPrefabValues(S3MetaRequestPauseObservable.class, new S3MetaRequestPauseObservable(), new S3MetaRequestPauseObservable())
2830
.verify();
2931
}
3032
}

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/UploadDirectoryHelperParameterizedTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.junit.runner.RunWith;
4444
import org.junit.runners.Parameterized;
4545
import org.mockito.ArgumentCaptor;
46+
import software.amazon.awssdk.services.s3.internal.crt.S3MetaRequestPauseObservable;
4647
import software.amazon.awssdk.services.s3.model.PutObjectResponse;
4748
import software.amazon.awssdk.testutils.FileUtils;
4849
import software.amazon.awssdk.transfer.s3.internal.model.DefaultFileUpload;
@@ -298,9 +299,10 @@ private DefaultFileUpload completedUpload() {
298299
new DefaultTransferProgress(DefaultTransferProgressSnapshot.builder()
299300
.transferredBytes(0L)
300301
.build()),
301-
null,UploadFileRequest.builder()
302-
.putObjectRequest(p -> p.key("key").bucket("bucket")).source(Paths.get("test.txt"))
303-
.build());
302+
new S3MetaRequestPauseObservable(),
303+
UploadFileRequest.builder()
304+
.source(Paths.get(".")).putObjectRequest(b -> b.bucket("bucket").key("key"))
305+
.build());
304306
}
305307

306308
private Path createTestDirectory() throws IOException {

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/UploadDirectoryHelperTest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.junit.jupiter.api.Test;
4141
import org.mockito.ArgumentCaptor;
4242
import software.amazon.awssdk.core.exception.SdkClientException;
43+
import software.amazon.awssdk.services.s3.internal.crt.S3MetaRequestPauseObservable;
4344
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
4445
import software.amazon.awssdk.services.s3.model.PutObjectResponse;
4546
import software.amazon.awssdk.transfer.s3.config.TransferRequestOverrideConfiguration;
@@ -50,15 +51,10 @@
5051
import software.amazon.awssdk.transfer.s3.model.CompletedFileUpload;
5152
import software.amazon.awssdk.transfer.s3.model.DirectoryUpload;
5253
import software.amazon.awssdk.transfer.s3.model.FileUpload;
53-
import software.amazon.awssdk.transfer.s3.config.TransferRequestOverrideConfiguration;
5454
import software.amazon.awssdk.transfer.s3.model.UploadDirectoryRequest;
5555
import software.amazon.awssdk.transfer.s3.model.UploadFileRequest;
56-
import software.amazon.awssdk.transfer.s3.internal.progress.DefaultTransferProgress;
57-
import software.amazon.awssdk.transfer.s3.internal.progress.DefaultTransferProgressSnapshot;
5856
import software.amazon.awssdk.transfer.s3.progress.LoggingTransferListener;
5957
import software.amazon.awssdk.transfer.s3.progress.TransferListener;
60-
import software.amazon.awssdk.transfer.s3.model.UploadDirectoryRequest;
61-
import software.amazon.awssdk.transfer.s3.model.UploadFileRequest;
6258

6359
public class UploadDirectoryHelperTest {
6460
private static FileSystem jimfs;
@@ -224,7 +220,7 @@ private FileUpload newUpload(CompletableFuture<CompletedFileUpload> future) {
224220
new DefaultTransferProgress(DefaultTransferProgressSnapshot.builder()
225221
.transferredBytes(0L)
226222
.build()),
227-
null,
223+
new S3MetaRequestPauseObservable(),
228224
UploadFileRequest.builder()
229225
.putObjectRequest(p -> p.key("key").bucket("bucket")).source(Paths.get("test.txt"))
230226
.build());

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/model/ResumableFileUploadTest.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package software.amazon.awssdk.transfer.s3.model;
1717

1818
import static org.assertj.core.api.Assertions.assertThat;
19+
import static software.amazon.awssdk.transfer.s3.SizeConstant.MB;
1920

2021
import java.nio.file.FileSystem;
2122
import java.nio.file.Paths;
@@ -30,17 +31,21 @@ class ResumableFileUploadTest {
3031
@Test
3132
void equalsHashcode() {
3233
EqualsVerifier.forClass(ResumableFileUpload.class)
33-
.withNonnullFields("uploadFileRequest", "fileLastModified", "totalNumOfParts")
34+
.withNonnullFields("fileLength", "uploadFileRequest", "fileLastModified")
3435
.verify();
3536
}
3637

3738
@Test
3839
void toBuilder() {
39-
ResumableFileUpload fileUpload = ResumableFileUpload.builder()
40-
.multipartUploadId("1234")
41-
.uploadFileRequest(UploadFileRequest.builder().putObjectRequest(p -> p.bucket("bucket").key("key")).source(Paths.get("test")).build())
42-
.fileLastModified(Instant.now())
43-
.build();
40+
ResumableFileUpload fileUpload =
41+
ResumableFileUpload.builder()
42+
.multipartUploadId("1234")
43+
.uploadFileRequest(UploadFileRequest.builder().putObjectRequest(p -> p.bucket("bucket").key("key"
44+
)).source(Paths.get("test")).build())
45+
.fileLastModified(Instant.now())
46+
.fileLength(10L)
47+
.partSizeInBytes(10 * MB)
48+
.build();
4449

4550
assertThat(fileUpload.toBuilder().build()).isEqualTo(fileUpload);
4651
assertThat(fileUpload.toBuilder().multipartUploadId("5678").build()).isNotEqualTo(fileUpload);

services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/S3MetaRequestPauseObservable.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
import software.amazon.awssdk.annotations.SdkInternalApi;
2020
import software.amazon.awssdk.crt.s3.S3MetaRequest;
2121

22+
/**
23+
* An observable that notifies the observer {@link S3CrtAsyncHttpClient} to pause the request.
24+
*/
2225
@SdkInternalApi
2326
public class S3MetaRequestPauseObservable {
2427

@@ -36,6 +39,9 @@ public void subscribe(S3MetaRequest request) {
3639
this.request = request;
3740
}
3841

42+
/**
43+
* Pause the request
44+
*/
3945
public String pause() {
4046
return pause.apply(request);
4147
}

0 commit comments

Comments
 (0)