protected void setProperty(String[] keys, Object value) {
    // find schema from key (length)
    PropertySchema schema = schemaOf(keys);
    String mapKey = mapKey(keys);
    PropertyMap dirtyMap;
    final Map<String, PropertyMap> dirtyMaps = this.dirtyMaps;
    synchronized (dirtyMaps) {
      dirtyMap = dirtyMaps.get(mapKey);
    }
    PropertyMap map;
    if (dirtyMap != null) {
      map = dirtyMap;
    } else {
      // is is stored ?
      map = store.fetchProperties(mapKey, s->schema);
      if (map == null) {
        // remove a value from a non persisted map, noop
        if (value == null) {
          return;
        }
        map = new PropertyMap(schema);
      }
    }
    // map is not null
    String propertyName = propertyName(keys);
    if (value != null) {
      map.putProperty(propertyName, value);
    } else {
      map.removeProperty(propertyName);
    }
    // if this is the first update to the map
    if (map != dirtyMap) {
      dirtyMaps.put(mapKey, map);
    }
  }
Sets a property value.
@param keys the key fragments
@param value the new value or null if mapping should be removed
standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/properties/PropertyManager.java