[jboss-user] [JBoss Cache: Core Edition] - about eviction and other stuff
shms
do-not-reply at jboss.com
Sat Aug 15 01:32:50 EDT 2009
Hi everybody ,
I am trying to integrate the Jboss cache with a big stand alone environment the main problem with this program we need a huge data to process with amount reach to 7 GB so the idea is to use a cache system to evict some of the data and retrieve it when we want any way
i will get in the problem right away my question is the Jboss cache sensitive to memory ?
and any one have some suggestion .
I tried to create a test before integrate the jboss cache with the system but i could not make it run so anybody can figure the problem
--------------------------------
i make the ram for the virtual , the idea behind the test frame work is to create dummy data and add it to the cache tree and check if it evict it but it did not worked .
sorry i post this code but i want to show all the evolution process on it i used to debug and check and come up with ideas and test them on the same code
import java.util.HashMap;
| import java.util.Map;
| import java.util.Scanner;
|
| import org.jboss.cache.Cache;
| import org.jboss.cache.CacheFactory;
| import org.jboss.cache.DefaultCacheFactory;
| import org.jboss.cache.Fqn;
| import org.jboss.cache.Node;
| import org.jboss.cache.Region;
| import org.jboss.cache.RegionManagerImpl;
| import org.jboss.cache.config.Configuration;
| import org.jboss.cache.config.EvictionAlgorithmConfig;
| import org.jboss.cache.config.EvictionConfig;
| import org.jboss.cache.config.EvictionRegionConfig;
| import org.jboss.cache.config.Configuration.CacheMode;
| import org.jboss.cache.eviction.EvictionEvent;
| import org.jboss.cache.eviction.EvictionQueueList;
| import org.jboss.cache.eviction.LRUAlgorithm;
| import org.jboss.cache.eviction.LRUAlgorithmConfig;
| import org.jboss.cache.interceptors.EvictionInterceptor;
| import org.jboss.cache.transaction.GenericTransactionManagerLookup;
| import org.jboss.util.LRUCachePolicy;
| import org.jgroups.tests.PullPushTestMux.MyListener;
|
|
| public class JBossTest {
|
|
| private static Node<Object, Object> newNode;
| private Node<Object, Object> lastNode ;
| // private Object watcher = new myListener();
| Object watcher = new myListener();
|
|
|
| /**
| * @param args
| */
| public static void getMemorySize()
| {
| long size = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
| System.out.println("The size of the memory at the current time is : " + size);
| }
| public static double[] getDummyData()
| {
| return new double[(int)(1000*Math.random()) + 1];
| }
|
| // private void orderChildren(Node node)
| // {
| // if (node == null) return;
| //
| // if (node instanceof root)
| // {
| // FqnTreeNode node = (FqnTreeNode) parent;
| // ArrayList children = Collections.list(node.children());
| // Collections.sort(children);
| // node.removeAllChildren();
| // Iterator childrenIterator = children.iterator();
| // while (childrenIterator.hasNext()) node.add((FqnTreeNode) childrenIterator.next());
| // }
| // }
| @SuppressWarnings("null")
| public void startUpTest()
| {
| /*
| * the configuration for the cache object
| */
|
| CacheFactory<Object, Object> factory = new DefaultCacheFactory<Object, Object>();
|
|
| // Cache cache = factory.createCache("/home/ecc_8/shamah0s/Desktop/SerialDemo/config.xml", false);
| Cache<Object, Object> cache = factory.createCache();
|
| Configuration config = new Configuration();
|
| // config.setTransactionManagerLookupClass(GenericTransactionManagerLookup.class.getName());
| // config.setIsolationLevel(IsolationLevel.READ_COMMITTED);
| config.setCacheMode(CacheMode.LOCAL);
| // config.setCacheMode(CacheMode.INVALIDATION_SYNC);
| config.setLockAcquisitionTimeout(15000);
|
|
| Node<Object, Object> root = cache.getRoot();
| Fqn<String> fqnNode = Fqn.fromString("root/arrayPath");
|
| // newNode = root.addChild(fqnNode);
| // newNode.setResident(true);
|
| Fqn<String> fqnNode1 = Fqn.fromString("root/hi");
| Fqn<String> fqnNode2 = Fqn.fromString("root/meToo");
| Fqn<String> fqnNode3 = Fqn.fromString("root/arrayPath/what");
| Fqn<String> fqnNode4 = Fqn.fromString("root/arrayPath/what/is");
| Fqn<String> fqnNode5 = Fqn.fromString("root/arrayPath/what/is/he");
| setNode(root);
|
|
| root.addChild(fqnNode2);
| root.addChild(fqnNode3);
| root.addChild(fqnNode4);
| root.addChild(fqnNode5);
|
|
|
| LRUAlgorithmConfig lru = new LRUAlgorithmConfig();
|
| lru.setMaxNodes(1000);
| lru.setMaxAge(15000);
| lru.setMinTimeToLive(2000);
| lru.setMinTimeToLive(1000);
|
| // EvictionRegionConfig ring = new EvictionRegionConfig(fqnNode5,lru);
| EvictionRegionConfig ring = new EvictionRegionConfig();
| ring.setRegionFqn(RegionManagerImpl.DEFAULT_REGION);
|
| EvictionAlgorithmConfig algoCon = new LRUAlgorithmConfig();
|
| // algoCon.validate();
|
| ring.setEvictionActionPolicyClassName(LRUAlgorithm.class.getName());
| // ring.setRegionFqn(fqnNode);
| ring.passCacheToChildConfig(config);
| ring.setEvictionAlgorithmConfig(lru);
| config.setUseLazyDeserialization(true);
|
| Region region = cache.getRegion(fqnNode5, true);
| // region.setEvictionRegionConfig(ring);
|
| // region.setActive(true);
| EvictionConfig evict = new EvictionConfig();
| ring.setRegionFqn(RegionManagerImpl.DEFAULT_REGION);
| // evict.applyDefaults(ring);
| evict.addEvictionRegionConfig(ring);
| // cache.evict(fqnNode, true);
|
| cache.evict(fqnNode5);
| System.out.println(evict.isValidConfig());
| // evict.createDefaultEvictionRegionConfig();
| config.setEvictionConfig(evict);
| // config.setReplQueueMaxElements(15000);
| // evict.setDefaultEvictionPolicyClass(LRUPolicy.class.getName());
|
|
| // start the cache
|
| System.out.println("start the cache before enter the while loop ");
|
| getMemorySize();
|
| // adding a listener
| cache.addCacheListener( watcher);
| // region.getCacheConfiguration();
| // region.processEvictionQueues();
| // region.setEvictionPolicy( LRUCachePolicy.class.);
| // region.setActive(true);
| //evict.
| // EvictionInterceptor interapter =new EvictionInterceptor();
| // EvictionEvent evictEvent = new EvictionEvent();
| // evictEvent.copy(fqnNode);
| // evictEvent.
| //cache.evict(fqnNode);
|
| // EvictionQueueList evictQeue = new EvictionQueueList();
|
| //System.out.println(region.getEvictionPolicyConfig().toString());
|
|
| Scanner scanner = new Scanner(System.in);
| // double[] dummyData = new double[(int)(1000*Math.random()) + 1];
| boolean abort = true;
| int i = 0;
|
| Map< Object, Object> data = new HashMap<Object, Object>();
|
|
|
| cache.create();
| cache.start();
|
| while(abort)
| {
|
| i++;
| if (i == 10000 || i == 100000 || i == 1000000)
| {
| getMemorySize();
| cache.toString();
| // cache.evict(
| System.out.println(cache.getChildrenNames(fqnNode5));
| // cache.evict(fqnNode5);
| // cache.evict(fqnNode1);
| System.out.println(cache.getData(fqnNode));
| cache.evict(fqnNode);
| System.out.println(cache.getData(fqnNode));
| System.out.println(cache.getChildrenNames("***************************************************"));
| System.out.println(fqnNode1.toString());
| System.out.println(fqnNode5.toString());
| System.out.println(cache.getChildrenNames(fqnNode5));
| System.out.println(cache.toString());
| System.out.println(fqnNode1.toString());
| System.out.println(fqnNode5.toString());
| System.out.println(fqnNode1.toString());
| System.out.println(fqnNode5.peekElements().toString());
| System.out.println("we reach 1000 do you want to exist type (y/n): ");
| String checkName = scanner.next();
| if (checkName.equalsIgnoreCase("y"))
| {
| //System.exit(0);
| abort = false;
| }
|
| }
|
| String dummyKey =(Integer.toString(i));
| // newNode.put(dummyKey, getDummyData());
| // data.put(dummyKey, getDummyData());
| //fqnNode.
| // Node <Object, Object> filledNode= getNode().addChild(getNode().getFqn());
| // filledNode.put(dummyKey, getDummyData());
|
| // Node<Object, Object> updated = getNode();
| // Fqn<String> newFqn = getNode().getFqn();
| // getNode().addChild(fqnNode2);
| // cache.getNode(fqn)
| // setNode(updated);
|
|
| // cache.put(getNode().getFqn());
| cache.put(fqnNode, dummyKey, getDummyData());
| // getNode().addChild(dummyKey, getDummyData());
| // cache.put(fqnNode, data);
| cache.toString();
| // cache.evict(fqnNode);
|
|
| }
|
| System.out.println(cache.getConfiguration().toString());
| // System.out.println(cache.getKeys(fqnNode));
| System.out.println(cache.getData(fqnNode));
| // System.out.println(cache.getKeys(fqnNode5));
| System.out.println(cache.getData(fqnNode5));
| // System.out.println(cache.getCacheListeners());
| // System.out.println(cache.getChildrenNames(fqnNode));
| System.out.println(cache.getChildrenNames(fqnNode5));
| System.out.println(cache.toString());
| // System.out.println(newNode.toString());
| }
|
| private Node<Object, Object> getNode()
| {
| return lastNode;
| }
| private void setNode(Node<Object, Object> node)
| {
| lastNode = node ;
| }
|
| public static void main(String[] args) {
| JBossTest test = new JBossTest();
| test.startUpTest();
|
| }
|
| }
|
|
|
|
please some one help me
| import org.jboss.cache.notifications.annotation.CacheListener;
| import org.jboss.cache.notifications.annotation.CacheStarted;
| import org.jboss.cache.notifications.annotation.NodeEvicted;
| import org.jboss.cache.notifications.event.Event;
|
| @CacheListener
| public class myListener
| {
| private int i = 0;
| @CacheStarted
| @NodeEvicted
| public void cacheNodeEvict(Event e)
| {
| switch(e.getType())
| {
| case NODE_EVICTED:
| System.out.println("node evicted");
| case CACHE_STARTED:
| System.out.println("--------------------------------------------------------------------");
| case TRANSACTION_COMPLETED:
| System.out.println("node transection");
| case NODE_VISITED:
| // System.out.print(i++);
| System.out.println("");
| System.out.println("node visited "+ i++);
| case NODE_MODIFIED:
| System.out.println("node modified");
| }
| }
| }
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4249748#4249748
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4249748
More information about the jboss-user
mailing list