diff options
| author | martinko | 2013-02-27 11:18:18 +0000 |
|---|---|---|
| committer | martinko | 2013-02-27 11:18:18 +0000 |
| commit | 62d9f3b01ff6c4bb0fee548d31050741e96a2f53 (patch) | |
| tree | 96a1fb0628a70854521b30b32e7b1599e025b548 /python/pgq/cascade | |
| parent | a49189ad06ae4811c1b9bb1e35a6442ce5faae37 (diff) | |
thread safety catchup
Diffstat (limited to 'python/pgq/cascade')
| -rw-r--r-- | python/pgq/cascade/admin.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/python/pgq/cascade/admin.py b/python/pgq/cascade/admin.py index c47ec02c..a8236816 100644 --- a/python/pgq/cascade/admin.py +++ b/python/pgq/cascade/admin.py @@ -391,12 +391,14 @@ class CascadeAdmin(skytools.AdminScript): def load_node_status (self, name, location): """ Load node info & status """ + # must be thread-safe (!) if not self.node_alive(name): node = NodeInfo(self.queue_name, None, node_name = name) return node try: - conn = 'look_db.%s' % name - db = self.get_database(conn, connstr = location, autocommit = 1) + db = None + db = skytools.connect_database (location) + db.set_isolation_level (skytools.I_AUTOCOMMIT) curs = db.cursor() curs.execute("select * from pgq_node.get_node_info(%s)", [self.queue_name]) node = NodeInfo(self.queue_name, curs.fetchone()) @@ -406,7 +408,8 @@ class CascadeAdmin(skytools.AdminScript): msg = str(d).strip().split('\n', 1)[0].strip() print('Node %r failure: %s' % (name, msg)) node = NodeInfo(self.queue_name, None, node_name = name) - self.close_database(conn) + finally: + if db: db.close() return node def cmd_node_status(self): @@ -432,6 +435,7 @@ class CascadeAdmin(skytools.AdminScript): def load_extra_status(self, curs, node): """Fetch extra info.""" + # must be thread-safe (!) pass # |
