in kyuubi-relocated-hive-metastore-client/src/main/java/org/apache/kyuubi/shaded/hive/metastore/conf/MetastoreConf.java [983:1016]
public static long convertTimeStr(String val, TimeUnit defaultUnit, TimeUnit outUnit) {
if (val.charAt(val.length() - 1) >= 'A') {
// It ends in a character, this means they appended a time indicator (e.g. 600s)
Matcher m = TIME_UNIT_SUFFIX.matcher(val);
if (m.matches()) {
long duration = Long.parseLong(m.group(1));
String unit = m.group(2).toLowerCase();
// If/else chain arranged in likely order of frequency for performance
if (unit.equals("s") || unit.startsWith("sec")) {
return outUnit.convert(duration, TimeUnit.SECONDS);
} else if (unit.equals("ms") || unit.startsWith("msec")) {
return outUnit.convert(duration, TimeUnit.MILLISECONDS);
} else if (unit.equals("m") || unit.startsWith("min")) {
return outUnit.convert(duration, TimeUnit.MINUTES);
} else if (unit.equals("us") || unit.startsWith("usec")) {
return outUnit.convert(duration, TimeUnit.MICROSECONDS);
} else if (unit.equals("ns") || unit.startsWith("nsec")) {
return outUnit.convert(duration, TimeUnit.NANOSECONDS);
} else if (unit.equals("h") || unit.startsWith("hour")) {
return outUnit.convert(duration, TimeUnit.HOURS);
} else if (unit.equals("d") || unit.startsWith("day")) {
return outUnit.convert(duration, TimeUnit.DAYS);
} else {
throw new IllegalArgumentException("Invalid time unit " + unit);
}
} else {
throw new IllegalArgumentException("Invalid time unit " + val);
}
}
// If they gave a value but not a time unit assume the default time unit.
return outUnit.convert(Long.parseLong(val), defaultUnit);
}