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 | |
| parent | a49189ad06ae4811c1b9bb1e35a6442ce5faae37 (diff) | |
thread safety catchup
Diffstat (limited to 'python')
| -rw-r--r-- | python/londiste/setup.py | 1 | ||||
| -rw-r--r-- | python/pgq/cascade/admin.py | 10 |
2 files changed, 8 insertions, 3 deletions
diff --git a/python/londiste/setup.py b/python/londiste/setup.py index d7463de7..8a64cc8d 100644 --- a/python/londiste/setup.py +++ b/python/londiste/setup.py @@ -619,6 +619,7 @@ class LondisteSetup(CascadeAdmin): def load_extra_status(self, curs, node): """Fetch extra info.""" + # must be thread-safe (!) CascadeAdmin.load_extra_status(self, curs, node) curs.execute("select * from londiste.get_table_list(%s)", [self.queue_name]) n_ok = n_half = n_ign = 0 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 # |
