Пример #1
0
        /// <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);
        }
Пример #3
0
 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))
 {
 }
Пример #5
0
        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);
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
 /// <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)
 {
 }