summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Jelinek2013-09-04 12:55:29 +0000
committerPetr Jelinek2013-09-04 12:55:29 +0000
commit47cfed289d0f5b46e7bf39a1f1b4b46d26ff126a (patch)
treedac2b051a635b7b95830d5806ff7bbf40e3b429e
parentb757934182c85ece36ce76d91fde22e8ccf60987 (diff)
Add timeout for add-table operation to avoid possible locking issues.
-rw-r--r--python/londiste/setup.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/python/londiste/setup.py b/python/londiste/setup.py
index 20d3f5c0..1ce79598 100644
--- a/python/londiste/setup.py
+++ b/python/londiste/setup.py
@@ -40,6 +40,8 @@ class LondisteSetup(CascadeAdmin):
self.set_name = self.queue_name
+ self.lock_timeout = self.cf.getfloat('lock_timeout', 10)
+
londiste.handler.load_handler_modules(self.cf)
def init_optparse(self, parser=None):
@@ -117,6 +119,13 @@ class LondisteSetup(CascadeAdmin):
def is_root(self):
return self.queue_info.local_node.type == 'root'
+ def set_lock_timeout(self, curs):
+ ms = int(1000 * self.lock_timeout)
+ if ms > 0:
+ q = "SET LOCAL statement_timeout = %d" % ms
+ self.log.debug(q)
+ curs.execute(q)
+
def cmd_add_table(self, *args):
"""Attach table(s) to local node."""
@@ -198,6 +207,8 @@ class LondisteSetup(CascadeAdmin):
tbl_exists = skytools.exists_table(dst_curs, dest_table)
dst_db.commit()
+ self.set_lock_timeout(dst_curs)
+
if dest_table == tbl:
desc = tbl
else: