1# Decision Log for SDK V2 Waiters 2 3Note: The decision log process was implemented late in this project, so decisions earlier than 9/22/20 are not included 4below. 5 6## Log Entry Template 7 8**Source:** (Meeting/aside/pair programming discussion/daily standup) to (discuss/implement) X 9 10**Attendees:** Anna-Karin, Ben, Dongie, Irene, Matt, Nico, Vinod, John, Zoe 11 12**Closed Decisions:** 13 141. Question? Decision. Justification. 15 16**Open Decisions:** 17 181. (Old/Reopened/New) Question? 19 20## 9/22/20 21 22**Source:** Meeting to review API surface-area of the waiters implementation https://github.com/aws/aws-sdk-java-v2/tree/waiters-development 23 24**Attendees:** Anna-Karin, Ben, Dongie, John, Matt, Nico, Vinod, Zoe 25 26**Closed Decisions:** 27 281. Should we change the default `ScheduledExecutorService` core number? Yes, it should be changed to 1 because it's only used to schedule attempts and 5 seems to be a lot. 292. Should we relax the validation of `DynamodbEnhancedClient#Builder` and update `DynamodbEnhancedClient.builder().build()` to create a default SDK client? Yes, because `DynamodbEnhancedClient.builder().build` should be equivalent to `DynamodbEnhancedClient.create()` 303. Should we make the generic `Waiter` non-public? No, because it is essentially a protected API and has to be backwards-compatible any way. In addition, customers can benefit from it 31when service waiters are not available. 324. Should we create a union type `ResponseOrException`? Yes, because it clearly indicates response and exception are mutually exclusive and only one is present. We should keep the naming `ResponseOrException` because it's intuitive and descriptive. 335. Should we rename `WaiterResponse#responseOrExecption`? Yes, we should rename it to `WaiterResponse#matched` because it has the most votes compared with other options: `matchedResponse`, `matchedResult`, `matchedValue` 346. Should we rename `{Service}Waiter.Builder#executorService`? Yes, we should rename it to `{Service}Waiter.Builder#scheduledExecutorService` to be more clear it's a `ScheduledExecutorService` 357. Should we rename `Waiter.Builder#pollingStrategy`? Yes, we should rename it to `Waiter.Builder#waiterOverrideConfiguration` so that we can easily add more configurations if needed. All configs under `WaiterOverrideConfiguration` should have default values to be consistent with `ClientOverrideConfiguration` 368. Should we support per request waiter configuration override? Yes, it's a reasonable feature that we should support by creating an overloaded method which takes a `WaiterOverrideConfiguration` parameter to allow request-level config override for every waiter operation, eg: `DynamodbWaiter#waitUntilTableExists(DescribeTableRequest, WaiterOverrideConfiguration)`? Yes, 37 38**Open Decisions:** 39 40None