As I see In javadocs for org.apache.ignite.transactions.Transaction
/**
* Commits this transaction by initiating {@code two-phase-commit}
process.
*
* @throws IgniteException If commit failed.
* @throws TransactionTimeoutException If transaction is timed out.
* @throws TransactionRollbackException If transaction is
automatically rolled back.
* @throws TransactionOptimisticException If transaction
concurrency is {@link TransactionConcurrency#OPTIMISTIC}
* and commit is optimistically failed.
* @throws TransactionHeuristicException If transaction has
entered an unknown state.
*/
@IgniteAsyncSupported
public void commit() throws IgniteException;
And as we see in trace, exception come
from org.apache.ignite.internal.processors.cache.transactions.TransactionProxyImpl.commit
So system behaviour meets javadoc but don't meet docs and example on
https://apacheignite.readme.io/docs/transactions
On Fri, Aug 9, 2019 at 6:12 PM Andrey Davydov
<andrey.davy...@gmail.com <mailto:andrey.davy...@gmail.com>> wrote:
Sorry fo misprint, test does not check that there are no any way
to get TimeoutException
On Fri, Aug 9, 2019 at 5:55 PM Andrey Davydov
<andrey.davy...@gmail.com <mailto:andrey.davy...@gmail.com>> wrote:
It is a little bit difficult to reproduce. We got unhadled
exception on pre prod performance test of our system. I will
try to reproduce it on weekend.
You test just check that if you get CacheException then
TimeoutException is inside it, but doesn't check that there
are no any way to get CacheException. As I check listened in
stack trace lines from 2.7.5 sources (loaded from maven), i
dont see where TOE shoud be wrapped to CE
If there is full list of Exceptions when it is valid to retry
transaction (Optimistic or Pessimistic). As I found in
different pages of docs, now I catch (optimistic tx):
TransactionOptimisticException - try to rerun transaction
ClusterTopologyException - retryReadyFuture().get() and try to
rerun transaction
CacheException check if getCause is Timeout then try to rerun
or rethrow in other cases
Thanks.
On Fri, Aug 9, 2019 at 5:31 PM Andrei Aleksandrov
<aealexsand...@gmail.com <mailto:aealexsand...@gmail.com>> wrote:
Hi,
It looks strange because even Ignite tests expect that
TransactionTimeoutException will be wrapped
in CacheException. For
example IgniteTxConfigCacheSelfTest:
try (final Transaction tx =
ignite.transactions().txStart()) {
assert tx != null;
cache.put("key0", "val0");
sleepForTxFailure();
cache.put("key", "val");
fail("Timeout exception must be thrown");
}
catch (CacheException e) {
assert e.getCause() instanceof
TransactionTimeoutException;
}
So could you please provide the reproducer for your issue?
We will check
it and create the JIRA for it.
BR,
Andrei
8/9/2019 5:16 PM, Andrey Davydov пишет:
> On ignite 2.7.5 I got TransactionTimeoutException not
wrapped
> in CacheException. If it is normal behaviour and I
should catch
> TransactionTimeoutException too. My current logic is to
> catch CacheException and check CacheException.getCause()
if it
> was TransactionTimeoutException.
>
> Thanks.
>
> Full statck trace:
>
> Caused by:
org.apache.ignite.transactions.TransactionTimeoutException:
> Failed to acquire lock within provided timeout for
transaction
> [timeout=150, tx=GridDhtTxLocal
> [nearNodeId=18e6b4a9-c39d-463a-9260-b5ed5057a491,
> nearFutId=74752d17c61-0341ea15-fcbd-48ef-b655-299a6d885196,
> nearMiniId=1, nearFinFutId=null, nearFinMiniId=0,
> nearXidVer=GridCacheVersion [topVer=176751246,
order=1565274668396,
> nodeOrder=1], super=GridDhtTxLocalAdapter
> [nearOnOriginatingNode=false, nearNodes=[],
> dhtNodes=[18e6b4a9-c39d-463a-9260-b5ed5057a491,
> 1144f759-6d1f-4aa3-9592-cc0b3481eb15], explicitLock=false,
> super=IgniteTxLocalAdapter [completedBase=null,
> sndTransformedVals=false, depEnabled=false,
txState=IgniteTxStateImpl
> [activeCacheIds=[1895344369], recovery=false,
mvccEnabled=false,
> txMap=[IgniteTxEntry [key=KeyCacheObjectImpl [part=127,
> val=cancel_queue#FIRSTG, hasValBytes=true],
cacheId=1895344369,
> txKey=IgniteTxKey [key=KeyCacheObjectImpl [part=127,
> val=cancel_queue#FIRSTG, hasValBytes=true],
cacheId=1895344369],
> val=[op=READ, val=null], prevVal=[op=NOOP, val=null],
oldVal=[op=NOOP,
> val=null], entryProcessorsCol=null, ttl=-1,
conflictExpireTime=-1,
> conflictVer=null, explicitVer=null, dhtVer=null,
filters=[],
> filtersPassed=false, filtersSet=false,
entry=GridDhtCacheEntry
> [rdrs=[], part=127, super=GridDistributedCacheEntry
> [super=GridCacheMapEntry [key=KeyCacheObjectImpl [part=127,
> val=cancel_queue#FIRSTG, hasValBytes=true], val=null,
> ver=GridCacheVersion [topVer=0, order=0, nodeOrder=0],
> hash=1903256846, extras=GridCacheMvccEntryExtras
[mvcc=GridCacheMvcc
> [locs=[GridCacheMvccCandidate
> [nodeId=73a0c88f-3628-4c12-bd75-d273b77a6752,
ver=GridCacheVersion
> [topVer=176751246, order=1565274668397, nodeOrder=2],
threadId=883,
> id=412844, topVer=AffinityTopologyVersion [topVer=3,
minorTopVer=1],
> reentry=null,
otherNodeId=18e6b4a9-c39d-463a-9260-b5ed5057a491,
> otherVer=GridCacheVersion [topVer=176751246,
order=1565274668396,
> nodeOrder=1], mappedDhtNodes=null, mappedNearNodes=null,
> ownerVer=null, serOrder=GridCacheVersion [topVer=176751246,
> order=1565274668396, nodeOrder=1],
key=KeyCacheObjectImpl [part=127,
> val=cancel_queue#FIRSTG, hasValBytes=true],
>
masks=local=1|owner=1|ready=1|reentry=0|used=0|tx=1|single_implicit=0|dht_local=1|near_local=0|removed=0|read=1,
> prevVer=GridCacheVersion [topVer=176751246,
order=1565274668397,
> nodeOrder=2], nextVer=null]], rmts=null]], flags=2]]],
prepared=1,
> locked=false, nodeId=null, locMapped=false, expiryPlc=null,
> transferExpiryPlc=false, flags=0, partUpdateCntr=0,
> serReadVer=GridCacheVersion [topVer=0, order=0,
nodeOrder=0],
> xidVer=null], IgniteTxEntry [key=KeyCacheObjectImpl
[part=121,
> val=cancel_queue#FIRSTA, hasValBytes=true],
cacheId=1895344369,
> txKey=IgniteTxKey [key=KeyCacheObjectImpl [part=121,
> val=cancel_queue#FIRSTA, hasValBytes=true],
cacheId=1895344369],
> val=[op=DELETE, val=null], prevVal=[op=NOOP, val=null],
> oldVal=[op=NOOP, val=null], entryProcessorsCol=null,
ttl=-1,
> conflictExpireTime=-1, conflictVer=null, explicitVer=null,
> dhtVer=null, filters=[], filtersPassed=false,
filtersSet=false,
> entry=GridDhtCacheEntry [rdrs=[], part=121,
> super=GridDistributedCacheEntry [super=GridCacheMapEntry
> [key=KeyCacheObjectImpl [part=121, val=cancel_queue#FIRSTA,
> hasValBytes=true], val=null, ver=GridCacheVersion
[topVer=176751246,
> order=1565274668382, nodeOrder=2], hash=1903256840,
> extras=GridCacheMvccEntryExtras [mvcc=GridCacheMvcc
> [locs=[GridCacheMvccCandidate
> [nodeId=73a0c88f-3628-4c12-bd75-d273b77a6752,
ver=GridCacheVersion
> [topVer=176751246, order=1565274668397, nodeOrder=2],
threadId=883,
> id=412843, topVer=AffinityTopologyVersion [topVer=3,
minorTopVer=1],
> reentry=null,
otherNodeId=18e6b4a9-c39d-463a-9260-b5ed5057a491,
> otherVer=GridCacheVersion [topVer=176751246,
order=1565274668396,
> nodeOrder=1], mappedDhtNodes=null, mappedNearNodes=null,
> ownerVer=null, serOrder=GridCacheVersion [topVer=176751246,
> order=1565274668396, nodeOrder=1],
key=KeyCacheObjectImpl [part=121,
> val=cancel_queue#FIRSTA, hasValBytes=true],
>
masks=local=1|owner=1|ready=1|reentry=0|used=0|tx=1|single_implicit=0|dht_local=1|near_local=0|removed=0|read=0,
> prevVer=null, nextVer=GridCacheVersion [topVer=176751246,
> order=1565274668397, nodeOrder=2]]], rmts=null]],
flags=3]]],
> prepared=1, locked=false, nodeId=null, locMapped=false,
> expiryPlc=null, transferExpiryPlc=false, flags=0,
partUpdateCntr=0,
> serReadVer=GridCacheVersion [topVer=0, order=0,
nodeOrder=0],
> xidVer=null]]], mvccWaitTxs=null, qryEnlisted=false,
> forceSkipCompletedVers=false, super=IgniteTxAdapter
> [xidVer=GridCacheVersion [topVer=176751246,
order=1565274668397,
> nodeOrder=2], writeVer=GridCacheVersion [topVer=176751246,
> order=1565274668398, nodeOrder=2], implicit=false,
loc=true,
> threadId=883, startTime=1565337963940,
> nodeId=73a0c88f-3628-4c12-bd75-d273b77a6752,
startVer=GridCacheVersion
> [topVer=176751246, order=1565274668397, nodeOrder=2],
endVer=null,
> isolation=SERIALIZABLE, concurrency=OPTIMISTIC,
timeout=150,
> sysInvalidate=false, sys=false, plc=2, commitVer=null,
> finalizing=NONE, invalidParts=null, state=PREPARING,
timedOut=false,
> topVer=AffinityTopologyVersion [topVer=3, minorTopVer=1],
> txCounters=null, duration=152ms, onePhaseCommit=false],
size=2]]]]
> at
>
org.apache.ignite.internal.util.IgniteUtils$13.apply(IgniteUtils.java:935)
> ~[ignite-core-2.7.5.jar:2.7.5]
> at
>
org.apache.ignite.internal.util.IgniteUtils$13.apply(IgniteUtils.java:930)
> ~[ignite-core-2.7.5.jar:2.7.5]
> at
>
org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:1021)
> ~[ignite-core-2.7.5.jar:2.7.5]
> at
>
org.apache.ignite.internal.processors.cache.transactions.TransactionProxyImpl.commit(TransactionProxyImpl.java:305)
> ~[ignite-core-2.7.5.jar:2.7.5]
> ...
> Caused by:
>
org.apache.ignite.internal.transactions.IgniteTxTimeoutCheckedException:
> Failed to acquire lock within provided timeout for
transaction
> [timeout=150, tx=GridDhtTxLocal
> [nearNodeId=18e6b4a9-c39d-463a-9260-b5ed5057a491,
> nearFutId=74752d17c61-0341ea15-fcbd-48ef-b655-299a6d885196,
> nearMiniId=1, nearFinFutId=null, nearFinMiniId=0,
> nearXidVer=GridCacheVersion [topVer=176751246,
order=1565274668396,
> nodeOrder=1], super=GridDhtTxLocalAdapter
> [nearOnOriginatingNode=false, nearNodes=[],
> dhtNodes=[18e6b4a9-c39d-463a-9260-b5ed5057a491,
> 1144f759-6d1f-4aa3-9592-cc0b3481eb15], explicitLock=false,
> super=IgniteTxLocalAdapter [completedBase=null,
> sndTransformedVals=false, depEnabled=false,
txState=IgniteTxStateImpl
> [activeCacheIds=[1895344369], recovery=false,
mvccEnabled=false,
> txMap=[IgniteTxEntry [key=KeyCacheObjectImpl [part=127,
> val=cancel_queue#FIRSTG, hasValBytes=true],
cacheId=1895344369,
> txKey=IgniteTxKey [key=KeyCacheObjectImpl [part=127,
> val=cancel_queue#FIRSTG, hasValBytes=true],
cacheId=1895344369],
> val=[op=READ, val=null], prevVal=[op=NOOP, val=null],
oldVal=[op=NOOP,
> val=null], entryProcessorsCol=null, ttl=-1,
conflictExpireTime=-1,
> conflictVer=null, explicitVer=null, dhtVer=null,
filters=[],
> filtersPassed=false, filtersSet=false,
entry=GridDhtCacheEntry
> [rdrs=[], part=127, super=GridDistributedCacheEntry
> [super=GridCacheMapEntry [key=KeyCacheObjectImpl [part=127,
> val=cancel_queue#FIRSTG, hasValBytes=true], val=null,
> ver=GridCacheVersion [topVer=0, order=0, nodeOrder=0],
> hash=1903256846, extras=GridCacheMvccEntryExtras
[mvcc=GridCacheMvcc
> [locs=[GridCacheMvccCandidate
> [nodeId=73a0c88f-3628-4c12-bd75-d273b77a6752,
ver=GridCacheVersion
> [topVer=176751246, order=1565274668397, nodeOrder=2],
threadId=883,
> id=412844, topVer=AffinityTopologyVersion [topVer=3,
minorTopVer=1],
> reentry=null,
otherNodeId=18e6b4a9-c39d-463a-9260-b5ed5057a491,
> otherVer=GridCacheVersion [topVer=176751246,
order=1565274668396,
> nodeOrder=1], mappedDhtNodes=null, mappedNearNodes=null,
> ownerVer=null, serOrder=GridCacheVersion [topVer=176751246,
> order=1565274668396, nodeOrder=1],
key=KeyCacheObjectImpl [part=127,
> val=cancel_queue#FIRSTG, hasValBytes=true],
>
masks=local=1|owner=1|ready=1|reentry=0|used=0|tx=1|single_implicit=0|dht_local=1|near_local=0|removed=0|read=1,
> prevVer=GridCacheVersion [topVer=176751246,
order=1565274668397,
> nodeOrder=2], nextVer=null]], rmts=null]], flags=2]]],
prepared=1,
> locked=false, nodeId=null, locMapped=false, expiryPlc=null,
> transferExpiryPlc=false, flags=0, partUpdateCntr=0,
> serReadVer=GridCacheVersion [topVer=0, order=0,
nodeOrder=0],
> xidVer=null], IgniteTxEntry [key=KeyCacheObjectImpl
[part=121,
> val=cancel_queue#FIRSTA, hasValBytes=true],
cacheId=1895344369,
> txKey=IgniteTxKey [key=KeyCacheObjectImpl [part=121,
> val=cancel_queue#FIRSTA, hasValBytes=true],
cacheId=1895344369],
> val=[op=DELETE, val=null], prevVal=[op=NOOP, val=null],
> oldVal=[op=NOOP, val=null], entryProcessorsCol=null,
ttl=-1,
> conflictExpireTime=-1, conflictVer=null, explicitVer=null,
> dhtVer=null, filters=[], filtersPassed=false,
filtersSet=false,
> entry=GridDhtCacheEntry [rdrs=[], part=121,
> super=GridDistributedCacheEntry [super=GridCacheMapEntry
> [key=KeyCacheObjectImpl [part=121, val=cancel_queue#FIRSTA,
> hasValBytes=true], val=null, ver=GridCacheVersion
[topVer=176751246,
> order=1565274668382, nodeOrder=2], hash=1903256840,
> extras=GridCacheMvccEntryExtras [mvcc=GridCacheMvcc
> [locs=[GridCacheMvccCandidate
> [nodeId=73a0c88f-3628-4c12-bd75-d273b77a6752,
ver=GridCacheVersion
> [topVer=176751246, order=1565274668397, nodeOrder=2],
threadId=883,
> id=412843, topVer=AffinityTopologyVersion [topVer=3,
minorTopVer=1],
> reentry=null,
otherNodeId=18e6b4a9-c39d-463a-9260-b5ed5057a491,
> otherVer=GridCacheVersion [topVer=176751246,
order=1565274668396,
> nodeOrder=1], mappedDhtNodes=null, mappedNearNodes=null,
> ownerVer=null, serOrder=GridCacheVersion [topVer=176751246,
> order=1565274668396, nodeOrder=1],
key=KeyCacheObjectImpl [part=121,
> val=cancel_queue#FIRSTA, hasValBytes=true],
>
masks=local=1|owner=1|ready=1|reentry=0|used=0|tx=1|single_implicit=0|dht_local=1|near_local=0|removed=0|read=0,
> prevVer=null, nextVer=GridCacheVersion [topVer=176751246,
> order=1565274668397, nodeOrder=2]]], rmts=null]],
flags=3]]],
> prepared=1, locked=false, nodeId=null, locMapped=false,
> expiryPlc=null, transferExpiryPlc=false, flags=0,
partUpdateCntr=0,
> serReadVer=GridCacheVersion [topVer=0, order=0,
nodeOrder=0],
> xidVer=null]]], mvccWaitTxs=null, qryEnlisted=false,
> forceSkipCompletedVers=false, super=IgniteTxAdapter
> [xidVer=GridCacheVersion [topVer=176751246,
order=1565274668397,
> nodeOrder=2], writeVer=GridCacheVersion [topVer=176751246,
> order=1565274668398, nodeOrder=2], implicit=false,
loc=true,
> threadId=883, startTime=1565337963940,
> nodeId=73a0c88f-3628-4c12-bd75-d273b77a6752,
startVer=GridCacheVersion
> [topVer=176751246, order=1565274668397, nodeOrder=2],
endVer=null,
> isolation=SERIALIZABLE, concurrency=OPTIMISTIC,
timeout=150,
> sysInvalidate=false, sys=false, plc=2, commitVer=null,
> finalizing=NONE, invalidParts=null, state=PREPARING,
timedOut=false,
> topVer=AffinityTopologyVersion [topVer=3, minorTopVer=1],
> txCounters=null, duration=152ms, onePhaseCommit=false],
size=2]]]]
> at
>
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture$PrepareTimeoutObject.onTimeout(GridDhtTxPrepareFuture.java:1983)
> ~[ignite-core-2.7.5.jar:2.7.5]
> at
>
org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor$TimeoutWorker.body(GridTimeoutProcessor.java:234)
> ~[ignite-core-2.7.5.jar:2.7.5]
> at
>
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
> ~[ignite-core-2.7.5.jar:2.7.5]
> ... 1 more