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