mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V3.0 to HEAD
12123: Merged V2.2 to V3.0 11466: Fixed sql-query DELETE syntax 11614: Flush after putChild, fix for ETWOTWO-777 11641: Merged V2.1 to V2.2 11632: Improvements for AVM index FULL and AUTO rebuild. 11646: Upgrade scripts tweaks: 11650: Added unit test to confirm fix of ETWOTWO-740 11674: Added missing EHCache definitions for QName, Namespace and Locale caches 11825: Fixed Eclipse classpath addition of path for Oracle JDBC driver 12125: ETHREEOH-899: Image transformations do not follow Options 12127: Merged V2.2 to V3.0 11675: Node DAO optimizations 11680: Full Fix for ETWOTWO-777 + more protection for nested write transactions beneath read transactions. 11729: AVM creates and deletes no longer update the directory mod time - ETWOTWO-801 11738: Fix for ETWOTWO - fixed check for TX propagation mode 11748: Fixed ETWOTWO-578: RepositoryWebService fetchMore() does not fetch last node 11749: Incorporate feedback from ACT-5440: MySQL-specific tweaks to the upgrade scripts 11750: Moved t_qnames_dyn section to after t_qnames 11752: Fixed ETWOTWO-734: ImporterComponent uses Lucene queries 11785: Build Fix:Remove auto created person TX commit fro DB 11853: Fix for ETWOTWO-687 - missed a case when generating lists of actions for modified files list 11940: Stress test main method for ETWOTWO-744 11950: Fixed ETWOTWO-909 and ETWOTWO-911 11987: Dirty checking for attribute related DAOs 12008: Fixed test for transaction-requiring AttributeService 12128: Merged V2.2 to V3.0 11530: Merged V2.1 to V2.2 11499: Defensive clear of the security context to avoid any ticket sharing for a given user - ETWOTWO-326 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@12501 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -266,10 +266,8 @@ public class AVMFullIndexRecoveryComponent extends AbstractReindexComponent
|
||||
|
||||
}
|
||||
|
||||
private void recoverStore(String store, RecoveryMode mode)
|
||||
private void recoverStore(final String store, final RecoveryMode mode)
|
||||
{
|
||||
int tracker = -1;
|
||||
|
||||
if (mode == RecoveryMode.AUTO)
|
||||
{
|
||||
logger.info(" Auto recovering index for " + store);
|
||||
@@ -284,80 +282,43 @@ public class AVMFullIndexRecoveryComponent extends AbstractReindexComponent
|
||||
avmSnapShotTriggeredIndexingMethodInterceptor.createIndex(store);
|
||||
}
|
||||
|
||||
int latest = avmService.getLatestSnapshotID(store);
|
||||
if (latest <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
boolean wasRecovered = false;
|
||||
|
||||
if (avmSnapShotTriggeredIndexingMethodInterceptor.getIndexMode(store) != IndexMode.UNINDEXED)
|
||||
{
|
||||
for (int i = 0; i <= latest; i++)
|
||||
final int latest = avmService.getLatestSnapshotID(store);
|
||||
if (latest <= 0)
|
||||
{
|
||||
if (isShuttingDown())
|
||||
{
|
||||
return;
|
||||
}
|
||||
wasRecovered = recoverSnapShot(store, i, mode, wasRecovered);
|
||||
if (i * 10l / latest > tracker)
|
||||
{
|
||||
tracker = (int) (i * 10l / latest);
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug(" Store " + store + " " + (tracker * 10) + "% complete");
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
final int latestIndexed = avmSnapShotTriggeredIndexingMethodInterceptor.getLastIndexedSnapshot(store);
|
||||
|
||||
RetryingTransactionCallback<Object> reindexWork = new RetryingTransactionCallback<Object>()
|
||||
{
|
||||
public Object execute() throws Exception
|
||||
{
|
||||
|
||||
if (mode == RecoveryMode.AUTO)
|
||||
{
|
||||
logger.info(" Rebuilding index for snapshots " + latestIndexed +" to "+latest);
|
||||
avmSnapShotTriggeredIndexingMethodInterceptor.indexSnapshot(store, latestIndexed, latest);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.info(" Rebuilding index for snapshots " + 0 +" to "+latest);
|
||||
avmSnapShotTriggeredIndexingMethodInterceptor.indexSnapshot(store, 0, latest);
|
||||
}
|
||||
return null;
|
||||
|
||||
}
|
||||
};
|
||||
transactionService.getRetryingTransactionHelper().doInTransaction(reindexWork, true, true);
|
||||
|
||||
}
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug(" Index updated for " + store);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean recoverSnapShot(final String store, final int id, final RecoveryMode mode, final boolean wasRecovered)
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug(" Reindexing avm store: " + store + " snapshot id " + id);
|
||||
}
|
||||
|
||||
RetryingTransactionCallback<Boolean> reindexWork = new RetryingTransactionCallback<Boolean>()
|
||||
{
|
||||
public Boolean execute() throws Exception
|
||||
{
|
||||
if (wasRecovered)
|
||||
{
|
||||
avmSnapShotTriggeredIndexingMethodInterceptor.indexSnapshot(store, id - 1, id);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mode == RecoveryMode.AUTO)
|
||||
{
|
||||
if (!avmSnapShotTriggeredIndexingMethodInterceptor.isSnapshotIndexed(store, id))
|
||||
{
|
||||
avmSnapShotTriggeredIndexingMethodInterceptor.indexSnapshot(store, id - 1, id);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return wasRecovered;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
avmSnapShotTriggeredIndexingMethodInterceptor.indexSnapshot(store, id - 1, id);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
return transactionService.getRetryingTransactionHelper().doInTransaction(reindexWork, true, true);
|
||||
// done
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user