-
-
Notifications
You must be signed in to change notification settings - Fork 6.8k
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
Update sidekiq to version 7+ #25988
base: main
Are you sure you want to change the base?
Update sidekiq to version 7+ #25988
Conversation
I started researching this yesterday and the big blocker is We need a clear migration path to avoid phantom jobs and will be hard to properly implement and/or document. Some details here: https://www.mikeperham.com/2017/04/10/migrating-from-redis-namespace/ |
Another potential issue here is the removal of |
Agreed - I think this will actually be very straightforward code-wise (very few changes), slightly more complicated dependency-wise (more research needed to ensure we have upgraded/dropped appropriately) ... but the most complexity/planning will be in the upgrade/migration/documentation area. |
Sidekiq switched from the
|
The redis question is a bit more complex. Currently we do not support complex Redis setups, for example with TLS (mandatory for some hosted Redis offerings) or distributed Redis setups (Redis Sentinel or Redis Cluster), as they are not supported by There is more context here: If we are starting to touch Redis's handling, we most probably want to ensure we move to libraries supporting those features, as they are needed for many setups (and we will probably need clustering quite soon for mastodon.social) |
Ah, thanks for that background, that all makes sense re: future needs. So I think the requirement there is that at minimum we should make sure that a sidekiq upgrade does not reduce our ability to get onto distributed/clustered redis setup in near future; and if possible, adopts libraries that makes that easier. I'll keep that in mind while thinking about the migration + deps here. |
This pull request has merge conflicts that must be resolved before it can be merged. |
507a617
to
f9c9db4
Compare
This pull request has resolved merge conflicts and is ready for review. |
f9c9db4
to
8dae97c
Compare
This pull request has merge conflicts that must be resolved before it can be merged. |
8dae97c
to
195dc5c
Compare
This pull request has resolved merge conflicts and is ready for review. |
This pull request has merge conflicts that must be resolved before it can be merged. |
195dc5c
to
c8601ce
Compare
74aa03a
to
b889d04
Compare
The main task here seems to be the migration path for servers with a namespaced Redis configuration. This seems doable, but will require an extensive documentation about the steps. What could work is:
|
b889d04
to
7d95113
Compare
An issue with using Redis databases: redis pub/sub (used for streaming) does not support databases: https://redis.io/docs/interact/pubsub/#database--scoping The documentation advises to add a scope in the front of the keys, similar to the namespacing we support at the moment |
28c45ee
to
f626e5b
Compare
This pull request has resolved merge conflicts and is ready for review. |
8fd2d1e
to
0f631b4
Compare
Rebased, updated sidekiq to 7.3.0 |
As discussed above, the big issue here is migration for people using namespaces. We definitely want to upgrade to Sidekiq 7, but we need to have a migration path for those servers. The approach I discussed above does not really work because you would loose your retries. This would require downtime but I dont see how we can avoid this. As this is independent from this PR (but a pre-requisite), this should probably be implemented in a new PR, which would then unlock this one. |
This pull request has merge conflicts that must be resolved before it can be merged. |
0f631b4
to
90ecdfb
Compare
This pull request has resolved merge conflicts and is ready for review. |
As of now I just have the commits necessary to resolve the dep update, and get rid of errors/warnings after the update. Have done basically zero QA here.
Opening as draft to work through what's needed. Will leave comments as I research.