Merged V2.2 to HEAD

7534: Merged V2.1 to HEAD
      7398: XPath metadata extractor selector handles malformed and empty XML files
      7401: Fix AR-1879: JBPM Timer never fires
      7413: Contribution: Integrity checker ignores exceptions that would normally trigger transaction retries.
      7416: AR-1884.Unicode wildcard processing.
      7417: Added filtering of pseudo files when a partial wildcard search path is used, such as '*.csv'. AR-1889.
      7436: AR-1863: major version's can now be created via the web service API;
      7451: Fix for handling of UTF-8 application/x-www-form-urlencoded encoded form arguments as raised in support ticket 242
      7458: Fix for AR-1900
      7520: Fix to Template API where content was not retrievable from custom d:content properties on a node


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8413 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2008-03-03 13:35:10 +00:00
parent 9fe5e55dc8
commit c920bfb309
11 changed files with 149 additions and 28 deletions

View File

@@ -35,6 +35,7 @@ import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.policy.PolicyComponent;
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.service.cmr.dictionary.AspectDefinition;
import org.alfresco.service.cmr.dictionary.AssociationDefinition;
import org.alfresco.service.cmr.dictionary.ClassDefinition;
@@ -670,6 +671,24 @@ public class IntegrityChecker
}
catch (Throwable e)
{
// This means that integrity checking itself failed. This is serious.
// There are some exceptions that can be handled by transaction retries, so
// we attempt to handle these and let them get out to trigger the retry.
// Thanks to Carina Lansing.
Throwable retryThrowable = RetryingTransactionHelper.extractRetryCause(e);
if (retryThrowable != null)
{
// The transaction will be retrying on this, so there's no need for the aggressive
// reporting that would normally happen
if (e instanceof RuntimeException)
{
throw (RuntimeException) e;
}
else
{
throw new RuntimeException(e);
}
}
e.printStackTrace();
// log it as an error and move to next event
IntegrityRecord exceptionRecord = new IntegrityRecord("" + e.getMessage());