1 Reply Latest reply on Feb 8, 2014 3:11 AM by pb2012

    TreeCache error after Hibernate sessionFacotry close

    erangac

      I am using a Hibernate 3.1.13 with jboss-cache 3.2.5

       

      I'm running my application with second level caching enabled and in middle of the application (based on user operation ) I am closing the existing session factory (sessionFactory.close();) and create a new one.

       

      Up to this moment my second level cache work fine and after closing and creating new session factory I am getting following error from the Treecache.

       

      Error

      ================================================

       

      Caused by: org.jboss.cache.CacheException: java.lang.reflect.InvocationTargetException

             at org.jboss.cache.util.reflect.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:148)

             at org.jboss.cache.factories.ComponentRegistry$PrioritizedMethod.invoke(ComponentRegistry.java:1012)

             at org.jboss.cache.factories.ComponentRegistry.internalStart(ComponentRegistry.java:778)

             at org.jboss.cache.factories.ComponentRegistry.start(ComponentRegistry.java:632)

             at org.jboss.cache.invocation.CacheInvocationDelegate.start(CacheInvocationDelegate.java:345)

             at org.hibernate.cache.jbc2.builder.SharedCacheInstanceManager.start(SharedCacheInstanceManager.java:155)

             at org.hibernate.cache.jbc2.JBossCacheRegionFactory.start(JBossCacheRegionFactory.java:106)

             at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:192)

             at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1304)

             at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:814)

             at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:732)

             at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)

             at com.valista.rse.server.SessionFactoryHolder.refreshSessionFactory(SessionFactoryHolder.java:102)

             ... 32 more

          Caused by: java.lang.reflect.InvocationTargetException

             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.jboss.cache.util.reflect.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:144)

             ... 44 more

          Caused by: org.jboss.cache.CacheException: Unable to fetch state on startup

             at org.jboss.cache.RPCManagerImpl.start(RPCManagerImpl.java:385)

             ... 49 more

          Caused by: org.jboss.cache.CacheException: Cache instance at 127.0.0.1:47082 cannot integrate state since state provider could not provide state due to null

             at org.jboss.cache.statetransfer.DefaultStateTransferManager.setState(DefaultStateTransferManager.java:169)

             at org.jboss.cache.remoting.jgroups.ChannelMessageListener.setState(ChannelMessageListener.java:191)

             at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.handleUpEvent(MessageDispatcher.java:665)

             at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:765)

             at org.jgroups.JChannel.up(JChannel.java:1183)

             at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:444)

             at org.jgroups.protocols.pbcast.STATE_TRANSFER.handleStateRsp(STATE_TRANSFER.java:421)

             at org.jgroups.protocols.pbcast.STATE_TRANSFER.up(STATE_TRANSFER.java:120)

             at org.jgroups.protocols.pbcast.GMS.up(GMS.java:787)

             at org.jgroups.protocols.FRAG.unfragment(FRAG.java:290)

             at org.jgroups.protocols.FRAG.up(FRAG.java:150)

             at org.jgroups.protocols.UNICAST.handleDataReceived(UNICAST.java:616)

             at org.jgroups.protocols.UNICAST.up(UNICAST.java:282)

             at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:233)

             at org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:735)

             at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:167)

             at org.jgroups.protocols.FD.up(FD.java:284)

             at org.jgroups.protocols.MERGE2.up(MERGE2.java:144)

             at org.jgroups.protocols.Discovery.up(Discovery.java:263)

             at org.jgroups.protocols.TP.passMessageUp(TP.java:1275)

             at org.jgroups.protocols.TP.access$100(TP.java:49)

             at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1818)

             at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1797)

             ... 3 more

       

       

      My treecache configuration file

       

      ================================

       

      <?xml version="1.0" encoding="UTF-8"?>

         

          <!-- ===================================================================== -->

          <!--                                                                       -->

          <!--  Sample TreeCache Service Configuration                               -->

          <!--                                                                       -->

          <!-- ===================================================================== -->

         

          <server>

         

              <classpath codebase="../lib" archives="jbosscache-core.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>

                      TransactionManager configuration not required for Hibernate!

                  -->

         

         

                  <!--

                      Node isolation level : SERIALIZABLE

                                           REPEATABLE_READ (default)

                                           READ_COMMITTED

                                           READ_UNCOMMITTED

                                           NONE

                  -->

                  <attribute name="IsolationLevel">READ_COMMITTED</attribute>

         

                  <!--

                       Valid modes are LOCAL

                                       REPL_ASYNC

                                       REPL_SYNC

                  -->

                  <attribute name="CacheMode">REPL_SYNC</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>

                           UDP: if you have a multihomed machine,

                          set the bind_addr attribute to the appropriate NIC IP address

                           UDP: On Windows machines, because of the media sense feature

                           being broken with multicast (even after disabling media sense)

                           set the loopback attribute to true

                          <UDP mcast_addr="228.1.2.3" mcast_port="45566" bind_addr="127.0.0.1"

                              ip_ttl="64" ip_mcast="true"

                              mcast_send_buf_size="150000" mcast_recv_buf_size="80000"

                              ucast_send_buf_size="150000" ucast_recv_buf_size="80000"

                              loopback="false"/>

                          <PING timeout="2000" num_initial_members="3"

                              up_thread="false" down_thread="false"/>

                          <MERGE2 min_interval="10000" max_interval="20000"/>

                          <FD shun="true" up_thread="true" down_thread="true"/>

                          <VERIFY_SUSPECT timeout="1500"

                              up_thread="false" down_thread="false"/>

                          <pbcast.NAKACK gc_lag="50" retransmit_timeout="600,1200,2400,4800"

                              up_thread="false" down_thread="false"/>

                          <pbcast.STABLE desired_avg_gossip="20000"

                              up_thread="false" down_thread="false"/>

                          <UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10"

                              down_thread="false"/>

                          <FRAG frag_size="8192"

                              down_thread="false" up_thread="false"/>

                          <pbcast.GMS join_timeout="5000" join_retry_timeout="2000"

                              shun="true" print_local_addr="false"/>

                          <pbcast.STATE_TRANSFER up_thread="false" down_thread="false"/>

                      </config>

                  </attribute>

               

               

                     

                  <!--

                       Max number of entries in the cache. If this is exceeded, the

                       eviction policy will kick some entries out in order to make

                       more room

                  -->

                  <attribute name="MaxCapacity">20000</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>

         

                  <!--

                      Number of milliseconds to wait until all responses for a

                      synchronous call have been received.

                  -->

                  <attribute name="SyncReplTimeout">10000</attribute>

         

                  <!-- Max number of milliseconds to wait for a lock acquisition -->

                  <attribute name="LockAcquisitionTimeout">15000</attribute>

         

                  <!-- Max number of milliseconds we hold a lock (not currently

                  implemented) -->

                  <attribute name="LockLeaseTimeout">60000</attribute>

         

                  <!-- Name of the eviction policy class. Not supported now. -->

                  <attribute name="EvictionPolicyClass"></attribute>

              </mbean>

         

         

          </server>

       

       

      My Hibernate configuration file

      =================================

       

      # hibernate properties (general settings)

         

          # Note: Define C3P0 settings in c3p0.properties, NOT in this file.

         

          # Debugging

          hibernate.show_sql=false

          #hibernate.cglib.use_reflection_optimizer=false

         

          # Database isolation 1=read uncommitted, 2=read committed, 4=repeatable read, 8=serializable

          hibernate.connection.isolation = 2

         

          #configurations for jboss-cache as second level cache

          hibernate.cache.use_second_level_cache=true

          hibernate.cache.region.factory_class=org.hibernate.cache.jbc2.SharedJBossCacheRegionFactory

          hibernate.cache.region.jbc2.cfg.shared=treecache.xml

          hibernate.cache.use_query_cache=false

         

          # Filtered values based on db type

          hibernate.connection.url=@db.url@

          hibernate.connection.username=@db.users.owner.username@

          hibernate.connection.password=@db.users.owner.password@

         

          hibernate.database.startup.enabled=@db.startup.enabled@

         

          db.type=@db.type@

        

          hibernate.generate_statistics=true

       

       

      Appreciate you people help on this matter

        • 1. Re: TreeCache error after Hibernate sessionFacotry close
          pb2012

          Hi Era

           

          Could you please share how you solved this issue. We are running into same issue on production which has been fine for past 2 years with jboss cache service. very recently we started seeing this exact same error during jboss cache initialization, and this error happens at random.

          Please help

          thanks!