THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||||
---|---|---|---|---|
| ||||
public abstract class AsyncSinkWriter<InputT, RequestEntryT extends Serializable> implements SinkWriter<InputT, Collection<CompletableFuture<?>>, Collection<RequestEntryT>> { /** * This method specifies how to persist buffered request entries into the * destination. It is implemented when support for a new destination is * added. * <p> * The method is invoked with a set of request entries according to the * buffering hints (and the valid limits of the destination). The logic then * needs to create and execute the request against the destination (ideally * by batching together multiple request entries to increase efficiency). * The logic also needs to identify individual request entries that were not * persisted successfully and resubmit them using the {@code * requeueFailedRequestEntry} method. * <p> * The method returns a future that indicates, once completed, that allDuring checkpointing, the sink needs to ensure that there are no * outstanding in-flight requests. * * @param requestEntries a set of request entries that should be sent to the * destination * request@param entriesrequestResult that havea beenResultFuture passedneeds to thebe methodcompleted ononce invocation haveall * either been successfully persisted in the destination or have been request * re-queued. * <p>entries that have been passed to the method * During checkpointing, the sink needs to ensure that there are no * outstanding in-flight requests. Ie, thaton allinvocation futureshave returnedeither bybeen thissuccessfully * method are completed. * * @param requestEntries a set of requests that should be sentpersisted toin the APIdestination or have been * endpointre-queued * @return a future that completes when all request entries have been * successfully persisted to the API or were re-queued */ protected abstract CompletableFuture<?>void submitRequestEntries(List<RequestEntryT> requestEntries, ResultFuture<?> requestResult); ... } |
Internally, the AsyncSinkWriter
buffers RequestEntryT
s and invokes the submitRequestEntries
method with a set of RequestEntryT
s according to user specified buffering hints. The AsyncSinkWriter
also tracks in-flight requests, ie, calls to the API that have been sent but not completed. During a commit, the sink enforces that all in-flight requests have completed and currently buffered RequestEntryT
s are persisted in the application state snapshot.
...