@Override public boolean commitTransaction() {
    if (!rawStore.commitTransaction()) {
      return false;
    }

    // In case of event based update, shared cache is not updated directly to avoid inconsistency.
    // For example, if metastore B add a partition, then metastore A drop a partition later. However, on metastore A,
    // it first get drop partition request, then from notification, create the partition. If there's no tombstone
    // entry in partition cache to tell drop is after creation, we end up consumes the creation request. Though
    // eventually there's drop partition notification, but during the interim, later event takes precedence.
    // So we will not update the cache during raw store operation but wait during commit transaction to make sure that
    // the event related to the current transactions are updated in the cache and thus we can support strong
    // consistency in case there is only one metastore.
    updateCacheUsingEvents();
    return true;
  }
This starts a background thread, which initially populates the SharedCache and later
periodically gets updates from the metastore db

@param conf
@param runOnlyOnce
@param shouldRunPrewarm
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java