Skip to content
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

Fix releasing of gc lock #2982

Merged
merged 1 commit into from Jun 8, 2022
Merged

Fix releasing of gc lock #2982

merged 1 commit into from Jun 8, 2022

Conversation

DrDaveD
Copy link
Contributor

@DrDaveD DrDaveD commented Jun 8, 2022

The new gc lock added in #2850 introduced in 2.9.1 is never getting released. This PR fixes that.

I'm afraid this bug is bad enough to require a 2.9.3 release. The tests added fail without the fix.

@cernvm-bot
Copy link
Collaborator

Can one of the admins verify this patch?

@jblomer
Copy link
Member

jblomer commented Jun 8, 2022

@cernvm-bot cloudtest

@jblomer
Copy link
Member

jblomer commented Jun 8, 2022

Thanks for the patch! Just curious, how did you find out?

After the merge, I can cherry-pick the commit in the 2.9 branch and we can prepare a 2.9.3 release.

@cernvm-bot
Copy link
Collaborator

building for cloudtests finished: SUCCESS
https://lcgapp-services.cern.ch/cvmfs-jenkins/job/CvmfsFullBuildDocker/3386/

@cernvm-bot
Copy link
Collaborator

@DrDaveD
Copy link
Contributor Author

DrDaveD commented Jun 8, 2022

On the Nebraska stratum one where I am running cvmfs_server check -a I wanted to redo a check on one of the repositories after restoring some missing catalogs. When I did that it said it was waiting for garbage collection to complete but I checked and there was no garbage collection running. While investigating that I found that many repositories still had that lock and I looked at the code to find out how that could happen.

I think that systems that only run cvmfs_server gc -a will not be likely to notice this because each run is a different process and the lock will get overridden because the previous process is no longer running. The process ID that goes into the lock file turns out to be the gc -a parent process, not each subprocess (because $$ stays at the parent process even inside a parentheses-created subshell) so there was a long running gc -a that was making all the locks be seen as valid, even when gc wasn't running on that particular repository.

@radupopescu
Copy link
Contributor

radupopescu commented Jun 8, 2022

I don't think we can release this as 2.9.3, as we recently pushed a nightly build tagged 2.10.0-0.384 to the cvmfs-testing repositories. We can, however, also publish this to the testing repo as a new nightly build.

@DrDaveD
Copy link
Contributor Author

DrDaveD commented Jun 8, 2022

You're saying you can't also release a 2.9.3 to the testing repository? Even if there's a newer one such that people can't install it with just yum install cvmfs-server, they could still install it when asking for a particular version number.

@jblomer jblomer merged commit 9dd5c61 into cvmfs:devel Jun 8, 2022
@jblomer
Copy link
Member

jblomer commented Jun 8, 2022

It's also backported to the 2.9 branch

@radupopescu
Copy link
Contributor

@DrDaveD Ok, in this case, if manually installing version 2.9.3 is useful, we can release it.

@DrDaveD DrDaveD deleted the release-gc-lock branch June 13, 2022 20:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants