rgw: remove unused backend abstraction for metadata handlers#54777
rgw: remove unused backend abstraction for metadata handlers#54777
Conversation
|
cc @pritha-srivastava since you worked on the roles stuff in #43597. i ended up refactoring a lot of that because i have future plans for it. in my work on iam accounts, i'll be making it so that roles can be owned by an account. so in addition to a global listing of roles, you'll also be able to list the roles of a single account for the iam ListRoles api. #54563 adds the cls_user interfaces to track those lists in omap, with similar 'path prefix' filtering to what you wrote for |
cc @smanjara on this part |
@cbodley: I reviewed the roles part - all looks fine to me. Just to let you know that currently also listing of roles is for a tenant. |
fec8fed to
c4b3047
Compare
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
|
planning to rebase this once #55152 merges |
that did merge, but i'd still like to wait for the squid release so we don't complicate any urgent backports |
|
@cbodley i'm guessing that this will be ready before my OIDC metadata handler changes complete. I probably should rebase on top of this pr? |
i don't think this PR touches oidc stuff, so that's probably not necessary. just don't use any 'metadata backend' stuff to implement that |
|
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! |
c4b3047 to
1693850
Compare
1693850 to
31d565b
Compare
31d565b to
99dfbfe
Compare
|
failed qa in https://pulpito.ceph.com/cbodley-2024-09-07_03:10:16-rgw-wip-rgw-meta-handlers-distro-default-smithi/ with rerun https://pulpito.ceph.com/cbodley-2024-09-07_13:15:19-rgw-wip-rgw-meta-handlers-distro-default-smithi/ multisite job showing crashes in
that causes failures for:
a notification test is also failing, unrelated to bilog trim:
|
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
inherit from RGWMetadataHandler instead of RGWMetadataHandler_GenericMetaBE to avoid all of the metadata backend abstractions, and just call into the cls and sysobj services directly 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>
RGWBucketMetadataHandler inherits from RGWMetadataHandler directly instead of RGWMetadataHandler_GenericMetaBE replace RGWSI_Bucket_SObj_Module with the RGWMetadataLister abstraction RGWSI_Bucket_SObj now depends on RGWSI_MDLog and writes mdlog entries itself 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>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
move everything from class RadosRole into driver/rados/role.cc and use RGWSI_SysObj instead of the metadata backend. narrows the RGWRole interface by handling the name/path objects internally rgwrados::role::write() adds/remove name and path linkages in case they change. admin ops don't allow this, but 'metadata put' could upload arbitrary json that does change them Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
bad475c to
8c56a23
Compare
|
rebased/squashed |
|
https://jenkins.ceph.com/job/ceph-api/81524/
|
|
jenkins test api |
|
while testing #53799 after a rebase, I see a crash while removing bucket instance: 2024-09-18T03:26:45.143-0400 7f8474a506c0 20 rgw async rados processor: do_read_bucket_instance_info, bucket instance not found (key=bucket1:41b6e36e-480d-4b64-baec-f43c3a4b73ff.4298.1) 2024-09-18T03:26:45.172-0400 7f8474a506c0 -1 *** Caught signal (Segmentation fault) ** this was probably never exercised because we didn't remove bucket instance when multisite sync is involved. |
ignore this. i was trying to log something in the RGWMetadataManager without initializing cct. |
the metadata backend abstraction from #29118 predated zipper, and never evolved to support more than one backend. this was a heavyweight abstraction, and the complicated layering made it very hard to work with. in contrast, the base
RGWMetadataHandlerinterface is easy to implement for new metadata types. it's important that we can keep multisite's metadata sync up-to-date with newer features like bucket notifications, roles, accounts, etcto untangle this, i started by changing services like
RGWSI_Bucket_SObjandRGWSI_User_RADOSto read/write their metadata with rados/sysobj interfaces instead of the metadata backends. then i was able to reimplement their metadata handlers in terms ofRGWMetadataHandlerdirectlyRGWSI_MBSObj_Handler_Modulehad provided a common abstraction for metadata listing which i was able to convert into aRGWMetadataListerclass with a single virtual functionwith respect to the creation of mdlog entries,
RGWSI_MetaBackend_SObjhad taken care of that with itspre_modify()/post_modify(). these mdlog entries must be written manually now, using the newRGWSI_MDLog::complete_entry(). this is only called after a successful write, instead of logging 'prepare' and 'complete' entries separately (metadata sync has always ignored 'prepare' entries)the 'otp' and 'role' metadata got more significant changes, where their 'services' were removed entirely. namespaces
rgwrados::otpandrgwrados::rolenow provide their rados metadata interfaces as free functions which are called by their metadata handlers and rgw_sal_rados.ccShow available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test dashboard cephadmjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume toxjenkins test windowsjenkins test rook e2e