(...prefs: ReadonlyArray<OnConflict | undefined>): OnConflictResolvedWalk preference layers (first concrete wins). Hard fallback: livenessReplace.
utils
Source src/internal/nodeCore.ts:10410 lines
export const const resolveOnConflict: (
...prefs: ReadonlyArray<OnConflict | undefined>
) => OnConflictResolved
Walk preference layers (first concrete wins). Hard fallback: livenessReplace.
resolveOnConflict = (
...prefs: ReadonlyArray<OnConflict | undefined>prefs: interface ReadonlyArray<T>ReadonlyArray<type OnConflict =
| "livenessReplace"
| "askIncumbent"
| "reject"
| "inherit"
Directory advertise conflict policy when the same nodeKey already has a row.
livenessReplace — ping incumbent; alive → reject; dead → replace
askIncumbent — if alive, Lookup asks NodeStatus.yield; refuse/timeout → reject
reject — alive → reject; dead → still replace
inherit — continue up the resolve chain (call-site → node → Lookup → hard fallback)
OnConflict | undefined>
): type OnConflictResolved =
| "livenessReplace"
| "askIncumbent"
| "reject"
Concrete advertise conflict policy (no "inherit") — what Lookup runs.
OnConflictResolved => {
for (const const pref: OnConflict | undefinedpref of prefs: ReadonlyArray<OnConflict | undefined>prefs) {
if (const pref: OnConflict | undefinedpref !== var undefinedundefined && const pref: OnConflictpref !== "inherit") {
return const pref:
| "livenessReplace"
| "askIncumbent"
| "reject"
pref;
}
}
return "livenessReplace";
};
Referenced by 3 symbols