summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Kreen2012-07-12 14:00:34 +0000
committerMarko Kreen2012-07-13 19:44:33 +0000
commit2300f3dd6a0636f90b618c0d4322f1107952c1de (patch)
treec98abbaecd664873677822b020f57f875ba58f50
parent408a8a7aa1def8120056bf0d693919a9de7be029 (diff)
CascadedWorker: don't move watermark on source further than incoming batch.
This can happen on merge-leaf-on-branch, where incomong queue can be behind the combined-queue on branch.
-rw-r--r--python/pgq/cascade/worker.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/python/pgq/cascade/worker.py b/python/pgq/cascade/worker.py
index 3d7dc974..e53ddfe5 100644
--- a/python/pgq/cascade/worker.py
+++ b/python/pgq/cascade/worker.py
@@ -222,6 +222,10 @@ class CascadedWorker(CascadedConsumer):
if st.sync_watermark:
# dont send local watermark upstream
wm = self.batch_info['prev_tick_id']
+ elif wm > self.batch_info['cur_tick_id']:
+ # in wait-behind-leaf case, the wm from target can be
+ # ahead from source queue, use current batch then
+ wm = self.batch_info['cur_tick_id']
self.log.debug("Publishing local watermark: %d" % wm)
src_curs = src_db.cursor()
@@ -229,7 +233,7 @@ class CascadedWorker(CascadedConsumer):
src_curs.execute(q, [self.pgq_queue_name, st.node_name, wm])
src_db.commit()
- # if last part fails, dont repeat it immediately
+ # if next part fails, dont repeat it immediately
self.local_wm_publish_time = t
if st.sync_watermark: