Hi

I was looking for some API (Java or REST) for retrieving the configuration
name with which a collection was created. It doesn't appear as part of the
cluster status information, nor is part of the DocCollection class.

I eventually wrote this code:

  /** Returns a collection's configuration name, or {@code null} if the
collection doesn't exist. */
  public static String getCollectionConfigName(ZkStateReader zkStateReader,
String collection) {
    try {
      final String collectionZkNode = ZkStateReader.COLLECTIONS_ZKNODE +
"/" + collection;
      final byte[] data =
zkStateReader.getZkClient().getData(collectionZkNode, null, null, true);
      final ZkNodeProps nodeProps = ZkNodeProps.load(data);
      final String collectionConfigName =
nodeProps.getStr(ZkStateReader.CONFIGNAME_PROP);
      return collectionConfigName;
    } catch (NoNodeException e) {
      return null;
    } catch (KeeperException | InterruptedException e) {
      throw Throwables.propagate(e);
    }
  }

This works but feels "hacky" as none of this is documented anywhere. So if
anyone is aware of an existing class/method which does that, even if it's
not truly "public API", I'd appreciate a pointer.

Also, would it make sense to add this information to DocCollection, e.g.
docCollection.getConfigName()?

Shai

Reply via email to