Class ZNodeClearer

java.lang.Object
org.apache.hadoop.hbase.ZNodeClearer

@Private public final class ZNodeClearer extends Object

Contains a set of methods for the collaboration between the start/stop scripts and the servers. It allows to delete immediately the znode when the master or the regions server crashes. The region server / master writes a specific file when it starts / becomes main master. When they end properly, they delete the file.

In the script, we check for the existence of these files when the program ends. If they still exist we conclude that the server crashed, likely without deleting their znode. To have a faster recovery we delete immediately the znode.

The strategy depends on the server type. For a region server we store the znode path in the file, and use it to delete it. for a master, as the znode path constant whatever the server, we check its content to make sure that the backup server is not now in charge.

  • Field Details

    • LOG

      private static final org.slf4j.Logger LOG
  • Constructor Details

  • Method Details

    • writeMyEphemeralNodeOnDisk

      public static void writeMyEphemeralNodeOnDisk(String fileContent)
      Logs the errors without failing on exception.
    • readMyEphemeralNodeOnDisk

      read the content of znode file, expects a single line.
      Throws:
      IOException
    • getMyEphemeralNodeFileName

      Get the name of the file used to store the znode contents
    • deleteMyEphemeralNodeOnDisk

      public static void deleteMyEphemeralNodeOnDisk()
      delete the znode file
    • parseMasterServerName

      public static String parseMasterServerName(String rsZnodePath)
      See HBASE-14861. We are extracting master ServerName from rsZnodePath example: "/hbase/rs/server.example.com,16020,1448266496481"
      Parameters:
      rsZnodePath - from HBASE_ZNODE_FILE
      Returns:
      String representation of ServerName or null if fails
    • tablesOnMaster

      @Deprecated private static boolean tablesOnMaster(org.apache.hadoop.conf.Configuration conf)
      Deprecated.
      since 2.4.0, will be removed in 3.0.0.
      Returns:
      true if cluster is configured with master-rs collocation
      See Also:
    • clear

      public static boolean clear(org.apache.hadoop.conf.Configuration conf)
      Delete the master znode if its content (ServerName string) is the same as the one in the znode file. (env: HBASE_ZNODE_FILE). I case of master-rs colloaction we extract ServerName string from rsZnode path.(HBASE-14861)
      Returns:
      true on successful deletion, false otherwise.