[ARVADOS] updated: c1276bd9f83a7826f10e1752ac793d8a1cd3c47f
Git user
git at public.curoverse.com
Tue Apr 26 09:51:59 EDT 2016
Summary of changes:
sdk/python/arvados/events.py | 15 +++++++++++----
sdk/python/arvados/retry.py | 2 +-
2 files changed, 12 insertions(+), 5 deletions(-)
via c1276bd9f83a7826f10e1752ac793d8a1cd3c47f (commit)
from 89e091b3ee1fe85a68b0a9a0a619ca7baf606d2d (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 c1276bd9f83a7826f10e1752ac793d8a1cd3c47f
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Tue Apr 26 09:51:53 2016 -0400
8931: Use RetryLoop around websocket reconnect. Create a new _EventClient
object on each loop iteration. Handle unexpected exceptions in PollClient
retry loop.
diff --git a/sdk/python/arvados/events.py b/sdk/python/arvados/events.py
index 54f3019..4985aaf 100644
--- a/sdk/python/arvados/events.py
+++ b/sdk/python/arvados/events.py
@@ -116,14 +116,18 @@ class EventClient(object):
def on_closed(self):
if self.is_closed == False:
_logger.warn("Unexpected close. Reconnecting.")
- self.ec = _EventClient(self.url, self.filters, self.on_event, self.last_log_id, self.on_closed)
- while True:
+ for tries_left in RetryLoop(num_retries=25, backoff_start=.1, max_wait=15):
try:
+ self.ec = _EventClient(self.url, self.filters, self.on_event, self.last_log_id, self.on_closed)
self.ec.connect()
break
except Exception as e:
- _logger.warn("Error '%s' during websocket reconnect. Will retry after 5s.", e, exc_info=e)
- time.sleep(5)
+ _logger.warn("Error '%s' during websocket reconnect.", e)
+ if tries_left == 0:
+ _logger.exception("EventClient thread could not contact websocket server.")
+ self.is_closed = True
+ thread.interrupt_main()
+ return
class PollClient(threading.Thread):
@@ -178,6 +182,9 @@ class PollClient(threading.Thread):
break
except errors.ApiError as error:
pass
+ else:
+ tries_left = 0
+ break
if tries_left == 0:
_logger.exception("PollClient thread could not contact API server.")
with self._closing_lock:
diff --git a/sdk/python/arvados/retry.py b/sdk/python/arvados/retry.py
index dccd9c8..5ba4f4e 100644
--- a/sdk/python/arvados/retry.py
+++ b/sdk/python/arvados/retry.py
@@ -51,7 +51,7 @@ class RetryLoop(object):
* save_results: Specify a number to save the last N results
that the loop recorded. These records are available through
the results attribute, oldest first. Default 1.
- * max_wait: Maximum time to wait between retries.
+ * max_wait: Maximum number of seconds to wait between retries.
"""
self.tries_left = num_retries + 1
self.check_result = success_check
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list