PushInFlightRegistry
Defined in: packages/rxdb-plugin-history/src/push-inflight.ts:48
「哪些变更此刻正在飞往远端」的进程内登记处。
Remarks
存在的理由是一个时序缺口:撤销的判据是「还没推上去」,而这件事的数据源
RxDBSync.lastPushedChangeId 只在 push 提交时才写。push 的远端往返在事务之外,
于是「已经发出去了、水位线还没推进」这段窗口里,undo() 会放行一条其实已经到达
远端的变更。
撤销不产生新的变更行(undo-redo-apply.ts 只给原行打 revertChangeId 标记),
而出站查询过滤 revertChangeId = null —— 那条变更从此远端有、本地无,且没有任何
一次 push 会把这个差异送出去。本登记处把那段窗口填上:在飞即视同已推。
只覆盖本进程。 多 tab / Tauri 多进程共享同一份本地库时,另一个进程的 push 在这里是看不见的。跨进程要的是数据库里的一条租约行,而 push 路径目前整体就没有 跨进程互斥(两个进程会各自推同一批变更),那是另一个问题,不在这里假装解决。
Constructors
Constructor
new PushInFlightRegistry(): PushInFlightRegistry;
Returns
PushInFlightRegistry
Methods
session()
session(): PushInFlightSession;
Defined in: packages/rxdb-plugin-history/src/push-inflight.ts:58
开一轮认领。
Returns
本轮的认领句柄;调用方必须在 finally 里 PushInFlightSession.release
snapshot()
snapshot(): ReadonlyMap<string, number>;
Defined in: packages/rxdb-plugin-history/src/push-inflight.ts:80
当前全部在飞认领,按仓库取最大值。
Returns
ReadonlyMap<string, number>
namespace:entity -> 正在飞的最大 change id;没有任何认领时是空 Map