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:
Kevin Roast
2008-12-18 17:23:44 +00:00
parent ab4bdfc013
commit 16861e9117
32 changed files with 853 additions and 315 deletions

View File

@@ -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
}
}