Class TransactionConflictException
- java.lang.Object
-
- java.lang.Throwable
-
- java.lang.Exception
-
- java.lang.RuntimeException
-
- com.palantir.atlasdb.transaction.api.TransactionFailedException
-
- com.palantir.atlasdb.transaction.api.TransactionFailedRetriableException
-
- com.palantir.atlasdb.transaction.api.TransactionConflictException
-
- All Implemented Interfaces:
java.io.Serializable
public final class TransactionConflictException extends TransactionFailedRetriableException
Thrown if there is a conflict detected when a transaction is committed. If two concurrent transactions make calls toTransaction.put(TableReference, java.util.Map)
orTransaction.delete(TableReference, Set)
for the sameCell
, then this is a write-write conflict.The error message should be detailed about what caused the failure and what other transaction conflicted with this one.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
TransactionConflictException.CellConflict
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static TransactionConflictException
create(TableReference tableRef, long timestamp, java.util.Collection<TransactionConflictException.CellConflict> spanningWrites, java.util.Collection<TransactionConflictException.CellConflict> dominatingWrites, long elapsedMillis)
TableReference
getConflictingTable()
java.util.Collection<TransactionConflictException.CellConflict>
getDominatingWrites()
These conflicts started and committed after our start timestamp.java.util.Collection<TransactionConflictException.CellConflict>
getSpanningWrites()
These conflicts had a start timestamp before our start and a commit timestamp after our start.-
Methods inherited from class com.palantir.atlasdb.transaction.api.TransactionFailedRetriableException
canTransactionBeRetried
-
-
-
-
Method Detail
-
getSpanningWrites
public java.util.Collection<TransactionConflictException.CellConflict> getSpanningWrites()
These conflicts had a start timestamp before our start and a commit timestamp after our start.
-
getDominatingWrites
public java.util.Collection<TransactionConflictException.CellConflict> getDominatingWrites()
These conflicts started and committed after our start timestamp. Having these kinds of conflicts means that we may be a long running transaction.
-
getConflictingTable
public TableReference getConflictingTable()
-
create
public static TransactionConflictException create(TableReference tableRef, long timestamp, java.util.Collection<TransactionConflictException.CellConflict> spanningWrites, java.util.Collection<TransactionConflictException.CellConflict> dominatingWrites, long elapsedMillis)
-
-