Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implementation strategy: two new report aggregation states, HelperInitProcessing & HelperContinueProcessing, are introduced. These states represent a report aggregation which has received an initialization/continuation message from the Leader, but has not yet processed that message (and, in the case of continuation, the existing state) into the next HelperInit/HelperContinue state. The aggregation initialization/continuation endpoints now always construct these new Processing states as part of initial request handling. In the synchronous aggregation case, the Processing states are processed into HelperInit/HelperContinue states before being written back to durable storage. In the asynchronous aggregation case, the Processing states are written back to storage immediately, and are later processed by the aggregation job driver into the next HelperInit/HelperContinue state. An upshot of this is that a Helper deployment performing asynchronous aggregation MUST now run an aggregation job driver. The implementation is complete as far as the protocol is concerned. However, there is no logic yet to implement setting the Retry-After header, which is spec-optional but likely important to a production deployment. To facilitate testing, a new aggregation job driver parameter is introduced which controls how quickly the Leader should poll for outstanding asynchronous aggregaiton jobs if the Retry-After header is not set.
- Loading branch information