-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Second Level Cache Not Persisting to Database (JBoss)
PostPosted: Wed Jun 10, 2009 12:08 pm 
Newbie

Joined: Tue Mar 18, 2008 3:32 pm
Posts: 4
I have JBoss Cache 2 setup as my second level cache in a two node cluster. I see that changes from one node are replicated to the other node OK but they are not being persisted into the actual database, they seem to be sitting in the second level cache. I checked the org.jboss.cache.DataContainerImpl MBean and saw that the replicated object is there.

Why isn't the replicated object being persisted to the database?

Hibernate Spring Config:

Code:
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>
   
    <bean id="annotationTransactionAspect" factory-method="aspectOf" class="org.springframework.transaction.aspectj.AnnotationTransactionAspect" lazy-init="true">
        <property name="transactionManager" ref="transactionManager"/>
    </bean>
   
    <bean id="hibernateDaoFactory" class="com.solers.vulcan.dao.impl.HibernateDAOFactory" scope="singleton" lazy-init="true">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
   
    <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"/>
   
    <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" lazy-init="true">
        <property name="userTransaction" ref="jotm"/>
    </bean>
   
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" scope="singleton" lazy-init="true">
        <property name="annotatedClasses" ref="hibernateClasses"/>
        <property name="hibernateProperties" ref="hibernateProperties"/>
        <property name="dataSource" ref="dataSource" />
        <property name="jtaTransactionManager" ref="jotm"/>
    </bean>
   
    <bean id="hibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="properties">
            <props>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.connection.autocommit">false</prop>
                <prop key="hibernate.connection.shutdown">true</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
                <prop key="hibernate.jdbc.batch_size">25</prop>
                <prop key="hibernate.default_schema">${jdbc.user}</prop>
                <prop key="hibernate.cache.use_second_level_cache">true</prop>
                <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.jbc2.SharedJBossCacheRegionFactory</prop>
                <prop key="hibernate.cache.region_prefix">MSG</prop>
                <prop key="hibernate.cache.region.jbc2.cfg.shared">cache-config.xml</prop>
                <prop key="hibernate.transaction.factory_class">org.springframework.orm.hibernate3.SpringTransactionFactory</prop>
                <prop key="hibernate.transaction.manager_lookup_class">org.springframework.orm.hibernate3.LocalTransactionManagerLookup</prop>
               
            </props>
        </property>
    </bean>


cache-config.xml

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

<server>
   <mbean code="org.jboss.cache.TreeCache"
      name="jboss.cache:service=TreeCache">

      <attribute name="NodeLockingScheme">PESSIMISTIC</attribute>
      <attribute name="IsolationLevel">READ_COMMITTED</attribute>
      <attribute name="CacheMode">REPL_SYNC</attribute>

      <!-- Name of cluster. Needs to be the same for all members, in order to find each other -->
      <attribute name="ClusterName">pessimistic-shared</attribute>

      <attribute name="ClusterConfig">
         <config>           
            <TCP
               stats="true"
               bind_addr="${jgroups.tcp.bind_addr}"
               start_port="${jgroups.tcp.start_port}" />
                   
            <TCPPING
               stats="true"
               timeout="3000"
               initial_hosts="${jgroups.tcpping.initial_hosts:localhost[7800]}"
               port_range="${jgroups.tcpping.port_range}"
               num_initial_members="${jgroups.tcpping.num_initial_members}"/>
                   
            <VERIFY_SUSPECT timeout="1500"/>
               
            <pbcast.NAKACK
               use_mcast_xmit="false"
               gc_lag="0"
               retransmit_timeout="300,600,1200,2400,4800"
               discard_delivered_msgs="true"/>
                   
            <pbcast.STABLE
               stability_delay="1000"
               desired_avg_gossip="50000"
               max_bytes="400000"/>
                   
            <pbcast.GMS
               print_local_addr="true"
               join_timeout="3000"
               shun="true"
               view_bundling="true"/>
                   
            <pbcast.STREAMING_STATE_TRANSFER/>
               
            <FD_SOCK/>
               
            <FD
               timeout="10000"
               max_tries="5"
               shun="true"/>
         </config>
      </attribute>

      <attribute name="FetchInMemoryState">true</attribute>
      <attribute name="StateRetrievalTimeout">20000</attribute>
      <attribute name="SyncReplTimeout">20000</attribute>
      <attribute name="LockAcquisitionTimeout">15000</attribute>
       
      <attribute name="UseRegionBasedMarshalling">true</attribute>
      <!-- Must match the value of "useRegionBasedMarshalling" -->
      <attribute name="InactiveOnStartup">true</attribute>

      <attribute name="EvictionPolicyConfig">
         <config>
            <attribute name="wakeUpIntervalSeconds">5</attribute>
            <!-- Name of the DEFAULT eviction policy class. -->
            <attribute name="policyClass">org.jboss.cache.eviction.LRUPolicy</attribute>
            <!--  Cache wide default -->
            <region name="/_default_">
               <!-- Evict LRU node once we have more than this number of nodes -->
               <attribute name="maxNodes">10000</attribute>
               <!-- And, evict any node that hasn't been accessed in this many seconds -->
               <attribute name="timeToLiveSeconds">1000</attribute>
               <!-- Don't evict a node that's been accessed within this many seconds.
                   Set this to a value greater than your max expected transaction length. -->
               <attribute name="minTimeToLiveSeconds">120</attribute>
            </region>
            <!--  Don't ever evict modification timestamps -->
            <region name="/TS" policyClass="org.jboss.cache.eviction.NullEvictionPolicy"/>
         </config>
      </attribute>
   
   </mbean>
</server>


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
cron
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.