Skip to content

[RFC] Hot reload channels configuration (size, pause, ...) stored in DB #765

Description

@guewen

Is your feature request related to a problem?

The configuration of the channels is stored in a configuration file/environment variable and need a restart of the jobrunner to be applied. This proposition aims to bring the possibility to change the configuration on the fly from the UI, which also offers new options such as pausing/resuming a channel.

Describe the solution you'd like

Add fields on queue.job.channel: capacity, sequential, throttle, running (boolean).

In the jobrunner startup, read configuration from model queue.job.channel, fallback on the current implementation based on file/environment variable.

In the queue.job.channel model, when one of the configuration field that concerns the jobrunner is changed, send a pg_notify in the same postgres channel (queue_job), but instead of a job uuid, send reload.

In the Jobrunner, when the payload is reload, go through a cycle close databases/replace the channel manager by a fresh one/configure channels/initialize databases (maybe not necessary to close/initialize database but we have to go through the steps to load all pending jobs in the channels).

Add the "paused" support in the Channel:

  • New is_paused=False parameter in Channel
  • A method is_paused() returns True if the current channel or any parent is paused
  • has_capacity() returns False if is_paused() returns True

Describe alternatives you've considered

/

Additional context

The cycle to update the channels can probably be optimized to prevent reloading all at once, but changes on the configuration should be are enough not to be a problem. Maybe if the only changes are in pause/resume, we can change the channels in place instead of recreating all the channels.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions