乱序合并前

乱序合并开始即在当前存储组创建一个名为mergingModification的临时ModificationFile变量。


所有的delete操作都需要判断存储组中的mergingModification变量是否为null,

如果不为null,则将此次delete操作写入mergingModification临时变量中,不再写入mods文件中;否则写入mods中。


乱序合并中

根据当前合并文件已经存在的mods文件过滤已经删除的数据。

因此,在乱序合并完后,原mods文件中记录的delete操作不再有用。


乱序合并完

删除原mods文件对应数据的原mods文件。

将mergingModification中的记录分别全部写入所有参与合并的顺序文件的mods文件中,

以保证乱序合并过程中delete操作的有效性。


顺序合并与delete操作的交互流程

顺序合并前

与乱序合并不同,顺序合并不创建mergingModification临时变量

顺序合并过程的delete操作仍然写入原mods文件中

顺序合并中

根据当前合并文件已经存在的mods文件过滤已经删除的数据,并记录此时生效的所有delete操作

但是,因为顺序合并过程的delete操作仍然会写入此mods文件,所以在顺序合并完后,可能有没被过滤掉的delete操作

顺序合并完

将所有原文件的mods文件合并,合并的过程中,过滤掉cache中已经生效过的delete操作

将合并完的mods文件命名为{目标文件名}.mods


  • No labels