apache / apache/apisix-java-plugin-runner

bug: Why write confToken twice when writing back to API SIX

Aperta
#320 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Java
Stelle
152
Fork
102
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

### Issue description
Why write confToken twice when writing back to API SIX

### Environment
jdk11

* your apisix-java-plugin-runner version
0.5
### Minimal test code / Steps to reproduce the issue
protected void channelRead0(ChannelHandlerContext ctx, A6Request request) {
if (request.getType() != Constants.RPC_PREPARE_CONF) {
ctx.fireChannelRead(request);
return;
}

Req req = ((A6ConfigRequest) request).getReq();
long confToken = ThreadLocalRandom.current().nextInt(Integer.MAX_VALUE);
A6Response response = new A6ConfigResponse(confToken);
long token = ((A6ConfigResponse) response).getConfToken();
PluginFilterChain chain = createFilterChain(req);

/*
* to reset vtable_start and vtable_size of req,
* so that req can be reused after being got from the cache.
* {@link org.apache.apisix.plugin.runner.handler.A6HttpCallHandler#handle cache.getIfPresent()}
* @see https://github.com/apache/apisix-java-plugin-runner/issues/63
* */
Map config = new HashMap<>();
for (int i = 0; i < req.confLength(); i++) {
TextEntry conf = req.conf(i);
config.put(conf.name(), conf.value());
}
A6Conf a6Conf = new A6Conf(config, chain);
cache.put(token, a6Conf);
for (A6ConfigWatcher watcher : watchers) {
watcher.watch(token, a6Conf);
}
ctx.write(response);
ctx.writeAndFlush(response);
}

### What's the actual result? (including assertion message & call stack if applicable)

### What's the expected result?

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.