private <T> T executeWithSession(SessionCallable<T> sessionCallable) { ReconnectionPolicy reconnectionPolicy = cluster.getConfiguration().getPolicies().getReconnectionPolicy(); ReconnectionSchedule schedule = reconnectionPolicy.newSchedule(); long deadline = System.currentTimeMillis() + noHostAvailableRetryTimeout.toMillis(); while (true) { try { return sessionCallable.executeWithSession(session.get()); } catch (NoHostAvailableException e) { long timeLeft = deadline - System.currentTimeMillis(); if (timeLeft <= 0) { throw e; } else { long delay = Math.min(schedule.nextDelayMs(), timeLeft); log.warn(e.getCustomMessage(10, true, true)); log.warn("Reconnecting in %dms", delay); try { Thread.sleep(delay); } catch (InterruptedException interrupted) { Thread.currentThread().interrupt(); throw new RuntimeException("interrupted", interrupted); } } } } }
LoadBalancingPolicy loadBalancingPolicy() { return configuration.getPolicies().getLoadBalancingPolicy(); }
SpeculativeExecutionPolicy speculativeExecutionPolicy() { return configuration.getPolicies().getSpeculativeExecutionPolicy(); }
ReconnectionPolicy reconnectionPolicy() { return configuration.getPolicies().getReconnectionPolicy(); }
InetSocketAddress translateAddress(InetSocketAddress address) { InetSocketAddress translated = configuration.getPolicies().getAddressTranslator().translate(address); return translated == null ? address : translated; }
private RetryPolicy retryPolicy() { return statement.getRetryPolicy() == null ? manager.configuration().getPolicies().getRetryPolicy() : statement.getRetryPolicy(); }
private void poolingMonitoring(PoolingOptions poolingOptions) { final LoadBalancingPolicy loadBalancingPolicy = cluster.getConfiguration().getPolicies().getLoadBalancingPolicy(); ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1); scheduled.scheduleAtFixedRate((Runnable) () -> { Session.State state = session.getState(); for (Host host : state.getConnectedHosts()) { HostDistance distance = loadBalancingPolicy.distance(host); int connections = state.getOpenConnections(host); int inFlightQueries = state.getInFlightQueries(host); LOGGER.info("{} connections={}, current load={}, max load={}", host, connections, inFlightQueries, connections * poolingOptions.getMaxRequestsPerConnection(distance)); } }, 5, 5, TimeUnit.SECONDS); } }
configuration.getPolicies().getRetryPolicy().close(); reconnectionPolicy().close(); configuration.getPolicies().getAddressTranslator().close(); for (LatencyTracker tracker : latencyTrackers) tracker.onUnregister(Cluster.this); for (Host.StateListener listener : listeners) listener.onUnregister(Cluster.this);
Assert.assertEquals(configuration.getPoolingOptions() .getMaxRequestsPerConnection(distance), 128); Assert.assertEquals(configuration.getPolicies().getLoadBalancingPolicy().getClass().getName(), TAP); Assert.assertEquals(configuration.getPolicies().getReconnectionPolicy().getClass().getName(), CRP); Assert.assertEquals(configuration.getPolicies().getRetryPolicy().getClass().getName(), LRTP);
Assert.assertEquals(configuration.getPoolingOptions() .getMaxRequestsPerConnection(distance), 128); Assert.assertEquals(configuration.getPolicies().getLoadBalancingPolicy().getClass().getName(), LatencyAwarePolicy.class.getName()); Assert.assertEquals(configuration.getPolicies().getReconnectionPolicy().getClass().getName(), CRP); Assert.assertEquals(configuration.getPolicies().getRetryPolicy().getClass().getName(), LRTP);
.getMaxRequestsPerConnection(distance), 128); Assert.assertEquals(configuration.getPolicies().getLoadBalancingPolicy().getClass().getName(), RRP); Assert.assertEquals(configuration.getPolicies().getReconnectionPolicy().getClass().getName(), ERP); Assert.assertEquals(configuration.getPolicies().getRetryPolicy().getClass().getName(), DCRP);
.getMaxRequestsPerConnection(distance), 128); Assert.assertEquals(configuration.getPolicies().getLoadBalancingPolicy().getClass().getName(), RRP); Assert.assertEquals(configuration.getPolicies().getReconnectionPolicy().getClass().getName(), ERP); Assert.assertEquals(configuration.getPolicies().getRetryPolicy().getClass().getName(), DCRP);
.getMaxRequestsPerConnection(distance), 128); Assert.assertEquals(configuration.getPolicies().getLoadBalancingPolicy().getClass().getName(), DRRP); Assert.assertEquals(configuration.getPolicies().getReconnectionPolicy().getClass().getName(), CRP); Assert.assertEquals(configuration.getPolicies().getRetryPolicy().getClass().getName(), DCRP);
/** * Copy constructor. * * @param toCopy the object to copy from. */ protected Configuration(Configuration toCopy) { this( toCopy.getPolicies(), toCopy.getProtocolOptions(), toCopy.getPoolingOptions(), toCopy.getSocketOptions(), toCopy.getMetricsOptions(), toCopy.getQueryOptions(), toCopy.getThreadingOptions(), toCopy.getNettyOptions(), toCopy.getCodecRegistry()); }
if (!(cluster().getConfiguration().getPolicies().getReconnectionPolicy() instanceof ConstantReconnectionPolicy)) { fail("Set policy does not match retrieved policy."); cluster().getConfiguration().getPolicies().getReconnectionPolicy(); assertTrue(reconnectionPolicy.getConstantDelayMs() == 10 * 1000);
if (!(cluster().getConfiguration().getPolicies().getReconnectionPolicy() instanceof ExponentialReconnectionPolicy)) { fail("Set policy does not match retrieved policy."); cluster().getConfiguration().getPolicies().getReconnectionPolicy(); assertTrue(reconnectionPolicy.getBaseDelayMs() == 2 * 1000); assertTrue(reconnectionPolicy.getMaxDelayMs() == 5 * 60 * 1000);
configuration.getPolicies().getRetryPolicy().init(Cluster.this); reconnectionPolicy().init(Cluster.this); configuration.getPolicies().getAddressTranslator().init(Cluster.this); for (LatencyTracker tracker : latencyTrackers) tracker.onRegister(Cluster.this); for (Host.StateListener listener : listeners) listener.onRegister(Cluster.this);
defaultTimestamp = statement.getDefaultTimestamp(); if (defaultTimestamp == Long.MIN_VALUE) defaultTimestamp = cluster.getConfiguration().getPolicies().getTimestampGenerator().next();
InetSocketAddress translateAddress(InetAddress address) { InetSocketAddress sa = new InetSocketAddress(address, connectionFactory.getPort()); InetSocketAddress translated = configuration.getPolicies().getAddressTranslator().translate(sa); return translated == null ? sa : translated; }
public RxSessionImpl(Session session) { this.session = session; this.loadBalancingPolicy = session.getCluster().getConfiguration().getPolicies().getLoadBalancingPolicy(); PoolingOptions poolingOptions = session.getCluster().getConfiguration().getPoolingOptions(); maxInFlightLocal = poolingOptions.getCoreConnectionsPerHost(HostDistance.LOCAL) * poolingOptions.getMaxRequestsPerConnection(HostDistance.LOCAL); maxInFlightRemote = poolingOptions.getCoreConnectionsPerHost(HostDistance.REMOTE) * poolingOptions.getMaxRequestsPerConnection(HostDistance.REMOTE); }