|
| 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