Ryan Ruel created CURATOR-609:
---------------------------------

             Summary: ModeledCache attempts to deserialize empty ZNodes on 
deletion, resulting in exceptions
                 Key: CURATOR-609
                 URL: https://issues.apache.org/jira/browse/CURATOR-609
             Project: Apache Curator
          Issue Type: Bug
          Components: Framework
    Affects Versions: 5.1.0
            Reporter: Ryan Ruel
             Fix For: 5.2.1


When using the ModeledCache implementation, if a ZPath deleted the 
implementation assumes that all ZNodes in the path contain a instance of the 
Model.

If intermediary paths have been created that do not contain a Model, the 
implementation is calling the Jackson deserialize method with null data, 
resulting in an exception.

Instead, the code should ensure there is valid data present prior to attempting 
to deserialize and call the "accept()" (callback) method.

Example:

TestModel child1 = new TestModel("d", "e", "f", 1, BigInteger.ONE);
 ZPath path1 = path.child("foo").child("bar").child("child1");

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.withPath(path1).set(child1));
   assertTrue(timing.awaitLatch(latch));

   assertDoesNotThrow(() -> 
rawClient.delete().deletingChildrenIfNeeded().forPath(path.toString()));

}

After calling "delete()", an exception is thrown:

ERROR 
org.apache.curator.x.async.modeled.TestCachedModeledFramework$$Lambda$409/0x0000000800e0c850
 Could not process cache message [Curator-SafeNotifyService-0]
java.lang.IllegalArgumentException: argument "src" is null
at 
com.fasterxml.jackson.databind.ObjectReader._assertNotNull(ObjectReader.java:2120)

 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to