Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Async Reducer Execution (Outbox/Inbox)
Adds a message-driven execution model for reducers with idempotency and transactional guarantees.
Maybe start from looking at smoketest
Outbox Macro
outboxmacros mark tables that emit reducer calls.on_resultcallback per table (not per row, this difffers from proposal) - discussionunstablefeature flag.System Tables
ST_OUTBOUND_MSGmsg_idper sender.IdcActorto issue remote calls with strictly increasingmsg_id.ST_INBOUND_MSGmsg_idper sender along with reducer resultmsg_idis already present, the result is returned without executing the reducer.msg_idolder than the latest seen for a sender are droppedActor
IDCActorhandles execution.ST_OUTBOUND_MSGon_resultreducer and delete entry fromST_OUTBOUND_MSGin same transaction.SchedulerActrorAPI
call_from_database(database_identity, msg_id, params)msg_idnever decrease for same senderdatabase_identityelse API returnsInvalidRequest.StatusCode::UNPROCESSABLE_ENTITY, which caller shouln't retry.IdcActor.API and ABI breaking changes
unstablefeature flag.Expected complexity level and risk
4/5, Exactly once semantic require closer look and can be tricky.
Testing
New smoketests.