quantum-core icon indicating copy to clipboard operation
quantum-core copied to clipboard

multiple apps in libcluster, quantum does not identifies which node to select

Open marinakr opened this issue 1 year ago • 2 comments

Hi there, I have few applications running in cluster which able to call each other Assume I have apps api-server, intergation-server I have quantum used in app intergation-server I have few nodes of api-server and few nodes intergation-server in intergation-server config, I have settings in config

config :intergation-server, IntergationServer.Scheduler,
timeout: :infinity,
  overlap: false,
  global: true,
  jobs: [
  {"1 * * * *", ... } <- Every hour 
  ...
 ]

Nodes visible in :intergation-server:

Node.self
:"app@**.**.**.**1"
iex([email protected])7> Node.list
[
:"app@**.**.**.**2"  # <- node of :intergation-server
:"app@**-**-**-***.api.pod.cluster.local", # <- node of :api-server
 :"app@**-**-**-***.api.pod.cluster.local", # <- node of :api-server
 :"app@**-**-**-***.api.pod.cluster.local" # <- node of :api-server
 ]

I can see job (for application intergation-server) is triggering once in few hours, I assume nodes of another application (api-server) included in when Quantum.RunStrategy.Random select node to run

Node list gets all nodes available: https://github.com/quantum-elixir/quantum-core/blob/main/lib/quantum/run_strategy/random.ex#L46

marinakr avatar Mar 05 '24 12:03 marinakr

That is correct. We can’t differentiate the nodes.

If you have a good idea how to do that, please open a PR. Otherwise you‘ll have to implement a custom strategy for your project that chooses from the correct nodes.

Btw: The option global no longer exists.

maennchen avatar Mar 05 '24 18:03 maennchen

I ll add PR (implemented custom strategy, will add PR in process how to do it in Random) global should be removed from documentation in this case

marinakr avatar Mar 05 '24 18:03 marinakr