public CuratorFramework getSession() {
    if (zkSession == null || zkSession.getState() == CuratorFrameworkState.STOPPED) {
      synchronized (this) {
        if (zkSession == null || zkSession.getState() == CuratorFrameworkState.STOPPED) {
          ZooKeeperHiveHelper zkHelper = ZooKeeperHiveHelper.builder()
              .quorum(zkConnectString)
              .clientPort(zkConnectPort)
              .connectionTimeout(connectTimeoutMillis)
              .maxRetries(3)
              .baseSleepTime(1000)
              .sslEnabled(sslEnabled)
              .keyStoreLocation(keyStoreLocation)
              .keyStorePassword(keyStorePassword)
              .keyStoreType(keyStoreType)
              .trustStoreLocation(trustStoreLocation)
              .trustStorePassword(trustStorePassword)
              .trustStoreType(trustStoreType)
              .build();
          zkSession = zkHelper.getNewZookeeperClient(aclDefaultProvider);
          zkSession.start();
        }
      }
    }
    return zkSession;
  }
Default constructor for dynamic instantiation w/ Configurable
(ReflectionUtils does not support Configuration constructor injection).
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/security/ZooKeeperTokenStore.java