diff --git a/config/alfresco/core-services-context.xml b/config/alfresco/core-services-context.xml
index b63cc03de3..9267826f3f 100644
--- a/config/alfresco/core-services-context.xml
+++ b/config/alfresco/core-services-context.xml
@@ -241,9 +241,6 @@
-
-
-
${server.transaction.allow-writes}
diff --git a/source/java/org/alfresco/repo/admin/SysAdminParamsImpl.java b/source/java/org/alfresco/repo/admin/SysAdminParamsImpl.java
index e53b4d561a..e4d8835890 100644
--- a/source/java/org/alfresco/repo/admin/SysAdminParamsImpl.java
+++ b/source/java/org/alfresco/repo/admin/SysAdminParamsImpl.java
@@ -23,12 +23,13 @@ import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
+import org.alfresco.repo.transaction.TransactionServiceImpl;
import org.alfresco.service.cmr.security.PermissionService;
-import org.alfresco.service.license.LicenseService;
+import org.alfresco.service.namespace.NamespaceService;
+import org.alfresco.service.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.InitializingBean;
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
@@ -41,6 +42,7 @@ public class SysAdminParamsImpl implements SysAdminParams, ApplicationContextAwa
/** Token name to substitute current servers DNS name or TCP/IP address into a host name **/
private static final String TOKEN_LOCAL_NAME = "${localname}";
+ private static final QName VETO = QName.createQName(NamespaceService.APP_MODEL_1_0_URI, "SysAdminParams");
/** The local server name to which the above token will expand. */
private final String localName;
@@ -108,23 +110,12 @@ public class SysAdminParamsImpl implements SysAdminParams, ApplicationContextAwa
@Override
public void afterPropertiesSet() throws Exception
{
- if (this.allowWrite)
- {
- LicenseService licenseService = null;
- try
- {
- licenseService = (LicenseService) this.ctx.getBean("licenseService");
- this.allowWrite = licenseService.isLicenseValid();
- if (logger.isInfoEnabled())
- {
- logger.info("'allowWrite' being set to false: licenseService.isLicenseValid() returned false.");
- }
- }
- catch (NoSuchBeanDefinitionException e)
- {
- // ignore
- }
- }
+ // Set the transaction read-write state by veto
+ // There is no need to attempt to check the dictionary or any other component as they will handle
+ // their own vetoes (MNT-14579)
+ // No logging is required here: it is done in the TransactionService code, already
+ TransactionServiceImpl transactionService = (TransactionServiceImpl) ctx.getBean("transactionService");
+ transactionService.setAllowWrite(allowWrite, VETO);
}
/**
diff --git a/source/java/org/alfresco/repo/transaction/TransactionServiceImpl.java b/source/java/org/alfresco/repo/transaction/TransactionServiceImpl.java
index 356c33efb2..f71d1a917f 100644
--- a/source/java/org/alfresco/repo/transaction/TransactionServiceImpl.java
+++ b/source/java/org/alfresco/repo/transaction/TransactionServiceImpl.java
@@ -26,7 +26,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
import javax.transaction.UserTransaction;
-import org.alfresco.repo.admin.SysAdminParams;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
@@ -57,9 +56,6 @@ public class TransactionServiceImpl implements TransactionService
private static final Log logger = LogFactory.getLog(TransactionServiceImpl.class);
- // SysAdmin cache - used to cluster certain configuration parameters
- private SysAdminParams sysAdminParams;
-
// Veto for allow write
private Set writeVeto = new HashSet();
private final QName generalVetoName = QName.createQName(NamespaceService.APP_MODEL_1_0_URI, "GeneralVeto");
@@ -85,11 +81,6 @@ public class TransactionServiceImpl implements TransactionService
this.transactionManager = transactionManager;
}
- public void setSysAdminParams(SysAdminParams sysAdminParams)
- {
- this.sysAdminParams = sysAdminParams;
- }
-
/**
* {@inheritDoc}
*/
@@ -99,7 +90,7 @@ public class TransactionServiceImpl implements TransactionService
vetoReadLock.lock();
try
{
- return writeVeto.isEmpty() && this.sysAdminParams.getAllowWrite();
+ return writeVeto.isEmpty();
}
finally
{
@@ -138,20 +129,25 @@ public class TransactionServiceImpl implements TransactionService
*/
public void setAllowWrite(boolean allowWrite, QName nameOfVeto)
{
- if(logger.isDebugEnabled())
+ if (logger.isDebugEnabled())
{
- logger.debug("setAllowWrite:" + allowWrite + ", name of veto:" + nameOfVeto);
+ logger.debug("setAllowWrite:" + allowWrite + ". Name of veto:" + nameOfVeto);
}
vetoWriteLock.lock();
try
{
if(allowWrite)
{
- writeVeto.remove(nameOfVeto);
+ boolean removed = writeVeto.remove(nameOfVeto);
+ if (removed)
+ {
+ logger.warn("setAllowWrite:" + allowWrite + ". Removing veto on write operations: " + nameOfVeto);
+ }
}
else
{
writeVeto.add(nameOfVeto);
+ logger.warn("setAllowWrite:" + allowWrite + ". Applying veto on write operations: " + nameOfVeto);
}
}
finally
@@ -178,7 +174,7 @@ public class TransactionServiceImpl implements TransactionService
}
else
{
- return !writeVeto.isEmpty() || !this.sysAdminParams.getAllowWrite();
+ return !writeVeto.isEmpty();
}
}
finally
diff --git a/source/test-java/org/alfresco/repo/transaction/TransactionServiceImplTest.java b/source/test-java/org/alfresco/repo/transaction/TransactionServiceImplTest.java
index 729c09edc5..4e8471b5ca 100644
--- a/source/test-java/org/alfresco/repo/transaction/TransactionServiceImplTest.java
+++ b/source/test-java/org/alfresco/repo/transaction/TransactionServiceImplTest.java
@@ -25,7 +25,6 @@ import javax.transaction.UserTransaction;
import junit.framework.TestCase;
import org.alfresco.model.ContentModel;
-import org.alfresco.repo.admin.SysAdminParams;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.permissions.AccessDeniedException;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
@@ -76,7 +75,6 @@ public class TransactionServiceImplTest extends TestCase
transactionService = new TransactionServiceImpl();
transactionService.setTransactionManager(transactionManager);
transactionService.setAllowWrite(true, vetoName);
- transactionService.setSysAdminParams((SysAdminParams) ctx.getBean("sysAdminParams"));
nodeService = (NodeService) ctx.getBean("dbNodeService");
authenticationService = (MutableAuthenticationService) ctx.getBean("AuthenticationService");