Search in sources :

Example 6 with ObjectSizer

use of org.apache.geode.cache.util.ObjectSizer in project geode by apache.

the class TestDiskRegion method main5.

/**
   * Filling up the region with keys and values
   */
public static void main5(String[] args) throws Exception {
    DistributedSystem system = DistributedSystem.connect(new java.util.Properties());
    Cache cache = CacheFactory.create(system);
    AttributesFactory factory = new AttributesFactory();
    factory.setEvictionAttributes(EvictionAttributes.createLRUMemoryAttributes(2, (ObjectSizer) null, EvictionAction.OVERFLOW_TO_DISK));
    LocalRegion region = (LocalRegion) cache.createRegion("TestDiskRegion", factory.create());
    // DiskRegion dr = region.getDiskRegion();
    // DiskRegionStats diskStats = dr.getStats();
    LRUStatistics lruStats = getLRUStats(region);
    for (int i = 0; i < 10000; i++) {
        int[] array = new int[1000];
        array[0] = i;
        try {
            region.put(array, new Integer(i));
        } catch (IllegalStateException ex) {
            System.out.println("Ran out of space: " + ex);
            return;
        }
    }
    String s = "Limit is " + lruStats.getLimit() + " evictions are " + lruStats.getEvictions();
    throw new RuntimeException(s);
}
Also used : ObjectSizer(org.apache.geode.cache.util.ObjectSizer) LocalRegion(org.apache.geode.internal.cache.LocalRegion) DistributedSystem(org.apache.geode.distributed.DistributedSystem) AttributesFactory(org.apache.geode.cache.AttributesFactory) LRUStatistics(org.apache.geode.internal.cache.lru.LRUStatistics) Cache(org.apache.geode.cache.Cache)

Example 7 with ObjectSizer

use of org.apache.geode.cache.util.ObjectSizer in project geode by apache.

the class TestDiskRegion method main.

public static void main(String[] args) throws Exception {
    DistributedSystem system = DistributedSystem.connect(new java.util.Properties());
    Cache cache = CacheFactory.create(system);
    AttributesFactory factory = new AttributesFactory();
    factory.setEvictionAttributes(EvictionAttributes.createLRUMemoryAttributes(2, (ObjectSizer) null, EvictionAction.OVERFLOW_TO_DISK));
    DiskStoreFactory dsf = cache.createDiskStoreFactory();
    File user_dir = new File(System.getProperty("user.dir"));
    if (!user_dir.exists()) {
        user_dir.mkdir();
    }
    File[] dirs1 = new File[] { user_dir };
    DiskStore ds1 = dsf.setDiskDirs(dirs1).create("TestDiskRegion");
    factory.setDiskStoreName("TestDiskRegion");
    LocalRegion region = (LocalRegion) cache.createRegion("TestDiskRegion", factory.create());
    DiskRegion dr = region.getDiskRegion();
    Assert.assertTrue(dr != null);
    DiskRegionStats diskStats = dr.getStats();
    LRUStatistics lruStats = getLRUStats(region);
    Assert.assertTrue(diskStats != null);
    Assert.assertTrue(lruStats != null);
    // Put some small stuff
    for (int i = 0; i < 10; i++) {
        region.put(new Integer(i), String.valueOf(i));
    }
    Assert.assertTrue(diskStats.getWrites() == 0);
    Assert.assertTrue(diskStats.getReads() == 0);
    Assert.assertTrue(lruStats.getEvictions() == 0);
    // // Make sure we can get them back okay
    // for (int i = 0; i < 10; i++) {
    // Object value = region.get(new Integer(i));
    // Assert.assertTrue(value != null);
    // Assert.assertTrue(String.valueOf(i).equals(value));
    // }
    // Put in larger stuff until we start evicting
    int total;
    for (total = 0; lruStats.getEvictions() <= 0; total++) {
        System.out.println("total puts " + total + ", evictions " + lruStats.getEvictions() + ", total entry size " + lruStats.getCounter());
        int[] array = new int[250];
        array[0] = total;
        region.put(new Integer(total), array);
    }
    Assert.assertTrue(diskStats.getWrites() == 1);
    Assert.assertTrue(diskStats.getReads() == 0);
    Assert.assertTrue(lruStats.getEvictions() == 1);
    System.out.println("----------  Finished Putting -------------");
    Object value = region.get(new Integer(0));
    Assert.assertTrue(value != null);
    Assert.assertTrue(((int[]) value)[0] == 0);
    Assert.assertTrue(diskStats.getWrites() == 2, String.valueOf(diskStats.getWrites()));
    Assert.assertTrue(diskStats.getReads() == 1);
    Assert.assertTrue(lruStats.getEvictions() == 2, String.valueOf(lruStats.getEvictions()));
    System.out.println("----------  Getting ALL -------------");
    for (int i = 0; i < total; i++) {
        System.out.println("total gets " + i + ", evictions " + lruStats.getEvictions() + ", total entry size " + lruStats.getCounter());
        int[] array = (int[]) region.get(new Integer(i));
        Assert.assertTrue(array != null);
        Assert.assertTrue(i == array[0]);
    }
    System.out.println("---------  Updating  --------------");
    long startEvictions = lruStats.getEvictions();
    for (int i = 0; i < 10; i++) {
        region.put(new Integer(i), new int[251]);
        long expected = startEvictions + 1 + i;
        long actual = lruStats.getEvictions();
        Assert.assertTrue(expected == actual, "For " + i + " expected " + expected + ", got " + actual);
    }
    System.out.println("Done.  Waiting for stats to be written...");
    Thread.sleep(5 * 1000);
}
Also used : DiskRegionStats(org.apache.geode.internal.cache.DiskRegionStats) ObjectSizer(org.apache.geode.cache.util.ObjectSizer) LocalRegion(org.apache.geode.internal.cache.LocalRegion) DistributedSystem(org.apache.geode.distributed.DistributedSystem) DiskStoreFactory(org.apache.geode.cache.DiskStoreFactory) DiskStore(org.apache.geode.cache.DiskStore) AttributesFactory(org.apache.geode.cache.AttributesFactory) DiskRegion(org.apache.geode.internal.cache.DiskRegion) LRUStatistics(org.apache.geode.internal.cache.lru.LRUStatistics) File(java.io.File) Cache(org.apache.geode.cache.Cache)

Example 8 with ObjectSizer

use of org.apache.geode.cache.util.ObjectSizer in project geode by apache.

the class LocalRegion method getObjectSizer.

/**
   * Returns the object sizer on this region or null if it has no sizer.
   * 
   * @since GemFire 6.1.2.9
   */
public ObjectSizer getObjectSizer() {
    ObjectSizer result = null;
    EvictionAttributes ea = getEvictionAttributes();
    if (ea != null) {
        result = ea.getObjectSizer();
    }
    return result;
}
Also used : EvictionAttributes(org.apache.geode.cache.EvictionAttributes) ObjectSizer(org.apache.geode.cache.util.ObjectSizer)

Aggregations

ObjectSizer (org.apache.geode.cache.util.ObjectSizer)8 AttributesFactory (org.apache.geode.cache.AttributesFactory)4 Cache (org.apache.geode.cache.Cache)4 DistributedSystem (org.apache.geode.distributed.DistributedSystem)4 LocalRegion (org.apache.geode.internal.cache.LocalRegion)4 Declarable (org.apache.geode.cache.Declarable)3 LRUStatistics (org.apache.geode.internal.cache.lru.LRUStatistics)3 CacheXmlException (org.apache.geode.cache.CacheXmlException)2 DiskRegion (org.apache.geode.internal.cache.DiskRegion)2 DiskRegionStats (org.apache.geode.internal.cache.DiskRegionStats)2 EvictionAttributesImpl (org.apache.geode.internal.cache.EvictionAttributesImpl)2 BufferedReader (java.io.BufferedReader)1 File (java.io.File)1 InputStreamReader (java.io.InputStreamReader)1 DiskStore (org.apache.geode.cache.DiskStore)1 DiskStoreFactory (org.apache.geode.cache.DiskStoreFactory)1 EntryEvent (org.apache.geode.cache.EntryEvent)1 EvictionAction (org.apache.geode.cache.EvictionAction)1 EvictionAttributes (org.apache.geode.cache.EvictionAttributes)1 CacheListenerAdapter (org.apache.geode.cache.util.CacheListenerAdapter)1