[jboss-user] [JBossCache] - Exception when a cluster node joins under load

ne_vasya do-not-reply at jboss.com
Mon Jan 14 06:17:55 EST 2008


Hi,

I have cache configured with INVALIDATION_SYNC policy and get the following error when a 2nd cluster node starts up under load:

  | java.lang.IllegalStateException: Cache not in STARTED state!
  |         at org.jboss.cache.CacheImpl.invokeMethod(CacheImpl.java:3929)
  |         at org.jboss.cache.CacheImpl._replicate(CacheImpl.java:2853)
  |         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:585)
  |         at org.jgroups.blocks.MethodCall.invoke(MethodCall.java:330)
  |         at org.jboss.cache.marshall.InactiveRegionAwareRpcDispatcher.handle(InactiveRegionAwareRpcDispatcher.java:77)
  |         at org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:624)
  |         at org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:533)
  |         at org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:365)
  |         at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:744)
  |         at org.jgroups.JChannel.up(JChannel.java:1148)
  |         at org.jgroups.mux.Multiplexer$Task.run(Multiplexer.java:1041)
  |         at org.jgroups.mux.Multiplexer$ExecuteTask.run(Multiplexer.java:1065)
  |         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
  |         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
  |         at java.lang.Thread.run(Thread.java:595)
  | 
Any help is appreciated.

Here is my cache configuration just in case:

  | <server>
  |     <mbean code="org.jboss.cache.jmx.CacheJmxWrapper" 
  |         name="jboss.cache:service=testTreeCache">
  | 
  |         <!--
  |             The JMX object name of the service that defines the JGroups multiplexer. 
  |             In JBoss AS 5.0 this service is normally defined in the jgroups-multiplexer.sar. 
  |             This XML attribute can only be handled by the JBoss AS MBean deployment 
  |             services; if it is included in a file passed to a CacheFactory the factory's 
  |             creation of the cache will fail. Inside JBoss AS, the attribute should be 
  |             specified using the "depends optional-attribute-name" syntax shown below.
  |             Inside the AS if this attribute is defined, an instance of 
  |             org.jgroups.jmx.JChannelFactoryMBean  will be injected into the 
  |             CacheJmxWrapper which will use it to obtain a multiplexed JGroups channel. 
  |             The configuration of the channel will be that associated with MultiplexerStack. 
  |             The ClusterConfig attribute will be ignored.        
  |         -->
  |         <!--
  |        <depends optional-attribute-name="MultiplexerService" 
  |               proxy-type="attribute">org.gridgain:name=GridJgroupsChannelFactory</depends>        
  |         -->
  |         
  |         <!--  
  |             Following attributes specify using of multiplexer and protocols stack name.
  |         -->
  |         <attribute name="MultiplexerStack">grid.jgroups.stack</attribute>
  |         <attribute name="UsingMultiplexer">true</attribute>
  |     
  |         <!-- 
  |             Node locking isolation level : SERIALIZABLE, REPEATABLE_READ (default), 
  |             READ_COMMITTED, READ_UNCOMMITTED, and NONE. Note that this is ignored 
  |             if NodeLockingScheme is OPTIMISTIC. Case doesn't matter. 
  |             See documentation on Transactions and Concurrency for more details.
  |         -->
  |         <attribute name="IsolationLevel">READ_COMMITTED</attribute>
  |         
  |         <!-- Indicates whether state should be fetched on startup. -->
  |         <attribute name="FetchInMemoryState">false</attribute>
  |     
  |         <!--
  |             This replication mode is cheapest with data affinity.
  |         -->.
  |         <attribute name="CacheMode">INVALIDATION_SYNC</attribute>
  |     
  |         <!-- 
  |             Name of cluster. Needs to be the same for all nodes in a cluster in order 
  |             for them to communicate with each other.
  |         -->
  |         <attribute name="ClusterName">JBossCache-Cluster</attribute>
  |         
  |         <!--
  |             Time in milliseconds to wait for state retrieval. This should be longer than 
  |             LockAcquisitionTimeout  as the node providing state may need to wait that 
  |             long to acquire necessary read locks on the cache. This property is dynamic.
  |         -->
  |         <attribute name="StateRetrievalTimeout">20000</attribute>
  | 
  |         <!-- 
  |             For synchronous replication: time in milliseconds to wait until replication 
  |             acks have been received from all nodes in the cluster. It is usually best 
  |             that this is greater than LockAcquisitionTimeout  . This property is dynamic.
  |         -->
  |         <attribute name="SyncReplTimeout">15000</attribute>
  |         
  |         <!--
  |             Time in milliseconds to wait for a lock to be acquired. If a lock cannot be 
  |             acquired an exception will be thrown. This property is dynamic.
  |         -->
  |         <attribute name="LockAcquisitionTimeout">15000</attribute>
  |         
  |         <!-- 
  |             Specific eviction policy configurations. This is LRU. 
  |         -->
  |         <attribute name="EvictionPolicyConfig">
  |             <config>
  |                 <attribute name="wakeUpIntervalSeconds">5</attribute>
  | 
  |                 <!-- This defaults to 200000 if not specified -->
  |                 <attribute name="eventQueueSize">200000</attribute>
  | 
  |                 <!-- Name of the DEFAULT eviction policy class. -->
  |                 <attribute name="policyClass">org.jboss.cache.eviction.LRUPolicy</attribute>
  |     
  |                 <!-- Cache wide default -->
  |                 <region name="/_default_">
  |                     <attribute name="maxNodes">1000000</attribute>
  |                     
  |                     <!-- No limit. -->
  |                     <attribute name="timeToLiveSeconds">0</attribute>
  |                 </region>
  | 
  |                 <region name="/novus/data">
  |                    <attribute name="maxNodes">1000000</attribute>
  |                     
  |                     <!-- No limit. -->
  |                     <attribute name="timeToLiveSeconds">0</attribute>
  |                 </region>
  |             </config>
  |         </attribute>
  |  
  |         <attribute name="CacheLoaderConfig">
  |             <config>
  |                 <!-- If passivation is true, only the first cache loader is used; the rest are ignored. -->
  |                 <passivation>false</passivation>
  |               
  |                 <!-- No preloading. -->
  |                 <preload/>
  |               
  |                 <!-- Are the cache loaders shared in a cluster? -->
  |                 <shared>false</shared>
  |         
  |                 <cacheloader>
  |                     <class>com.novus.server.NovusCacheLoader</class>
  |         
  |                     <!-- Properties to pass in to the cache loader. -->
  |                     <properties/>
  |         
  |                     <!-- Whether the cache loader writes are asynchronous. -->
  |                     <async>false</async>
  |         
  |                     <!-- There is no persistent state for this cacheloader. -->
  |                     <fetchPersistentState>false</fetchPersistentState>
  |         
  |                     <!-- Determines whether this cache loader ignores writes - defaults to false. -->
  |                     <ignoreModifications>false</ignoreModifications>
  |         
  |                     <!-- If set to true, purges the contents of this cache loader when the cache starts up. -->
  |                     <purgeOnStartup>false</purgeOnStartup>
  |         
  |                     <!-- 
  |                         Defines the cache loader as a singleton store where only the coordinator of the
  |                         cluster will store modifications. 
  |                     -->
  |                     <singletonStore>
  |                         <!-- If true, singleton store functionality is enabled, defaults to false. -->
  |                         <enabled>false</enabled>
  |         
  |                         <!-- 
  |                             Implementation class for singleton store functionality which must extend
  |                             org.jboss.cache.loader.AbstractDelegatingCacheLoader. Default implementation
  |                             is org.jboss.cache.loader.SingletonStoreCacheLoader.
  |                         -->
  |                         <class>org.jboss.cache.loader.SingletonStoreCacheLoader</class>
  |         
  |                         <!-- 
  |                             Properties and default values for the default singleton store functionality
  |                             implementation. 
  |                         -->
  |                         <properties>
  |                             pushStateWhenCoordinator=true
  |                             pushStateWhenCoordinatorTimeout=20000
  |                         </properties>
  |                     </singletonStore>
  |                 </cacheloader>
  |             </config>
  |         </attribute>
  |     </mbean>
  | </server>
  | 
Thanks in advance.

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

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



More information about the jboss-user mailing list