From dc7cc8992d8431f9651659dabb09534a01d9699d Mon Sep 17 00:00:00 2001 From: Giorgos Korfiatis <gkorf@grnet.gr> Date: Wed, 6 May 2015 15:28:27 +0300 Subject: [PATCH] handle pithos calls retry --- agkyra/agkyra/syncer/pithos_client.py | 9 +++++++-- agkyra/agkyra/syncer/setup.py | 9 +++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/agkyra/agkyra/syncer/pithos_client.py b/agkyra/agkyra/syncer/pithos_client.py index af63487..24d1c0f 100644 --- a/agkyra/agkyra/syncer/pithos_client.py +++ b/agkyra/agkyra/syncer/pithos_client.py @@ -262,7 +262,11 @@ class PithosFileClient(FileClient): def get_pithos_candidates(self, last_modified=None): db = self.get_db() - objects = self.endpoint.list_objects() + try: + objects = self.endpoint.list_objects() + except ClientError as e: + logger.error(e) + return {} self.objects = objects upstream_all = {} for obj in objects: @@ -292,7 +296,8 @@ class PithosFileClient(FileClient): (last_modified, candidates)) return candidates - def notifier(self, callback=None, interval=2): + def notifier(self, callback=None): + interval = self.settings.pithos_list_interval class PollPithosThread(utils.StoppableThread): def run_body(this): candidates = self.get_pithos_candidates( diff --git a/agkyra/agkyra/syncer/setup.py b/agkyra/agkyra/syncer/setup.py index 743c78c..b96b210 100644 --- a/agkyra/agkyra/syncer/setup.py +++ b/agkyra/agkyra/syncer/setup.py @@ -38,6 +38,8 @@ DEFAULT_CACHE_FETCH_NAME = 'fetched' GLOBAL_SETTINGS_NAME = '.agkyra' DEFAULT_DBNAME = "syncer.db" DEFAULT_ACTION_MAX_WAIT = 10 +DEFAULT_PITHOS_LIST_INTERVAL = 5 +DEFAULT_CONNECTION_RETRY_LIMIT = 3 thread_local_data = threading.local() @@ -95,6 +97,13 @@ class SyncerSettings(): self.heartbeat = HeartBeat() self.action_max_wait = kwargs.get("action_max_wait", DEFAULT_ACTION_MAX_WAIT) + self.pithos_list_interval = kwargs.get("pithos_list_interval", + DEFAULT_PITHOS_LIST_INTERVAL) + + self.connection_retry_limit = kwargs.get( + "connection_retry_limit", DEFAULT_CONNECTION_RETRY_LIMIT) + self.endpoint.CONNECTION_RETRY_LIMIT = self.connection_retry_limit + self.messager = Messager() def get_db(self, initialize=False): -- GitLab