-
Notifications
You must be signed in to change notification settings - Fork 197
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
[M] - Bodhi could use a task working system #2851
Comments
Because this requires a significant deployment change, I'm marking it as backwards incompatible. |
Celery is very much field-tested and now there's a RabbitMQ instance in prod to use it with. I don't think there's anything close in terms of adoption, and it's always good for onboarding to use something well known. |
@abompard The pulp team has had a number of issues with Celery with RabbitMQ. They've switched to RQ for this reason: https://pulpproject.org/2018/05/08/pulp3-moving-to-rq/ |
Interesting read, thanks. Any opinion on that @bowlofeggs ? |
As a @pulp engineer (hi @bowlofeggs!), we've had a lot of problems with celery from deadlocking to memory consumption problems. I feel like the project has gone downhill since ask left. We've been unable to upgrade due to regressions (e.g. celery/celery#3802). We've tried looking into fixing some of the issues ourselves but the codebase is very hard to understand and read. We've started using @rq in Pulp 3 since it seems more lightweight. Now granted we were using celery in ways that you probably won't be (e.g. with qpid) so your experience may differ and also, we haven't really tested rq in a production setting yet. |
@daviddavis described it well. Celery is very powerful but is also incredibly complex, and difficult to debug. It also feels under-maintained for the size, complexity, and scope of the project, with issues and pull requests that remain open for months and not nearly enough bugfix releases as those issues do get resolved. RQ is a dramatically simpler library with more straightforwards code, which does have some downsides, but ones which are acceptable to us. Of course, depending on what features of Celery you do or don't use you may have a better experience than we did, and if you've already got a RabbitMQ instance and not a Redis instance perhaps the operational requirements would be lesser with Celery. It's difficult to make broad judgements especially when your use case may differ from ours. |
Yeah I actually used to work on Pulp, and was the lead engineer on the project to switch Pulp to use Celery all those years ago. Here are a few of my thoughts:
|
For what it's worth, we already use celery on at least one other infra product (fmn, which has tons of problems, but Celery isn't one of them). Yeah, Celery code isn't what I'd write. Sure, it occasionally has regressions. There aren't any projects under active development that don't. As for issue 3802 specifically, I don't see what the big deal is, tasks should be idempotent anyway since exactly-once delivery isn't something AMQP (or Redis AFAIK) offers. |
ScopeAllow bodhi to be use with celery and replace existing tasks with celery tasks: We can reuse the RabbitMQ broker available for fedora-messaging. |
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]> Signed-off-by: Michal Konečný <[email protected]>
Fixes: fedora-infra#2851 Signed-off-by: Aurélien Bompard <[email protected]> Signed-off-by: Michal Konečný <[email protected]>
Bodhi currently uses some fedmsg consumers to perform background tasks. One problem with this is that fedmsg-hub doesn't have a retry mechanism like Celery does. It also doesn't have a queuing mechanism to allow fanning work out to a pool of workers. I think Celery is likely a decent choice for a system, but it might be worth doing a survey of competing technologies as well.
This should help increase Bodhi's reliability in certain areas, such as managing Bugzilla tickets. This week we've had a lot of trouble with Bodhi not altering the states on Bugzilla tickets because Bugzilla's API has been flapping and Bodhi does not have a mechanism to retry later if a BZ update fails.
The text was updated successfully, but these errors were encountered: