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: Multiple Data Pool Support for a Bucket #19890
Conversation
@yehudasa @mattbenjamin @robbat2 @fangyuxiangGL |
@Jeegn-Chen /home/jenkins-build/build/workspace/ceph-pull-requests/src/test/cli/radosgw-admin/help.t: failed |
@Jeegn-Chen the command description should also be added into src/test/cli/radosgw-admin/help.t |
src/rgw/rgw_rados.cc
Outdated
@@ -10608,6 +10674,9 @@ int RGWRados::get_obj_iterate_cb(RGWObjectCtx *ctx, RGWObjState *astate, | |||
if (!len) | |||
return 0; | |||
} | |||
effective_io_ctx.dup(d->io_ctx); | |||
}else { | |||
effective_io_ctx.dup(d->tail_io_ctx); |
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.
dup
here is dangerous for you trigger aio_operate
, effective_io_ctx
is on the stack, its private io_ctx_impl
will be released when function return. You can use effective_io_ctx = d->tail_io_ctx;
, which share io_ctx_impl
with d->tail_io_ctx
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.
nice catch. thx
2249295
to
3a1ffdb
Compare
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.
updated
src/rgw/rgw_common.h
Outdated
inline ostream& operator<<(ostream& out, const RGWBucketDataLayoutType &data_layout_type) | ||
{ | ||
switch (data_layout_type) { | ||
case RGWDLType_Normal: |
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.
I don't think "normal" and "splitted" are the right names for these cases, if only because for the latter you'd write "split." Maybe single-pool and split-pool? There still hasn't been organized discussion in RGW standups, that would be helpful.
@@ -2111,6 +2129,39 @@ struct rgw_cache_entry_info { | |||
rgw_cache_entry_info() : gen(0) {} | |||
}; | |||
|
|||
struct rgw_data_placement_volatile_config { |
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.
This isn't a typical RGW name for a class/struct type. Could we rename this? More concretely, what makes it volatile, and how does that relate to similar info in RGW?
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.
To tell the truth, I'm also worry about the proper name for this struct. I just use it for now and prefer to change if a proper one is found.
“volatile” here means unlike index_pool, data_pool and data_extra_pool of a bucket, each object in a bucket may have different rgw_data_placement_volatile_config.
And if we change current_tail_pools and upload the same object again, rgw_data_placement_volatile_config of the same object will be changed.
Any recommendation?
src/rgw/rgw_common.h
Outdated
} | ||
|
||
bool empty() const { | ||
return data_layout_type == RGWDLType_Normal; |
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.
would put boolean expressions in parenthesis, but then, I like style(9)
d761802
to
9a263a1
Compare
I remembered one issue while I did #16325, which was related to multipart upload but I'm not sure if it exist here, you'd better verify it. Given that we upload an object using multipart, and for one part of it, there are 3 rados objects, which we named as: multipart-object, shadow-1, shadow-2. At last, in
we must make sure that |
ok, seems you have introduced |
Fixes: http://tracker.ceph.com/issues/22565 Signed-off-by: Jeegn Chen <jeegnchen@gmail.com>
Fixes: http://tracker.ceph.com/issues/22565 Signed-off-by: Jeegn Chen <jeegnchen@gmail.com>
Fixes: http://tracker.ceph.com/issues/22565 Signed-off-by: Jeegn Chen <jeegnchen@gmail.com>
Fixes: http://tracker.ceph.com/issues/22565 Signed-off-by: Jeegn Chen <jeegnchen@gmail.com>
Fixes: http://tracker.ceph.com/issues/22565 Signed-off-by: Jeegn Chen <jeegnchen@gmail.com>
Fixes: http://tracker.ceph.com/issues/22565 Signed-off-by: Jeegn Chen <jeegnchen@gmail.com>
Fixes: http://tracker.ceph.com/issues/22565 Signed-off-by: Jeegn Chen <jeegnchen@gmail.com>
Fixes: http://tracker.ceph.com/issues/22565 Signed-off-by: Jeegn Chen <jeegnchen@gmail.com>
28f0d54
to
747f1be
Compare
if (current_tail_pool) { | ||
info.current_tail_pool = *current_tail_pool; | ||
} | ||
if (tail_pools) { |
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.
@Jeegn-Chen
Seems we have no way to remove anything from data_tail_pools.
how about call info.data_tail_pools.clear();
here?
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
This pull request has been automatically closed because there has been no activity for 90 days. Please feel free to reopen this pull request (or open a new one) if the proposed change is still appropriate. Thank you for your contribution! |
The following URL can not be connected!Why was this request closed?Thank you |
Why was this request closed?There are big bugs in this request? Thank you! |
@cugwangyang it was closed by the bot. i am reopening it in hope it can have more attention from rgw maintainers. |
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
This URL can not be connected. Can you give me another URL to share your mind? |
This pull request has been automatically marked as stale because it has not had any activity for 60 days. It will be closed if no further activity occurs for another 30 days. |
This pull request has been automatically closed because there has been no activity for 90 days. Please feel free to reopen this pull request (or open a new one) if the proposed change is still appropriate. Thank you for your contribution! |
http://tracker.ceph.com/issues/22565
https://etherpad.net/p/multiple-data-pool-support-for-a-bucket