[Bug 2067441] Re: [SRU] Loadbalancer is stuck with PENDING_UPDATE state on member update API

Edward Hope-Morley 2067441 at bugs.launchpad.net
Thu Sep 26 14:58:18 UTC 2024


It seems the target for Bobcat was skipped (see request in comment #12)
so I have added it. We need to make sure that fix is released in order
i.e. Dalmation, Caracal, Bobcat, Antelope etc. For releases that already
have the fix it helps if you can mark the target as Fix Released so that
it is clear we don't need to check that release.

** Also affects: cloud-archive/bobcat
   Importance: Undecided
       Status: New

** Also affects: cloud-archive/zed
   Importance: Undecided
       Status: New

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to octavia in Ubuntu.
https://bugs.launchpad.net/bugs/2067441

Title:
  [SRU] Loadbalancer is stuck with PENDING_UPDATE state on member update
  API

Status in Ubuntu Cloud Archive:
  Fix Released
Status in Ubuntu Cloud Archive antelope series:
  Fix Committed
Status in Ubuntu Cloud Archive bobcat series:
  New
Status in Ubuntu Cloud Archive caracal series:
  New
Status in Ubuntu Cloud Archive yoga series:
  New
Status in Ubuntu Cloud Archive zed series:
  New
Status in octavia:
  In Progress
Status in octavia package in Ubuntu:
  Fix Released
Status in octavia source package in Jammy:
  In Progress
Status in octavia source package in Mantic:
  Won't Fix
Status in octavia source package in Noble:
  In Progress
Status in octavia source package in Oracular:
  Fix Released

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://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": "xxxxxxx",
              "address": "192.0.2.16",
              "protocol_port": 80
          }, {
              "subnet_id": "xxxxxxx",
              "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.

  [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

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-archive/+bug/2067441/+subscriptions




More information about the Ubuntu-openstack-bugs mailing list