in runner-core/src/main/java/org/apache/apisix/plugin/runner/handler/RpcCallHandler.java [226:255]
private void handleExtraInfo(ChannelHandlerContext ctx, ExtraInfoResponse request) {
byte[] result = request.getResult();
String varsKey = queue.poll();
if (Objects.isNull(varsKey)) {
logger.error("queue is empty");
errorHandle(ctx, Code.SERVICE_UNAVAILABLE);
return;
}
if (EXTRA_INFO_REQ_BODY_KEY.equals(varsKey)) {
if (!Objects.isNull(currReq)) {
currReq.setBody(result);
}
} else if (EXTRA_INFO_RESP_BODY_KEY.equals(varsKey)) {
if (!Objects.isNull(postReq)) {
postReq.setBody(result);
}
}
else {
nginxVars.put(varsKey, new String(result));
}
if (queue.isEmpty()) {
if (currReq != null) {
doFilter(ctx);
} else if (postReq != null) {
doPostFilter(ctx);
}
}
}