swapna267 commented on code in PR #18525:
URL: https://github.com/apache/iceberg/pull/18525#discussion_r4340154463


##########
flink/v2.3/flink/src/main/java/org/apache/iceberg/flink/sink/dynamic/DynamicRecordInternalSerializer.java:
##########
@@ -94,21 +94,9 @@ public void serialize(DynamicRecordInternal toSerialize, 
DataOutputView dataOutp
     }
 
     dataOutputView.writeInt(toSerialize.writerKey());
-    final RowDataSerializer rowDataSerializer;
-    if (writeSchemaAndSpec) {
-      rowDataSerializer =
-          serializerCache.serializer(
-              toSerialize.tableName(), toSerialize.schema(), 
toSerialize.spec());
-    } else {
-      // Check that the schema id can be resolved. Not strictly necessary for 
serialization.
-      Tuple3<RowDataSerializer, Schema, PartitionSpec> serializer =
-          serializerCache.serializerWithSchemaAndSpec(
-              toSerialize.tableName(),
-              toSerialize.schema().schemaId(),
-              toSerialize.spec().specId());
-      rowDataSerializer = serializer.f0;
-    }
-
+    RowDataSerializer rowDataSerializer =
+        serializerCache.serializer(
+            toSerialize.tableName(), toSerialize.schema(), toSerialize.spec());

Review Comment:
   Thanks Peter for pointing that out. 
   Yes I see that Table refresh on TableMetadataCache leads to new Serializer 
now. 
   
   But when i check the TableSerializerCache implementation it is happening 
even today.
   In the current 
[TableSerializerCache](https://github.com/apache/iceberg/blob/main/flink/v2.3/flink/src/main/java/org/apache/iceberg/flink/sink/dynamic/TableSerializerCache.java#L93)
 implementation, when the schema evolves and encounters a new Schema ID, we do 
reload the table inside TableSerializerCache. This leads to new Serializer 
instances even for the SchemaId's seen before. 
   
   
   But i agree, this can get worse, if TableMetadataCache refresh happens 
periodically instead of just on schema evolution. 
   Currently, I see the refresh is triggered only when the schema or spec is 
not found. 
   
   
   
   
   



-- 
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