When Slave is using NetworkManager, polling is used to activate DBus connection. This may result in infinite loop (eg. when device is not in LOWER_UP state, but is in UP state). This patch adds timeout control in _poll_loop method, timeout value is set to 10s.
Signed-off-by: Jiri Prochazka jprochaz@redhat.com --- lnst/Slave/NmConfigDevice.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/lnst/Slave/NmConfigDevice.py b/lnst/Slave/NmConfigDevice.py index 8e2f1dd..3da54f1 100644 --- a/lnst/Slave/NmConfigDevice.py +++ b/lnst/Slave/NmConfigDevice.py @@ -153,10 +153,14 @@ class NmConfigDeviceGeneric(object): self._loop.quit()
def _poll_loop(self, func, expected_val, *args): - while True: + timer = 0 + while timer < 10: if func(*args) == expected_val: - break + return time.sleep(1) + timer += 1 + msg = "Timed out during NetworkManager polling." + raise Exception(msg)
def _convert_hwaddr(self, dev_config): if "hwaddr" in dev_config:
On Mon, Jun 29, 2015 at 04:06:40PM +0200, Jiri Prochazka wrote:
When Slave is using NetworkManager, polling is used to activate DBus connection. This may result in infinite loop (eg. when device is not in LOWER_UP state, but is in UP state). This patch adds timeout control in _poll_loop method, timeout value is set to 10s.
Signed-off-by: Jiri Prochazka jprochaz@redhat.com
lnst/Slave/NmConfigDevice.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/lnst/Slave/NmConfigDevice.py b/lnst/Slave/NmConfigDevice.py index 8e2f1dd..3da54f1 100644 --- a/lnst/Slave/NmConfigDevice.py +++ b/lnst/Slave/NmConfigDevice.py @@ -153,10 +153,14 @@ class NmConfigDeviceGeneric(object): self._loop.quit()
def _poll_loop(self, func, expected_val, *args):
while True:
timer = 0
while timer < 10:
^^^^ This should be a parameter of the function not just a random constant... And there should be a defult value constant at the start of the file where other NM related constants are defined.
if func(*args) == expected_val:
break
return time.sleep(1)
timer += 1
msg = "Timed out during NetworkManager polling."
raise Exception(msg)
def _convert_hwaddr(self, dev_config): if "hwaddr" in dev_config:
-- 2.4.3
LNST-developers mailing list LNST-developers@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/lnst-developers
lnst-developers@lists.fedorahosted.org