-
Notifications
You must be signed in to change notification settings - Fork 6k
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
rgw multisite: trim data logs as peer zones catch up #10372
Conversation
void RGWOp_MDLog_Status::execute() | ||
{ | ||
// construct a temporary status manager to read the sync status | ||
RGWMetaSyncStatusManager sync(store, store->get_async_rados()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cbodley shouldn't we have an existing status manager through s->store?
@cbodley overall looks good. Meta should be pretty similar, will need to get bucket index trimming too. |
RGWSimpleRadosReadCR won't currently fail with ENOENT, but instead passes an empty object to handle_data(). add an empty_on_enoent flag to the constructor, defaulting to true, to make this behavior optional for callers that do want to fail on ENOENT Signed-off-by: Casey Bodley <cbodley@redhat.com>
this allows us to limit the number of outstanding requests for shard markers there also appeared to be issues with spawning the shard CRs from RGWReadDataSyncStatusCoroutine::handle_data(), because handle_data() was returning before the shard CRs completed Signed-off-by: Casey Bodley <cbodley@redhat.com>
and took out the redundant 'rgw' from 'rgw meta sync:' Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
rest handlers for sync status need to return ENOENT errors. the only other callers are in radosgw-admin, so the ENOENT errors are ignored at those call sites instead Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
RGWDataSyncStatusManager::read_sync_status() now operates on the given parameter, rather than its internal member variable. this allows multiple concurrent readers, which is needed for the rest interface Signed-off-by: Casey Bodley <cbodley@redhat.com>
9e22200
to
926f6a2
Compare
RGWCoroutinesManager::run() is not reentrant, so concurrent users of read_sync_status() must use different managers Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
926f6a2
to
3b674bb
Compare
updated to address your comments. the rest api now uses the existing SyncStatusManagers, which required these new commits:
also changed so that a |
@yehudasa this was part of the latest wip-cbodley-testing run, but there was a single s3-tests failure that hit the assert() that detects deadlocks in edit: actually, the assertion was hit inside of the |
No description provided.