use of com.linkedin.r2.netty.common.StreamingTimeout in project rest.li by linkedin.
the class HttpClientFactory method getRawClient.
TransportClient getRawClient(Map<String, ? extends Object> properties, SSLContext sslContext, SSLParameters sslParameters) {
// key which identifies and contains the set of transport properties to create a channel pool manager
ChannelPoolManagerKey key = createChannelPoolManagerKey(properties, null, null);
ChannelPoolManagerKey sslKey = createChannelPoolManagerKey(properties, sslContext, sslParameters);
// Raw Client properties
int shutdownTimeout = chooseNewOverDefault(getIntValue(properties, HTTP_SHUTDOWN_TIMEOUT), DEFAULT_SHUTDOWN_TIMEOUT);
int requestTimeout = chooseNewOverDefault(getIntValue(properties, HTTP_REQUEST_TIMEOUT), DEFAULT_REQUEST_TIMEOUT);
int streamingTimeout = chooseNewOverDefault(getIntValue(properties, HTTP_STREAMING_TIMEOUT), DEFAULT_STREAMING_TIMEOUT);
if (streamingTimeout > DEFAULT_STREAMING_TIMEOUT) {
// Minimum value for idle timeout so we don't have a busy thread checking for idle timeout too frequently!
if (streamingTimeout < DEFAULT_MINIMUM_STREAMING_TIMEOUT) {
streamingTimeout = DEFAULT_MINIMUM_STREAMING_TIMEOUT;
LOG.warn("Streaming timeout is too small, resetting to the minimum allowed timeout value of {}ms", DEFAULT_MINIMUM_STREAMING_TIMEOUT);
}
}
String httpServiceName = (String) properties.get(HTTP_SERVICE_NAME);
HttpProtocolVersion httpProtocolVersion = chooseNewOverDefault(getHttpProtocolVersion(properties, HTTP_PROTOCOL_VERSION), _defaultHttpVersion);
LOG.info("The service '{}' has been assigned to the ChannelPoolManager with key '{}', http.protocolVersion={}, usePipelineV2={}, requestTimeout={}ms, streamingTimeout={}ms", httpServiceName, key.getName(), httpProtocolVersion, _usePipelineV2, requestTimeout, streamingTimeout);
if (_usePipelineV2) {
ChannelPoolManager channelPoolManager;
ChannelPoolManager sslChannelPoolManager;
switch(httpProtocolVersion) {
case HTTP_1_1:
channelPoolManager = _channelPoolManagerFactory.buildStream(key);
sslChannelPoolManager = _channelPoolManagerFactory.buildStream(sslKey);
break;
case HTTP_2:
channelPoolManager = _channelPoolManagerFactory.buildHttp2Stream(key);
sslChannelPoolManager = _channelPoolManagerFactory.buildHttp2Stream(sslKey);
break;
default:
throw new IllegalArgumentException("Unrecognized HTTP protocol version " + httpProtocolVersion);
}
return new com.linkedin.r2.netty.client.HttpNettyClient(_eventLoopGroup, _executor, _callbackExecutorGroup, channelPoolManager, sslChannelPoolManager, httpProtocolVersion, SystemClock.instance(), requestTimeout, streamingTimeout, shutdownTimeout);
}
TransportClient streamClient;
switch(httpProtocolVersion) {
case HTTP_1_1:
streamClient = new HttpNettyStreamClient(_eventLoopGroup, _executor, requestTimeout, shutdownTimeout, _callbackExecutorGroup, _jmxManager, _channelPoolManagerFactory.buildStream(key), _channelPoolManagerFactory.buildStream(sslKey));
break;
case HTTP_2:
streamClient = new Http2NettyStreamClient(_eventLoopGroup, _executor, requestTimeout, shutdownTimeout, _callbackExecutorGroup, _jmxManager, _channelPoolManagerFactory.buildHttp2Stream(key), _channelPoolManagerFactory.buildHttp2Stream(sslKey));
break;
default:
throw new IllegalArgumentException("Unrecognized HTTP protocol version " + httpProtocolVersion);
}
HttpNettyClient legacyClient = new HttpNettyClient(_eventLoopGroup, _executor, requestTimeout, shutdownTimeout, _callbackExecutorGroup, _jmxManager, _channelPoolManagerFactory.buildRest(key), _channelPoolManagerFactory.buildRest(sslKey));
return new MixedClient(legacyClient, streamClient);
}
use of com.linkedin.r2.netty.common.StreamingTimeout in project rest.li by linkedin.
the class CancelTimeoutHandler method tryCancelTimeout.
/**
* Gets the timeout {@link ScheduledFuture} from channel attributes and attempts to cancel. Cancel
* only if the timeout future has not been previously cancelled, guaranteed by #getAndSet(null),
* or is not already done, by checking #isDone on the future.
* @param ctx Channel handler context
*/
private void tryCancelTimeout(ChannelHandlerContext ctx) {
ScheduledFuture<ChannelPipeline> timeout = ctx.channel().attr(NettyChannelAttributes.TIMEOUT_FUTURE).getAndSet(null);
if (timeout != null && !timeout.isDone()) {
timeout.cancel(false);
}
StreamingTimeout streamTimeout = ctx.channel().attr(NettyChannelAttributes.STREAMING_TIMEOUT_FUTURE).getAndSet(null);
if (streamTimeout != null) {
streamTimeout.cancel();
}
}
Aggregations