apache / fury

A blazingly fast multi-language serialization framework powered by JIT and zero-copy.
https://fury.apache.org/
Apache License 2.0
2.74k stars 188 forks source link

[Java] Serialization error for java inner class #1627

Open chao89619 opened 1 month ago

chao89619 commented 1 month ago

Search before asking

Version

使用的 fury0.1.0版本, jdk11

Component(s)

Java

Minimal reproduce step

有内部类(枚举)的情况下序列化出错

What did you expect to see?

序列化成功

What did you see instead?

报错信息 java.lang.IllegalArgumentException: Expect jit serializer but got class io.fury.serializer.CodegenSerializer$LazyInitBeanSerializer at io.fury.util.Utils.checkArgument(Utils.java:55) at io.fury.serializer.CodegenSerializer$LazyInitBeanSerializer.getOrCreateGeneratedSerializer(CodegenSerializer.java:96) at io.fury.serializer.CodegenSerializer$LazyInitBeanSerializer.write(CodegenSerializer.java:76) at ele.biz.growth.task.core.facade.model.mission.admin.mission.MissionActionFuryRefCompatibleCodec_1488540289_1791280119_678690039.writeClassAndObject1$(MissionActionFuryRefCompatibleCodec_1488540289_1791280119_678690039.java:170) at ele.biz.growth.task.core.facade.model.mission.admin.mission.MissionActionFuryRefCompatibleCodec_1488540289_1791280119_678690039.writeField2$(MissionActionFuryRefCompatibleCodec_1488540289_1791280119_678690039.java:178) at ele.biz.growth.task.core.facade.model.mission.admin.mission.MissionActionFuryRefCompatibleCodec_1488540289_1791280119_678690039.writeSeparateTypesHashFields$(MissionActionFuryRefCompatibleCodec_1488540289_1791280119_678690039.java:188) at ele.biz.growth.task.core.facade.model.mission.admin.mission.MissionActionFuryRefCompatibleCodec_1488540289_1791280119_678690039.write(MissionActionFuryRefCompatibleCodec_1488540289_1791280119_678690039.java:315) at ele.biz.growth.task.core.service.model.MissionFuryRefCompatibleCodec_1488540289_1791280119_2139685353.writeClassAndObject10$(MissionFuryRefCompatibleCodec_1488540289_1791280119_2139685353.java:729) at ele.biz.growth.task.core.service.model.MissionFuryRefCompatibleCodec_1488540289_1791280119_2139685353.writeField12$(MissionFuryRefCompatibleCodec_1488540289_1791280119_2139685353.java:737) at ele.biz.growth.task.core.service.model.MissionFuryRefCompatibleCodec_1488540289_1791280119_2139685353.writeSeparateTypesHashFields1$(MissionFuryRefCompatibleCodec_1488540289_1791280119_2139685353.java:977) at ele.biz.growth.task.core.service.model.MissionFuryRefCompatibleCodec_1488540289_1791280119_2139685353.write(MissionFuryRefCompatibleCodec_1488540289_1791280119_2139685353.java:2071) at io.fury.Fury.writeData(Fury.java:483) at io.fury.Fury.writeRef(Fury.java:283) at io.fury.Fury.serialize(Fury.java:233) at io.fury.Fury.serialize(Fury.java:193) at io.fury.ThreadLocalFury.serialize(ThreadLocalFury.java:64) at ele.biz.growth.task.core.service.mission.service.MissionNewConfigService.serialize(MissionNewConfigService.java:138) at ele.biz.growth.task.core.service.mission.service.MissionNewConfigService.putRedisData(MissionNewConfigService.java:196) at ele.biz.growth.task.core.service.mission.service.MissionNewConfigService.refreshOnlineMissonId(MissionNewConfigService.java:443) at ele.biz.growth.task.core.service.mission.service.MissionNewConfigService$$FastClassBySpringCGLIB$$3b5509e9.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:84) at ele.biz.growth.task.core.service.aop.PreLogAspect.around(PreLogAspect.java:97) at jdk.internal.reflect.GeneratedMethodAccessor1029.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616) at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) at ele.biz.growth.task.core.service.mission.service.MissionNewConfigService$$EnhancerBySpringCGLIB$$ce1f2123.refreshOnlineMissonId() at ele.biz.growth.task.core.service.mission.service.MissionService.useMissionCopy(MissionService.java:2100) at ele.biz.growth.task.core.service.mission.service.MissionService$$FastClassBySpringCGLIB$$d8b0935f.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:84) at ele.biz.growth.task.core.service.aop.PreLogAspect.around(PreLogAspect.java:97) at jdk.internal.reflect.GeneratedMethodAccessor1029.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616) at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:283) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) at ele.biz.growth.task.core.service.mission.service.MissionService$$EnhancerBySpringCGLIB$$8ca8eff.useMissionCopy() at ele.biz.growth.task.core.service.admin.controller.MissionAdminServiceImpl.controllMission(MissionAdminServiceImpl.java:899) at ele.biz.growth.task.core.service.admin.controller.MissionAdminServiceImpl$$FastClassBySpringCGLIB$$b11096da.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168) at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:84) at ele.biz.growth.task.core.service.aop.PreLogAspect.around(PreLogAspect.java:97) at jdk.internal.reflect.GeneratedMethodAccessor1029.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616) at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) at ele.biz.growth.task.core.service.admin.controller.MissionAdminServiceImpl$$EnhancerBySpringCGLIB$$326a6bad.controllMission() at ele.biz.growth.task.core.facade.api.MissionAdminServiceDubboWrap16.invokeMethod(MissionAdminServiceDubboWrap16.java) at org.apache.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:71) at org.apache.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:99) at org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker.invoke(DelegateProviderMetaDataInvoker.java:55) at org.apache.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56) at org.apache.dubbo.rpc.filter.ClassLoaderCallbackFilter.invoke(ClassLoaderCallbackFilter.java:38) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.common.filter.BidirectionServerResponseFilter.invoke(BidirectionServerResponseFilter.java:19) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.filter.InvocationHandlerWrapper.invoke(InvocationHandlerWrapper.java:32) at com.taobao.uic.common.hsf.UICHSFProviderFilter.invoke(UICHSFProviderFilter.java:35) at com.taobao.hsf.filter.Dubbo2HSFFilterWrapper.invoke(Dubbo2HSFFilterWrapper.java:63) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.filter.InvocationHandlerWrapper.invoke(InvocationHandlerWrapper.java:32) at com.alibaba.alsc.waimai.common.core.monitor.check.hsf.HsfProviderMonitorCheckFilter.invoke(HsfProviderMonitorCheckFilter.java:63) at com.taobao.hsf.filter.Dubbo2HSFFilterWrapper.invoke(Dubbo2HSFFilterWrapper.java:63) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at me.ele.jarch.hsf.filter.EtraceServerFilter.invoke(EtraceServerFilter.java:90) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.filter.InvocationHandlerWrapper.invoke(InvocationHandlerWrapper.java:32) at com.alibaba.reactive.backpressure.hsf.ConcurrentLimitsServerFilter.invoke(ConcurrentLimitsServerFilter.java:102) at com.taobao.hsf.filter.Dubbo2HSFFilterWrapper.invoke(Dubbo2HSFFilterWrapper.java:63) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.filter.InvocationHandlerWrapper.invoke(InvocationHandlerWrapper.java:32) at com.alibaba.reactive.backpressure.hsf.ConcurrentLimitsServerFilter.invoke(ConcurrentLimitsServerFilter.java:102) at com.taobao.hsf.filter.Dubbo2HSFFilterWrapper.invoke(Dubbo2HSFFilterWrapper.java:63) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at me.ele.jarch.hsf.filter.EleContextCompatibleFilter.invoke(EleContextCompatibleFilter.java:59) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.msha.bridge.rpc.hsf3.unit.MshaProviderServerFilter.invoke(MshaProviderServerFilter.java:102) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.plugins.octopus.OctopusServerFilter.invoke(OctopusServerFilter.java:65) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.region.service.impl.RegionServerFilter.invoke(RegionServerFilter.java:40) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.spas.dubbo.SpasServerFilter.invoke(SpasServerFilter.java:120) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.plugins.txc.TXCServerFilter.invoke(TXCServerFilter.java:33) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.tps.component.TPSServerFilter.invoke(TPSServerFilter.java:61) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.invocation.stats.InvocationStatsServerFilter.invoke(InvocationStatsServerFilter.java:57) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.monitor.log.filter.MonitorLogServerFilter.invoke(MonitorLogServerFilter.java:69) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.plugins.eagleeye.EagleEyeServerFilter.invoke(EagleEyeServerFilter.java:65) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.rpc.server.MethodAbsenceFilter.invoke(MethodAbsenceFilter.java:44) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.top.TopServerFilter.invoke(TopServerFilter.java:101) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.common.filter.BidirectionServerRequestFilter.invoke(BidirectionServerRequestFilter.java:20) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.common.filter.CommonServerFilter.invoke(CommonServerFilter.java:47) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.debug.DebugServerFilter.invoke(DebugServerFilter.java:60) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.invocation.HSFExceptionFilter.invoke(HSFExceptionFilter.java:23) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:99) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.alibaba.dubbo.rpc.Invoker$CompatibleInvoker.invoke(Invoker.java:55) at com.alibaba.csp.sentinel.adapter.dubbo.SentinelDubboProviderFilter.invoke(SentinelDubboProviderFilter.java:69) at com.alibaba.dubbo.rpc.Filter.invoke(Filter.java:29) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at org.apache.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:46) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at org.apache.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:131) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at org.apache.dubbo.auth.filter.ProviderAuthFilter.invoke(ProviderAuthFilter.java:53) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.context.RPCContextServerFilter.invoke(RPCContextServerFilter.java:43) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.context.DubboRPCContextServerFilter.invoke(DubboRPCContextServerFilter.java:32) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.invocation.ObjectAttachmentConvertServerFilter.invoke(ObjectAttachmentConvertServerFilter.java:39) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.rpc.generic.GenericInvocationServerFilter.invoke(GenericInvocationServerFilter.java:141) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at org.apache.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:54) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at org.apache.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:41) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.invocation.LocalServerFilter.invoke(LocalServerFilter.java:43) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.plugins.eagleeye.EagleEyeServerBeforeFilter.invoke(EagleEyeServerBeforeFilter.java:21) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.common.filter.ParamConvertServerFilter.invoke(ParamConvertServerFilter.java:38) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at org.apache.dubbo.rpc.filter.ProfilerServerFilter.invoke(ProfilerServerFilter.java:58) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$FilterChainNode.invoke(FilterChainBuilder.java:93) at com.taobao.hsf.rpc.HSFRequestProcessor.handleRequest(HSFRequestProcessor.java:72) at com.taobao.hsf.io.netty.http.HttpServerHandler.lambda$process$0(HttpServerHandler.java:214) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.dubbo.common.threadlocal.InternalRunnable.run(InternalRunnable.java:41) at java.base/java.lang.Thread.run(Thread.java:991)

Anything Else?

public class A extends B { //当有内部枚举类的情况下就出错了 private VisitType visitType;

@AllArgsConstructor
enum VisitType {
    H5("目标页为h5"),
    NATIVE("目标页为native");
    @NonNull
    String desc;
}

}

序列化出错的代码

Are you willing to submit a PR?

chaokunyang commented 1 month ago

Hi @chao89619 , thanks for reporting this issue could you use fury 0.5.0 instead?