Hyper-V Agent daemon_loop() on Exception starts port binding for all ports.

Bug #1439143 reported by Vinod Kumar
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
networking-hyperv
Fix Released
Medium
Vinod Kumar

Bug Description

In Hyper-V Agent daemon_loop() if an exception occurs during port binding
then the sync flag is set to True which results in daemon_loop() reprocess
all ports (same as agent restart case).

Expected is that on exception it is not necessary to process all the ports but
rather continue port binding only for the ports for which binding is pending.
Under scaled Hyper-V environment this impacts the performance.

Changed in networking-hyperv:
assignee: nobody → Vinod Kumar (vinod-kumar5)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to networking-hyperv (master)

Fix proposed to branch: master
Review: https://review.openstack.org/169711

Changed in networking-hyperv:
status: New → In Progress
Changed in networking-hyperv:
importance: Undecided → Medium
description: updated
Revision history for this message
Claudiu Belu (cbelu) wrote :

Hello. Thanks for reporting the bug. There has been another bug report on avoiding reprocessing the same ports ( https://bugs.launchpad.net/networking-hyperv/+bug/1422439 ). After that bugfix, the agent now skips rebinding the port to the vswitch and re-setting the vlan id, but it will still attempt to readd all the security group rules to all the ports, and that could be troublesome.

Revision history for this message
Vinod Kumar (vinod-kumar5) wrote :

Claudiu,

Thanks for sharing the bug details.
That fix committed by you solves the same problem, but my take was that why do I have to go till connect_vnic_to_switch() and then make WMI call and then take decision. Rather I can take decision in daemon_loop() itself to move ahead with a list of ports that are not added.
Under scaled environment (because WMI calls are time consuming) each WMI call degrades the performance of Hyper-V neutron agent.
I hope that justifies my fix.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to networking-hyperv (master)

Reviewed: https://review.openstack.org/169711
Committed: https://git.openstack.org/cgit/stackforge/networking-hyperv/commit/?id=1d69dd79d0fca957c4d5c5e683e88c9489c89ac2
Submitter: Jenkins
Branch: master

commit 1d69dd79d0fca957c4d5c5e683e88c9489c89ac2
Author: Vinod Kumar <email address hidden>
Date: Thu Mar 26 05:21:29 2015 -0700

    Hyper-V daemon_loop() Exception: Skip performed ports.

    On Exception in hyperv neutron agent daemon_loop it is not necessary
    to process all the ports but rather continue port binding only for the
    ports for which binding is pending.

    Closes-Bug: #1439143

    Change-Id: I6b164b4abc192442b6210bfaac73e2ad0e2fa4fb

Changed in networking-hyperv:
status: In Progress → Fix Committed
Revision history for this message
Vinod Kumar (vinod-kumar5) wrote :

Hi Claudiu,

I would suggest to back-port this fix to Juno branch also. What do you suggest?

Claudiu Belu (cbelu)
Changed in networking-hyperv:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.