This commit is contained in:
Redkale
2018-12-21 10:55:20 +08:00
parent b7ce390c33
commit bcbd981a9b
2 changed files with 12 additions and 10 deletions

View File

@@ -47,7 +47,7 @@ public class PrepareRunner implements Runnable {
if (response == null) response = responsePool.get();
try {
response.init(channel);
prepare(data, response.request, response);
codec(data, response);
} catch (Throwable t) {
context.logger.log(Level.WARNING, "prepare servlet abort, force to close channel ", t);
response.finish(true);
@@ -56,7 +56,7 @@ public class PrepareRunner implements Runnable {
}
if (response == null) response = responsePool.get();
try {
channel.read(keepalive ? context.getAliveTimeoutSeconds() : 0, TimeUnit.SECONDS,
channel.read(keepalive ? context.getAliveTimeoutSeconds() : context.getReadTimeoutSeconds(), TimeUnit.SECONDS,
new CompletionHandler<Integer, ByteBuffer>() {
@Override
public void completed(Integer count, ByteBuffer buffer) {
@@ -74,9 +74,9 @@ public class PrepareRunner implements Runnable {
// System.println(new String(bs));
// }
buffer.flip();
response.init(channel);
try {
prepare(buffer, response.request, response);
response.init(channel);
codec(buffer, response);
} catch (Throwable t) { //此处不可 context.offerBuffer(buffer); 以免prepare.prepare内部异常导致重复 offerBuffer
context.logger.log(Level.WARNING, "prepare servlet abort, force to close channel ", t);
response.finish(true);
@@ -104,7 +104,8 @@ public class PrepareRunner implements Runnable {
}
}
protected void prepare(final ByteBuffer buffer, final Request request, final Response response) throws IOException {
protected void codec(final ByteBuffer buffer, final Response response) throws IOException {
final Request request = response.request;
final PrepareServlet preparer = context.prepare;
preparer.executeCounter.incrementAndGet();
final int rs = request.readHeader(buffer);

View File

@@ -92,12 +92,13 @@ public class TcpAioProtocolServer extends ProtocolServer {
channel.setOption(StandardSocketOptions.SO_REUSEADDR, true);
channel.setOption(StandardSocketOptions.SO_RCVBUF, 16 * 1024);
channel.setOption(StandardSocketOptions.SO_SNDBUF, 16 * 1024);
} catch (IOException e) {
context.logger.log(Level.INFO, channel + " setOption error", e);
AsyncConnection conn = new TcpAioAsyncConnection(context.getBufferSupplier(), context.getBufferConsumer(), channel,
context.getSSLContext(), null, context.readTimeoutSeconds, context.writeTimeoutSeconds, livingCounter, closedCounter);
context.runAsync(new PrepareRunner(context, conn, null, null));
} catch (Throwable e) {
context.logger.log(Level.INFO, channel + " accept error", e);
}
AsyncConnection conn = new TcpAioAsyncConnection(context.getBufferSupplier(), context.getBufferConsumer(), channel,
context.getSSLContext(), null, context.readTimeoutSeconds, context.writeTimeoutSeconds, livingCounter, closedCounter);
context.runAsync(new PrepareRunner(context, conn, null, null));
}
@Override