cancel
Showing results for 
Search instead for 
Did you mean: 

Alfresco Cluster

rododendro
Champ in-the-making
Champ in-the-making
Hi all,
I'm trying to set up a clustered install of Alfresco 3.4c (http://wiki.alfresco.com/wiki/Cluster_Configuration_V2.1.3_and_Later#Local_and_shared_content_stores) : two instances with db replication, content store, cache & indexes replication …

What I've done :
  - Install of both instances
  - Cluster mode has been activated on both instances
  - Set up MYSQL replication, with import / export of a database from node A (wich was not empty) to node B
  - Copy / paste of content store from node A to node B
  - Set up alfresco replication service pointing to NFS shared filesystem for both nodes
  - Set up EHCache in both nodes (just copy / pasted / renamed this file : ehcache-custom.xml.sample.cluster)

MySQL replication is up & running
Index replication has not been set up yet.

Now… when I start the cluster node A starts up correctly, node B doesn't. ALfresco application is not deployed (tomcat) and that is the first error I got :

09:33:46,499  ERROR [web.context.ContextLoader] Context initialization failed
org.alfresco.service.cmr.repository.InvalidNodeRefException: Node does not exist: workspace://SpacesStore/ddcae19a-ed59-4a61-a49e-a89632f48cd9
   at org.alfresco.repo.node.db.DbNodeServiceImpl.getNodePairNotNull(DbNodeServiceImpl.java:142)
   at org.alfresco.repo.node.db.DbNodeServiceImpl.hasAspect(DbNodeServiceImpl.java:902)
   at sun.reflect.GeneratedMethodAccessor215.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
   at org.alfresco.repo.tenant.MultiTNodeServiceInterceptor.invoke(MultiTNodeServiceInterceptor.java:104)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
   at $Proxy7.hasAspect(Unknown Source)
   at sun.reflect.GeneratedMethodAccessor215.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:215)
   at $Proxy8.hasAspect(Unknown Source)
   at org.alfresco.repo.node.MLPropertyInterceptor.getPivotNodeRef(MLPropertyInterceptor.java:321)
   at org.alfresco.repo.node.MLPropertyInterceptor.invoke(MLPropertyInterceptor.java:161)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.alfresco.repo.node.NodeRefPropertyMethodInterceptor.invoke(NodeRefPropertyMethodInterceptor.java:198)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.alfresco.repo.node.NodeRefPropertyMethodInterceptor.invoke(NodeRefPropertyMethodInterceptor.java:198)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
   at $Proxy7.getProperty(Unknown Source)
   at org.alfresco.repo.web.scripts.RepoStore$3$1.execute(RepoStore.java:403)
   at org.alfresco.repo.web.scripts.RepoStore$3$1.execute(RepoStore.java:390)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:381)
   at org.alfresco.repo.web.scripts.RepoStore$3.doWork(RepoStore.java:389)
   at org.alfresco.repo.web.scripts.RepoStore$3.doWork(RepoStore.java:386)
   at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:508)
   at org.alfresco.repo.web.scripts.RepoStore.getDocumentPaths(RepoStore.java:385)
   at org.alfresco.repo.web.scripts.RepoStore.getDescriptionDocumentPaths(RepoStore.java:455)
   at org.springframework.extensions.webscripts.DeclarativeRegistry.initWebScripts(DeclarativeRegistry.java:352)
   at org.springframework.extensions.webscripts.DeclarativeRegistry.reset(DeclarativeRegistry.java:178)
   at org.springframework.extensions.webscripts.AbstractRuntimeContainer.reset(AbstractRuntimeContainer.java:242)
   at org.alfresco.repo.web.scripts.RepositoryContainer.init(RepositoryContainer.java:591)
   at org.alfresco.repo.web.scripts.RepositoryContainer.reset(RepositoryContainer.java:565)
   at org.alfresco.repo.web.scripts.RepositoryContainer$4.doWork(RepositoryContainer.java:519)
   at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:508)
   at org.alfresco.repo.web.scripts.RepositoryContainer.onApplicationEvent(RepositoryContainer.java:523)
   at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
   at org.alfresco.repo.management.SafeApplicationEventMulticaster.multicastEvent(SafeApplicationEventMulticaster.java:78)
   at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:294)
   at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:858)
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:419)
   at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)
   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
   at org.alfresco.web.app.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:63)
   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
   at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
   at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
   at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
   at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
   at org.apache.catalina.core.StandardService.start(StandardService.java:519)
   at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
   at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Does anyone can help ?

Ivan
1 REPLY 1

rododendro
Champ in-the-making
Champ in-the-making
I fixed it : the indexes files were not aligned thus the error.

Server B starts up now and alfresco Webapp is deployed.

Still some errors :
10:29:08,814  ERROR [quartz.core.JobRunShell] Job DEFAULT.org.springframework.scheduling.quartz.JobDetailBean#14bc4e6 threw an unhandled Exception: 
org.alfresco.error.AlfrescoRuntimeException: 01180000 Reindex failure for org.alfresco.repo.node.index.IndexTransactionTracker
   at org.alfresco.repo.node.index.AbstractReindexComponent.reindex(AbstractReindexComponent.java:315)
   at org.alfresco.repo.node.index.IndexRecoveryJob.execute(IndexRecoveryJob.java:59)
   at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Caused by: org.springframework.dao.TransientDataAccessResourceException: SqlMapClient operation; SQL [];  
— The error occurred in alfresco/ibatis/#resource.dialect#/node-insert-SqlMap.xml. 
— The error occurred while applying a parameter map. 
— Check the alfresco.node.insert_Server-InlineParameterMap. 
— Check the statement (update failed). 
— Cause: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:  
— The error occurred in alfresco/ibatis/#resource.dialect#/node-insert-SqlMap.xml. 
— The error occurred while applying a parameter map. 
— Check the alfresco.node.insert_Server-InlineParameterMap. 
— Check the statement (update failed). 
— Cause: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
   at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:107)
   at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
   at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
   at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
   at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:203)
   at org.springframework.orm.ibatis.SqlMapClientTemplate.insert(SqlMapClientTemplate.java:364)
   at org.alfresco.repo.domain.node.ibatis.NodeDAOImpl.insertServer(NodeDAOImpl.java:198)
   at org.alfresco.repo.domain.node.AbstractNodeDAOImpl$ServerIdCallback.getWithWriteLock(AbstractNodeDAOImpl.java:378)
   at org.alfresco.repo.domain.node.AbstractNodeDAOImpl$ServerIdCallback.getWithWriteLock(AbstractNodeDAOImpl.java:347)
   at org.alfresco.util.ReadWriteLockExecuter.execute(ReadWriteLockExecuter.java:103)
   at org.alfresco.repo.domain.node.AbstractNodeDAOImpl.getServerId(AbstractNodeDAOImpl.java:395)
   at org.alfresco.repo.domain.node.AbstractNodeDAOImpl.getTxnsByCommitTimeDescending(AbstractNodeDAOImpl.java:3131)
   at org.alfresco.repo.node.index.IndexTransactionTracker.getLastIndexedCommitTime(IndexTransactionTracker.java:439)
   at org.alfresco.repo.node.index.IndexTransactionTracker.getStartingTxnCommitTime(IndexTransactionTracker.java:411)
   at org.alfresco.repo.node.index.IndexTransactionTracker$1.execute(IndexTransactionTracker.java:181)
   at org.alfresco.repo.node.index.IndexTransactionTracker$1.execute(IndexTransactionTracker.java:178)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:381)
   at org.alfresco.repo.node.index.IndexTransactionTracker.reindexImpl(IndexTransactionTracker.java:245)
   at org.alfresco.repo.node.index.AbstractReindexComponent$1.execute(AbstractReindexComponent.java:300)
   at org.alfresco.repo.node.index.AbstractReindexComponent.reindex(AbstractReindexComponent.java:310)
   … 3 more
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:  
— The error occurred in alfresco/ibatis/#resource.dialect#/node-insert-SqlMap.xml. 
— The error occurred while applying a parameter map. 
— Check the alfresco.node.insert_Server-InlineParameterMap. 
— Check the statement (update failed). 
— Cause: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
   at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:107)
   at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:393)
   at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82)
   at org.springframework.orm.ibatis.SqlMapClientTemplate$8.doInSqlMapClient(SqlMapClientTemplate.java:366)
   at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:200)
   … 18 more
Caused by: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
   at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1265)
   at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:169)
   at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:169)
   at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:100)
   at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteUpdate(MappedStatement.java:216)
   at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:94)
   … 22 more

What SQL Connection are talking about here ?