diff options
author | Marko Kreen | 2012-07-12 14:00:34 +0000 |
---|---|---|
committer | Marko Kreen | 2012-07-13 19:44:33 +0000 |
commit | 2300f3dd6a0636f90b618c0d4322f1107952c1de (patch) | |
tree | c98abbaecd664873677822b020f57f875ba58f50 | |
parent | 408a8a7aa1def8120056bf0d693919a9de7be029 (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.py | 6 |
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: |