Masaki Yamakawa created GEODE-3809:
--------------------------------------

             Summary: Invalid OQL result to region with entry-idle-time setting
                 Key: GEODE-3809
                 URL: https://issues.apache.org/jira/browse/GEODE-3809
             Project: Geode
          Issue Type: Bug
          Components: querying
            Reporter: Masaki Yamakawa


I am setting the expiration of entry-idle-time to Region. Despite periodic 
access to the region, I discovered an event that data can not be get with OQL 
after the time set by entry-idle-time has elapsed. I am using Geode in the 
production, so I want you to solve this problem as soon as possible.

The cache.xml of the server is as follows:


{code:xml}
<cache>
  <cache-server port="7777" />
  <region name="Data" refid="PARTITION">
    <region-attributes>
      <entry-idle-time>
        <expiration-attributes timeout="10" action="destroy" />
      </entry-idle-time>
    </region-attributes>
  </region>
</cache>
{code}

The source code of the client is as follows:

{code:java}
private static final Integer KEY = 1;

public static void main(String[] args) throws Exception {
        Properties props = new Properties();
        props.setProperty("cache-xml-file", "clientcache.xml");
        ClientCacheFactory factory = new ClientCacheFactory(props);
        ClientCache cache = factory.create();

        Region<Integer, String> region = cache.getRegion("Data");
        region.put(KEY, "InitialValue");

        Thread.sleep(7000);
        System.out.println("Get Result1=" + region.get(1));

        Pool pool = PoolManager.find("ClientPool");
        Query query = pool.getQueryService().newQuery("select k from 
/Data.keySet k");

        // Normal OQL result
        SelectResults result = SelectResults.class.cast(query.execute());
        System.out.println("Get Result2=" + region.get(1));
        System.out.println("Query Result2=" + result.size() + ", value=" + 
result.iterator().next());

        Thread.sleep(5000);

        // Invalid OQL result!!!
        result = SelectResults.class.cast(query.execute());
        System.out.println("Get Result3=" + region.get(1));
        System.out.println("Query Result3=" + result.size() + ", value=" + 
(result.isEmpty() ? null : result.iterator().next()));
        System.out.println("Get Result4=" + region.get(1));

        cache.close();
        System.exit(0);
}
{code}

{code:xml}
<client-cache>
  <pool name="ClientPool" subscription-enabled="true">
    <server host="localhost" port="7777" />
  </pool>

  <region name="Data">
    <region-attributes refid="LOCAL" pool-name="ClientPool" />
  </region>
</client-cache>
{code}




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to