Hi all,
I read in the documents of JBoss Cache (1.4.1) about passivation, and it seems 
that it can help me to do the following task:
I would like to set a region of 100 maxNodes, and if the number of the nodes 
places in the cache (for the region) exceeds 100, the nodes will be evicted, 
but their data will be stored in secondary storage.

I decided that my secondary storage will be a file system. so I decided to use 
a FIleCacheLoader.
In addition, I need replication between 2 cache instances.
Here is my configuration XML for one of the nodes:




  | <?xml version="1.0" encoding="UTF-8"?>
  | 
  | <!-- ===================================================================== 
-->
  | <!--                                                                       
-->
  | <!--  Sample TreeCache Service Configuration                               
-->
  | <!--                                                                       
-->
  | <!-- ===================================================================== 
-->
  | 
  | <server>
  | 
  |     <classpath codebase="./lib" archives="jboss-cache.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>
  | 
  |         <!--
  |         Configure the TransactionManager
  |     -->
  |         <attribute 
name="TransactionManagerLookupClass">org.jboss.cache.DummyTransactionManagerLookup</attribute>
  | 
  |         <!--
  |             Isolation level : SERIALIZABLE
  |                               REPEATABLE_READ (default)
  |                               READ_COMMITTED
  |                               READ_UNCOMMITTED
  |                               NONE
  |         -->
  |         <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
  | 
  |         <!--
  |              Valid modes are LOCAL
  |                              REPL_ASYNC
  |                              REPL_SYNC
  |                              INVALIDATION_ASYNC
  |                              INVALIDATION_SYNC
  |         -->
  |         <attribute name="CacheMode">REPL_SYNC</attribute>
  | 
  |         <!--
  |         Just used for async repl: use a replication queue
  |         -->
  |         <attribute name="UseReplQueue">false</attribute>
  | 
  |         <!--
  |             Replication interval for replication queue (in ms)
  |         -->
  |         <attribute name="ReplQueueInterval">0</attribute>
  | 
  |         <!--
  |             Max number of elements which trigger replication
  |         -->
  |         <attribute name="ReplQueueMaxElements">0</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, e.g bind_addr="192.168.0.2"
  |                 -->
  |                 <!-- 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="48866" 
bind_addr="192.168.10.56"
  |                     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" />-->
  |                 <FD_SOCK/>
  |                 <VERIFY_SUSPECT timeout="1500"
  |                     up_thread="false" down_thread="false"/>
  |                 <pbcast.NAKACK gc_lag="50" 
retransmit_timeout="600,1200,2400,4800"
  |                     max_xmit_size="8192" 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="true" down_thread="true"/>
  |             </config>
  |         </attribute>
  | 
  |         <!--
  |         Whether or not to fetch state on joining a cluster
  |         NOTE this used to be called FetchStateOnStartup and has been 
renamed to be more descriptive.
  |        -->
  |         <attribute name="FetchInMemoryState">true</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">20000</attribute>
  | 
  |         <!-- Max number of milliseconds to wait for a lock acquisition -->
  |         <attribute name="LockAcquisitionTimeout">15000</attribute>
  | 
  |         <!-- Name of the eviction policy class. -->
  |         <attribute 
name="EvictionPolicyClass">org.jboss.cache.aop.eviction.AopLRUPolicy</attribute>
  |         
  |         <!-- Specific eviction policy configurations. This is LRU -->
  |         <attribute name="EvictionPolicyConfig">
  |            <config>
  |               <attribute name="wakeUpIntervalSeconds">5</attribute>
  |               <!-- Cache wide default -->
  |               <region name="/_default_">
  |                   <attribute name="maxNodes">5000</attribute>
  |                   <attribute name="timeToLiveSeconds">1000</attribute>
  |               </region>
  |               <region name="/org/jboss/data">
  |                   <attribute name="maxNodes">5000</attribute>
  |                   <attribute name="timeToLiveSeconds">1000</attribute>
  |               </region>
  |               <region name="/people/friends">
  |                   <attribute name="maxNodes">100</attribute>
  |                   <attribute name="timeToLiveSeconds">1000</attribute>
  |               </region>
  |               <region name="/org/jboss/test/data">
  |                   <attribute name="maxNodes">5</attribute>
  |                   <attribute name="timeToLiveSeconds">4</attribute>
  |               </region>
  |            </config>
  |         </attribute>
  |         
  |         
  |          <!-- New 1.3.x cache loader config block -->
  |             <attribute name="CacheLoaderConfiguration">
  |          <config>
  |              
  |              <passivation>true</passivation>
  |              <shared>false</shared>
  | 
  |              <cacheloader>
  |                  <class>org.jboss.cache.loader.FileCacheLoader</class>
  |                  <!-- Passivate to the server data dir -->
  |                  <properties>
  |                       location=/tmp/bla
  |                  </properties>
  |                  <async>false</async>
  |                  <fetchPersistentState>true</fetchPersistentState>
  |                  <ignoreModifications>false</ignoreModifications>
  |              </cacheloader>
  | 
  |          </config>
  |      </attribute>
  |         
  |     </mbean>
  | 
  | 
  |    <!--  Uncomment to get a graphical view of the TreeCache MBean above -->
  |    <!--   <mbean code="org.jboss.cache.TreeCacheView" 
name="jboss.cache:service=TreeCacheView">-->
  |    <!--      <depends>jboss.cache:service=TreeCache</depends>-->
  |    <!--      <attribute 
name="CacheService">jboss.cache:service=TreeCache</attribute>-->
  |    <!--   </mbean>-->
  | 
  | 
  | </server>
  | 


I placed 150 objects under /people/friends, and defined my own tree listener to 
report me when there is an eviction.
Evictions did occur, but i saw no files in the file system.
When I switched passivation to false, I saw that immediately when I put objects 
in the cache, the FIleCachLoader "puts" the objects in the filesystem, but it 
has nothing to do with evicting them.
Can you tell me what is wrong in my configuration and if the thing I desire to 
do (place objects in the file system are they are evicted, and read them from 
the file system, when i try to access them again) is possible?

Thanks in advance,
Yair

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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4104868
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to