[ 
https://issues.apache.org/jira/browse/CURATOR-609?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zili Chen closed CURATOR-609.
-----------------------------
      Assignee: Zili Chen
    Resolution: Fixed

master via e4ad57e3600ccb5473544b7577584e25c780944f

> 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: Improvement
>          Components: Framework
>    Affects Versions: 5.1.0
>            Reporter: Ryan Ruel
>            Assignee: Zili Chen
>            Priority: Major
>             Fix For: 5.5.0
>
>          Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> When using the ModeledCache implementation, when a ZPath is deleted the 
> implementation assumes that all ZNodes in the path contain a valid 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 on action 
> NODE_REMOVED.
> 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.20.10#820010)

Reply via email to