AnsweredAssumed Answered

Issues with clustered alfresco 1.4

Question asked by ps on Mar 29, 2007
Latest reply on Apr 10, 2007 by ps
Hi, I have been trying to get a clustered environment setup with two servers connecting to a single oracle database on Solaris following the 1.4 clustering Wiki, but have been having some problems. We have spent a considerable amount of time trying to get 1.3 work for us, but didnt fully succeed with that. For etting alfresco 1.4, I am not sure if I am missing something in the configuration or setup.

Also see: http://forums.alfresco.com/viewtopic.php?p=18955#18955

I have my config listed below.

custom-cache-strategies.properties:
#
# The cache strategy
#
cache.strategy=transactional


custom-hibernate-dialect.properties:
#
# Hibernate configuration
#
hibernate.jdbc.use_streams_for_binary=true
#hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.show_sql=false
hibernate.hbm2ddl.auto=update
hibernate.cache.use_query_cache=true
hibernate.max_fetch_depth=10
hibernate.cache.provider_class=org.alfresco.repo.cache.InternalEhCacheManagerFactoryBean
hibernate.cache.use_second_level_cache=true
hibernate.default_batch_fetch_size=1
hibernate.jdbc.batch_size=32
hibernate.connection.release_mode=auto
hibernate.connection.isolation=4

#
# Oracle dialect
#
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect

#
# Hibernate configuration
#
#hibernate.cache.provider_class=org.hibernate.cache.TreeCacheProvider

custom-data-location.properties on node1:
#
# Sample custom content and index data location
#

dir.root=/dev/alfresco/node1


custom-data-location.properties on node2:
#
# Sample custom content and index data location
#

dir.root=/dev/alfresco/node2


ehcache-custom.xml:
<ehcache>
    <diskStore
      path="java.io.tmpdir"/>

<!– ================================================================= –>

    <cacheManagerPeerProviderFactory
            class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
            properties="peerDiscovery=automatic,
                        multicastGroupAddress=230.0.0.1,
                        multicastGroupPort=4446"/>

<!–
    <cacheManagerPeerProviderFactory
            class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
            properties="peerDiscovery=manual,
                        rmiUrls=//server1:40000/sampleCache1|//server2:40000/sampleCache1|
                                //server1:40000/sampleCache2|//server2:40000/sampleCache2"/>
–>

<!– ================================================================= –>
<!–
    <cacheManagerPeerListenerFactory
            class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/>

    <cacheManagerPeerListenerFactory
            class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
            properties="port=40001, socketTimeoutMillis=2000"/>
–>


<cacheManagerPeerListenerFactory

class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
            properties="socketTimeoutMillis=120000"/>



<!– ================================================================= –>

    <defaultCache
        maxElementsInMemory="5000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>

    </defaultCache>

    <cache
        name="org.hibernate.cache.StandardQueryCache"
        maxElementsInMemory="50"
        eternal="true"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.hibernate.cache.UpdateTimestampsCache"
        maxElementsInMemory="2000"
        eternal="true"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.NodeImpl"
        maxElementsInMemory="10000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = true,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.QNameEntityImpl"
        maxElementsInMemory="100"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.NodeStatusImpl"
        maxElementsInMemory="10000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.NodeImpl.aspects"
        maxElementsInMemory="10000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.NodeImpl.properties"
        maxElementsInMemory="10000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.NodeImpl.parentAssocs"
        maxElementsInMemory="10000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>
                               

    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.ChildAssocImpl"
        maxElementsInMemory="200000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>
                               

    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.NodeImpl.sourceNodeAssocs"
        maxElementsInMemory="10000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>
                               

    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.NodeImpl.targetNodeAssocs"
        maxElementsInMemory="10000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>
                               

    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.NodeAssocImpl"
        maxElementsInMemory="1000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>
                               

    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.StoreImpl"
        maxElementsInMemory="100"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>
                               

    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.VersionCountImpl"
        maxElementsInMemory="100"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>
                               

    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.AppliedPatchImpl"
        maxElementsInMemory="100"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="60"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.DbAccessControlListImpl"
        maxElementsInMemory="1000"
        eternal="true"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.DbAccessControlListImpl.entries"
        maxElementsInMemory="1000"
        eternal="true"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.DbAccessControlEntryImpl"
        maxElementsInMemory="5000"
        eternal="true"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.DbPermissionImpl"
        maxElementsInMemory="500"
        eternal="true"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.DbAuthorityImpl"
        maxElementsInMemory="10000"
        eternal="true"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.repo.domain.hibernate.DbAuthorityImpl.externalKeys"
        maxElementsInMemory="5000"
        eternal="true"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <!– Non-Hibernate –>
   
    <cache
        name="org.alfresco.cache.userToAuthorityCache"
        maxElementsInMemory="10000"
        eternal="true"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.cache.permissionsAccessCache"
        maxElementsInMemory="50000"
        eternal="true"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.cache.nodeOwnerCache"
        maxElementsInMemory="20000"
        eternal="true"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

    <cache
        name="org.alfresco.cache.ticketsCache"
        maxElementsInMemory="1000"
        eternal="true"
        overflowToDisk="false">

            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicatePuts = false,
                                replicateUpdates = true,
                                replicateRemovals = true,
                                replicateUpdatesViaCopy = false,
                                replicateAsynchronously = false"/>


    </cache>

</ehcache>



custom-ehcache-context.xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>


<!–
   08 March 2007: These beans override the shared cache bean definitions from ehcache-context.xml.
                  They be moved into the default configuration soon (V1.4.3E, V2.01E, V2.1)
–>
<beans>
    <bean name="transactionalEHCacheManager" class="org.alfresco.repo.cache.EhCacheManagerFactoryBean" >
         <property name="configLocation">
       <value>classpath:alfresco/extension/ehcache-custom.xml</value>
         </property>
    </bean>

   <bean name="userToAuthoritySharedCache" class="org.alfresco.repo.cache.EhCacheAdapter">
      <property name="cache">
         <bean class="org.springframework.cache.ehcache.EhCacheFactoryBean" >
            <property name="cacheManager">
               <ref bean="internalEHCacheManager" />
            </property>
            <property name="cacheName">
               <value>org.alfresco.cache.userToAuthorityCache</value>
            </property>
         </bean>
      </property>
   </bean>
  
   <bean name="permissionsAccessSharedCache" class="org.alfresco.repo.cache.EhCacheAdapter">
      <property name="cache">
         <bean class="org.springframework.cache.ehcache.EhCacheFactoryBean" >
            <property name="cacheManager">
               <ref bean="internalEHCacheManager" />
            </property>
            <property name="cacheName">
               <value>org.alfresco.cache.permissionsAccessCache</value>
            </property>
         </bean>
      </property>
   </bean>
  
   <bean name="nodeOwnerSharedCache" class="org.alfresco.repo.cache.EhCacheAdapter">
      <property name="cache">
         <bean class="org.springframework.cache.ehcache.EhCacheFactoryBean" >
            <property name="cacheManager">
               <ref bean="internalEHCacheManager" />
            </property>
            <property name="cacheName">
               <value>org.alfresco.cache.nodeOwnerCache</value>
            </property>
         </bean>
      </property>
   </bean>
  
   <bean name="ticketsSharedCache" class="org.alfresco.repo.cache.EhCacheAdapter">
      <property name="cache">
         <bean class="org.springframework.cache.ehcache.EhCacheFactoryBean" >
            <property name="cacheManager">
               <ref bean="internalEHCacheManager" />
            </property>
            <property name="cacheName">
               <value>org.alfresco.cache.ticketsCache</value>
            </property>
         </bean>
      </property>
   </bean>
  
</beans>


custom-db-and-data-context.xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<!–
       This shows the common minimum configuration overrides.
       By default, the content and indexes are located at a relative location, which should only
       be used when doing a quick preview of the Alfresco server.
–>
<beans>
  
    <!– overriding to point to custom properties –>
    <bean id="repository-properties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders">
            <value>true</value>
        </property>
        <property name="locations">
            <list>
                <value>classpath:alfresco/repository.properties</value>
                <value>classpath:alfresco/version.properties</value>
                <value>classpath:alfresco/domain/transaction.properties</value>

                <!– Override data location properties –>
                <value>classpath:alfresco/extension/custom-data-location.properties</value>
                <!– Override database connection properties –>
                <value>classpath:alfresco/extension/custom-db-connection.properties</value>
            </list>
        </property>
    </bean>

    <bean id="hibernateConfigProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <list>
                <value>classpath:alfresco/domain/hibernate-cfg.properties</value>

                <!– Override hibernate dialect –>
                <value>classpath:alfresco/extension/custom-hibernate-dialect.properties</value>
            </list>
        </property>
    </bean>

</beans>


custom-content-services-context.xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
   
   <bean id="contentService" class="org.alfresco.repo.content.RoutingContentService" init-method="init">
      <property name="transactionService">
          <ref bean="transactionComponent" />
      </property>
      <property name="dictionaryService">
          <ref bean="dictionaryService" />
      </property>
      <property name="nodeService">
          <ref bean="nodeService" />
      </property>
      <property name="transformerRegistry">
          <ref bean="contentTransformerRegistry" />
      </property>
      <property name="store">
          <ref bean="replicatingContentStore" />
      </property>
      <property name="policyComponent">
          <ref bean="policyComponent" />
      </property>
   </bean>
</beans>


replicating-content-services-context.xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
   <!–
    This file is not included in the application context by default.
    If you include this file, please ensure that you review the sample
    beans contained here.
    –>
   
   <bean id="backupContentStore"
         class="org.alfresco.repo.content.filestore.FileContentStore">
      <constructor-arg>
         <value>/dev/alfresco/backup</value>
      </constructor-arg>
   </bean>

   <bean id="contentStoreReplicator"
         class="org.alfresco.repo.content.replication.ContentStoreReplicator"
         depends-on="fileContentStore, backupContentStore" >
      <!– content source –>
      <property name="sourceStore">
          <ref bean="fileContentStore" />
      </property>
      <!– content target –>
      <property name="targetStore">
          <ref bean="backupContentStore" />
      </property>
   </bean>

   <bean id="contentStoreBackupTrigger" class="org.alfresco.util.CronTriggerBean">
      <property name="jobDetail">
         <bean class="org.springframework.scheduling.quartz.JobDetailBean">
            <property name="jobClass">
               <value>org.alfresco.repo.content.replication.ContentStoreReplicator$ContentStoreReplicatorJob</value>
            </property>
            <property name="jobDataAsMap">
               <map>
                  <entry key="contentStoreReplicator">
                     <ref bean="contentStoreReplicator" />
                  </entry>
               </map>
            </property>
         </bean>
      </property>
      <property name="scheduler">
         <ref bean="schedulerFactory" />
      </property>
      <!– trigger at 3am each day –>
      <property name="cronExpression">
         <value>0 0 03 * * ?</value>
      </property>
   </bean>

   <bean id="replicatingContentStore"
         class="org.alfresco.repo.content.replication.ReplicatingContentStore" >
      <!– the preferred store for reads and writes –>
      <property name="primaryStore">
         <ref bean="fileContentStore" />
      </property>
      <!– example of possible secondary store configuration –>
      <property name="secondaryStores">
         <list>
            <ref bean="backupContentStore" />
         <!– <ref bean="archiveStoreA" /> –>
            <!– <ref bean="archiveStoreB" /> –>
         </list>
      </property>
      <!– enable content missing from the primary store to be pulled in from the secondary stores –>
      <property name="inbound">
         <value>true</value>
      </property>
      <!– enable replication from the primary to the secondary stores –>
      <property name="outbound">
         <value>true</value>
      </property>
      <!– this is required if outbound replication is active, otherwise not –>
      <property name="transactionService">
         <ref bean="transactionComponent" />
      </property>
      <!– set this to force outbound replication to be asynchronous –>
      <property name="outboundThreadPoolExecutor">
         <ref bean="threadPoolExecutor" />
      </property>
   </bean>

</beans>

index-tracking-context.xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>

    <!– Schedule index tracking every 30s –>
    <bean id="indexTrackerTrigger" class="org.alfresco.util.CronTriggerBean">
        <property name="jobDetail">
            <bean class="org.springframework.scheduling.quartz.JobDetailBean">
                <property name="jobClass">
                    <value>org.alfresco.repo.node.index.IndexRecoveryJob</value>
                </property>
                <property name="jobDataAsMap">
                    <map>
                        <entry key="indexRecoveryComponent">
                            <ref bean="indexTrackerComponent" />
                        </entry>
                    </map>
                </property>
            </bean>
        </property>
        <property name="scheduler">
            <ref bean="schedulerFactory" />
        </property>
        <property name="cronExpression">
            <value>0,10,20,30,40,50 * * * * ?</value>
        </property>
    </bean>
   
    <bean
          id="indexTrackerComponent"
          class="org.alfresco.repo.node.index.IndexRemoteTransactionTracker"
          parent="indexRecoveryComponentBase">
        <property name="remoteOnly">
            <value>false</value>
        </property>
    </bean>

    <!– Forces the reindexing of nodes where content may have been missing before –>
    <!–
       This component can be triggered at intervals where asynchronous content sharing
       between clustered servers has been set up.
    –>
    <bean id="missingContentReindexTrigger" class="org.alfresco.util.TriggerBean">
        <property name="jobDetail">
            <bean class="org.springframework.scheduling.quartz.JobDetailBean">
                <property name="jobClass">
                    <value>org.alfresco.repo.node.index.IndexRecoveryJob</value>
                </property>
                <property name="jobDataAsMap">
                    <map>
                        <entry key="indexRecoveryComponent">
                            <ref bean="missingContentReindexComponent" />
                        </entry>
                    </map>
                </property>
            </bean>
        </property>
        <property name="scheduler">
            <ref bean="schedulerFactory" />
        </property>
        <!– Give the server 5 minutes and then check for missing content –>
        <property name="startDelayMinutes">
            <value>5</value>
        </property>
        <property name="repeatCount">
            <value>0</value>
        </property>
    </bean>

</beans>



The below files didnt seem to affect this issue, so I have not included the config on these:
custom-db-connection.properties
web-client-config-custom.xml
file-servers-custom.xml
ldap-authentication-context.xml
customModel.xml

With all this config in place, I was able to get data replicating between the two cluster nodes and I was able to access content added by both the nodes from both the nodes. However, the web application that we have developed which uses the web-services that runs a query to retrieve the content  from alfresco was giving me problems. I cant access content added by node2 from the application running on node1.

My part of my query code looks like:

RepositoryServiceSoapBindingStub REPOSITORY_SERVICE =WebServiceFactory.getRepositoryService();
Store store = new Store(Constants.WORKSPACE_STORE, "SpacesStore");
final QueryResult queryResult = REPOSITORY_SERVICE.query(store, new Query(Constants.QUERY_LANG_LUCENE, "( @\\{http\\://www.alfresco.org/model/content/1.0\\}name:" + theContent + ")"), false);


I tried changing this to a xpath lookup and that found the content.

Thanks for taking a look at this issue for me. This is currently holding me up from upgrading to Alfresco release 1.4. We can't really go to production with alfresco 1.3 since we have been having a lot of problems with not getting it cluster fully and also with the workflow due to the 'move' bug ( http://forums.alfresco.com/viewtopic.php?p=18953#18953 ). So any help to get this product out is appreciated!

Thanks,

PS

Outcomes