@@ -951,35 +951,37 @@ private Class<? extends Serializer> getObjectSerializerClass(
951951 // avoid potential recursive call for seq codec generation.
952952 return LazyInitBeanSerializer .class ;
953953 } else {
954- extRegistry .getClassCtx .add (cls );
955- Class <? extends Serializer > sc ;
956- switch (fury .getCompatibleMode ()) {
957- case SCHEMA_CONSISTENT :
958- sc =
959- fury .getJITContext ()
960- .registerSerializerJITCallback (
961- () -> ObjectSerializer .class ,
962- () -> loadCodegenSerializer (fury , cls ),
963- callback );
964- extRegistry .getClassCtx .remove (cls );
965- return sc ;
966- case COMPATIBLE :
967- // If share class meta, compatible serializer won't be necessary, class
968- // definition will be sent to peer to create serializer for deserialization.
969- sc =
970- fury .getJITContext ()
971- .registerSerializerJITCallback (
972- () -> shareMeta ? ObjectSerializer .class : CompatibleSerializer .class ,
973- () ->
974- shareMeta
975- ? loadCodegenSerializer (fury , cls )
976- : loadCompatibleCodegenSerializer (fury , cls ),
977- callback );
978- extRegistry .getClassCtx .remove (cls );
979- return sc ;
980- default :
981- throw new UnsupportedOperationException (
982- String .format ("Unsupported mode %s" , fury .getCompatibleMode ()));
954+ try {
955+ extRegistry .getClassCtx .add (cls );
956+ Class <? extends Serializer > sc ;
957+ switch (fury .getCompatibleMode ()) {
958+ case SCHEMA_CONSISTENT :
959+ sc =
960+ fury .getJITContext ()
961+ .registerSerializerJITCallback (
962+ () -> ObjectSerializer .class ,
963+ () -> loadCodegenSerializer (fury , cls ),
964+ callback );
965+ return sc ;
966+ case COMPATIBLE :
967+ // If share class meta, compatible serializer won't be necessary, class
968+ // definition will be sent to peer to create serializer for deserialization.
969+ sc =
970+ fury .getJITContext ()
971+ .registerSerializerJITCallback (
972+ () -> shareMeta ? ObjectSerializer .class : CompatibleSerializer .class ,
973+ () ->
974+ shareMeta
975+ ? loadCodegenSerializer (fury , cls )
976+ : loadCompatibleCodegenSerializer (fury , cls ),
977+ callback );
978+ return sc ;
979+ default :
980+ throw new UnsupportedOperationException (
981+ String .format ("Unsupported mode %s" , fury .getCompatibleMode ()));
982+ }
983+ } finally {
984+ extRegistry .getClassCtx .remove (cls );
983985 }
984986 }
985987 } else {
0 commit comments