This commit is contained in:
Redkale
2018-05-30 19:43:46 +08:00
parent 7b5b0f34ff
commit e79fdd887c
2 changed files with 13 additions and 4 deletions

View File

@@ -62,8 +62,9 @@ public final class PrepareRunner implements Runnable {
public void completed(Integer count, Void attachment1) { public void completed(Integer count, Void attachment1) {
if (count < 1) { if (count < 1) {
response.request.offerReadBuffer(buffer); response.request.offerReadBuffer(buffer);
response.finish(true);
channel.dispose();// response.init(channel); 在调用之前异常 channel.dispose();// response.init(channel); 在调用之前异常
response.removeChannel();
response.finish(true);
return; return;
} }
// { //测试 // { //测试
@@ -85,8 +86,9 @@ public final class PrepareRunner implements Runnable {
@Override @Override
public void failed(Throwable exc, Void attachment2) { public void failed(Throwable exc, Void attachment2) {
response.request.offerReadBuffer(buffer); response.request.offerReadBuffer(buffer);
channel.dispose();// response.init(channel); 在调用之前异常
response.removeChannel();
response.finish(true); response.finish(true);
channel.dispose(); // response.init(channel); 可能在调用之前异常
if (exc != null && context.logger.isLoggable(Level.FINEST)) { if (exc != null && context.logger.isLoggable(Level.FINEST)) {
context.logger.log(Level.FINEST, "Servlet Handler read channel erroneous, forece to close channel ", exc); context.logger.log(Level.FINEST, "Servlet Handler read channel erroneous, forece to close channel ", exc);
} }
@@ -94,8 +96,9 @@ public final class PrepareRunner implements Runnable {
}); });
} catch (Exception te) { } catch (Exception te) {
response.request.offerReadBuffer(buffer); response.request.offerReadBuffer(buffer);
channel.dispose();// response.init(channel); 在调用之前异常
response.removeChannel();
response.finish(true); response.finish(true);
channel.dispose(); // response.init(channel); 可能在调用之前异常
if (te != null && context.logger.isLoggable(Level.FINEST)) { if (te != null && context.logger.isLoggable(Level.FINEST)) {
context.logger.log(Level.FINEST, "Servlet read channel erroneous, forece to close channel ", te); context.logger.log(Level.FINEST, "Servlet read channel erroneous, forece to close channel ", te);
} }

View File

@@ -251,7 +251,11 @@ public final class Transport {
if (!queue.isEmpty()) { if (!queue.isEmpty()) {
AsyncConnection conn; AsyncConnection conn;
while ((conn = queue.poll()) != null) { while ((conn = queue.poll()) != null) {
if (conn.isOpen()) return CompletableFuture.completedFuture(conn); if (conn.isOpen()) {
return CompletableFuture.completedFuture(conn);
} else {
conn.dispose();
}
} }
} }
CompletableFuture future = new CompletableFuture(); CompletableFuture future = new CompletableFuture();
@@ -342,6 +346,8 @@ public final class Transport {
if (conn.isOpen()) { if (conn.isOpen()) {
TransportNode node = findTransportNode(conn.getRemoteAddress()); TransportNode node = findTransportNode(conn.getRemoteAddress());
if (node == null || !node.conns.offer(conn)) conn.dispose(); if (node == null || !node.conns.offer(conn)) conn.dispose();
} else {
conn.dispose();
} }
} else { } else {
conn.dispose(); conn.dispose();