From a40d1f5f6c8d42783641c35843031946c14cdca7 Mon Sep 17 00:00:00 2001 From: Dave Ward Date: Thu, 15 Nov 2012 11:42:05 +0000 Subject: [PATCH] Possible fix to unit test failures - Make RepositoryContainer cope with executing inside a read transaction git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@43621 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/repo/web/scripts/RepositoryContainer.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java b/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java index ccf21f8128..3b45b42a73 100644 --- a/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java +++ b/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java @@ -45,6 +45,7 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.repo.tenant.TenantAdminService; import org.alfresco.repo.tenant.TenantDeployer; import org.alfresco.repo.transaction.AlfrescoTransactionSupport; +import org.alfresco.repo.transaction.AlfrescoTransactionSupport.TxnReadState; import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.repo.transaction.TooBusyException; @@ -339,7 +340,9 @@ public class RepositoryContainer extends AbstractRuntimeContainer implements Ten } }; - if (transactionService.getRetryingTransactionHelper().doInTransaction(authWork, transactionService.isReadOnly())) + boolean readOnly = transactionService.isReadOnly(); + boolean requiresNew = !readOnly && AlfrescoTransactionSupport.getTransactionReadState() == TxnReadState.TXN_READ_ONLY; + if (transactionService.getRetryingTransactionHelper().doInTransaction(authWork, readOnly, requiresNew)) { // Execute Web Script if authentication passed // The Web Script has its own txn management with potential runAs() user