Class ZkMaintenanceUtils

java.lang.Object
org.apache.solr.common.cloud.ZkMaintenanceUtils

public class ZkMaintenanceUtils extends Object
Class to hold ZK upload/download/move common code. With the advent of the upconfig/downconfig/cp/ls/mv commands in bin/solr it made sense to keep the individual transfer methods in a central place, so here it is.
  • Field Details

    • CONFIGS_ZKNODE

      public static final String CONFIGS_ZKNODE
      ZkNode where named configs are stored
      See Also:
    • UPLOAD_FILENAME_EXCLUDE_REGEX

      public static final String UPLOAD_FILENAME_EXCLUDE_REGEX
      See Also:
    • UPLOAD_FILENAME_EXCLUDE_PATTERN

      public static final Pattern UPLOAD_FILENAME_EXCLUDE_PATTERN
      files matching this pattern will not be uploaded to ZkNode /configs
    • FORBIDDEN_FILE_TYPES_PROP

      public static final String FORBIDDEN_FILE_TYPES_PROP
      See Also:
    • DEFAULT_FORBIDDEN_FILE_TYPES

      public static final Set<String> DEFAULT_FORBIDDEN_FILE_TYPES
  • Method Details

    • listZnode

      public static String listZnode(SolrZkClient zkClient, String path, Boolean recursive) throws org.apache.zookeeper.KeeperException, InterruptedException
      Lists a ZNode child and (optionally) the znodes of all the children. No data is dumped.
      Parameters:
      path - The node to remove on Zookeeper
      recursive - Whether to remove children.
      Returns:
      an indented list of the znodes suitable for display
      Throws:
      org.apache.zookeeper.KeeperException - Could not perform the Zookeeper operation.
      InterruptedException - Thread interrupted
    • zkTransfer

      public static void zkTransfer(SolrZkClient zkClient, String src, Boolean srcIsZk, String dst, Boolean dstIsZk, Boolean recursive) throws org.apache.solr.client.solrj.SolrServerException, org.apache.zookeeper.KeeperException, InterruptedException, IOException
      Copy between local file system and Zookeeper, or from one Zookeeper node to another, optionally copying recursively.
      Parameters:
      src - Source to copy from. Both src and dst may be Znodes. However, both may NOT be local
      dst - The place to copy the files too. Both src and dst may be Znodes. However, both may NOT be local
      recursive - if the source is a directory, recursively copy the contents iff this is true.
      Throws:
      org.apache.solr.client.solrj.SolrServerException - Explanatory exception due to bad params, failed operation, etc.
      org.apache.zookeeper.KeeperException - Could not perform the Zookeeper operation.
      InterruptedException - Thread interrupted
      IOException
    • moveZnode

      public static void moveZnode(SolrZkClient zkClient, String src, String dst) throws org.apache.solr.client.solrj.SolrServerException, org.apache.zookeeper.KeeperException, InterruptedException
      Throws:
      org.apache.solr.client.solrj.SolrServerException
      org.apache.zookeeper.KeeperException
      InterruptedException
    • clean

      public static void clean(SolrZkClient zkClient, String path) throws InterruptedException, org.apache.zookeeper.KeeperException
      Throws:
      InterruptedException
      org.apache.zookeeper.KeeperException
    • clean

      public static void clean(SolrZkClient zkClient, String path, Predicate<String> filter) throws InterruptedException, org.apache.zookeeper.KeeperException
      Delete a path and all of its sub nodes
      Parameters:
      filter - for node to be deleted
      Throws:
      InterruptedException
      org.apache.zookeeper.KeeperException
    • uploadToZK

      public static void uploadToZK(SolrZkClient zkClient, Path fromPath, String zkPath, Pattern filenameExclusions) throws IOException
      Throws:
      IOException
    • downloadFromZK

      public static void downloadFromZK(SolrZkClient zkClient, String zkPath, Path file) throws IOException
      Throws:
      IOException
    • traverseZkTree

      public static void traverseZkTree(SolrZkClient zkClient, String path, ZkMaintenanceUtils.VISIT_ORDER visitOrder, ZkMaintenanceUtils.ZkVisitor visitor) throws InterruptedException, org.apache.zookeeper.KeeperException
      Recursively visit a zk tree rooted at path and apply the given visitor to each path. Exists as a separate method because the logic can get nuanced.
      Parameters:
      path - the path to start from
      visitOrder - whether to call the visitor at the ending or beginning of the run.
      visitor - the operation to perform on each path
      Throws:
      InterruptedException
      org.apache.zookeeper.KeeperException
    • getZkParent

      public static String getZkParent(String path)
    • createZkNodeName

      public static String createZkNodeName(String zkRoot, Path root, Path file)
    • isFileForbiddenInConfigSets

      public static boolean isFileForbiddenInConfigSets(String filePath)
    • ensureExists

      public static void ensureExists(String path, SolrZkClient zkClient) throws org.apache.zookeeper.KeeperException, InterruptedException
      Create a persistent znode with no data if it does not already exist
      Throws:
      org.apache.zookeeper.KeeperException
      InterruptedException
      See Also:
    • ensureExists

      public static void ensureExists(String path, byte[] data, SolrZkClient zkClient) throws org.apache.zookeeper.KeeperException, InterruptedException
      Create a persistent znode with the given data if it does not already exist
      Throws:
      org.apache.zookeeper.KeeperException
      InterruptedException
      See Also:
    • ensureExists

      public static void ensureExists(String path, byte[] data, org.apache.zookeeper.CreateMode createMode, SolrZkClient zkClient) throws org.apache.zookeeper.KeeperException, InterruptedException
      Create a znode with the given mode and data if it does not already exist
      Throws:
      org.apache.zookeeper.KeeperException
      InterruptedException
      See Also:
    • ensureExists

      public static void ensureExists(String path, byte[] data, org.apache.zookeeper.CreateMode createMode, SolrZkClient zkClient, int skipPathParts) throws org.apache.zookeeper.KeeperException, InterruptedException
      Create a node if it does not exist
      Parameters:
      path - the path at which to create the znode
      data - the optional data to set on the znode
      createMode - the mode with which to create the znode
      zkClient - the client to use to check and create
      skipPathParts - how many path elements to skip
      Throws:
      org.apache.zookeeper.KeeperException
      InterruptedException