Ceph Dashboard fails with 500 Internal Server Error when operating on RGW
buckets that belong to a *tenant*, even though the bucket exists and is
accessible via radosgw-admin.
RGW returns NoSuchBucket because the Dashboard queries the bucket *without
the tenant prefix*
-----------
13:02:06.832428866Z"} {"log":"debug 2026-05-04T13:02:06.838+0000
7fbc29896640 0 [dashboard ERROR rest_client] RGW REST API failed GET req
status: 404\n","stream":"stderr","time":"2026-05-04T13:02:06.841073842Z"}
{"log":"debug 2026-05-04T13:02:06.838+0000 7fbc29896640 0 [dashboard ERROR
exception] Internal Server
Error\n","stream":"stderr","time":"2026-05-04T13:02:06.842785189Z"}
{"log":"Traceback (most recent call
last):\n","stream":"stderr","time":"2026-05-04T13:02:06.842818184Z"}
{"log":" File \"/usr/share/ceph/mgr/dashboard/services/exception.py\", line
47, in
dashboard_exception_handler\n","stream":"stderr","time":"2026-05-04T13:02:06.842831624Z"}
{"log":" return handler(*args,
**kwargs)\n","stream":"stderr","time":"2026-05-04T13:02:06.842841016Z"}
{"log":" File \"/lib/python3.9/site-packages/cherrypy/_cpdispatch.py\",
line 54, in
__call__\n","stream":"stderr","time":"2026-05-04T13:02:06.842851035Z"}
{"log":" return self.callable(*self.args,
**self.kwargs)\n","stream":"stderr","time":"2026-05-04T13:02:06.842983312Z"}
{"log":" File
\"/usr/share/ceph/mgr/dashboard/controllers/_base_controller.py\", line
264, in inner\n","stream":"stderr","time":"2026-05-04T13:02:06.843004859Z"}
{"log":" ret = func(*args,
**kwargs)\n","stream":"stderr","time":"2026-05-04T13:02:06.843015376Z"}
{"log":" File
\"/usr/share/ceph/mgr/dashboard/controllers/_rest_controller.py\", line
193, in
wrapper\n","stream":"stderr","time":"2026-05-04T13:02:06.843024549Z"}
{"log":" return func(*vpath,
**params)\n","stream":"stderr","time":"2026-05-04T13:02:06.84303376Z"}
{"log":" File \"/usr/share/ceph/mgr/dashboard/controllers/rgw.py\", line
702, in set\n","stream":"stderr","time":"2026-05-04T13:02:06.843050003Z"}
{"log":" locking = self._get_locking(uid, daemon_name,
bucket_name)\n","stream":"stderr","time":"2026-05-04T13:02:06.843059741Z"}
{"log":" File \"/usr/share/ceph/mgr/dashboard/controllers/rgw.py\", line
443, in
_get_locking\n","stream":"stderr","time":"2026-05-04T13:02:06.843069083Z"}
{"log":" return
rgw_client.get_bucket_locking(bucket_name)\n","stream":"stderr","time":"2026-05-04T13:02:06.843078375Z"}
{"log":" File \"/usr/share/ceph/mgr/dashboard/rest_client.py\", line 538,
in
func_wrapper\n","stream":"stderr","time":"2026-05-04T13:02:06.843087524Z"}
{"log":" return
func(\n","stream":"stderr","time":"2026-05-04T13:02:06.843096712Z"}
{"log":" File \"/usr/share/ceph/mgr/dashboard/services/rgw_client.py\",
line 899, in
get_bucket_locking\n","stream":"stderr","time":"2026-05-04T13:02:06.843105575Z"}
{"log":" raise
e\n","stream":"stderr","time":"2026-05-04T13:02:06.843114638Z"} {"log":"
File \"/usr/share/ceph/mgr/dashboard/services/rgw_client.py\", line 881, in
get_bucket_locking\n","stream":"stderr","time":"2026-05-04T13:02:06.843123252Z"}
{"log":" result = request() # type:
ignore\n","stream":"stderr","time":"2026-05-04T13:02:06.843132275Z"}
{"log":" File \"/usr/share/ceph/mgr/dashboard/rest_client.py\", line 324,
in __call__\n","stream":"stderr","time":"2026-05-04T13:02:06.843141087Z"}
{"log":" resp = self.rest_client.do_request(method, self._gen_path(),
params,\n","stream":"stderr","time":"2026-05-04T13:02:06.843163504Z"}
{"log":" File \"/usr/share/ceph/mgr/dashboard/rest_client.py\", line 422,
in do_request\n","stream":"stderr","time":"2026-05-04T13:02:06.843173809Z"}
{"log":" raise
RequestException(\n","stream":"stderr","time":"2026-05-04T13:02:06.843367851Z"}
{"log":"dashboard.rest_client.RequestException: RGW REST API failed request
with status code
404\n","stream":"stderr","time":"2026-05-04T13:02:06.843382042Z"}
{"log":"(b'{\"Code\":\"NoSuchBucket\",\"Message\":\"\",\"BucketName\":\"farhad\",\"RequestId\":\"tx000'\n","stream":"stderr","time":"2026-05-04T13:02:06.843391177Z"}
{"log":"
b'00ab80c789f95808ff-0069f898ce-110717032-vanak\",\"HostId\":\"110717032-vanak-teh'\n","stream":"stderr","time":"2026-05-04T13:02:06.843400934Z"}
{"log":"
b'ran\"}')\n","stream":"stderr","time":"2026-05-04T13:02:06.843410095Z"}
{"log":"debug 2026-05-04T13:02:06.842+0000 7fbc29896640 0 [dashboard ERROR
request] [::ffff:172.20.26.54:49876] [PUT] [500] [0.619s] [admin] [513.0B]
/api/rgw/bucket/khedrian%2Ffarhad\n","stream":"stderr","time":"2026-05-04T13:02:06.846732997Z"}
{"log":"debug 2026-05-04T13:02:06.842+0000 7fbc29896640 0 [dashboard ERROR
request] [b'{\"status\": \"500 Internal Server Error\", \"detail\": \"The
server encountered an unexpected condition which prevented it from
fulfilling the request.\", \"request_id\":
\"a3abea21-d73c-4d26-a8bb-1d99fc53a466\"}
']\n","stream":"stderr","time":"2026-05-04T13:02:06.847608634Z"}
{"log":"debug 2026-05-04T13:02:06.846+0000 7fbc29896640 0 [dashboard INFO
request] [::ffff:172.20.26.54:49876] [PUT] [500] [0.622s] [admin] [513.0B]
/api/rgw/bucket/khedrian%2Ffarhad\n","stream":"stderr","time":"2026-05-04T13:02:06.849427429Z"}
{"log":"debug 2026-05-04T13:02:07.322+0000 7fbc28053640 0 [dashboard INFO
request] [::ffff:172.20.26.54:64634] [GET] [200] [0.691s] [admin] [295.0B]
/api/rgw/daemon\n","stream":"stderr","time":"2026-05-04T13:02:07.324402049Z"}
{"log":"debug 2026-05-04T13:02:07.850+0000 7fbc2504d640 0 [dashboard INFO
request] [::ffff:172.20.26.54:49870] [GET] [200] [0.004s] [admin] [22.0B]
/api/prometheus/notifications\n","stream":"stderr","time":"2026-05-04T13:02:07.855794264Z"}
{"log":"debug 2026-05-04T13:02:08.110+0000 7fbc5c2fb640 0
log_channel(cluster) log [DBG] : pgmap v611376: 449 pgs: 449 active+clean;
202 MiB data, 10 GiB used, 1.2 TiB / 1.2 TiB avail; 6.0 KiB/s rd, 0 B/s wr,
8 op/s\n","stream":"stderr","time":"2026-05-04T13:02:08.113933657Z"}
{"log":"debug 2026-05-04T13:02:10.111+0000 7fbc5c2fb640 0
log_channel(cluster) log [DBG] : pgmap v611377: 449 pgs: 449 active+clean;
202 MiB data, 10 GiB used, 1.2 TiB / 1.2 TiB avail; 5.7 KiB/s rd, 0 B/s wr,
8 op/s\n","stream":"stderr","time":"2026-05-04T13:02:10.115433742Z"}
{"log":"debug 2026-05-04T13:02:10.211+0000 7fbc2484c640 0 [dashboard INFO
request] [::ffff:172.20.26.54:49876] [GET] [200] [0.003s] [admin] [22.0B]
/api/prometheus/notifications\n","stream":"stderr","time":"2026-05-04T13:02:10.2151369Z"}
----------------
root@dev-ceph01:~# ceph -v
ceph version 20.2.0 (69f84cc2651aa259a15bc192ddaabd3baba07489) tentacle
(stable)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject",
"Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource":
"arn:aws:s3:::khedrian:farhad/*" } ] }
- Bucket exists and is accessible via radosgw-admin
- Issue only occurs for *tenant buckets*
- Non‑tenant buckets work correctly
- Appears to be a *Dashboard RGW tenant parsing bug*
- Possibly missing tenant propagation when calling get_bucket_locking() and
similar RGW APIs
can anyone explain this ? what should i do ?
_______________________________________________
ceph-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]