@JsonIgnore
 public boolean setupStream(AmazonKinesis kinesis, String streamName) {
   boolean setup = false;
   Preconditions.checkState(!Strings.isNullOrEmpty(streamName), "streamName was not specified");
   try {
     DescribeStreamResult result;
     if (getRetryPeriod() != null) {
       Integer retryAttempts = getMaxAttempts();
       while (retryAttempts == null || retryAttempts > 0) {
         try {
           result = kinesis.describeStream(streamName);
           if ("active".equalsIgnoreCase(result.getStreamDescription().getStreamStatus())) {
             LOG.info("stream {} is active", streamName);
             setup = true;
             break;
           }
         } catch (NullPointerException | ResourceNotFoundException e) {
           createStream(kinesis, streamName);
         }
         Thread.sleep(retryPeriod.toMilliseconds());
         if (retryAttempts != null) {
           retryAttempts--;
         }
       }
     }
   } catch (InterruptedException e) {
     LOG.error(
         "Needed to create stream {} but was interrupted, nothing is guaranteed now", streamName);
   }
   return setup;
 }
 protected Server buildServer(LifecycleEnvironment lifecycle, ThreadPool threadPool) {
   final Server server = new Server(threadPool);
   server.addLifeCycleListener(buildSetUIDListener());
   lifecycle.attach(server);
   final ErrorHandler errorHandler = new ErrorHandler();
   errorHandler.setServer(server);
   errorHandler.setShowStacks(false);
   server.addBean(errorHandler);
   server.setStopAtShutdown(true);
   server.setStopTimeout(shutdownGracePeriod.toMilliseconds());
   return server;
 }
 protected ThreadPool createThreadPool(MetricRegistry metricRegistry) {
   final BlockingQueue<Runnable> queue =
       new BlockingArrayQueue<>(minThreads, maxThreads, maxQueuedRequests);
   final InstrumentedQueuedThreadPool threadPool =
       new InstrumentedQueuedThreadPool(
           metricRegistry,
           maxThreads,
           minThreads,
           (int) idleThreadTimeout.toMilliseconds(),
           queue);
   threadPool.setName("dw");
   return threadPool;
 }
  /**
   * Return a new Curator connection to the ensemble. It is the caller's responsibility to start and
   * close the connection.
   */
  public CuratorFramework newCurator() {
    // Make all of the curator threads daemon threads so they don't block the JVM from terminating.
    // Also label them
    // with the ensemble they're connecting to, in case someone is trying to sort through a thread
    // dump.
    ThreadFactory threadFactory =
        new ThreadFactoryBuilder()
            .setNameFormat("CuratorFramework[" + _connectString.or(DEFAULT_CONNECT_STRING) + "]-%d")
            .setDaemon(true)
            .build();

    org.apache.curator.RetryPolicy retry =
        _setterRetryPolicy.or(
            (_configRetryPolicy != null) ? _configRetryPolicy : DEFAULT_RETRY_POLICY);
    return CuratorFrameworkFactory.builder()
        .ensembleProvider(new ResolvingEnsembleProvider(_connectString.or(DEFAULT_CONNECT_STRING)))
        .retryPolicy(retry)
        .sessionTimeoutMs(Ints.checkedCast(_sessionTimeout.toMilliseconds()))
        .connectionTimeoutMs(Ints.checkedCast(_connectionTimeout.toMilliseconds()))
        .namespace(_namespace.orNull())
        .threadFactory(threadFactory)
        .build();
  }