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

quincy: mds/PurgeQueue: don't consider filer_max_purge_ops when _calculate_ops #49655

Merged
merged 1 commit into from Mar 2, 2023

Conversation

dparmar18
Copy link
Contributor

backport tracker: https://tracker.ceph.com/issues/58253


backport of #48786
parent tracker: https://tracker.ceph.com/issues/58008

Contribution Guidelines

Checklist

  • Tracker (select at least one)
    • References tracker ticket
    • Very recent bug; references commit where it was introduced
    • New feature (ticket optional)
    • Doc update (no ticket needed)
    • Code cleanup (no ticket needed)
  • Component impact
    • Affects Dashboard, opened tracker ticket
    • Affects Orchestrator, opened tracker ticket
    • No impact that needs to be tracked
  • Documentation (select at least one)
    • Updates relevant documentation
    • No doc update is appropriate
  • Tests (select at least one)
Show available Jenkins commands
  • jenkins retest this please
  • jenkins test classic perf
  • jenkins test crimson perf
  • jenkins test signed
  • jenkins test make check
  • jenkins test make check arm64
  • jenkins test submodules
  • jenkins test dashboard
  • jenkins test dashboard cephadm
  • jenkins test api
  • jenkins test docs
  • jenkins render docs
  • jenkins test ceph-volume all
  • jenkins test ceph-volume tox
  • jenkins test windows

_calculate_ops relying on a config which can be modified on the fly will cause a bug. e.g.
1. A file has 20 objects and filer_max_purge_ops config was 10.
2. calling PurgeQueue::_execute_item and _calculate_ops returns 10, so ops_in_flight add 10.
3. adjust filer_max_purge_ops to 20 on the fly
4. calling PurgeQueue::_execute_item_complete and _calculate_ops returns 20, so ops_in_flight dec 20.
5. since ops_in_flight is uint64, this cause an overflow which makes ops_in_flight far more
greater than max_purge_ops and can't go back to a reasonable value.

filer_max_purge_ops will still work when _do_purge_range, so it's ok to ignore it here.

Fixes: https://tracker.ceph.com/issues/58008

Signed-off-by: haoyixing <haoyixing@kuaishou.com>
(cherry picked from commit 37370ed)
@github-actions github-actions bot added the cephfs Ceph File System label Jan 6, 2023
@github-actions github-actions bot added this to the quincy milestone Jan 6, 2023
@dparmar18 dparmar18 changed the title mds/PurgeQueue: don't consider filer_max_purge_ops when _calculate_ops quincy: mds/PurgeQueue: don't consider filer_max_purge_ops when _calculate_ops Jan 6, 2023
@dparmar18 dparmar18 requested a review from a team January 6, 2023 13:23
@vshankar
Copy link
Contributor

vshankar commented Mar 2, 2023

@yuriw yuriw merged commit 0081759 into ceph:quincy Mar 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants