You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by ma...@apache.org on 2015/11/02 19:54:10 UTC

aurora git commit: Retry scheduler connection after unknown failures.

Repository: aurora
Updated Branches:
  refs/heads/master b712d5773 -> 3ecce6dc3


Retry scheduler connection after unknown failures.

Bugs closed: AURORA-1533

Reviewed at https://reviews.apache.org/r/39854/


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

Branch: refs/heads/master
Commit: 3ecce6dc3cff9c51f2dfbad8b6bf8bf6633fd71a
Parents: b712d57
Author: Stephan Erb <st...@dev.static-void.de>
Authored: Mon Nov 2 10:54:04 2015 -0800
Committer: Maxim Khutornenko <ma...@apache.org>
Committed: Mon Nov 2 10:54:04 2015 -0800

----------------------------------------------------------------------
 .../apache/aurora/client/api/scheduler_client.py   |  2 +-
 .../aurora/client/api/test_scheduler_client.py     | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/3ecce6dc/src/main/python/apache/aurora/client/api/scheduler_client.py
----------------------------------------------------------------------
diff --git a/src/main/python/apache/aurora/client/api/scheduler_client.py b/src/main/python/apache/aurora/client/api/scheduler_client.py
index 8ff21bf..a469eec 100644
--- a/src/main/python/apache/aurora/client/api/scheduler_client.py
+++ b/src/main/python/apache/aurora/client/api/scheduler_client.py
@@ -227,7 +227,7 @@ class SchedulerProxy(object):
   def with_scheduler(method):
     """Decorator magic to make sure a connection is made to the scheduler"""
     def _wrapper(self, *args, **kwargs):
-      if not self._scheduler_client:
+      if not self._client:
         self._construct_scheduler()
       return method(self, *args, **kwargs)
     return _wrapper

http://git-wip-us.apache.org/repos/asf/aurora/blob/3ecce6dc/src/test/python/apache/aurora/client/api/test_scheduler_client.py
----------------------------------------------------------------------
diff --git a/src/test/python/apache/aurora/client/api/test_scheduler_client.py b/src/test/python/apache/aurora/client/api/test_scheduler_client.py
index 1b4ff9c..5a17ab6 100644
--- a/src/test/python/apache/aurora/client/api/test_scheduler_client.py
+++ b/src/test/python/apache/aurora/client/api/test_scheduler_client.py
@@ -438,6 +438,23 @@ def test_transient_error(_, client):
   assert mock_thrift_client.killTasks.call_count == 3
 
 
+@mock.patch('apache.aurora.client.api.scheduler_client.SchedulerClient',
+            spec=scheduler_client.SchedulerClient)
+def test_unknown_connection_error(client):
+  mock_scheduler_client = mock.create_autospec(spec=scheduler_client.SchedulerClient, instance=True)
+  client.get.return_value = mock_scheduler_client
+  proxy = TestSchedulerProxy(Cluster(name='local'))
+
+  # unknown, transient connection error
+  mock_scheduler_client.get_thrift_client.side_effect = RuntimeError
+  with pytest.raises(Exception):
+    proxy.client()
+
+  # successful connection on re-attempt
+  mock_scheduler_client.get_thrift_client.side_effect = None
+  assert proxy.client() is not None
+
+
 @mock.patch('apache.aurora.client.api.scheduler_client.TRequestsTransport', spec=TRequestsTransport)
 def test_connect_direct_scheduler_with_user_agent(mock_transport):
   mock_transport.return_value.open.side_effect = [TTransport.TTransportException, True]