Add cop to restrict Sidekiq.redis and Gitlab::Redis::Queues
Description of the proposal
This MR restricts the use of general usage Sidekiq.redis
in application. The permitted use-cases are for migration and admin operations. Interactions with sidekiq should be done through Sidekiq APIs (migration/admin only) or .perform_{async/in}
or bulk variants in non-migration/admin logic rather than directly sending commands to redis.
See gitlab-com/gl-infra/scalability#1939
New cop rule: Refrain from directly using Sidekiq.redis unless for migration and admin operations.
Check-list
-
Make sure this MR enables a static analysis check rule for new usage but ignores current offenses. -
Mention this proposal in the relevant Slack channels (e.g. #development
,#backend
,#frontend
). -
If there is a choice to make between two potential styles, set up an emoji vote in the MR: - CHOICE_A:
🅰 - CHOICE_B:
🅱 - Vote for both choices, so they are visible to others.
- CHOICE_A:
-
The MR doesn't have significant objections, and is getting a majority of 👍 vs👎 (remember that we don't need to reach a consensus). -
(If applicable) One style is getting a majority of vote (compared to the other choice). -
(If applicable) Update the MR with the chosen style. -
Create a follow-up issue to fix the current offenses as a separate iteration: ISSUE_LINK -
Follow the review process as usual. -
Once approved and merged by a maintainer, mention it again: -
In the relevant Slack channels (e.g. #development
,#backend
,#frontend
). -
(Optional depending on the impact of the change) In the Engineering Week in Review.
-
Edited by Sylvester Chin