From 3b036d9cef353c142c1cb0aec31cb8e8f96fa314 Mon Sep 17 00:00:00 2001 From: Pavel Moravec Date: Sat, 1 Feb 2014 10:16:39 +0000 Subject: QPID-5530: [legacystore] store_chk raises "Operation on non-existent record: operation=unlock; rid=.." on aborted DTX transaction in TplStore git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1563387 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/tools/src/py/qpidstore/janal.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/qpid/tools/src/py/qpidstore/janal.py b/qpid/tools/src/py/qpidstore/janal.py index 1f89207b4d..231b283c05 100644 --- a/qpid/tools/src/py/qpidstore/janal.py +++ b/qpid/tools/src/py/qpidstore/janal.py @@ -215,9 +215,18 @@ class TxnMap(object): def _abort(self, xid): """Perform an abort operation for the given xid record""" - for fid, hdr, lock in self.__map[xid]: + for _, hdr, _ in self.__map[xid]: if isinstance(hdr, jrnl.DeqRec): - self.__emap.unlock(hdr.deq_rid) + try: + self.__emap.unlock(hdr.deq_rid) + except jerr.NonExistentRecordError as err: # Not in emap, look in current transaction op list (TPL) + found_rid = False + for _, hdr1, _ in self.__map[xid]: + if isinstance(hdr1, jrnl.EnqRec) and hdr1.rid == hdr.deq_rid: + found_rid = True + break + if not found_rid: # Not found in current transaction op list, re-throw error + raise err del self.__map[xid] def _commit(self, xid): -- cgit v1.2.1