@Override public synchronized Map<String, PropertyMap> selectProperties(String keyPrefix, Predicate<String> keyFilter, Function<String, PropertySchema> getSchema) {
    final Map<String, PropertyMap> result = new TreeMap<>();
    properties.forEach((key,bytes)-> {
      if ((keyPrefix == null || key.startsWith(keyPrefix))
          && (keyFilter == null || keyFilter.test(key))
          && bytes != null) {
        PropertyMap map = deserialize(bytes, getSchema);
        // if read dirty, write back to make clean
        if (map.isDirty()) {
          saveProperties(key, map);
        }
        result.put(key, map);
      }
    });
    return result.isEmpty()? Collections.emptyMap() : result;
  }
The digests for the stored maps.
standalone-metastore/metastore-common/src/test/java/org/apache/hadoop/hive/metastore/properties/TransientPropertyStore.java