1 Reply Latest reply: Feb 8, 2014 3:11 AM by paramita banerjee RSS

    TreeCache error after Hibernate sessionFacotry close

    Eranga Samararathna Newbie

      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