-
Notifications
You must be signed in to change notification settings - Fork 21
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
[BUG] rgw/sfs: metadata update calls don't honor retry_raced_bucket_write mechanism #637
Labels
area/rgw-sfs
RGW & SFS related
kind/bug
Something isn't working
triage/next-candidate
This could be moved to the next milestone
Comments
jhmarina
added
priority/1
Should be fixed for next release
and removed
triage/waiting
Waiting for triage
labels
Sep 7, 2023
giubacc
referenced
this issue
in giubacc/ceph
Oct 26, 2023
Updating bucket's metadata concurrently by two or more threads is allowed in radosgw. There is a retry mechanism: retry_raced_bucket_write(), that expects the bucket references to fetch the latest data from the persistent store. rgw/sfs driver didn't implement try_refresh_info() in its bucket class definition; this could cause two references to the same bucket to potentially lead to partial metadata updates. Fixes: https://github.com/aquarist-labs/s3gw/issues/637 Signed-off-by: Giuseppe Baccini <[email protected]>
11 tasks
giubacc
referenced
this issue
in giubacc/ceph
Oct 26, 2023
Updating bucket's metadata concurrently by two or more threads is allowed in radosgw. There is a retry mechanism: retry_raced_bucket_write(), that expects the bucket references to fetch the latest data from the persistent store. rgw/sfs driver didn't implement try_refresh_info() in its bucket class definition; this could cause two references to the same bucket to potentially lead to partial metadata updates. Fixes: https://github.com/aquarist-labs/s3gw/issues/637 Signed-off-by: Giuseppe Baccini <[email protected]>
giubacc
referenced
this issue
in giubacc/ceph
Oct 27, 2023
Updating bucket's metadata concurrently by two or more threads is allowed in radosgw. There is a retry mechanism: retry_raced_bucket_write(), that expects the bucket references to fetch the latest data from the persistent store. rgw/sfs driver didn't implement try_refresh_info() in its bucket class definition; this could cause two references to the same bucket to potentially lead to partial metadata updates. Fixes: https://github.com/aquarist-labs/s3gw/issues/637 Signed-off-by: Giuseppe Baccini <[email protected]>
giubacc
referenced
this issue
in giubacc/ceph
Nov 2, 2023
Updating bucket's metadata concurrently by two or more threads is allowed in radosgw. There is a retry mechanism: retry_raced_bucket_write(), that expects the bucket references to fetch the latest data from the persistent store. rgw/sfs driver didn't implement try_refresh_info() in its bucket class definition; this could cause two references to the same bucket to potentially lead to partial metadata updates. Fixes: https://github.com/aquarist-labs/s3gw/issues/637 Signed-off-by: Giuseppe Baccini <[email protected]>
Closed
giubacc
added
triage/needs-information
Further information is requested
and removed
triage/needs-information
Further information is requested
labels
Nov 17, 2023
giubacc
referenced
this issue
in giubacc/ceph
Nov 17, 2023
Updating bucket's metadata concurrently by two or more threads is allowed in radosgw. There is a retry mechanism: retry_raced_bucket_write(), that expects the bucket references to fetch the latest data from the persistent store. rgw/sfs driver didn't implement try_refresh_info() in its bucket class definition; this could cause two references to the same bucket to potentially lead to partial metadata updates. Fixes: https://github.com/aquarist-labs/s3gw/issues/637 Signed-off-by: Giuseppe Baccini <[email protected]>
jecluis
added
the
triage/next-candidate
This could be moved to the next milestone
label
Mar 21, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
area/rgw-sfs
RGW & SFS related
kind/bug
Something isn't working
triage/next-candidate
This could be moved to the next milestone
Executing 2 Metadata updates calls, for example:
put_bucket_object_lock
andput_bucket_tags
, interleaved as this:It results that modifications done by
put_bucket_tags
are lost.This is likely due to that, in this scenario,
put_bucket_object_lock
makes use of stale data.To reproduce this it is sufficient to issue in parallel both
put_bucket_tags
andput_bucket_object_lock
on the same bucket.The same but serialized execution does what is expected.
Analysis:
put_bucket_tags
andput_bucket_object_lock
store data the same way and are allowed to race each other.Metadata updates are "bundled" and not done individually to the db.
There is a retry mechanism: see
retry_raced_bucket_write
, that expects the update to fail if doesn't have the latest data.We currently don't have a conditional update in
put_info
that detects a stale view and fails the op for the retry to pick up.We also don't implement
try_refresh_info
which retry uses.The text was updated successfully, but these errors were encountered: