You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by pm...@apache.org on 2014/02/01 11:16:40 UTC

svn commit: r1563387 - /qpid/trunk/qpid/tools/src/py/qpidstore/janal.py

Author: pmoravec
Date: Sat Feb  1 10:16:39 2014
New Revision: 1563387

URL: http://svn.apache.org/r1563387
Log:
QPID-5530: [legacystore] store_chk raises "Operation on non-existent record: operation=unlock; rid=.." on aborted DTX transaction in TplStore

Modified:
    qpid/trunk/qpid/tools/src/py/qpidstore/janal.py

Modified: qpid/trunk/qpid/tools/src/py/qpidstore/janal.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/tools/src/py/qpidstore/janal.py?rev=1563387&r1=1563386&r2=1563387&view=diff
==============================================================================
--- qpid/trunk/qpid/tools/src/py/qpidstore/janal.py (original)
+++ qpid/trunk/qpid/tools/src/py/qpidstore/janal.py Sat Feb  1 10:16:39 2014
@@ -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):



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org