You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by "Sergey Kozlov (JIRA)" <ji...@apache.org> on 2015/11/12 14:40:10 UTC

[jira] [Created] (IGNITE-1895) Entries aren't evicted for LRU policy

Sergey Kozlov created IGNITE-1895:
-------------------------------------

             Summary: Entries aren't evicted for LRU policy
                 Key: IGNITE-1895
                 URL: https://issues.apache.org/jira/browse/IGNITE-1895
             Project: Ignite
          Issue Type: Bug
          Components: cache
    Affects Versions: 1.5
            Reporter: Sergey Kozlov
            Assignee: Yakov Zhdanov
             Fix For: 1.5


1. :
{code:title=CacheLruExample.java|borderStyle=solid}
package org.apache.ignite.examples.datagrid;

import java.util.HashMap;
import java.util.Map;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteException;
import org.apache.ignite.Ignition;
import org.apache.ignite.examples.ExampleNodeStartup;

public class CachePutGetExample {
    /** Cache name. */
    private static final String CACHE_NAME = "cache_0001";

    public static void main(String[] args) throws IgniteException, InterruptedException {
        try (Ignite ignite = Ignition.start("examples/config/example-ignite-lru-client.xml")) {
            try (IgniteCache<Integer, String> cache = ignite.getOrCreateCache(CACHE_NAME)) {
                System.out.println();
                System.out.println(">>> Test started.");

                int counter = 0;
                for (int i = 1; i <= 100; i++) {
                    if (cache.get(i) != null)
                        counter++;
                }
                System.out.println(">>> Get: found not-null keys " + Integer.toString(counter));
                Thread.sleep(1000);

                for (int i = 1; i <= 100; i++) {
                    cache.remove(i);
                }
                System.out.println(">>> Remove: 1..100");
                Thread.sleep(1000);


                counter = 0;
                for (int i = 1; i <= 100; i++) {
                    cache.put(i, Integer.toString(i));
                    counter++;
                }
                System.out.println(">>> Put: 1..100");
                Thread.sleep(1000);


                counter = 0;
                for (int i = 50; i <= 100; i++) {
                    if (cache.get(i) != null)
                        counter++;
                }
                System.out.println(">>> Get 50..100");
                Thread.sleep(1000);


                for (int i = 30; i <= 49; i++) {
                    cache.put(i, Integer.toString(i));
                }
                System.out.println(">>> Put: 30..49");
                Thread.sleep(1000);


                counter = 0;
                for (int i = 1; i <= 100; i++) {
                    if (cache.get(i) != null)
                        counter++;
                }
                System.out.println(">>> Get: found not-null keys (must be 50): " + Integer.toString(counter));
            }
        }
    }

}
{code}

2. Copy attached configurations in examples/config directory
3. Start two nodes with example-ignite-lru.xml
3. Compile and run example
4. The output of example shows that cache has more entries than defined by max size in eviction policy:

{noformat}
...
[16:34:47,088][INFO ][main][GridDiscoveryManager] Topology snapshot [ver=3, servers=2, clients=1, CPUs=8, heap=3.8GB]

>>> Test started.
>>> Get: found not-null keys 0
>>> Remove: 1..100
>>> Put: 1..100
>>> Get 50..100
>>> Put: 30..49
>>> Get: found not-null keys (must be 50): 70
...
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)