HTTPCORE-672: cleanup of H2 connection validation code

This commit is contained in:
Oleg Kalnichevski 2021-04-02 22:00:52 +02:00
parent f597588198
commit 935abae04e
1 changed files with 25 additions and 24 deletions

View File

@ -243,37 +243,38 @@ public class PoolingAsyncClientConnectionManager implements AsyncClientConnectio
@Override @Override
public void completed(final PoolEntry<HttpRoute, ManagedAsyncClientConnection> poolEntry) { public void completed(final PoolEntry<HttpRoute, ManagedAsyncClientConnection> poolEntry) {
final ManagedAsyncClientConnection connection = poolEntry.getConnection(); final ManagedAsyncClientConnection connection = poolEntry.getConnection();
final TimeValue timeValue = PoolingAsyncClientConnectionManager.this.validateAfterInactivity; if (connection != null) {
if (TimeValue.isNonNegative(timeValue) && connection != null && if (connection.isOpen()) {
poolEntry.getUpdated() + timeValue.toMilliseconds() <= System.currentTimeMillis()) { final ProtocolVersion protocolVersion = connection.getProtocolVersion();
final ProtocolVersion protocolVersion = connection.getProtocolVersion(); if (protocolVersion != null && protocolVersion.greaterEquals(HttpVersion.HTTP_2_0)) {
if (protocolVersion != null && protocolVersion.greaterEquals(HttpVersion.HTTP_2_0)) { final TimeValue timeValue = PoolingAsyncClientConnectionManager.this.validateAfterInactivity;
connection.submitCommand(new PingCommand(new BasicPingHandler(new Callback<Boolean>() { if (TimeValue.isNonNegative(timeValue) &&
poolEntry.getUpdated() + timeValue.toMilliseconds() <= System.currentTimeMillis()) {
connection.submitCommand(new PingCommand(new BasicPingHandler(new Callback<Boolean>() {
@Override @Override
public void execute(final Boolean result) { public void execute(final Boolean result) {
if (result == null || !result) { if (result == null || !result) {
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {
LOG.debug("{} connection {} is stale", id, ConnPoolSupport.getId(connection)); LOG.debug("{} connection {} is stale", id, ConnPoolSupport.getId(connection));
}
poolEntry.discardConnection(CloseMode.IMMEDIATE);
}
leaseCompleted(poolEntry);
} }
poolEntry.discardConnection(CloseMode.IMMEDIATE);
}
leaseCompleted(poolEntry);
}
})), Command.Priority.IMMEDIATE); })), Command.Priority.IMMEDIATE);
} else { return;
if (!connection.isOpen()) {
if (LOG.isDebugEnabled()) {
LOG.debug("{} connection {} is closed", id, ConnPoolSupport.getId(connection));
} }
poolEntry.discardConnection(CloseMode.IMMEDIATE);
} }
leaseCompleted(poolEntry); } else {
if (LOG.isDebugEnabled()) {
LOG.debug("{} connection {} is closed", id, ConnPoolSupport.getId(connection));
}
poolEntry.discardConnection(CloseMode.IMMEDIATE);
} }
} else {
leaseCompleted(poolEntry);
} }
leaseCompleted(poolEntry);
} }
@Override @Override