diff options
| author | Pavel Moravec <pmoravec@apache.org> | 2014-02-01 10:16:39 +0000 |
|---|---|---|
| committer | Pavel Moravec <pmoravec@apache.org> | 2014-02-01 10:16:39 +0000 |
| commit | 3b036d9cef353c142c1cb0aec31cb8e8f96fa314 (patch) | |
| tree | 6781354f2ab68cc73954634efd64b746167342e8 | |
| parent | e9e3e6281da5172965a53ea83753b998646a3ec3 (diff) | |
| download | qpid-python-3b036d9cef353c142c1cb0aec31cb8e8f96fa314.tar.gz | |
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
| -rw-r--r-- | qpid/tools/src/py/qpidstore/janal.py | 13 |
1 files 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): |
