Skip to content
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

Problems Clustering #1

Open
julianoksoares opened this issue Jun 22, 2018 · 4 comments
Open

Problems Clustering #1

julianoksoares opened this issue Jun 22, 2018 · 4 comments

Comments

@julianoksoares
Copy link

We are studying the "muprocessmanage" framework for a project where the requirements for using the SAGA concept are needed. When used in a single instance of a microservice the behavior is as expected. But when other instances of the same microservice are started, sharing the same database (Postgres) eventually has more than one undo execution in the scenario where a problem occurred when executing the backward method.
In this scenario we have several instances of the same microservice, each one starting its "MuProcessManager". Is it possible to use the framework in this use case? Is it possible to use Quartz in cluster mode as a scheduler to avoid this problem?

@FrodeRanders
Copy link
Owner

FrodeRanders commented Jun 23, 2018 via email

@FrodeRanders
Copy link
Owner

FrodeRanders commented Jun 23, 2018 via email

@FrodeRanders
Copy link
Owner

FrodeRanders commented Jun 23, 2018

That said, I am still interested in exactly what problems you saw when running multiple instances of MuProcessManager -- all with the background activities running -- since I was particularly looking out for this :)

At heavy load, which may happen immediately after startup -- if there is a lot of stuff laying around from earlier processes -- the thread pool running tasks may be momentarily overloaded (which is fine per se), in which case we want to postpone subsequent asynchronous tasks until the thread pool is catching up again. I think this should be compatible with Quartz on a per node basis, but I'll have to look into it. Thanks for the suggestion!

@julianoksoares
Copy link
Author

Thanks for the feedback!!
The problem actually only occurs when you need to perform asynchronous undo tasks. In this case, each MuProcessManager executes the same undo call by placing multiple calls to the undo task for the same correlationID.
I will try to validate the suggestion to use only one instance with the call to the "start", for this it will be necessary to create a centralized control to avoid that other instances are initiated with this command.
In any case, it would be interesting if the component itself took care of this, preventing parallel controls from being performed.
For now I thank you immensely for your attention.
Regards,

Juliano

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants