Guohao1020 commented on issue #228:
URL:
https://github.com/apache/apisix-java-plugin-runner/issues/228#issuecomment-1471524787
I also met
```
java.lang.IndexOutOfBoundsException: null
at java.nio.Buffer.checkIndex(Buffer.java:693) ~[?:?]
at java.nio.DirectByteBuffer.getInt(DirectByteBuffer.java:721) ~[?:?]
at com.google.flatbuffers.Table.__vector_len(Table.java:125)
~[flatbuffers-java-2.0.0.jar!/:?]
at io.github.api7.A6.HTTPRespCall.Req.headersLength(Req.java:22)
~[A6-0.6.0-RELEASE.jar!/:?]
at
org.apache.apisix.plugin.runner.PostRequest.getUpstreamHeaders(PostRequest.java:81)
~[apisix-runner-plugin-sdk-0.4.0.jar!/:0.4.0]
at
cn.devops.plugin.GatewayPluginFilter.postFilter(GatewayPluginFilter.java:84)
~[classes!/:0.0.1-SNAPSHOT]
at
org.apache.apisix.plugin.runner.filter.PluginFilterChain.postFilter(PluginFilterChain.java:64)
~[apisix-runner-plugin-sdk-0.4.0.jar!/:0.4.0]
at
org.apache.apisix.plugin.runner.handler.RpcCallHandler.doPostFilter(RpcCallHandler.java:211)
~[apisix-runner-core-0.4.0.jar!/:0.4.0]
at
org.apache.apisix.plugin.runner.handler.RpcCallHandler.handleExtraInfo(RpcCallHandler.java:243)
~[apisix-runner-core-0.4.0.jar!/:0.4.0]
at
org.apache.apisix.plugin.runner.handler.RpcCallHandler.channelRead0(RpcCallHandler.java:92)
~[apisix-runner-core-0.4.0.jar!/:0.4.0]
at
org.apache.apisix.plugin.runner.handler.RpcCallHandler.channelRead0(RpcCallHandler.java:54)
~[apisix-runner-core-0.4.0.jar!/:0.4.0]
at
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
org.apache.apisix.plugin.runner.handler.PrepareConfHandler.channelRead0(PrepareConfHandler.java:57)
~[apisix-runner-core-0.4.0.jar!/:0.4.0]
at
org.apache.apisix.plugin.runner.handler.PrepareConfHandler.channelRead0(PrepareConfHandler.java:45)
~[apisix-runner-core-0.4.0.jar!/:0.4.0]
at
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
org.apache.apisix.plugin.runner.handler.PayloadDecoder.channelRead0(PayloadDecoder.java:45)
~[apisix-runner-core-0.4.0.jar!/:0.4.0]
at
org.apache.apisix.plugin.runner.handler.PayloadDecoder.channelRead0(PayloadDecoder.java:38)
~[apisix-runner-core-0.4.0.jar!/:0.4.0]
at
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.ja,
context: ngx.timer
2023/03/16 16:31:27 [warn] 133#133: *441 [lua] init.lua:955: va:357)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327)
~[netty-codec-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299)
~[ne, context: ngx.timer
2023/03/16 16:31:27 [warn] 133#133: *441 [lua] init.lua:955:
tty-codec-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:280)
~[netty-handler-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
~[netty-transport-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800)
~[netty-transport-classes-epoll-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.epoll.EpollDomainSocketChannel$EpollDomainUnsafe.epollInReady(EpollDomainSocketChannel.java:138)
~[netty-transport-classes-epoll-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:487)
~[netty-transport-classes-epoll-4.1.78.Final.jar!/:4.1.78.Final]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:385)
~[netty-transport-classes-epoll-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
~[netty-common-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
~[netty-common-4.1.78.Final.jar!/:4.1.78.Final]
at
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
~[netty-common-4.1.78.Final.jar!/:4.1.78.Final]
at java.lang.Thread.run(Thread.java:834) ~[?:?]
```
Code
```
@Override
public void postFilter(PostRequest request, PostResponse response,
PluginFilterChain chain) {
log.info("[PostFilter] **************** -- **************** --
**************** -- **************** -- " +
"req :{} , status :{} ", request.getUpstreamHeaders(),
request.getUpstreamStatusCode());
try {
String apiConfigKey = getApiConfigKey(request);
String clientId = getUserInfo(request);
log.info("[PostFilter] **************** -- **************** --
**************** -- **************** -- " +
"apiConfigKey :{} , clientId :{}", apiConfigKey, clientId
);
//发布事件
SpringUtil.getApplicationContext().publishEvent(new
GatewayPostChainEvent(
GatewayPostFilterChainContext.builder()
.request(request)
.response(response)
.build()
, apiConfigKey, clientId));
} catch (Exception e) {
log.error(e.getMessage(), e);
}
chain.postFilter(request, response);
}
public String getUserInfo(PostRequest request) {
return
request.getUpstreamHeaders().get(GatewayConstants.CLIENT_HEADER_NAME);
}
public String getApiConfigKey(PostRequest request) {
String userInfo = getUserInfo(request);
String upstreamId = getUpstreamId(request);
String url = getUrl(request);
return userInfo + StrPool.COLON + upstreamId + StrPool.COLON + url;
}
```
--
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]