private Cluster(IEnumerable <IPEndPoint> contactPoints, Configuration configuration) { _configuration = configuration; _metadata = new Metadata(configuration.Policies.ReconnectionPolicy); var controlpolicies = new Policies( _configuration.Policies.LoadBalancingPolicy, new ExponentialReconnectionPolicy(2 * 1000, 5 * 60 * 1000), Policies.DefaultRetryPolicy); foreach (IPEndPoint ep in contactPoints) { Metadata.AddHost(ep); } //Use 1 connection per host //The connection will be reused, it wont create a connection per host. var controlPoolingOptions = new PoolingOptions() .SetCoreConnectionsPerHost(HostDistance.Local, 1) .SetMaxConnectionsPerHost(HostDistance.Local, 1) .SetMinSimultaneousRequestsPerConnectionTreshold(HostDistance.Local, 0) .SetMaxSimultaneousRequestsPerConnectionTreshold(HostDistance.Local, 127); var controlConnection = new ControlConnection( this, controlpolicies, new ProtocolOptions(_configuration.ProtocolOptions.Port, configuration.ProtocolOptions.SslOptions), controlPoolingOptions, _configuration.SocketOptions, new ClientOptions(true, _configuration.ClientOptions.QueryAbortTimeout, null), _configuration.AuthProvider, _configuration.AuthInfoProvider, _configuration.AddressTranslator); _metadata.SetupControlConnection(controlConnection); _binaryProtocolVersion = controlConnection.ProtocolVersion; if (controlConnection.ProtocolVersion > MaxProtocolVersion) { _binaryProtocolVersion = MaxProtocolVersion; } _logger.Info("Binary protocol version: [" + _binaryProtocolVersion + "]"); }