Skip to content

Revisit and embrace concurrency control, scheduled jobs, and other extensions of ActiveJob #255

Description

@bensheldon

I attended RailsConf 2021 and in the discussions I had with other ActiveJob adapter maintainers and users, I'm re-considering my prior objections to extending ActiveJob.

  • I now perceive ActiveJob core development to be more conservative than previously/wishfully, and that ActiveJob's interface/capabilities will continue to trail (rather than lead) that of the adapter ecosystem.
  • Other adapters seem reluctant to add differentiating features (like concurrency control) for technical reasons that don't apply to GoodJob.

I also am inspired by Stephen Baker's History of RSpec:

And finally, I regret putting distance between myself and the thing I’d created. I think I could have built more useful tools in the space, and helped more people in bigger ways if I was a bit more accepting of the fact that people were using a thing I created for purposes other than what I intended it for. I am sorry for not helping more people.

I still believe that opinionated product-management is core to successful open-source work (technically and humanely), but I also have heard from people that there are differentiating ActiveJob extensions that would help them if incorporated into GoodJob. I am still fearful that by extending ActiveJob's interface we will make mistakes that will be painful to correct... but optimistically, those mistakes can be ours to make together.

Two clear requested capabilities are:

  1. Concurrency controls: Custom advisory locks to prevent certain jobs from being worked on concurrently? #206, Question about locking internals #212.
  2. Scheduled Jobs: Add the ability to schedule repeating / recurring / cron-like jobs #53, Add the ability to schedule recurring jobs #75, support cronjob style for jobs also #129.

I will re-open a representative issue for further discussion and design of those capabilities.

Please use this Issue/thread if you have thoughts about this decision, or if there are other capabilities/features that you think would be helpful additions to GoodJob in light of this change in approach.

Thank you for being on this journey with me and GoodJob!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions