vivo / MoonBox

月光宝盒:无侵入的流量录制与回放平台 A server-side traffic capture and replay platform with noninvasive
Apache License 2.0
1.17k stars 193 forks source link

插件序列化报错 #72

Closed id-id-id closed 5 months ago

id-id-id commented 5 months ago

我在尝试,参照spring-jpa的写法,对cassandra 进行插件支持开发。但是在试用的时候遇到了序列化问题,报错如下:

ERROR com.alibaba.jvm.sandbox.repeater.plugin.core.impl.api.DefaultInvocationListener - Error occurred serialize, stack:[{"className":"com.datastax.driver.core.CodecRegistry","fileName":"CodecRegistry.java","lineNumber":571,"methodName":"lookupCodec","nativeMethod":false},{"className":"com.datastax.driver.core.CodecRegistry","fileName":"CodecRegistry.java","lineNumber":495,"methodName":"codecFor","nativeMethod":false},{"className":"com.datastax.driver.core.AbstractGettableByIndexData","fileName":"AbstractGettableByIndexData.java","lineNumber":68,"methodName":"codecFor","nativeMethod":false},{"className":"com.datastax.driver.core.AbstractGettableByIndexData","fileName":"AbstractGettableByIndexData.java","lineNumber":307,"methodName":"getObject","nativeMethod":false},{"className":"com.datastax.driver.core.AbstractGettableData","fileName":"AbstractGettableData.java","lineNumber":29,"methodName":"getObject","nativeMethod":false},{"className":"com.sun.proxy.$Proxy206","lineNumber":-1,"methodName":"findById","nativeMethod":false},{"className":"com.tplink.nbu.iot.logger.handler.AbstractLogAspect","fileName":"AbstractLogAspect.java","lineNumber":37,"methodName":"thirdCallAround","nativeMethod":false},{"className":"com.sun.proxy.$Proxy206","lineNumber":-1,"methodName":"findById","nativeMethod":false},{"className":"com.xxxxx","fileName":"SmartServiceImpl.java","lineNumber":1687,"methodName":"getSmartOrder","nativeMethod":false},{"className":"com.xxxxx","fileName":"SmartServiceImpl.java","lineNumber":1675,"methodName":"getSmartOrder","nativeMethod":false},{"className":"com.xxxxx","fileName":"SmartController.java","lineNumber":126,"methodName":"getAllSmartOrder","nativeMethod":false},{"className":"com.xxxx","fileName":"LoggingAspect.java","lineNumber":46,"methodName":"logAround","nativeMethod":false},{"className":"com.xxxx","fileName":"StatAspect.java","lineNumber":51,"methodName":"controllerAround","nativeMethod":false},{"className":"com.xxxx","fileName":"V1APILogFilter.java","lineNumber":85,"methodName":"doFilterInternal","nativeMethod":false},{"className":"com.xxxx","fileName":"HttpContextFilter.java","lineNumber":44,"methodName":"doFilterInternal","nativeMethod":false},{"className":"java.lang.Thread","fileName":"Thread.java","lineNumber":750,"methodName":"run","nativeMethod":false}], reqTypes:[com.datastax.driver.core.CodecRegistry.CacheKey], respType: com.datastax.driver.core.TypeCodec.MapCodec com.alibaba.jvm.sandbox.repeater.plugin.core.serialize.SerializeException: [Error-1001]-hessian-serialize-error at com.alibaba.jvm.sandbox.repeater.plugin.core.serialize.HessianSerializer.serialize(HessianSerializer.java:48) ~[?:?] at com.alibaba.jvm.sandbox.repeater.plugin.core.serialize.AbstractSerializerAdapter.serialize2String(AbstractSerializerAdapter.java:33) ~[?:?] at com.alibaba.jvm.sandbox.repeater.plugin.core.wrapper.SerializerWrapper.inTimeSerialize(SerializerWrapper.java:145) ~[?:?] at com.alibaba.jvm.sandbox.repeater.plugin.core.impl.api.DefaultInvocationListener.onInvocation(DefaultInvocationListener.java:40) ~[?:?] at com.alibaba.jvm.sandbox.repeater.plugin.core.impl.api.DefaultEventListener.doReturn(DefaultEventListener.java:272) ~[?:?] at com.alibaba.jvm.sandbox.repeater.plugin.core.impl.api.DefaultEventListener.onEvent(DefaultEventListener.java:103) ~[?:?] at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandler.handleEvent(EventListenerHandler.java:117) ~[?:?] at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandler.handleOnEnd(EventListenerHandler.java:437) ~[?:?] at com.alibaba.jvm.sandbox.core.enhance.weaver.EventListenerHandler.handleOnReturn(EventListenerHandler.java:371) ~[?:?] at java.com.alibaba.jvm.sandbox.spy.Spy.spyMethodOnReturn(Spy.java:192) ~[?:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4935) ~[guava-30.1-jre.jar!/:?] at com.datastax.driver.core.CodecRegistry.lookupCodec(CodecRegistry.java:571) ~[cassandra-driver-core-3.7.2.jar!/:?] at com.datastax.driver.core.CodecRegistry.codecFor(CodecRegistry.java:495) ~[cassandra-driver-core-3.7.2.jar!/:?] at com.datastax.driver.core.AbstractGettableByIndexData.codecFor(AbstractGettableByIndexData.java:68) ~[cassandra-driver-core-3.7.2.jar!/:?] at com.datastax.driver.core.AbstractGettableByIndexData.getObject(AbstractGettableByIndexData.java:307) ~[cassandra-driver-core-3.7.2.jar!/:?] at com.datastax.driver.core.AbstractGettableData.getObject(AbstractGettableData.java:29) ~[cassandra-driver-core-3.7.2.jar!/:?] at org.springframework.data.cassandra.core.convert.ColumnReader.getCollection(ColumnReader.java:155) ~[spring-data-cassandra-2.2.12.RELEASE.jar!/:2.2.12.RELEASE] at org.springframework.data.cassandra.core.convert.ColumnReader.get(ColumnReader.java:85) ~[spring-data-cassandra-2.2.12.RELEASE.jar!/:2.2.12.RELEASE] at org.springframework.data.cassandra.core.convert.ColumnReader.get(ColumnReader.java:66) ~[spring-data-cassandra-2.2.12.RELEASE.jar!/:2.2.12.RELEASE] at org.springframework.data.cassandra.core.convert.ColumnReader.get(ColumnReader.java:58) ~[spring-data-cassandra-2.2.12.RELEASE.jar!/:2.2.12.RELEASE] at org.springframework.data.cassandra.core.convert.BasicCassandraRowValueProvider.getPropertyValue(BasicCassandraRowValueProvider.java:84) ...... Caused by: java.lang.StackOverflowError at java.lang.reflect.InvocationTargetException.(InvocationTargetException.java:72) ~[?:1.8.0_362] at sun.reflect.GeneratedMethodAccessor938.invoke(Unknown Source) ~[?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_362] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_362] at com.caucho.hessian.io.WriteReplaceSerializer.writeReplace(WriteReplaceSerializer.java:184) ~[?:?] at com.caucho.hessian.io.WriteReplaceSerializer.writeObject(WriteReplaceSerializer.java:155) ~[?:?] at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:465) ~[?:?] ........

目前在Plugin 里methodPatterns 只选了 save findAll insert delete 这几个方法,enhanceModel 的 classPattern 是 org.springframework.data.cassandra.repository.support.SimpleCassandraRepository

请问,这种报错我应该怎么解决