[ARVADOS] updated: dce9b03c23e89e77e3547a3a92088f332c0f747e

Git user git at public.curoverse.com
Fri Apr 1 15:35:11 EDT 2016


Summary of changes:
 .../arvnodeman/computenode/dispatch/__init__.py          | 16 ++++++----------
 services/nodemanager/tests/test_computenode_dispatch.py  | 10 ++++++++++
 2 files changed, 16 insertions(+), 10 deletions(-)

       via  dce9b03c23e89e77e3547a3a92088f332c0f747e (commit)
      from  798b08af218972bf9fb60101b7f85fd71951c6b7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit dce9b03c23e89e77e3547a3a92088f332c0f747e
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Fri Apr 1 15:35:08 2016 -0400

    8816: Use is_cloud_exception to determine if exception is a "cloud error".  Add
    test that exceptions don't crash ComputeNodeUpdateActor.

diff --git a/services/nodemanager/arvnodeman/computenode/dispatch/__init__.py b/services/nodemanager/arvnodeman/computenode/dispatch/__init__.py
index 26744c4..2ddfb0a 100644
--- a/services/nodemanager/arvnodeman/computenode/dispatch/__init__.py
+++ b/services/nodemanager/arvnodeman/computenode/dispatch/__init__.py
@@ -279,17 +279,13 @@ class ComputeNodeUpdateActor(config.actor_class):
             self.next_request_time = time.time()
             try:
                 result = orig_func(self, *args, **kwargs)
-            except self._cloud.CLOUD_ERRORS as error:
-                self.error_streak += 1
-                self.next_request_time += min(2 ** self.error_streak,
-                                              self.max_retry_wait)
-                self._logger.error(
-                    "Caught cloud error (no retry): %s",
-                    error, exc_info=error)
             except Exception as error:
-                self._logger.error(
-                    "Caught unknown error (no retry): %s",
-                    error, exc_info=error)
+                if self._cloud.is_cloud_exception(error):
+                    self.error_streak += 1
+                    self.next_request_time += min(2 ** self.error_streak,
+                                                  self.max_retry_wait)
+                self._logger.warn(
+                    "Unhandled exception: %s", error, exc_info=error)
             else:
                 self.error_streak = 0
                 return result
diff --git a/services/nodemanager/tests/test_computenode_dispatch.py b/services/nodemanager/tests/test_computenode_dispatch.py
index 95b1329..6613718 100644
--- a/services/nodemanager/tests/test_computenode_dispatch.py
+++ b/services/nodemanager/tests/test_computenode_dispatch.py
@@ -267,6 +267,16 @@ class ComputeNodeUpdateActorTestCase(testutil.ActorTestMixin,
         self.updater.sync_node(cloud_node, arv_node).get(self.TIMEOUT)
         self.driver().sync_node.assert_called_with(cloud_node, arv_node)
 
+    @testutil.no_sleep
+    def test_node_sync_error(self):
+        self.make_actor()
+        cloud_node = testutil.cloud_node_mock()
+        arv_node = testutil.arvados_node_mock()
+        self.driver().sync_node.side_effect = (IOError, Exception, True)
+        self.updater.sync_node(cloud_node, arv_node).get(self.TIMEOUT)
+        self.updater.sync_node(cloud_node, arv_node).get(self.TIMEOUT)
+        self.updater.sync_node(cloud_node, arv_node).get(self.TIMEOUT)
+        self.driver().sync_node.assert_called_with(cloud_node, arv_node)
 
 class ComputeNodeMonitorActorTestCase(testutil.ActorTestMixin,
                                       unittest.TestCase):

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list