3 Replies Latest reply on Feb 9, 2007 11:11 AM by Manik Surtani

    optimistic cache locking

    Emilio Davis Newbie

      Hi, im using jboss4.0.5.GA and if im not wrong it has hibernate 3.2 wich has optimistic cache locking, how do I enable it?

      For example my ejb3-cache-service.xml is

      <?xml version="1.0" encoding="UTF-8"?>
      <server>
       <mbean code="org.jboss.cache.TreeCache" name="jboss.cache:service=EJB3EntityTreeCache">
       <depends>jboss:service=Naming</depends>
       <depends>jboss:service=TransactionManager</depends>
       <attribute name="TransactionManagerLookupClass">org.jboss.cache.JBossTransactionManagerLookup</attribute>
       <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
       <attribute name="CacheMode">REPL_SYNC</attribute>
       <attribute name="ClusterName">EJB3-entity-cache</attribute>
       <attribute name="ClusterConfig">
       <config>
       <UDP mcast_addr="${jboss.partition.udpGroup:228.1.2.3}" mcast_port="43333" ip_ttl="${jgroups.mcast.ip_ttl:2}" 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_SOCK down_thread="false" up_thread="false"/>
       <FD shun="true" up_thread="false" down_thread="false"
       timeout="20000" max_tries="5"/>
       <VERIFY_SUSPECT timeout="1500" up_thread="false" down_thread="false" />
       <pbcast.NAKACK gc_lag="50" max_xmit_size="8192" retransmit_timeout="600,1200,2400,4800" up_thread="false"
       down_thread="false" />
       <UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10" down_thread="false" />
       <pbcast.STABLE desired_avg_gossip="20000" up_thread="false" 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="true" />
       <pbcast.STATE_TRANSFER up_thread="false" down_thread="false" />
       </config>
       </attribute>
       <attribute name="InitialStateRetrievalTimeout">5000</attribute>
       <attribute name="SyncReplTimeout">10000</attribute>
       <attribute name="LockAcquisitionTimeout">15000</attribute>
       <attribute name="EvictionPolicyClass">org.jboss.cache.eviction.LRUPolicy</attribute>
       <attribute name="EvictionPolicyConfig">
       <config>
       <attribute name="wakeUpIntervalSeconds">5</attribute>
       <region name="/_default_">
       <attribute name="maxNodes">5000</attribute>
       <attribute name="timeToLiveSeconds">1000</attribute>
       </region>
       </config>
       </attribute>
       </mbean>
      </server>
      


      Which is using pessimistic cache locking, whats the parameter to change? ive searched lots of manuals and configuration tutorial but no luck so far.

      Also, if I change it to optimistic, do I need to do anything else in the code? do I need to perform evictions by hand?

        • 1. Re: optimistic cache locking
          Manik Surtani Master

          You need to:

          1) Set NodeLockingScheme attrib to OPTIMISTIC E.g.,

          <attribute name="NodeLockingScheme">OPTIMISTIC</attribute>
          


          2) Configure Hibernate to use the OptimisticTreeCacheProvider instead of TreeCacheProvider

          That's it.

          • 2. Re: optimistic cache locking
            Emilio Davis Newbie

            Thanks for the response, to configure Hibernate to use OptmisticTreeCacheProvider do I just switch

             <property name="hibernate.cache.provider_class" value="org.jboss.ejb3.entity.TreeCacheProviderHook"/>
            

            with
             <property name="hibernate.cache.provider_class" value="org.hibernate.cache.OptimisticTreeCacheProvider"/>
            


            in the persistance.xml?


            for the record, my full persistance.xml atm is

            <persistence>
             <persistence-unit name="bligooEM">
             <jta-data-source>java:/Bligoo_MySqlDS</jta-data-source>
             <properties>
             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
             <property name="hibernate.cache.provider_class" value="org.jboss.ejb3.entity.TreeCacheProviderHook"/>
             <property name="hibernate.treecache.mbean.object_name" value="jboss.cache:service=EJB3EntityTreeCache"/>
             <property name="hibernate.hbm2ddl.auto" value="update"/>
             <property name="hibernate.show_sql" value="false" />
             </properties>
             </persistence-unit>
            </persistence>