[jboss-user] [JBossCache] - Failing to connect a treecache using TCP

Benbo do-not-reply at jboss.com
Thu Apr 26 04:56:57 EDT 2007


I have two machines (FIRST_BOX and SECOND_BOX)running applications using hibernate 3.2.2 to talk to an oracle 10g database, using JBossCache 1.4.1SP3 as the secondary level cache.

FIRST_BOX is always started first.

My treecache.xml file looks like this:

<server>
  | 
  |     <classpath codebase="./lib" archives="jboss-cache.jar, jgroups.jar"/>
  | 
  | 
  |     <!-- ==================================================================== -->
  |     <!-- Defines TreeCache configuration                                      -->
  |     <!-- ==================================================================== -->
  | 
  |     <mbean code="org.jboss.cache.TreeCache"
  |            name="jboss.cache:service=TreeCache">
  | 
  |         <depends>jboss:service=Naming</depends>
  |         <depends>jboss:service=TransactionManager</depends>
  | 
  |         <!--
  |             Configure the TransactionManager : no matter since Hibernate will plug in
  |             an "adapter" to its own TransactionManagerLookup strategy here
  |         -->
  |         <attribute name="TransactionManagerLookupClass">org.jboss.cache.GenericTransactionManagerLookup</attribute>
  | 
  | 
  |         <!--
  |             Node locking scheme:
  |                 OPTIMISTIC
  |                 PESSIMISTIC (default)
  |         -->
  |         <attribute name="NodeLockingScheme">OPTIMISTIC</attribute>
  | 
  |         <!--
  |             Note that this attribute is IGNORED if your NodeLockingScheme above is OPTIMISTIC.
  | 
  |             Isolation level : SERIALIZABLE
  |                               REPEATABLE_READ (default)
  |                               READ_COMMITTED
  |                               READ_UNCOMMITTED
  |                               NONE
  |         -->
  |         <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
  | 
  |         <!--
  |              Valid modes are LOCAL
  |                              REPL_ASYNC
  |                              REPL_SYNC
  |                              INVALIDATION_ASYNC
  |                              INVALIDATION_SYNC
  | 
  |              INVALIDATION_ASYNC is highly recommended as the mode for use
  |              with clustered second-level caches.
  |         -->
  |         <attribute name="CacheMode">REPL_ASYNC</attribute>
  | 
  |         <!--
  |         Just used for async repl: use a replication queue
  |         -->
  |         <attribute name="UseReplQueue">false</attribute>
  | 
  |         <!--
  |             Replication interval for replication queue (in ms)
  |         -->
  |         <attribute name="ReplQueueInterval">0</attribute>
  | 
  |         <!--
  |             Max number of elements which trigger replication
  |         -->
  |         <attribute name="ReplQueueMaxElements">0</attribute>
  | 
  |         <!-- Name of cluster. Needs to be the same for all clusters, in order
  |              to find each other
  |         -->
  |         <attribute name="ClusterName">TreeCache-Cluster</attribute>
  | 
  |         <!-- JGroups protocol stack properties. Can also be a URL,
  |              e.g. file:/home/bela/default.xml
  |            <attribute name="ClusterProperties"></attribute>
  |         -->
  | 
  |         <attribute name="ClusterConfig">
  |             <config>
  | <TCP bind_addr="FIRST_BOX" start_port="6800" loopback="true"/>
  |                 <TCPPING initial_hosts="FIRST_BOX[6800]"
  |                          port_range="5"
  |                          timeout="3500"
  |                          num_initial_members="3"
  |                          up_thread="true"
  |                          down_thread="true"/>
  |                 <MERGE2 min_interval="5000" max_interval="10000"/>
  |                 <FD shun="true" timeout="2500" max_tries="5" up_thread="true" down_thread="true"/>
  |                 <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
  |                 <pbcast.NAKACK down_thread="true" up_thread="true" gc_lag="100" retransmit_timeout="3000"/>
  |                 <pbcast.STABLE desired_avg_gossip="20000" down_thread="false" up_thread="false"/>
  |                 <pbcast.GMS join_timeout="5000"
  |                             join_retry_timeout="2000"
  |                             shun="false"
  |                             print_local_addr="false"
  |                             down_thread="true"
  |                             up_thread="true"/>
  |             </config>
  | 
  |         </attribute>
  | 
  |         <!--
  |          Whether or not to fetch state on joining a cluster
  |          NOTE this used to be called FetchStateOnStartup and has been renamed to be more descriptive.
  |         -->
  |         <attribute name="FetchInMemoryState">false</attribute>
  | 
  |         <!--
  |             Number of milliseconds to wait until all responses for a
  |             synchronous call have been received.
  |         -->
  |         <attribute name="SyncReplTimeout">20000</attribute>
  | 
  |         <!-- Max number of milliseconds to wait for a lock acquisition -->
  |         <attribute name="LockAcquisitionTimeout">15000</attribute>
  | 
  | 
  |         <!--
  |  	          The max amount of time (in milliseconds) we wait until the
  |  	          initial state (ie. the contents of the cache) are retrieved from
  |  	          existing members in a clustered environment
  |  	      -->
  | 
  |         <attribute name="InitialStateRetrievalTimeout">20000</attribute>
  | 
  |         <!--
  |            Indicate whether to use marshalling or not. Set this to true if you are running under a scoped
  |            class loader, e.g., inside an application server. Default is "false".
  |         -->
  |         <attribute name="UseMarshalling">false</attribute>
  | 
  |     </mbean>
  | </server>

FIRST_BOX starts up fine, sets up the cache without errors etc. When SECOND_BOX starts up, it throws an exception stating that it cannot create a TreeCache-Cluster, because the cluster already exists:

  |  [java] main 09:54:15,934 ERROR TreeCache:283 - Starting failed jboss.cache:service=TreeCache-Cluster
  |      [java] javax.management.InstanceAlreadyExistsException: jboss.cache:service=TreeCache-Cluster
  |      [java]     at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:453)
  |      [java]     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerIntercepto
  | r.java:1484)
  |      [java]     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerIntercep
  | tor.java:963)
  |      [java]     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.ja
  | va:917)
  |      [java]     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.jav
  | a:312)
  |      [java]     at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:482)
  |      [java]     at org.jboss.cache.util.MBeanConfigurator.registerInterceptors(MBeanConfigurator.java:67)
  |      [java]     at org.jboss.cache.TreeCache._createService(TreeCache.java:1241)
  |      [java]     at org.jboss.cache.TreeCache.startService(TreeCache.java:1306)
  |      [java]     at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:271)
  |      [java]     at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:172)
  |      [java]     at org.hibernate.cache.OptimisticTreeCacheProvider.start(OptimisticTreeCacheProvider.java:94)
  |      [java]     at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:183)
  |      [java]     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
  |      [java]     at com.qxlva.mm.dispensing.loadtest.client.PreloadKeystoresTask.<clinit>(PreloadKeystoresTask.java:54)
  |      [java]     at com.qxlva.mm.dispensing.loadtest.client.PharmacyClient.preloadKeyStores(PharmacyClient.java:168)
  |      [java]     at com.qxlva.mm.dispensing.loadtest.client.PharmacyClient.main(PharmacyClient.java:87)
  |      [java] Exception in thread "main" java.lang.ExceptionInInitializerError
  |      [java]     at com.qxlva.mm.dispensing.loadtest.client.PreloadKeystoresTask.<clinit>(PreloadKeystoresTask.java:59)
  |      [java]     at com.qxlva.mm.dispensing.loadtest.client.PharmacyClient.preloadKeyStores(PharmacyClient.java:168)
  |      [java]     at com.qxlva.mm.dispensing.loadtest.client.PharmacyClient.main(PharmacyClient.java:87)
  |      [java] Caused by: org.hibernate.cache.CacheException: javax.management.InstanceAlreadyExistsException: jboss.cache:
  | service=TreeCache-Cluster
  |      [java]     at org.hibernate.cache.OptimisticTreeCacheProvider.start(OptimisticTreeCacheProvider.java:97)
  |      [java]     at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:183)
  |      [java]     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
  |      [java]     at com.qxlva.mm.dispensing.loadtest.client.PreloadKeystoresTask.<clinit>(PreloadKeystoresTask.java:54)
  |      [java]     ... 2 more
  |      [java] Caused by: javax.management.InstanceAlreadyExistsException: jboss.cache:service=TreeCache-Cluster
  |      [java]     at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:453)
  |      [java]     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerIntercepto
  | r.java:1484)
  |      [java] main 09:54:15,934 FATAL PreloadKeystoresTask:58 - Error creating dedicated session factory
  |      [java] org.hibernate.cache.CacheException: javax.management.InstanceAlreadyExistsException: jboss.cache:service=Tre
  | eCache-Cluster
  | 

If I comment out the name of the ClusterName on the second box, the first box starts rejecting messages when the second box starts up, saying that the messages are from a different group "TreeCache-Group". I was under the impression from the comments in the treecache.xml that the ClusterName had to be the same in each node for them to find each other.

Can you please tell me where I've gone wrong?

Cheers,

Ben



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4040873#4040873

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4040873



More information about the jboss-user mailing list