You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2019/10/11 05:26:22 UTC

[curator] branch CURATOR-546-ModeledCacheImpl-removes-zpath created (now 551e866)

This is an automated email from the ASF dual-hosted git repository.

randgalt pushed a change to branch CURATOR-546-ModeledCacheImpl-removes-zpath
in repository https://gitbox.apache.org/repos/asf/curator.git.


      at 551e866  CURATOR-546

This branch includes the following new commits:

     new 551e866  CURATOR-546

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[curator] 01/01: CURATOR-546

Posted by ra...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

randgalt pushed a commit to branch CURATOR-546-ModeledCacheImpl-removes-zpath
in repository https://gitbox.apache.org/repos/asf/curator.git

commit 551e86647aa7b806389f9f8b7d53bf1d5e11e189
Author: randgalt <ra...@apache.org>
AuthorDate: Fri Oct 11 08:25:36 2019 +0300

    CURATOR-546
    
    Bad copy/paste bug. ModeledCacheImpl.currentData() was removing from entries instead of calling get()
---
 .../x/async/modeled/details/ModeledCacheImpl.java  |  2 +-
 .../async/modeled/TestCachedModeledFramework.java  | 32 ++++++++++++++++------
 2 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledCacheImpl.java b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledCacheImpl.java
index 72e6762..b95e92d 100644
--- a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledCacheImpl.java
+++ b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledCacheImpl.java
@@ -100,7 +100,7 @@ class ModeledCacheImpl<T> implements TreeCacheListener, ModeledCache<T>
     @Override
     public Optional<ZNode<T>> currentData(ZPath path)
     {
-        Entry<T> entry = entries.remove(path);
+        Entry<T> entry = entries.get(path);
         if ( entry != null )
         {
             return Optional.of(new ZNodeImpl<>(path, entry.stat, entry.model));
diff --git a/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/TestCachedModeledFramework.java b/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/TestCachedModeledFramework.java
index 825d4b7..2d33c13 100644
--- a/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/TestCachedModeledFramework.java
+++ b/curator-x-async/src/test/java/org/apache/curator/x/async/modeled/TestCachedModeledFramework.java
@@ -30,6 +30,7 @@ import java.io.IOException;
 import java.math.BigInteger;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Semaphore;
@@ -144,15 +145,30 @@ public class TestCachedModeledFramework extends TestModeledFrameworkBase
                 });
             });
 
-            complete(client.child("p").child("c1").childrenAsZNodes(), (v, e) ->
-            {
-                Assert.assertEquals(toSet(v.stream(), ZNode::model), Sets.newHashSet(grandChild1));
-            });
+            complete(client.child("p").child("c1").childrenAsZNodes(), (v, e) -> Assert.assertEquals(toSet(v.stream(), ZNode::model), Sets.newHashSet(grandChild1)));
+            complete(client.child("p").child("c2").childrenAsZNodes(), (v, e) -> Assert.assertEquals(toSet(v.stream(), ZNode::model), Sets.newHashSet(grandChild2)));
+        }
+    }
 
-            complete(client.child("p").child("c2").childrenAsZNodes(), (v, e) ->
-            {
-                Assert.assertEquals(toSet(v.stream(), ZNode::model), Sets.newHashSet(grandChild2));
-            });
+    // note: CURATOR-546
+    @Test
+    public void testAccessCacheDirectly()
+    {
+        TestModel model = new TestModel("a", "b", "c", 20, BigInteger.ONE);
+        try (CachedModeledFramework<TestModel> client = ModeledFramework.wrap(async, modelSpec).cached())
+        {
+            CountDownLatch latch = new CountDownLatch(1);
+            client.listenable().addListener((t, p, s, m) -> latch.countDown());
+
+            client.start();
+            complete(client.child("m").set(model));
+            Assert.assertTrue(timing.awaitLatch(latch));
+
+            // call 2 times in a row to validate CURATOR-546
+            Optional<ZNode<TestModel>> optZNode = client.cache().currentData(modelSpec.path().child("m"));
+            Assert.assertEquals(optZNode.orElseThrow(() -> new AssertionError("node is missing")).model(), model);
+            optZNode = client.cache().currentData(modelSpec.path().child("m"));
+            Assert.assertEquals(optZNode.orElseThrow(() -> new AssertionError("node is missing")).model(), model);
         }
     }