You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by st...@apache.org on 2017/01/30 13:58:58 UTC

ambari git commit: AMBARI-19775. ActionQueue thread may exit due to IOError in statusCommandResultQueue.empty(). (Attila Doroszlai via stoader)

Repository: ambari
Updated Branches:
  refs/heads/trunk af6ba590d -> b722ffa6f


AMBARI-19775. ActionQueue thread may exit due to IOError in statusCommandResultQueue.empty(). (Attila Doroszlai via stoader)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b722ffa6
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b722ffa6
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b722ffa6

Branch: refs/heads/trunk
Commit: b722ffa6f612685096c0c528264fdf1ae86b5d64
Parents: af6ba59
Author: Attila Doroszlai <ad...@hortonworks.com>
Authored: Mon Jan 30 14:58:47 2017 +0100
Committer: Toader, Sebastian <st...@hortonworks.com>
Committed: Mon Jan 30 14:58:47 2017 +0100

----------------------------------------------------------------------
 .../src/main/python/ambari_agent/ActionQueue.py | 28 +++++++++++---------
 1 file changed, 16 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/b722ffa6/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/ActionQueue.py b/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
index 18d7c2a..8514a88 100644
--- a/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
+++ b/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
@@ -212,18 +212,22 @@ class ActionQueue(threading.Thread):
         pass
 
   def processStatusCommandResultQueueSafeEmpty(self):
-    while not self.statusCommandResultQueue.empty():
-      try:
-        result = self.statusCommandResultQueue.get(False)
-        self.process_status_command_result(result)
-      except Queue.Empty:
-        pass
-      except IOError:
-        # on race condition in multiprocessing.Queue if get/put and thread kill are executed at the same time.
-        # During queue.close IOError will be thrown (this prevents from permanently dead-locked get).
-        pass
-      except UnicodeDecodeError:
-        pass
+    try:
+      while not self.statusCommandResultQueue.empty():
+        try:
+          result = self.statusCommandResultQueue.get(False)
+          self.process_status_command_result(result)
+        except Queue.Empty:
+          pass
+        except IOError:
+          # on race condition in multiprocessing.Queue if get/put and thread kill are executed at the same time.
+          # During queue.close IOError will be thrown (this prevents from permanently dead-locked get).
+          pass
+        except UnicodeDecodeError:
+          pass
+    except IOError:
+      # queue.empty() may also throw IOError
+      pass
 
   def createCommandHandle(self, command):
     if command.has_key('__handle'):