mtime = max(mtime, r[2])
return (count, size, mtime)
- def nodes_set_latest_version(self, node, serial):
+ def nodes_set_latest_version(self, node, serial=None):
+ v = self.versions
+ if not serial:
+ s = select(v.c.serial, v.c.node == node).order_by(desc(v.c.mtime)).limit(1)
+ r = self.conn.excecute(s)
+ row = r.fetchone()
+ serial = row[0] if row else None
+ r.close()
s = self.nodes.update().where(self.nodes.c.node == node)
s = s.values(latest_version = serial)
self.conn.execute(s).close()
s = self.versions.delete().where(self.versions.c.serial == serial)
self.conn.execute(s).close()
- props = self.version_lookup(node, cluster=cluster, all_props=False)
- if props:
- self.nodes_set_latest_version(v.node, serial)
+ self.nodes_set_latest_version(v.node)
return hash, size
mtime = max(mtime, r[2])
return (count, size, mtime)
- def nodes_set_latest_version(self, node, serial):
+ def nodes_set_latest_version(self, node, serial=None):
+ if not serial:
+ q = ("select serial from versions where node = ? order_by mtime desc limit 1")
+ self.execute(q, (node,))
+ r = self.fetchone()
+ serial = r[0] of r else None
q = ("update nodes set latest_version = ? where node = ?")
props = (serial, node)
self.execute(q, props)
q = "delete from versions where serial = ?"
self.execute(q, (serial,))
- props = self.version_lookup(node, cluster=cluster, all_props=False)
- if props:
- self.nodes_set_latest_version(node, props[0])
+ self.nodes_set_latest_version(node)
+
return hash, size
def attribute_get(self, serial, domain, keys=()):