mchernyakov commented on code in PR #3021:
URL: https://github.com/apache/fory/pull/3021#discussion_r2617394000


##########
java/fory-core/src/main/java/org/apache/fory/type/Descriptor.java:
##########
@@ -89,6 +89,8 @@ public static void clearDescriptorCache() {
   private final Method writeMethod;
   private ForyField foryField;
   private boolean nullable;
+  // trackingRef should only be true if explicitly set to true via 
@ForyField(ref=true)
+  // If no annotation or ref not specified, trackingRef stays false and 
type-based tracking applies
   private boolean trackingRef;

Review Comment:
   hm, there is an issue with collections: 
   * when `useRefTracking` is `false` for the field (via `@ForyField()`), it 
writes the collection WITHOUT ref tracking wrapper
   * but when deserializing, the `ArrayListSerializer.newCollection()` ALWAYS 
calls `fory.getRefResolver().reference(arrayList)` which expects ref tracking 
to be enabled
   
   The issue is that `newCollection()` is being called regardless of whether 
ref tracking is enabled for this field or not.
   
   So, I think we should give the global config the highest priority, hence the 
check in https://github.com/apache/fory/pull/3021#discussion_r2616725645 (`    
boolean useRefTracking = explicitRefTracking || needWriteRef(typeRef);
   `)is fine.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to