You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by "kezhuw (via GitHub)" <gi...@apache.org> on 2023/04/06 15:48:30 UTC

[GitHub] [curator] kezhuw commented on a diff in pull request #396: CURATOR-609 - ModeledCache attempts to deserialize empty ZNodes on deletion, resulting in exceptions

kezhuw commented on code in PR #396:
URL: https://github.com/apache/curator/pull/396#discussion_r1159978743


##########
curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledCacheImpl.java:
##########
@@ -188,9 +188,18 @@ private void internalChildEvent(TreeCacheEvent event)
         {
             ZPath path = ZPath.parse(event.getData().getPath());
             Entry<T> entry = entries.remove(path);
-            T model = (entry != null) ? entry.model : serializer.deserialize(event.getData().getData());
-            Stat stat = (entry != null) ? entry.stat : event.getData().getStat();
-            accept(ModeledCacheListener.Type.NODE_REMOVED, path, stat, model);
+            T model = null;
+            if (entry != null) {
+                model = entry.model;
+            }
+            else if (event.getData().getData() != null) {
+                model = serializer.deserialize(event.getData().getData());
+            }
+            if (model != null) {
+                Stat stat = (entry != null) ? entry.stat : event.getData().getStat();
+                accept(ModeledCacheListener.Type.NODE_REMOVED, path, stat, model);

Review Comment:
   > Previously, `accept(ModeledCacheListener.Type.NODE_REMOVED...` would always be called.
   
   It is only true for `ModelSerializer.raw` which I think is a unusual usage of modeled framework. With `JacksonModelSerializer`, the `deserialize` will fail hence `ModeledCacheListener.accept` was not called.
   
   I think it is a chance to unify the two. I prefer the second option as there is no sense to accept a `null` model (`raw` or `json`) for intermediate nodes in all event types. Consistency  should play more importance here than potential breaking of `ModelSerializer.raw`.
   
   @Randgalt What do you think ?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@curator.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org