- def get(self, id):
- while True:
- try:
- return self.ob[struct.pack(">Q", id)]
- except KeyError:
- raise KeyError(id) from None
- except deadlock:
- continue
+ @txnfun(lambda self: self.env.env)
+ def replace(self, id, ob, *, tx):
+ key = struct.pack(">Q", id)
+ if not self.ob.has_key(key, txn=tx.tx):
+ raise KeyError(id)
+ self.ob.put(key, ob, txn=tx.tx)
+
+ @txnfun(lambda self: self.env.env)
+ def get(self, id, *, tx):
+ ret = self.ob.get(struct.pack(">Q", id), None)
+ if ret is None:
+ raise KeyError(id)
+ return ret