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
Allow Job Excution to be pin to a cluster node #344
Comments
Thank you for opening that feature request. I'd implement this slightly different but basically this is the functionality that I need, therefore What I'd do is
This will allow to declare a job should run on one host, on a group of hosts, preferrably on some host or exclude specific hosts, meaning you can set affinity, anti-affinity or a bias. |
Even better might be to
|
Hi @HiranChaudhuri, The job+ triggers itself already has key, and these can be the labels. I think what we need is be able to specify keys to be pin/bound to a threadPool to be process. This will solve this problem and require minimum changes. |
Sound good for me. So I am looking forward for the next release... :-) |
Hello @HiranChaudhuri. As @zemian says we have had similar requirements described in #175; maybe a bit stronger as our customers require setting also thread limits per job types. The implementation I've made seems to work quite well in production for almost two years: https://github.com/Evolveum/quartz/tree/quartz-2.3.0.e2 (except for occasional https://jira.evolveum.com/browse/MID-4558 that looks harmless but should be resolved anyway, eventually). |
Hi all, we are interested in this feature too. Thanks and best regards. |
@mattiacirioloWS I am not quite sure. The reasons are:
|
With so many good ideas (some of which contradict each other), would not not make sense to implement a strategy pattern (https://en.wikipedia.org/wiki/Strategy_pattern) and provide some default algorithms? That way everyone could easily use what is provided or override for further customization. |
Strategy pattern is generally a good idea, although I am not quite sure it is applicable here. The method of "pinning" a job to a given node is quite dependent on appropriate DB representation. Current representation (in Evolveum-provided work) is using |
Thanks for your reply, @mederly Thank you so much for support 👍 |
Hmm, you mention DB representation which directly resolves into the available columns. I do not believe every strategy would have to have a representation in the scheduler's data model. Leave that to the implementation of the strategy. |
I do not mind too much if the logic goes into the Scheduler or Trigger class. However I never really understood the difference of JobListener.jobExecutionVetoed and TriggerListener.vetoJobExecution. So far I just thought once a job is vetoed the trigger event is lost - it will not be picked up by another Scheduler in the same cluster. |
Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward? This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
It would be nice to able to configure certain specific jobs to allows run in a specific host name in cluster mode.
Currently users would have to write this logic into their job implementation to skip the work if host names match to some known list.
Other work around is not to use cluster env and place jobs into individual standalone schedulers.
The text was updated successfully, but these errors were encountered: