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

do not panic on rebalance during server restarts #19563

Merged
merged 1 commit into from
Apr 22, 2024

Conversation

harshavardhana
Copy link
Member

@harshavardhana harshavardhana commented Apr 20, 2024

Community Contribution License

All community contributions in this pull request are licensed to the project maintainers
under the terms of the Apache 2 license.
By creating this pull request, I represent that I have the right to license the
contributions to the project maintainers under the Apache 2 license.

Description

do not panic on rebalance during server restarts

Motivation and Context

This PR makes a feasible approach to handle all the scenarios
that we must face to avoid returning "panic."

Instead, we must return "errServerNotInitialized" when a
bucketMetadataSys.Get() is called, allowing the caller to
retry their operation and wait.

Bonus fix the way data-usage-cache stores the object.
Instead of storing usage-cache.bin with the bucket as
.minio.sys/buckets, the buckets must be relative
to the bucket .minio.sys as part of the object name.

Otherwise, there is no way to decommission entries at
.minio.sys/buckets and their final erasure set positions.

A bucket must never have a / in it. Adds code to read()
from existing data-usage.bin upon upgrade.

How to test this PR?

CI/CD should test all the scenarios

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Optimization (provides speedup with no functional changes)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • Fixes a regression (If yes, please add commit-id or PR # here)
  • Unit tests added/updated
  • Internal documentation updated
  • Create a documentation update request here

@harshavardhana harshavardhana changed the title do not panic inside restarting rebalance upon upgrade do not panic on rebalance during server restarts Apr 20, 2024
@harshavardhana harshavardhana force-pushed the fix-rebalance branch 2 times, most recently from 96eb057 to 568e8a0 Compare April 20, 2024 10:42
This PR makes a feasible approach to handle all the scenarios
that we must face to avoid returning "panic."

Instead, we must return "errServerNotInitialized" when a
bucketMetadataSys.Get() is called, allowing the caller to
retry their operation and wait.

Bonus fix the way data-usage-cache stores the object.
Instead of storing usage-cache.bin with the bucket as
`.minio.sys/buckets`, the `buckets` must be relative
to the bucket `.minio.sys` as part of the object name.

Otherwise, there is no way to decommission entries at
`.minio.sys/buckets` and their final erasure set positions.

A bucket must never have a `/` in it. Adds code to read()
from existing data-usage.bin upon upgrade.
Copy link
Contributor

@klauspost klauspost left a comment

Choose a reason for hiding this comment

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

Wonderful <3

Copy link
Member

@krisis krisis left a comment

Choose a reason for hiding this comment

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

Neat!

stopFn(err)
if errors.Is(err, errServerNotInitialized) || errors.Is(err, errBucketMetadataNotInitialized) {
continue
Copy link
Member

Choose a reason for hiding this comment

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

Ideally, we should retry this bucket again a few times before we move over to the next bucket. This (fix) is an improvement from what we have now. I can send a PR to tackle this subsequently.

@harshavardhana harshavardhana merged commit 95c65f4 into minio:master Apr 22, 2024
20 checks passed
@harshavardhana harshavardhana deleted the fix-rebalance branch April 22, 2024 17:49
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

3 participants