diff options
author | Marko Kreen | 2012-11-28 18:29:42 +0000 |
---|---|---|
committer | Marko Kreen | 2012-11-28 18:30:19 +0000 |
commit | 5c1052f040e5a423548f46832e39cdd82fc54b07 (patch) | |
tree | e34e3a5bee804d42cdf24108cb60f89d582d4b83 | |
parent | ff4ca429552266422ee808e77dbf334997105362 (diff) |
Few more syncer fixes
-rw-r--r-- | python/londiste/syncer.py | 14 | ||||
-rw-r--r-- | python/londiste/util.py | 9 | ||||
-rwxr-xr-x | tests/londiste/test-compare.sh | 4 |
3 files changed, 16 insertions, 11 deletions
diff --git a/python/londiste/syncer.py b/python/londiste/syncer.py index 80dbbf9c..befeaded 100644 --- a/python/londiste/syncer.py +++ b/python/londiste/syncer.py @@ -310,7 +310,7 @@ class Syncer(skytools.DBScript): setup_curs = setup_db.cursor() lock_time = time.time() - self.pause_consumer(setup_curs, self.provider_info['worker_name']) + self.old_worker_paused = self.pause_consumer(setup_curs, self.provider_info['worker_name']) lock_curs = lock_db.cursor() self.log.info('Syncing %s' % dst_tbl) @@ -335,6 +335,9 @@ class Syncer(skytools.DBScript): sys.exit(1) def unlock_table_branch(self, lock_db, setup_db): + # keep worker paused if it was so before + if self.old_worker_paused: + return setup_curs = setup_db.cursor() self.resume_consumer(setup_curs, self.provider_info['worker_name']) @@ -351,13 +354,17 @@ class Syncer(skytools.DBScript): def pause_consumer(self, curs, cons_name): self.log.info("Pausing upstream worker: %s", cons_name) - self.set_pause_flag(curs, cons_name, True) + return self.set_pause_flag(curs, cons_name, True) def resume_consumer(self, curs, cons_name): self.log.info("Resuming upstream worker: %s", cons_name) - self.set_pause_flag(curs, cons_name, False) + return self.set_pause_flag(curs, cons_name, False) def set_pause_flag(self, curs, cons_name, flag): + q = "select * from pgq_node.get_consumer_state(%s, %s)" + res = self.exec_cmd(curs, q, [self.queue_name, cons_name]) + oldflag = res[0]['paused'] + q = "select * from pgq_node.set_consumer_paused(%s, %s, %s)" self.exec_cmd(curs, q, [self.queue_name, cons_name, flag]) @@ -367,4 +374,5 @@ class Syncer(skytools.DBScript): if res[0]['uptodate']: break time.sleep(0.5) + return oldflag diff --git a/python/londiste/util.py b/python/londiste/util.py index 0bfd5051..334a0103 100644 --- a/python/londiste/util.py +++ b/python/londiste/util.py @@ -9,12 +9,9 @@ def handler_allows_copy(table_attrs): if not table_attrs: return True attrs = skytools.db_urldecode(table_attrs) - if 'handler' in attrs: - hstr = attrs['handler'] - p = londiste.handler.build_handler('unused.string', hstr, None) - return p.needs_table() - else: - return True + hstr = attrs.get('handler', '') + p = londiste.handler.build_handler('unused.string', hstr, None) + return p.needs_table() def find_copy_source(script, queue_name, copy_table_name, node_name, node_location): """Find source node for table. diff --git a/tests/londiste/test-compare.sh b/tests/londiste/test-compare.sh index 606cbf86..a4a8debc 100755 --- a/tests/londiste/test-compare.sh +++ b/tests/londiste/test-compare.sh @@ -108,7 +108,7 @@ for db in db5 db2 db4 db3; do run londiste3 conf/londiste_$db.ini wait-sync msg "Run compare and repair" - run londiste3 conf/londiste_$db.ini compare - run londiste3 conf/londiste_$db.ini repair + run londiste3 conf/londiste_$db.ini compare --force + run londiste3 conf/londiste_$db.ini repair --force done |