Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-1466

Async configuration tag affects communication between cache and HotRod client

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved (View Workflow)
    • Major
    • Resolution: Rejected
    • 5.1.0.ALPHA1, 5.1.0.BETA1
    • None
    • None
    • None

    Description

      When using a REPL (replicated) cache with configuration tag <async useReplQueue="true" replQueueMaxElements="3" replQueueInterval="1000" />, HotRod client cannot see a cache entry which was just stored into a cache. The entry is visible not before the replication queue is flushed (either because of MaxElements limit or QueueInterval). I'll attach a testcase but here's a test snippet that fails at first assert:

      @Test
          public void testQueueSize() throws Exception {
              RemoteCache<String, String> asyncCache1 = rcm1.getCache(asyncCacheSize);
              RemoteCache<String, String> asyncCache2 = rcm2.getCache(asyncCacheSize);
              asyncCache1.clear();
              asyncCache1.put("k1", "v1");
              assertTrue(null != asyncCache1.get("k1"));
              assertTrue(null == asyncCache2.get("k1"));
              asyncCache1.put("k2", "v2");
              //k3 fills up the queue -> flush
              asyncCache1.put("k3", "v3");
              Thread.sleep(1000); //wait for the queue to be flushed
              assertTrue(null != asyncCache1.get("k1"));
              assertTrue(null != asyncCache2.get("k1"));
          }
      

      IMO when I have cache A and B in a cluster and the cache entry is stored into the cache A, it should be visible at A and not in B. After flushing the queue it should be visible also at B.

      Here's the test:

      https://svn.devel.redhat.com/repos/jboss-qa/edg/infinispan-functional-tests/trunk/xml-configuration/clustered-cache

      (to run it, one has to install infinispan-arquillian-container into local maven repository, and run "mvn clean verify -Dnode0.ispnhome=${server1.home} -Dnode1.ispnhome=${server2.home}", e.g. mvn clean verify -Dnode0.ispnhome=/home/mgencur/Java/infinispan/infinispan-5.1.0.BETA1 -Dnode1.ispnhome=/home/mgencur/Java/infinispan/infinispan-5.1.0.BETA1-2

      )

      Attachments

        Issue Links

          Activity

            People

              manik_jira Manik Surtani (Inactive)
              mgencur Martin Gencur
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: