@Inject public SharedHttpClientConnectionManager( final List<SSLContextSelector> sslContextSelectors, @Named("${nexus.httpclient.connectionpool.size:-20}") final int connectionPoolSize, @Named("${nexus.httpclient.connectionpool.maxSize:-200}") final int connectionPoolMaxSize, @Named("${nexus.httpclient.connectionpool.idleTime:-30s}") final Time connectionPoolIdleTime, @Named("${nexus.httpclient.connectionpool.evictingDelayTime:-5s}") final Time connectionPoolEvictingDelayTime, @Named("${nexus.httpclient.connectionpool.validateAfterInactivityTime:-2s}") final Time connectionPoolValidateAfterInactivityTime, @Named("${nexus.httpclient.connectionpool.default.requestTimeout:-20s}") final Time defaultSocketTimeout) { super( new DefaultHttpClientConnectionOperator(createRegistry(sslContextSelectors), null, null), null, connectionPoolIdleTime.toMillis(), TimeUnit.MILLISECONDS ); setMaxTotal(connectionPoolMaxSize); log.debug("Connection pool max-size: {}", connectionPoolMaxSize); setDefaultMaxPerRoute(Math.min(connectionPoolSize, connectionPoolMaxSize)); log.debug("Connection pool size: {}", connectionPoolSize); this.connectionPoolIdleTime = checkNotNull(connectionPoolIdleTime); this.connectionPoolEvictingDelayTime = checkNotNull(connectionPoolEvictingDelayTime); setValidateAfterInactivity(connectionPoolValidateAfterInactivityTime.toMillisI()); log.debug("Connection pool idle-time: {}, evicting delay: {}, validate after inactivity: {}", connectionPoolIdleTime, connectionPoolEvictingDelayTime, connectionPoolValidateAfterInactivityTime); setDefaultSocketConfig(SocketConfig.custom().setSoTimeout(defaultSocketTimeout.toMillisI()).build()); log.debug("Default socket timeout {}", defaultSocketTimeout); }
@Override public void customize(final HttpClientPlan plan) { checkNotNull(plan); plan.setUserAgentBase(userAgentGenerator.generate()); plan.getClient().setKeepAliveStrategy(new NexusConnectionKeepAliveStrategy(keepAliveDuration.toMillis())); plan.getClient().setRetryHandler(new StandardHttpRequestRetryHandler(2, false)); plan.getConnection().setBufferSize(bufferSize.toBytesI()); plan.getRequest().setConnectionRequestTimeout(connectionRequestTimeout.toMillisI()); plan.getRequest().setCookieSpec(CookieSpecs.IGNORE_COOKIES); plan.getRequest().setExpectContinueEnabled(false); int requestTimeoutMillis = requestTimeout.toMillisI(); plan.getSocket().setSoTimeout(requestTimeoutMillis); plan.getRequest().setConnectTimeout(requestTimeoutMillis); plan.getRequest().setSocketTimeout(requestTimeoutMillis); } }
@VisibleForTesting protected boolean isTokenExpired(final long now, final Entry<UserAuthToken, Long> entry) { long diff = now - entry.getValue(); return diff > expireAfter.toMillis(); }
public static Pause pause(Time time) { return new Pause(time.toMillis()); }
public BlockingHttpClient(final CloseableHttpClient delegate, final Config config, final RemoteConnectionStatusObserver statusObserver, final boolean repositoryOnline, final AutoBlockConfiguration autoBlockConfiguration) { super(delegate); checkNotNull(config); this.statusObserver = checkNotNull(statusObserver); this.autoBlockConfiguration = checkNotNull(autoBlockConfiguration); blocked = config.blocked != null ? config.blocked : false; autoBlock = config.autoBlock != null ? config.autoBlock : false; if (repositoryOnline) { updateStatus(blocked ? BLOCKED : READY); } else { updateStatus(OFFLINE); } // TODO shall we use config.getConnectionConfig().getTimeout() * 2 as in NX2? autoBlockSequence = new FibonacciNumberSequence(Time.seconds(40).toMillis()); }