|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.alfresco.repo.transaction.RetryingTransactionHelper
public class RetryingTransactionHelper
A helper that runs a unit of work inside a UserTransaction, transparently retrying the unit of work if the cause of failure is an optimistic locking or deadlock condition.
Defaults:
To get details of 'why' transactions are retried use the following log level:
Summary: log4j.logger.org.alfresco.repo.transaction.RetryingTransactionHelper=INFO
Details: log4j.logger.org.alfresco.repo.transaction.RetryingTransactionHelper=DEBUG
Nested Class Summary | |
---|---|
static interface |
RetryingTransactionHelper.RetryingTransactionCallback
Callback interface |
Field Summary | |
---|---|
static java.lang.Class[] |
RETRY_EXCEPTIONS
Exceptions that trigger retries. |
Constructor Summary | |
---|---|
RetryingTransactionHelper()
Default constructor. |
Method Summary | |
---|---|
java.lang.Object |
doInTransaction(RetryingTransactionHelper.RetryingTransactionCallback cb)
Execute a callback in a transaction until it succeeds, fails because of an error not the result of an optimistic locking failure, or a deadlock loser failure, or until a maximum number of retries have been attempted. |
java.lang.Object |
doInTransaction(RetryingTransactionHelper.RetryingTransactionCallback cb,
boolean readOnly)
Execute a callback in a transaction until it succeeds, fails because of an error not the result of an optimistic locking failure, or a deadlock loser failure, or until a maximum number of retries have been attempted. |
java.lang.Object |
doInTransaction(RetryingTransactionHelper.RetryingTransactionCallback cb,
boolean readOnly,
boolean requiresNew)
Execute a callback in a transaction until it succeeds, fails because of an error not the result of an optimistic locking failure, or a deadlock loser failure, or until a maximum number of retries have been attempted. |
static java.lang.Throwable |
extractRetryCause(java.lang.Throwable cause)
Sometimes, the exception means retry and sometimes not. |
static javax.transaction.UserTransaction |
getActiveUserTransaction()
Utility method to get the active transaction. |
void |
setForceWritable(boolean forceWritable)
Override to allow the transactions to be writable regardless of the system read-only mode. |
void |
setMaxExecutionMs(long maxExecutionMs)
|
void |
setMaxRetries(int maxRetries)
Set the maximimum number of retries. |
void |
setMaxRetryWaitMs(int maxRetryWaitMs)
|
void |
setMinRetryWaitMs(int minRetryWaitMs)
|
void |
setReadOnly(boolean readOnly)
Set whether this helper only supports read transactions. |
void |
setRetryWaitIncrementMs(int retryWaitIncrementMs)
|
void |
setTransactionService(TransactionService service)
Set the TransactionService. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final java.lang.Class[] RETRY_EXCEPTIONS
Constructor Detail |
---|
public RetryingTransactionHelper()
Method Detail |
---|
public void setTransactionService(TransactionService service)
public void setMaxRetries(int maxRetries)
public void setMinRetryWaitMs(int minRetryWaitMs)
public void setMaxRetryWaitMs(int maxRetryWaitMs)
public void setRetryWaitIncrementMs(int retryWaitIncrementMs)
public void setMaxExecutionMs(long maxExecutionMs)
public void setReadOnly(boolean readOnly)
public void setForceWritable(boolean forceWritable)
forceWritable
- true to force transactions to be writable
regardless of system read-only modepublic java.lang.Object doInTransaction(RetryingTransactionHelper.RetryingTransactionCallback cb)
If there is already an active transaction, then the callback is merely executed and any retry logic is left to the caller. The transaction will attempt to be read-write.
cb
- The callback containing the unit of work.
java.lang.RuntimeException
- all checked exceptions are convertedpublic java.lang.Object doInTransaction(RetryingTransactionHelper.RetryingTransactionCallback cb, boolean readOnly)
If there is already an active transaction, then the callback is merely executed and any retry logic is left to the caller.
cb
- The callback containing the unit of work.readOnly
- Whether this is a read only transaction.
java.lang.RuntimeException
- all checked exceptions are convertedpublic java.lang.Object doInTransaction(RetryingTransactionHelper.RetryingTransactionCallback cb, boolean readOnly, boolean requiresNew)
It is possible to force a new transaction to be created or to partake in any existing transaction.
cb
- The callback containing the unit of work.readOnly
- Whether this is a read only transaction.requiresNew
- true to force a new transaction or
false to partake in any existing transaction.
java.lang.RuntimeException
- all checked exceptions are convertedpublic static java.lang.Throwable extractRetryCause(java.lang.Throwable cause)
DoNotRetryException
and, if found, nothing is returned.
cause
- the cause to examine
public static javax.transaction.UserTransaction getActiveUserTransaction()
NOTE: Any attempt to actually commit or rollback the transaction will cause failures.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |