Skip to content

[Cache] Redis garbage collector #50423

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

Open
wants to merge 3 commits into
base: 7.4
Choose a base branch
from

Conversation

zoidbergx
Copy link

@zoidbergx zoidbergx commented May 25, 2023

Q A
Branch? 6.4
Bug fix? no
New feature? yes
Deprecations? no
Tickets Fix #47835
License MIT
Doc PR

added a garbage collector for Redis to remove Tags which have no references, see #47835 for further details

@carsonbot
Copy link

Hey!

I see that this is your first PR. That is great! Welcome!

Symfony has a contribution guide which I suggest you to read.

In short:

  • Always add tests
  • Keep backward compatibility (see https://symfony.com/bc).
  • Bug fixes must be submitted against the lowest maintained branch where they apply (see https://symfony.com/releases)
  • Features and deprecations must be submitted against the 6.4 branch.

Review the GitHub status checks of your pull request and try to solve the reported issues. If some tests are failing, try to see if they are failing because of this change.

When two Symfony core team members approve this change, it will be merged and you will become an official Symfony contributor!
If this PR is merged in a lower version branch, it will be merged up to all maintained branches within a few days.

I am going to sit back now and wait for the reviews.

Cheers!

Carsonbot

@carsonbot
Copy link

It looks like you unchecked the "Allow edits from maintainer" box. That is fine, but please note that if you have multiple commits, you'll need to squash your commits into one before this can be merged. Or, you can check the "Allow edits from maintainers" box and the maintainer can squash for you.

Cheers!

Carsonbot

@stof
Copy link
Member

stof commented May 25, 2023

@zoidbergx it looks like you merged your non-rebased remote branch instead of forcing the push after the rebase was done, which means your PR contains duplicate commits in its history and a merge commit.

@stof
Copy link
Member

stof commented May 25, 2023

bug fix: yes in the description looks wrong to me (in general, your change cannot be both a bug fix and a new feature)

@das-peter das-peter force-pushed the redis-garbage-collector branch from 3f85db9 to 88258e4 Compare May 25, 2023 10:09
@zoidbergx
Copy link
Author

zoidbergx commented May 25, 2023

@stof > bug fix: yes in the description looks wrong to me (in general, your change cannot be both a bug fix and a new feature)

yeah, for me it was a little bit of both as the current implementation could lead into a buggy cache but it may be more like a feature to have a garbage collector for Redis

@das-peter das-peter force-pushed the redis-garbage-collector branch from 88258e4 to fd3cfe5 Compare May 25, 2023 10:12
@nicolas-grekas nicolas-grekas added Cache and removed Bug labels May 29, 2023
@carsonbot carsonbot changed the title Redis garbage collector [Cache] Redis garbage collector May 29, 2023
apply suggestion

Co-authored-by: Alexander M. Turek <me@derrabus.de>
local tagPrefix = string.gsub(KEYS[1], prefix, "")
return redis.call('SCAN', cursor, 'COUNT', 5000, 'MATCH', '*' .. tagPrefix .. '*', 'TYPE', 'set')
EOLUA;
$cursor = null;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be 0, null leads to something like: ERR invalid cursor script: 5880028e0d564320af1c1aabb595c9985f5a1a04, on @user_script:5.
This is used in SCAN which expects 0 to start and returns 0 when the iteration is finished: https://redis.io/docs/latest/commands/scan/
Unfortunately I can't find older docs and have to assume this is backward compatible.

// cache items.
foreach ($tagKeys as $tagKey) {
$tagKey = substr($tagKey, \strlen($prefix));
$cursor = null;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be 0, null leads to something like: ERR invalid cursor script: 5880028e0d564320af1c1aabb595c9985f5a1a04, on @user_script:5.
This is used in SCAN which expects 0 to start and returns 0 when the iteration is finished: https://redis.io/docs/latest/commands/scan/
Unfortunately I can't find older docs and have to assume this is backward compatible.

@fabpot fabpot modified the milestones: 7.2, 7.3 Nov 20, 2024
@fabpot fabpot modified the milestones: 7.3, 7.4 May 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement PrunableInterface on RedisTagAwareAdapter
8 participants