@Override
  public void updateCacheStatusAfterUpdate(ICachedMNode node) {
    if (node.isDatabase()) {
      nodeBuffer.updateDatabaseNodeAfterStatusUpdate(node.getAsDatabaseMNode());
      return;
    }

    CacheEntry cacheEntry = getCacheEntry(node);
    synchronized (cacheEntry) {
      if (cacheEntry.isVolatile()) {
        return;
      }
      // the status change affects the subTre collect in nodeBuffer
      cacheEntry.setVolatile(true);
      memoryStatistics.addVolatileNode();
      if (!cacheEntry.hasVolatileDescendant()) {
        nodeCache.removeFromNodeCache(cacheEntry);
        removeAncestorsFromCache(node);
      }
      getBelongedContainer(node).updateMNode(node.getName());
      nodeBuffer.addUpdatedNodeToBuffer(node);
    }
  }
The updated node should be marked volatile and removed from nodeCache if necessary and the
volatile subtree it belonged should be added to nodeBuffer.

@param node
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/memory/MemoryManager.java