@Override
    public String toString() {
      switch (unit) {
      case NANOSECONDS: return Long.toString(val) + "ns";
      case MICROSECONDS: return Long.toString(val) + "us";
      case MILLISECONDS: return Long.toString(val) + "ms";
      case SECONDS: return Long.toString(val) + "s";
      case MINUTES: return Long.toString(val) + "m";
      case HOURS: return Long.toString(val) + "h";
      case DAYS: return Long.toString(val) + "d";
      }
      throw new RuntimeException("Unknown time unit " + unit);
    }
A set of definitions of config values used by the Metastore.  One of the key aims of this
class is to provide backwards compatibility with existing Hive configuration keys while
allowing the metastore to have its own, Hive independent keys.   For this reason access to the
underlying Configuration object should always be done via the static methods provided here
rather than directly via {@link Configuration#get(String)} and
{@link Configuration#set(String, String)}.  All the methods of this class will handle checking
both the MetastoreConf key and the Hive key.  The algorithm is, on reads, to check first the
MetastoreConf key, then the Hive key, then return the default if neither are set.  On write
the Metastore key only is set.

This class does not extend Configuration.  Rather it provides static methods for operating on
a Configuration object.  This allows it to work on HiveConf objects, which otherwise would not
be the case.
standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java