** Description changed:
+ [Impact]
+
+ Loadbalancer is stuck with PENDING_UPDATE state on batch member update
+ API.
+
+ [Test Case]
+
+ Please refer to [Test steps] section below.
+
+ [Regression Potential]
+
+ The fix is already in the upstream main, stable/2024.1, stable/2023.2,
+ stable/2023.1 branches, so it is a clean backport and might be helpful
+ for deployments using octavia.
+
+ I also test this fix, it works well -
+ https://paste.ubuntu.com/p/wPy7pB3SR6/ and
+ https://paste.ubuntu.com/p/zpPDScQCtK/
+
+ and I also test debdiff for this fix, it works well -
+ https://paste.ubuntu.com/p/nS6c3QYRGn/
+
+
+ [Others]
+
+ Original Bug Description Below
+ ===
+
By mistake, I sent wrong request with duplicated ip, port compbination
through the Batch Update Members API(ver 2023.1).
https://docs.openstack.org/api-ref/load-balancer/v2/#batch-update-members
For example :
192.0.2.16:80 Member already exists, and request data like follows
{
- "members": [
- {
- "subnet_id": "xxx",
- "address": "192.0.2.16",
- "protocol_port": 80
- }, {
- "subnet_id": "xxx",
- "address": "192.0.2.16",
- "protocol_port": 80
- }
- ]
+ "members": [
+ {
+ "subnet_id": "xxx",
+ "address": "192.0.2.16",
+ "protocol_port": 80
+ }, {
+ "subnet_id": "xxx",
+ "address": "192.0.2.16",
+ "protocol_port": 80
+ }
+ ]
}
After the request, the status of Loadbalancer does not change from
PENDING_UPDATE.
When checking the source code, there is no logic to check for
duplicates.
In the controller logic(member.py), members are classified into
new_members/updated_members/deleted_member, but the updated_members data
is being passed as is with duplicates, so this is suspected to be the
cause of the problem.
## log : 33fe25ab-5477-4787-a8e1-f657376b0ead is duplicated
May 29 04:14:32 ubuntu octavia-worker[123317]: INFO
octavia.controller.queue.v2.endpoints [-] Batch updating members: old='[]',
new='[]', updated='['825dbebc-da79-4f88-bf48-0e3e63a09d90',
'33fe25ab-5477-4787-a8e1-f657376b0ead',
'33fe25ab-5477-4787-a8e1-f657376b0ead']'...
May 29 04:14:32 ubuntu octavia-worker[123317]: ERROR
oslo_messaging.rpc.server [-] Exception during message handling:
taskflow.exceptions.Duplicate: Atoms with duplicate names found:
['octavia-mark-member-active-indb-33fe25ab-5477-4787-a8e1-f657376b0ead']
+ FYI, There is validation logic for new_members.
- FYI, There is validation logic for new_members.
+ [Test steps]
+
+ 1, set up a openstack env with octavia deployment
+
+ 2, create a test lb
+
+ 3, add a member into lb pool
+
+ openstack loadbalancer member create --subnet-id private_subnet --address
192.168.21.226 --protocol-port 80 lb1-pool
+ $ openstack loadbalancer member list lb1-pool |grep ACTIVE
+ | b36bb21e-8eed-40bc-a1cb-e69da070c0b9 | | 4f1016d73ae245fe8c5c6a637930f3d2 |
ACTIVE | 192.168.21.226 | 80 | ONLINE | 1 |
+
+ 3, run test.py (https://paste.ubuntu.com/p/38vPW5R5S8/) to call batch
+ member update API to add the same member (eg: 192.168.21.226 above)
+
+ 4, then we will reproduce the problem, lb will be stuck with
+ PENDING_UPDATE state.
+
+ $ openstack loadbalancer member list lb1-pool |grep 192
+ | b36bb21e-8eed-40bc-a1cb-e69da070c0b9 | | 4f1016d73ae245fe8c5c6a637930f3d2 |
PENDING_UPDATE | 192.168.21.226 | 80 | ONLINE | 40 |
+
+ 5, This is error log I saw - https://paste.ubuntu.com/p/K5s7knNmWw/
+
+ [Some Analyses]
+
+ You can see some analysis from the bugs I created earlier -
+ https://bugs.launchpad.net/octavia/+bug/2070348
** Summary changed:
- Loadbalancer is stuck with PENDING_UPDATE state on member update API
+ [SRU] Loadbalancer is stuck with PENDING_UPDATE state on member update API
** Tags added: sts
** Patch added: "noble.debdiff"
https://bugs.launchpad.net/octavia/+bug/2067441/+attachment/5794826/+files/noble.debdiff
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2067441
Title:
[SRU] Loadbalancer is stuck with PENDING_UPDATE state on member update
API
To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-archive/+bug/2067441/+subscriptions
--
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs