mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V2.9 to HEAD
9845: Merged V2.2 to V2.9 9733: Merged V2.1 to V2.2 9281: Improvements to index AUTO recovery 9316: Fixed ETWOONE-193: Transactional caches not being cleaned up after rollback (2.1.4 regression) 9317: Fixed ETWOONE-194: Faster void handling during index tracking 9365: Improved performance for finding which snapshots have been indexed 9413: Support to retrieve read/write state of the transaction and ensure Lucene commits are handled last 9414: ACT-3245: Updating node properties and aspects don't bump the alf_node.version value 9415: Code cleanup: Removed unnecessary empty methods 9416: Fixed creation of multiple thread pools 9417: Full index recovery absorbs indexing exceptions by default 9418: Added AUTO index recovery option to sample in line with Wiki docs 9419: ETWOONE-194: Index tracking is too slow 9420: Fixed ETWOONE-201: Better logging and configurability for RetryingTransactionHelper 9421: Fixed ETWOONE-202: SPlit person cleanup doesn't break read-only transactions 9422: Follow up on CHK-3317: Removed use of JDK 1.6 NavigableMap interface 9423: Fixed unit test after CHK-3317 9424: More test fixes after CHK-3317 9425: Ensure that index tracking tests don't run too long. 9426: Made concurrent reindexing optional. It is on by default. 9509: ACT-3539: Mid-transaction locking on Lucene resources 9547: Multithreaded index tracking startup: Handle previously lagging single-threaded rebuilds git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@10592 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -134,6 +134,42 @@ public abstract class AlfrescoTransactionSupport
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Derek Hulley
|
||||
* @since 2.1.4
|
||||
*/
|
||||
public static enum TxnReadState
|
||||
{
|
||||
/** No transaction is active */
|
||||
TXN_NONE,
|
||||
/** The current transaction is read-only */
|
||||
TXN_READ_ONLY,
|
||||
/** The current transaction supports writes */
|
||||
TXN_READ_WRITE
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns the read-write state of the current transaction
|
||||
* @since 2.1.4
|
||||
*/
|
||||
public static TxnReadState getTransactionReadState()
|
||||
{
|
||||
if (!TransactionSynchronizationManager.isSynchronizationActive())
|
||||
{
|
||||
return TxnReadState.TXN_NONE;
|
||||
}
|
||||
// Find the read-write state of the txn
|
||||
if (TransactionSynchronizationManager.isCurrentTransactionReadOnly())
|
||||
{
|
||||
return TxnReadState.TXN_READ_ONLY;
|
||||
}
|
||||
else
|
||||
{
|
||||
return TxnReadState.TXN_READ_WRITE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Are there any pending changes which must be synchronized with the store?
|
||||
*
|
||||
@@ -710,26 +746,6 @@ public abstract class AlfrescoTransactionSupport
|
||||
logger.debug("After completion (" + statusStr + "): " + this);
|
||||
}
|
||||
|
||||
// commit/rollback Lucene
|
||||
for (LuceneIndexerAndSearcher lucene : lucenes)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (status == TransactionSynchronization.STATUS_COMMITTED)
|
||||
{
|
||||
lucene.commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
lucene.rollback();
|
||||
}
|
||||
}
|
||||
catch (RuntimeException e)
|
||||
{
|
||||
logger.error("After completion (" + statusStr + ") Lucene exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
List<TransactionListener> iterableListeners = getListenersIterable();
|
||||
// notify listeners
|
||||
if (status == TransactionSynchronization.STATUS_COMMITTED)
|
||||
@@ -765,6 +781,46 @@ public abstract class AlfrescoTransactionSupport
|
||||
}
|
||||
}
|
||||
|
||||
// commit/rollback Lucene
|
||||
for (LuceneIndexerAndSearcher lucene : lucenes)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (status == TransactionSynchronization.STATUS_COMMITTED)
|
||||
{
|
||||
lucene.commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
lucene.rollback();
|
||||
}
|
||||
}
|
||||
catch (RuntimeException e)
|
||||
{
|
||||
logger.error("After completion (" + statusStr + ") Lucene exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
// Clean up the transactional caches
|
||||
for (TransactionalCache<Serializable, Object> cache : transactionalCaches)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (status == TransactionSynchronization.STATUS_COMMITTED)
|
||||
{
|
||||
cache.afterCommit();
|
||||
}
|
||||
else
|
||||
{
|
||||
cache.afterRollback();
|
||||
}
|
||||
}
|
||||
catch (RuntimeException e)
|
||||
{
|
||||
logger.error("After completion (" + statusStr + ") TransactionalCache exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
// clear the thread's registrations and synchronizations
|
||||
AlfrescoTransactionSupport.clearSynchronization();
|
||||
}
|
||||
|
Reference in New Issue
Block a user