Skip to content

Commit 36e8a89

Browse files
Add design & decision log for Transfer Manager Progress Listeners (#2729)
* Add design & decision log for Transfer Manager Progress Listeners
1 parent 9a2f803 commit 36e8a89

File tree

2 files changed

+347
-0
lines changed

2 files changed

+347
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Decision Log for v2 Transfer Manager Progress Listeners
2+
3+
## Log Entry Template
4+
5+
**Source:** (Meeting/aside/pair programming discussion/daily standup) to (discuss/implement) X
6+
7+
**Attendees:** (names)
8+
9+
**Closed Decisions:**
10+
11+
1. Question? Decision. Justification.
12+
13+
**Open Decisions:**
14+
15+
1. (Old/Reopened/New) Question?
16+
17+
## 9/21/21
18+
19+
**Source:** Meeting to discuss implementing progress listeners for [TransferManager v2](https://github.com/aws/aws-sdk-java-v2/tree/master/docs/design/services/s3/transfermanager)
20+
21+
**Attendees:** Anna-Karin, Bennett, Dongie, John, Matt, Zoe
22+
23+
**Closed Decisions:**
24+
25+
1. **Should ExecutionListener be implemented (under the hood) as an ExecutionInterceptor?**
26+
1. We believe yes, but that would require ExecutionListener's API to inherently be a sub-set of ExecutionInterceptor,
27+
which may be a limitation. Where needed, we can consider *adding* methods to the Interceptor interface to support
28+
the Listener interface. Furthermore, we can consider migrating some parts of the metric implementation to be
29+
Listener-based.
30+
1. **Should `TransferProgress` be mutable or immutable?**
31+
1. We want to strive for the consistent v2 design tenant of immutability, but `TransferProgress` is often used in a
32+
poll-based way to check the status of a transfer. We agreed that `TransferProgress` should be immutable, but we
33+
could implement this by taking a *snapshot* of an immutable object, i.e., `TransferProgressSnapshot`.
34+
1. **What level of CRT support/integration is needed?**
35+
1. We believe that the CRT's [ResponseDataConsumer](https://github.com/awslabs/aws-crt-java/blob/main/src/main/java/s3NativeClient/com/amazonaws/s3/ResponseDataConsumer.java#L22)
36+
may be sufficient to implement the proposed TransferListener interface. Therefore we believe we can defer the
37+
implementation of ExecutionListeners until required.
38+
39+
**Open Decisions:**
40+
41+
1. **Do we need the functionality proposed in `ExecutionMode`?**
42+
1. Unknown. We may wish to reserve it only for async clients (which already have dedicated thread pools), and it may
43+
be cleaner to allow users to define their own offloading semantics. We also would need consistent with allowing
44+
users to provide async future completion, where Runnable::run would be analogous to the proposed "INLINE".
45+
Deferring this idea until we dive deeper.

0 commit comments

Comments
 (0)