diff --git a/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-1.4-PerfIndexes02.sql b/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-1.4-PerfIndexes02.sql
index 66e1ca71ab..b698bc624a 100644
--- a/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-1.4-PerfIndexes02.sql
+++ b/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-1.4-PerfIndexes02.sql
@@ -16,5 +16,5 @@ insert into alf_applied_patch
values
(
'patch.db-V1.4-PerfIndexes02', 'Executed script AlfrescoSchemaUpdate-1.4-PerfIndexes02.sql',
- 0, 26, -1, 27, null, 'UNKOWN', 1, 1, 'Script completed'
+ 0, 75, -1, 76, null, 'UNKOWN', 1, 1, 'Script completed'
);
\ No newline at end of file
diff --git a/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-1.4-PerfIndexes02.sql b/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-1.4-PerfIndexes02.sql
index 830ae9a02e..292e5e1d4b 100644
--- a/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-1.4-PerfIndexes02.sql
+++ b/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-1.4-PerfIndexes02.sql
@@ -16,5 +16,5 @@ insert into alf_applied_patch
values
(
'patch.db-V1.4-PerfIndexes02', 'Executed script AlfrescoSchemaUpdate-1.4-PerfIndexes02.sql',
- 0, 26, -1, 27, null, 'UNKOWN', TRUE, TRUE, 'Script completed'
+ 0, 75, -1, 76, null, 'UNKOWN', TRUE, TRUE, 'Script completed'
);
\ No newline at end of file
diff --git a/config/alfresco/index-recovery-context.xml b/config/alfresco/index-recovery-context.xml
index f79dd3f237..9b8e796172 100644
--- a/config/alfresco/index-recovery-context.xml
+++ b/config/alfresco/index-recovery-context.xml
@@ -62,7 +62,7 @@
- ${index.tracking.cronExpression}
+ ${index.tracking.adm.cronExpression}
+
+
+
+
+
+
+
+
+
+
10000
-
- 1000
+ 5000
@@ -194,8 +193,7 @@
-
- 100
+ 5000
diff --git a/config/alfresco/repository.properties b/config/alfresco/repository.properties
index e6047e6661..06f9a7eec9 100644
--- a/config/alfresco/repository.properties
+++ b/config/alfresco/repository.properties
@@ -26,15 +26,19 @@ index.recovery.mode=VALIDATE
# Force FULL recovery to stop when encountering errors
index.recovery.stopOnError=true
# Set the frequency with which the index tracking is triggered.
+# For more information on index tracking in a cluster:
+# http://wiki.alfresco.com/wiki/High_Availability_Configuration_V1.4_to_V2.1#Version_1.4.5.2C_2.1.1_and_later
# By default, this is effectively never, but can be modified as required.
# Examples:
# Once every five seconds: 0/5 * * * * ?
# Once every two seconds : 0/2 * * * * ?
# See http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html
index.tracking.cronExpression=* * * * * ? 2099
+index.tracking.adm.cronExpression=${index.tracking.cronExpression}
+index.tracking.avm.cronExpression=${index.tracking.cronExpression}
# Other properties.
index.tracking.maxTxnDurationMinutes=60
-index.tracking.reindexLagMs=50
+index.tracking.reindexLagMs=1000
index.tracking.maxRecordSetSize=1000
# Change the failure behaviour of the configuration checker
diff --git a/source/java/org/alfresco/repo/admin/patch/PatchServiceImpl.java b/source/java/org/alfresco/repo/admin/patch/PatchServiceImpl.java
index 9fab1374b1..1918c886a4 100644
--- a/source/java/org/alfresco/repo/admin/patch/PatchServiceImpl.java
+++ b/source/java/org/alfresco/repo/admin/patch/PatchServiceImpl.java
@@ -56,11 +56,12 @@ import org.apache.commons.logging.LogFactory;
public class PatchServiceImpl implements PatchService
{
private static final String MSG_NOT_RELEVANT = "patch.service.not_relevant";
+ private static final String MSG_APPLYING_PATCH = "patch.service.applying_patch";
private static final Date ZERO_DATE = new Date(0L);
private static final Date INFINITE_DATE = new Date(Long.MAX_VALUE);
- private static Log logger = LogFactory.getLog(PatchServiceImpl.class);
+ private static Log logger = LogFactory.getLog(PatchExecuter.class);
private DescriptorService descriptorService;
private TransactionService transactionService;
@@ -226,15 +227,35 @@ public class PatchServiceImpl implements PatchService
// get the patch from the DAO
AppliedPatch appliedPatch = patchDaoService.getAppliedPatch(patch.getId());
// We bypass the patch if it was executed successfully
- if (appliedPatch != null && appliedPatch.getWasExecuted() && appliedPatch.getSucceeded())
+ if (appliedPatch != null)
{
- // it has already been applied
- if (logger.isDebugEnabled())
+ if (appliedPatch.getWasExecuted() && appliedPatch.getSucceeded())
{
- logger.debug("Patch was already successfully applied: \n" +
- " patch: " + appliedPatch);
+ // It has already been successfully applied
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Patch was already successfully applied: \n" +
+ " patch: " + appliedPatch);
+ }
+ return appliedPatch;
+ }
+ else if (patch.getTargetSchema() != appliedPatch.getTargetSchema())
+ {
+ // The target schema of the defined patch has changed.
+ // The patch applicability was changed for some reason, usually as a result of
+ // merges between branches. We need to detect new patches in clean installs.
+ if (appliedPatch.getAppliedToSchema() == appliedPatch.getTargetSchema())
+ {
+ // The patch applicability changed, but it was originally not executed because
+ // it was a new patch in a clean install
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Patch not applied to a previously clean install: \n" +
+ " patch: " + appliedPatch);
+ }
+ return appliedPatch;
+ }
}
- return appliedPatch;
}
// the execution report
String report = null;
@@ -253,6 +274,7 @@ public class PatchServiceImpl implements PatchService
// perform actual execution
try
{
+ logger.info(I18NUtil.getMessage(MSG_APPLYING_PATCH, patch.getId(), patch.getDescription()));
report = patch.apply();
success = true;
}
diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTest.java b/source/java/org/alfresco/repo/avm/AVMServiceTest.java
index 6db10b92be..a95f26f64d 100644
--- a/source/java/org/alfresco/repo/avm/AVMServiceTest.java
+++ b/source/java/org/alfresco/repo/avm/AVMServiceTest.java
@@ -486,7 +486,7 @@ public class AVMServiceTest extends AVMServiceTestBase
{
try
{
- DeploymentService depService = (DeploymentService) fContext.getBean("DeploymentService");
+ final DeploymentService depService = (DeploymentService) fContext.getBean("DeploymentService");
NameMatcher matcher = (NameMatcher)fContext.getBean("globalPathExcluder");
setupBasicTree();
fService.addAspect("main:/a", ContentModel.ASPECT_REFERENCEABLE);
@@ -553,6 +553,36 @@ public class AVMServiceTest extends AVMServiceTestBase
depService.deployDifference(-1, "main:/a", "localhost", 50500, "admin", "admin", "target2:/wiggly/diggly", matcher,
true, false, false, null);
System.out.println(report);
+ fService.createStore("source");
+ RetryingTransactionHelper.RetryingTransactionCallback