记录dubbo的一个异常 ArrayIndexOutOfBoundsException

Failed to invoke the method search in the service  IAttractionService. Tried 3 times of the providers [192.168.1.193:20880] (1/1) from the registry localhost:8848 on the consumer 192.168.1.193 using the dubbo version 3.2.4. Last error is: Failed to invoke remote method: search, provider: DefaultServiceInstance{serviceName='rent', host='192.168.1.193', port=20880, enabled=true, healthy=true, metadata={dubbo.metadata-service.url-params={"serialization":"fastjson2","prefer.serialization":"fastjson2","version":"1.0.0","dubbo":"2.0.2","release":"3.2.4","side":"provider","port":"20880","protocol":"dubbo"}, dubbo.endpoints=[{"port":20880,"protocol":"dubbo"}], dubbo.metadata.revision=3814aa6cfc042b1d2305b8878d781f45, dubbo.metadata.storage-type=local, timestamp=1693811508396}}, service{name='com.luhongkj.service.IAttractionService',group='null',version='null',protocol='dubbo',port='20880',params={side=provider, release=3.2.4, methods=count,findHot,findOne,findTags,frontOne,frontSearch,getBaseMapper,getById,getEntityClass,getMap,getObj,getOne,ktQuery,ktUpdate,lambdaQuery,lambdaUpdate,list,listByIds,listByMap,listMaps,listObjs,page,pageMaps,plusView,query,remove,removeBatchByIds,removeById,removeByIds,removeByMap,save,saveBatch,saveOrUpdate,saveOrUpdateBatch,search,searchCommon,searchInCollect,update,updateBatchById,updateById, deprecated=false, dubbo=2.0.2, interface=com.luhongkj.service.IAttractionService, service-name-mapping=true, generic=false, serialization=fastjson2, application=rent, prefer.serialization=fastjson2, payload=214829366, dynamic=true},}, cause: org.apache.dubbo.remoting.RemotingException: Failed to send response: Response [id=161, version=2.0.2, status=20, event=false, error=null, result=AppResponse [value=com.baomidou.mybatisplus.extension.plugins.pagination.Page@4a265057, exception=null]], cause: java.io.IOException: org.apache.dubbo.common.serialize.SerializationException: java.lang.ArrayIndexOutOfBoundsException: arraycopy: last destination index 12361 out of bounds for byte[12288]
java.io.IOException: org.apache.dubbo.common.serialize.SerializationException: java.lang.ArrayIndexOutOfBoundsException: arraycopy: last destination index 12361 out of bounds for byte[12288]
	at org.apache.dubbo.common.serialize.DefaultSerializationExceptionWrapper.handleToIOException(DefaultSerializationExceptionWrapper.java:358)
	at org.apache.dubbo.common.serialize.DefaultSerializationExceptionWrapper.access$000(DefaultSerializationExceptionWrapper.java:28)
	at org.apache.dubbo.common.serialize.DefaultSerializationExceptionWrapper$ProxyObjectOutput.writeObject(DefaultSerializationExceptionWrapper.java:324)
	at org.apache.dubbo.rpc.protocol.dubbo.DubboCodec.encodeResponseData(DubboCodec.java:289)
	at org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.encodeResponse(ExchangeCodec.java:325)
	at org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.encode(ExchangeCodec.java:81)
	at org.apache.dubbo.rpc.protocol.dubbo.DubboCountCodec.encode(DubboCountCodec.java:51)
	at org.apache.dubbo.remoting.transport.netty4.NettyChannel.send(NettyChannel.java:192)
	at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeChannel.send(HeaderExchangeChannel.java:107)
	at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeChannel.send(HeaderExchangeChannel.java:96)
	at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.lambda$handleRequest$0(HeaderExchangeHandler.java:120)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:887)
	at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2325)
	at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:144)
	at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:111)
	at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:200)
	at org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:53)
	at org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:62)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at org.apache.dubbo.common.threadlocal.InternalRunnable.run(InternalRunnable.java:41)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: org.apache.dubbo.common.serialize.SerializationException: java.lang.ArrayIndexOutOfBoundsException: arraycopy: last destination index 12361 out of bounds for byte[12288]
	... 23 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: arraycopy: last destination index 12361 out of bounds for byte[12288]
	at java.base/java.lang.System.arraycopy(Native Method)
	at com.alibaba.fastjson2.JSONWriterJSONB.writeString(JSONWriterJSONB.java:695)
	at com.alibaba.fastjson2.writer.OWG_9_13_AttractionVo.writeJSONB(Unknown Source)
	at com.alibaba.fastjson2.writer.ObjectWriterImplList.writeJSONB(ObjectWriterImplList.java:230)
	at com.alibaba.fastjson2.writer.OWG_8_10_Page.writeJSONB(Unknown Source)
	at com.alibaba.fastjson2.JSONB.toBytes(JSONB.java:1225)
	at org.apache.dubbo.common.serialize.fastjson2.FastJson2ObjectOutput.writeObject(FastJson2ObjectOutput.java:106)
	at org.apache.dubbo.common.serialize.DefaultSerializationExceptionWrapper$ProxyObjectOutput.writeObject(DefaultSerializationExceptionWrapper.java:322)
	... 20 more

核心要素在

last destination index 12361 out of bounds for byte[12288]

客户端提交了一个分页500,查询数据量较大的时候会有这个问题,反之则没有这个问题。

根据fastjson2的描述,升级到2.0.40版本后问题解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

singkingcho

有帮助?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值