-
-
Notifications
You must be signed in to change notification settings - Fork 944
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
kombu 4.4.0 arguably includes a breaking change and can break user's software. #1016
Comments
@thedrow It is fine to close this issue as won't fix. However, I hope that in the future the celery and kombu maintainers work to ensure that dependency management changes are done in a more considered fashion. I note that there was no 4.2.x release of celery that contained the change that was related to redis version pinning but having one would have meant that users may have needed to pin the version for redis redis themselves. (Then later arguably when the issue was fixed in kombu, you could have released celery 4.2.3 that removed the redis version pinning). Based on what you have said about not following sem-ver, it would seem that you want people to pin specific versions of kombu when using celery. That's something that I will be doing in the future as kombu changes have included breaking changes outside of major version releases. |
This kind of behavior is getting annoying, there was a similarly breaking change not too long ago, and every time this happens you are forcing people who pin a specific celery version (but rely on celery specifying proper requirements e.g. for kombu) to make a new release of their package. And especially with a library as common as redis-py it's very likely that an application requires a specific version of the library as well as a specific celery version. |
@thedrow
I still have the issues reported above by others (although intermittently, NOT systematically), i.e.:
Please advice on the right combination of libraries that guarantees a stable behavior for celery used in conjunction with Redis. This is probably critical for many production applications everywhere. |
I had these issues when updating kombu (not celery). I have celery 4.2.1 with kombu 4.3.0 and redis 2.10.6 working fine When updating to kombu 4.4.0 and redis 3.2.0 (keeping celery 4.2.1) I encountered these two issues too, intermittently as well: Error 110 (connection timed out) #1019 Error 32 (broken pipe) #1018 I included stack traces in the tickets |
It seems unfortunate that "celery 5" was used way before release. Version numbers should only be allocated when the product is about to be released, and this problem would not have occurred. Once I encountered this same problem with a piece of my own software, and found that I had to skip the major version that was still under development (and indefinitely stalled due to sudden and unexpected lack of resources). If I ever continued development with this old version we would have to renumber it again before releasing it. Perhaps in future a code name could be used instead? It also highlights that semver is different from traditional versioning. Traditionally the major version number is incremented to indicate major changes in design or approach. Where as semver uses it to indicate breaking changes. A major redesign may not necessarily have breaking changes if it continues to be compatible with the previous API. Semver very much helps with maintaining dependencies when you have a large number of dependencies. As is common with typically Django software. You don't really want to have to look up the release notes of every minor or patch update of every piece of software in case it might break something. That is the purpose of the version number, to give some clues when an update needs special care. (having said that you still need to beware of updates that could contain malicious code: e.g. dominictarr/event-stream#116) |
Thanks @alexandre-paroissien - I am pinning this configuration and hoping for the best. |
A solution would be for people to start making their builds reproducible. Pipfile is nice to help with that. |
User's of kombu who were using it with celery 4.2.x previously had to pin the version of python redis to a version < 3. When kombu version 4.4.0 was released, those who had pinned redis to a version < 3, because of celery/celery#5175 , found their software/deployments broken. I strongly suggest in the interests of not causing unintentional breakage to users of celery & kombu to follow semantic versioning and to avoid making breaking changes like was done (requiring a version of redis >= 3.2.0).
Additionally, the celery 4.2.x branch still pins the version of redis to versions below < 3, see https://github.com/celery/celery/blob/4.2/requirements/extras/redis.txt .
The text was updated successfully, but these errors were encountered: