-
Notifications
You must be signed in to change notification settings - Fork 556
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Iterate over Side effects #9723
Comments
Summary of DiscussionThese are the side effects currently produced by the engine:
Out of those, the following side effects need to happen after the transaction is committed:
For the other side effects, they may be run immediately during processing. It is expected that the engine will be able to deal with any scenarios that might arise, if the side effect got executed immediately, but then the commit failed. Agreed Upon Design
|
Question from @npepinpe after POC:
As you can see here #9723 (comment) we will provide with #9730 an way to run certain jobs/tasks after the commit of the current transaction/processing. This means we will be able to handle such issue as well. |
Hey Team 👋 as written here https://camunda.slack.com/archives/C03HW6MG3Q9/p1661498640887859 I wanted to discuss this topic again. I think it becomes more important to help also to resolve issues like #10240 (Sorry I have only read the issue partially but I think it is related) For people who can access the slack message:
Description: As we can see in our discussion and outcome here is that we wanted to replace the Side-Effects with our When implementing the ProcessingScheduleService and certain guarantees, like running only after committed transaction it felt quite hacky and somehow not clean/optimal. In order to achieve this property we need to reschedule tasks, if currently processing is going on, which has of course certain side effects. Like jobs are rescheduled maybe multiple times etc.. Right now we don't really use it/need that guarantee. My question is: Do we want to keep the PostCommitTasks as they are right now, which already guarantee us that they are executed AFTER commiting and remove the guarantee from the SchedulingService? Benefit:
Happy to get feedback @npepinpe @deepthidevaki (since you were part of the #10240 discussion) and from @saig0 @korthout (since it is up to you whether you are fine with more lax guarantees of the processing schedule service and are ok with using the PostCommitTasks). |
Yes. 👍 As far as I can see, the We may see already issues with the guarantee of the |
Thanks Phil for the feedback 🙇♂️ then I will remove this feature. |
Description
Part of #9600
Side effects have been added in the early days when we had processing and reprocessing. In order to not redo certain actions, like sending requests or responses on reprocessing (all records have been reprocessed before) we introduced something we called SideEffects. The side effects have been executed only after commands have been processed.
After we migrated to "real" event stream processing only commands are processed (where side effects happen) and events are applied directly. On restart we reapply the events, so no commands are "reprocessed". This means we in general don't need that for the case of preventing sending requests or responses again.
One use case, which we might still have/need is to send requests / response only if the processing is successful and done. We need to clarify this.
Todo:
Additional Information
Take a look at the POC #9602
The text was updated successfully, but these errors were encountered: