@Override
  public void addUpdatedNodeToBuffer(ICachedMNode node) {
    /*
     * The node may already exist in nodeBuffer before change it to volatile status, remove it and ensure
     * the volatile subtree it belongs to is in nodeBuffer
     */
    remove(node.getCacheEntry());
    addNonVolatileAncestorToBuffer(node);
  }
The ancestors of the volatile nodes. If a node is not volatile but not in nodeCache, it means
this node is an ancestor of some volatile node. Any volatile node is contained in the
CachedContainer of its parent. The parent will be placed in nodeBuffer. If the parent is volatile
as well, then the parent of the parent will be hold nodeBuffer instead, which means the root node
of a maximum volatile subtree will be placed in node buffer.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/memory/buffer/NodeBuffer.java