[SRU] Loadbalancer is stuck with PENDING_UPDATE state on member update API
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Ubuntu Cloud Archive |
Fix Released
|
Undecided
|
Unassigned | |||
Antelope |
New
|
Undecided
|
Unassigned | |||
Caracal |
New
|
Undecided
|
Unassigned | |||
Yoga |
New
|
Undecided
|
Unassigned | |||
octavia |
In Progress
|
Medium
|
Gregory Thiemonge | |||
octavia (Ubuntu) | Status tracked in Oracular | |||||
Jammy |
Confirmed
|
Undecided
|
Unassigned | |||
Mantic |
Won't Fix
|
Undecided
|
Unassigned | |||
Noble |
Confirmed
|
Undecided
|
Unassigned | |||
Oracular |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
[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:/
and I also test debdiff for this fix, it works well - https:/
[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:/
For example :
192.0.2.16:80 Member already exists, and request data like follows
{
"members": [
{
}, {
}
]
}
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/
## log : 33fe25ab-
May 29 04:14:32 ubuntu octavia-
May 29 04:14:32 ubuntu octavia-
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-
3, run test.py (https:/
4, then we will reproduce the problem, lb will be stuck with PENDING_UPDATE state.
$ openstack loadbalancer member list lb1-pool |grep 192
| b36bb21e-
5, This is error log I saw - https:/
[Some Analyses]
You can see some analysis from the bugs I created earlier - https:/
Related branches
- Ubuntu OpenStack uploaders: Pending requested
-
Diff: 137 lines (+125/-0)2 files modifieddebian/patches/add-check-for-duplicate-members-in-batch-update.patch (+124/-0)
debian/patches/series (+1/-0)
- Ubuntu OpenStack uploaders: Pending requested
-
Diff: 139 lines (+127/-0)2 files modifieddebian/patches/add-check-for-duplicate-members-in-batch-update.patch (+126/-0)
debian/patches/series (+1/-0)
- Ubuntu OpenStack uploaders: Pending requested
-
Diff: 137 lines (+123/-0)2 files modifieddebian/patches/add-check-for-duplicate-members-in-batch-update.patch (+122/-0)
debian/patches/series (+1/-0)
- James Page: Disapprove
-
Diff: 137 lines (+123/-0)2 files modifieddebian/patches/add-check-for-duplicate-members-in-batch-update.patch (+122/-0)
debian/patches/series (+1/-0)
description: | updated |
summary: |
- Loadbalancers is stuck with PENDING_UPDATE state on member update API + Loadbalancer is stuck with PENDING_UPDATE state on member update API |
description: | updated |
Hi, I have an open patch that fixes this issue:
https:/ /review. opendev. org/c/openstack /octavia/ +/864192
I will ask folks to review it so we can backport it down to 2023.1