rbd-target-api crashes with `blacklist removal failed`
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ceph-iscsi (Ubuntu) |
Expired
|
Undecided
|
Unassigned |
Bug Description
[Impact]
* ceph-iscsi on Focal talking to a Pacific or later Ceph cluster
* rbd-target-api service fails to start if there is a blocklist
entry for the unit.
* When the rbd-target-api service starts it checks if any of the
ip addresses on the machine it is running on are listed as
blocked. If there are entries it tries to remove them. When it
issues the block removal command it checks stdout from the
removal command looking for the string `un-blacklisting`.
However from Pacific onward a successful unblocking returns
`un-
[Test Plan]
If an existing ceph-iscsi deployment is available then skip to
step 3.
1) Deploy the bundle below (tested with OpenStack provider).
series: focal
applications:
ceph-iscsi:
charm: cs:ceph-iscsi
num_units: 2
ceph-osd:
charm: ch:ceph-osd
num_units: 3
storage:
osd-devices: 'cinder,10G'
options:
osd-devices: '/dev/test-
source: yoga
channel: latest/edge
ceph-mon:
charm: ch:ceph-mon
num_units: 3
options:
monitor-
source: yoga
channel: latest/edge
relations:
- - 'ceph-mon:client'
- 'ceph-iscsi:
- - 'ceph-osd:mon'
- 'ceph-mon:osd'
2) Connect to ceph-iscsi unit:
juju ssh -m zaza-a1d88053ab85 ceph-iscsi/0
3) Stop rbd-target-api via systemd to make test case clearer:
sudo systemctl stop rbd-target-api
4) Add 2 blocklist entries for this unit (due to another issue the ordering of the output from `osd blacklist ls` matters which can lead to the reproduction of this bug being intermittent. To avoid this add two entries which ensures there is always an entry for this node in the list of blocklist entries to be removed).
sudo ceph -n client.ceph-iscsi --conf /etc/ceph/
sudo ceph -n client.ceph-iscsi --conf /etc/ceph/
sudo ceph -n client.ceph-iscsi --conf /etc/ceph/
listed 2 entries
172.20.0.135:0/2 2022-02-
172.20.0.135:0/1 2022-02-
5) Attempt to start service:
sudo /usr/bin/python3 /usr/bin/
At this point the process should be running in the foreground but instead
it will die. The log from the service will have an entry like:
2022-04-21 12:35:21,695 CRITICAL [gateway.
[Where problems could occur]
* Problems could occur with the service starting as this blocklist check is done at startup.
* Blocklist entries could fail to be removed.
This issue is very similar to Bug #1883112
description: | updated |
tags: | added: patch |
Changed in ceph-iscsi (Ubuntu): | |
status: | New → Incomplete |
The fix proposed in https:/ /bugs.launchpad .net/ubuntu/ +source/ ceph-iscsi/ +bug/1883112 provides a partial solution (changing the test to use bytes instead of strings). However, that in itself is insufficient since that only helps to avoid TypeError exceptions - An additional fix is needed so that the messages being checked for inclusion are changed from `blacklist` to `blocklist` (they could be added instead of removed, to be safe).