Uploaded image for project: 'Apache Curator'
  1. Apache Curator
  2. CURATOR-609

ModeledCache attempts to deserialize empty ZNodes on deletion, resulting in exceptions

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 5.1.0
    • 5.5.0
    • Framework
    • None

    Description

      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)

       

       

      Attachments

        Issue Links

          Activity

            People

              tison Zili Chen
              Ryan0751 Ryan Ruel
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h 40m
                  1h 40m