/// <summary> /// Create the ensemble provider for this registry, by invoking /// <see cref="RegistryBindingSource.SupplyBindingInformation()"/> /// on /// the provider stored in /// <see cref="bindingSource"/> /// Sets /// <see cref="ensembleProvider"/> /// to that value; /// sets /// <see cref="connectionDescription"/> /// to the binding info /// for use in toString and logging; /// </summary> protected internal virtual void CreateEnsembleProvider() { BindingInformation binding = bindingSource.SupplyBindingInformation(); connectionDescription = binding.description + " " + securityConnectionDiagnostics; ensembleProvider = binding.ensembleProvider; }
public ConnectionStringRandomizer(EnsembleProvider ensembleProvider) { this.ensembleProvider = ensembleProvider; locker = new object(); lastRandomization = DateTime.MinValue; attemptTimestamps = new CircularBuffer <DateTime>(RecentAttemptsNeededToRandomize); }
internal HandleHolder(ZookeeperFactory zookeeperFactory, Watcher watcher, EnsembleProvider ensembleProvider, int sessionTimeout, bool canBeReadOnly) { this.zookeeperFactory = zookeeperFactory; this.watcher = watcher; this.ensembleProvider = ensembleProvider; this.sessionTimeout = sessionTimeout; this.canBeReadOnly = canBeReadOnly; }
internal ZooKeeperClient(EnsembleProvider ensembleProvider, TimeSpan sessionTimeout, RetryStrategy retryStrategy, string nameSpace, bool canBeReadonly, ILog log) : this( CuratorFrameworkFactory .builder() .ensembleProvider(ensembleProvider) .sessionTimeoutMs((int)sessionTimeout.TotalMilliseconds) .connectionTimeoutMs(retryStrategy.ToCuratorConnectionTimeout()) .retryPolicy(retryStrategy.ToCuratorRetryPolicy()) .@namespace(string.IsNullOrWhiteSpace(nameSpace) ? null : nameSpace.TrimStart('/')) .canBeReadOnly(canBeReadonly) .build(), log, new ConnectionStringRandomizer(ensembleProvider)) { }
internal ConnectionState(ZookeeperFactory zookeeperFactory, EnsembleProvider ensembleProvider, int sessionTimeoutMs, int connectionTimeoutMs, Watcher parentWatcher, AtomicReference<TracerDriver> tracer, bool canBeReadOnly) { this.ensembleProvider = ensembleProvider; this.sessionTimeoutMs = sessionTimeoutMs; this.connectionTimeoutMs = connectionTimeoutMs; this.tracer = tracer; if (parentWatcher != null) { parentWatchers.AddLast(parentWatcher); } zooKeeper = new HandleHolder(zookeeperFactory, this, ensembleProvider, sessionTimeoutMs, canBeReadOnly); }
/// <param name="zookeeperFactory"> factory for creating <seealso cref="ZooKeeper" /> instances </param> /// <param name="ensembleProvider"> the ensemble provider </param> /// <param name="sessionTimeoutMs"> session timeout </param> /// <param name="connectionTimeoutMs"> connection timeout </param> /// <param name="watcher"> default watcher or null </param> /// <param name="retryPolicy"> the retry policy to use </param> /// <param name="canBeReadOnly"> /// if true, allow ZooKeeper client to enter /// read only mode in case of a network partition. See /// <seealso cref="ZooKeeper#ZooKeeper(String, int, Watcher, long, byte[], boolean)" /> /// for details /// </param> public CuratorZookeeperClient(ZookeeperFactory zookeeperFactory, EnsembleProvider ensembleProvider, int sessionTimeoutMs, int connectionTimeoutMs, Watcher watcher, RetryPolicy retryPolicy, bool canBeReadOnly) { if (sessionTimeoutMs < connectionTimeoutMs) { log.warn(string.Format("session timeout [{0:D}] is less than connection timeout [{1:D}]", sessionTimeoutMs, connectionTimeoutMs)); } retryPolicy = Preconditions.checkNotNull(retryPolicy, "retryPolicy cannot be null"); ensembleProvider = Preconditions.checkNotNull(ensembleProvider, "ensembleProvider cannot be null"); this.connectionTimeoutMs = connectionTimeoutMs; state = new ConnectionState(zookeeperFactory, ensembleProvider, sessionTimeoutMs, connectionTimeoutMs, watcher, tracer, canBeReadOnly); setRetryPolicy(retryPolicy); }
/// <param name="ensembleProvider"> the ensemble provider </param> /// <param name="sessionTimeoutMs"> session timeout </param> /// <param name="connectionTimeoutMs"> connection timeout </param> /// <param name="watcher"> default watcher or null </param> /// <param name="retryPolicy"> the retry policy to use </param> public CuratorZookeeperClient(EnsembleProvider ensembleProvider, int sessionTimeoutMs, int connectionTimeoutMs, Watcher watcher, RetryPolicy retryPolicy) : this(new DefaultZookeeperFactory(), ensembleProvider, sessionTimeoutMs, connectionTimeoutMs, watcher, retryPolicy, false) { }