else:
loc = self.cf.get(self.initial_db_name)
- while self.looping:
+ while 1:
db = self.get_database('root_db', connstr = loc)
node_db = self.get_node_database(node)
qinfo = self.load_queue_info(node_db)
ninfo = qinfo.local_node
+ node_location = qinfo.get_member(node).location
# reload consumer info
cmap = self.get_node_consumer_map(node)
is_worker = (ninfo.worker_name == consumer)
# fixme: expect the node to be described already
- #q = "select * from pgq_node.add_member(%s, %s, %s, false)"
- #self.node_cmd(new_provider, q, [self.queue_name, node_name, node_location])
+ q = "select * from pgq_node.register_location(%s, %s, %s, false)"
+ self.node_cmd(new_provider, q, [self.queue_name, node, node_location])
# subscribe on new provider
if is_worker:
self.node_cmd(node, q, [self.queue_name, consumer, pause_flag])
self.log.info('Waiting for worker to accept')
- while self.looping:
+ while 1:
q = "select * from pgq_node.get_consumer_state(%s, %s)"
stat = self.node_cmd(node, q, [self.queue_name, consumer], quiet = 1)[0]
if stat['paused'] != pause_flag:
self.curs = curs
self.length = 0
self.status_map = {}
+ self.batch_id = batch_id
self.fetch_status = 0 # 0-not started, 1-in-progress, 2-done
def __iter__(self):
self.fetch_status = 1
q = "select * from pgq.get_batch_cursor(%s, %s, %s)"
- self.curs.execute(q, [self.queue_name, self.sql_cursor, self.fetch_size])
+ self.curs.execute(q, [self.batch_id, self.sql_cursor, self.fetch_size])
# this will return first batch of rows
q = "fetch %d from batch_walker" % self.fetch_size
self.consumer_id = self.consumer_name
def reload(self):
- DBScript.reload(self)
+ skytools.DBScript.reload(self)
self.pgq_lazy_fetch = self.cf.getint("pgq_lazy_fetch", self.default_lazy_fetch)
# set following ones to None if not set
else:
skytools.DBScript.start(self)
+ def reload(self):
+ skytools.DBScript.reload(self)
+ self.set_single_loop(1)
+
def init_optparse(self, parser=None):
p = skytools.DBScript.init_optparse(self, parser)
p.set_usage(command_usage.strip())