@peerbit/pubsub 5.2.10 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/benchmark/fanout-tree-parent-upgrade-default-ready.d.ts +3 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-default-ready.d.ts.map +1 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-default-ready.js +90 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-default-ready.js.map +1 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-eval.d.ts +2 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-eval.d.ts.map +1 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-eval.js +712 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-eval.js.map +1 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-multi-eval.d.ts +2 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-multi-eval.d.ts.map +1 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-multi-eval.js +1591 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-multi-eval.js.map +1 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-prepush.d.ts +2 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-prepush.d.ts.map +1 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-prepush.js +297 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-prepush.js.map +1 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-preset.d.ts +73 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-preset.d.ts.map +1 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-preset.js +183 -0
- package/dist/benchmark/fanout-tree-parent-upgrade-preset.js.map +1 -0
- package/dist/benchmark/fanout-tree-sim-lib.d.ts +101 -0
- package/dist/benchmark/fanout-tree-sim-lib.d.ts.map +1 -1
- package/dist/benchmark/fanout-tree-sim-lib.js +540 -38
- package/dist/benchmark/fanout-tree-sim-lib.js.map +1 -1
- package/dist/benchmark/fanout-tree-sim.d.ts +0 -9
- package/dist/benchmark/fanout-tree-sim.d.ts.map +1 -1
- package/dist/benchmark/fanout-tree-sim.js +369 -28
- package/dist/benchmark/fanout-tree-sim.js.map +1 -1
- package/dist/benchmark/index.js +20 -0
- package/dist/benchmark/index.js.map +1 -1
- package/dist/benchmark/pubsub-topic-sim-lib.d.ts +4 -0
- package/dist/benchmark/pubsub-topic-sim-lib.d.ts.map +1 -1
- package/dist/benchmark/pubsub-topic-sim-lib.js +58 -3
- package/dist/benchmark/pubsub-topic-sim-lib.js.map +1 -1
- package/dist/benchmark/pubsub-topic-sim.js +18 -0
- package/dist/benchmark/pubsub-topic-sim.js.map +1 -1
- package/dist/src/debounced-set.d.ts +1 -1
- package/dist/src/debounced-set.d.ts.map +1 -1
- package/dist/src/debounced-set.js +5 -1
- package/dist/src/debounced-set.js.map +1 -1
- package/dist/src/fanout-tree-codec.d.ts +330 -0
- package/dist/src/fanout-tree-codec.d.ts.map +1 -0
- package/dist/src/fanout-tree-codec.js +1209 -0
- package/dist/src/fanout-tree-codec.js.map +1 -0
- package/dist/src/fanout-tree-parent-upgrade.d.ts +117 -0
- package/dist/src/fanout-tree-parent-upgrade.d.ts.map +1 -0
- package/dist/src/fanout-tree-parent-upgrade.js +135 -0
- package/dist/src/fanout-tree-parent-upgrade.js.map +1 -0
- package/dist/src/fanout-tree.d.ts +241 -73
- package/dist/src/fanout-tree.d.ts.map +1 -1
- package/dist/src/fanout-tree.js +2224 -1050
- package/dist/src/fanout-tree.js.map +1 -1
- package/dist/src/index.d.ts +57 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +293 -41
- package/dist/src/index.js.map +1 -1
- package/dist/src/topic-root-control-plane.d.ts +13 -0
- package/dist/src/topic-root-control-plane.d.ts.map +1 -1
- package/dist/src/topic-root-control-plane.js +45 -0
- package/dist/src/topic-root-control-plane.js.map +1 -1
- package/package.json +6 -6
- package/src/debounced-set.ts +5 -0
- package/src/fanout-tree-codec.ts +1580 -0
- package/src/fanout-tree-parent-upgrade.ts +353 -0
- package/src/fanout-tree.ts +4467 -2204
- package/src/index.ts +392 -56
- package/src/topic-root-control-plane.ts +48 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
const PARENT_UPGRADE_RUNTIME_OPTION_KEYS = [
|
|
2
|
+
"parentUpgradeIntervalMs",
|
|
3
|
+
"parentUpgradeLeafOnly",
|
|
4
|
+
"parentUpgradeMinLevelGain",
|
|
5
|
+
"parentUpgradeRootMinLevelGain",
|
|
6
|
+
"parentUpgradeRootMinSubtreeGain",
|
|
7
|
+
"parentUpgradeNonRootMinLevelGain",
|
|
8
|
+
"parentUpgradeMinFreeSlots",
|
|
9
|
+
"parentUpgradeRootMinFreeSlots",
|
|
10
|
+
"parentUpgradeMaxChildLoadRatio",
|
|
11
|
+
"parentUpgradeRootMaxChildLoadRatio",
|
|
12
|
+
"parentUpgradeCooldownMs",
|
|
13
|
+
"parentUpgradeFailedBackoffMinMs",
|
|
14
|
+
"parentUpgradeFailedBackoffMaxMs",
|
|
15
|
+
"parentUpgradeQuietMs",
|
|
16
|
+
"parentUpgradeRepairQuietMs",
|
|
17
|
+
"parentUpgradeMaxPerPeer",
|
|
18
|
+
"parentUpgradeRepairGuard",
|
|
19
|
+
"parentUpgradeDataGuard",
|
|
20
|
+
"parentUpgradeMode",
|
|
21
|
+
"parentUpgradeVerifyStaleRootCapacity",
|
|
22
|
+
"parentUpgradeStaleRootProbeProbability",
|
|
23
|
+
"parentProbeTimeoutMs",
|
|
24
|
+
"parentProbeMaxPerRound",
|
|
25
|
+
"parentProbeMaxLagMessages",
|
|
26
|
+
"parentProbeRejectCooldownMs",
|
|
27
|
+
"parentProbeRejectCooldownMaxMs",
|
|
28
|
+
"parentShadowObserveMs",
|
|
29
|
+
"parentShadowMinObservations",
|
|
30
|
+
"parentShadowDualPathMs",
|
|
31
|
+
"parentShadowDualPathMinMessages",
|
|
32
|
+
];
|
|
33
|
+
export const DEFAULT_CANDIDATE_PRESET = "default-candidate";
|
|
34
|
+
export const DEFAULT_PARENT_UPGRADE_SEEDS = [1, 2, 3];
|
|
35
|
+
export const DEFAULT_PARENT_UPGRADE_SEED_CSV = DEFAULT_PARENT_UPGRADE_SEEDS.join(",");
|
|
36
|
+
export const DEFAULT_PARENT_UPGRADE_FAST_SEED_CSV = "1";
|
|
37
|
+
const RAW_STALE_ROOT_PROBE_PROBABILITY = 0.015625;
|
|
38
|
+
const DEFAULT_CANDIDATE_STALE_ROOT_PROBE_PROBABILITY = 0.00390625;
|
|
39
|
+
export const PARENT_UPGRADE_FRONTIER_ROOT_CAPS = [
|
|
40
|
+
"0.2",
|
|
41
|
+
"0.225",
|
|
42
|
+
"0.25",
|
|
43
|
+
"0.4",
|
|
44
|
+
];
|
|
45
|
+
export const PARENT_UPGRADE_HELP_TEXT = [
|
|
46
|
+
" --parentUpgradePreset NAME preset to evaluate (raw|default-candidate, default: raw)",
|
|
47
|
+
" --parentUpgradeIntervalMs MS upgrade check interval for treatment run (default: 1000)",
|
|
48
|
+
" --parentUpgradeLeafOnly 0|1 restrict treatment upgrades to leaves (default: 1)",
|
|
49
|
+
" --parentUpgradeMinLevelGain N min tree-level gain for treatment upgrades (default: 2)",
|
|
50
|
+
" --parentUpgradeRootMinLevelGain N min tree-level gain for root treatment targets (default: 3)",
|
|
51
|
+
" --parentUpgradeRootMinSubtreeGain N min level-gain times local branch size for root treatment targets (default: parentUpgradeRootMinLevelGain)",
|
|
52
|
+
" --parentUpgradeNonRootMinLevelGain N min tree-level gain for non-root treatment targets (default: 2)",
|
|
53
|
+
" --parentUpgradeMinFreeSlots N min free slots for treatment upgrade targets (default: 8)",
|
|
54
|
+
" --parentUpgradeRootMinFreeSlots N min free slots for root treatment targets (default: parentUpgradeMinFreeSlots)",
|
|
55
|
+
" --parentUpgradeMaxChildLoadRatio R max child load ratio after accepting treatment child (default: 0.5)",
|
|
56
|
+
" --parentUpgradeRootMaxChildLoadRatio R max root child load ratio after accepting treatment child (default: min(parentUpgradeMaxChildLoadRatio, 0.4))",
|
|
57
|
+
" --parentUpgradeCooldownMs MS cooldown after successful treatment upgrades (default: 5000)",
|
|
58
|
+
" --parentUpgradeFailedBackoffMinMs MS initial backoff after failed probe/shadow rounds (default: 5000)",
|
|
59
|
+
" --parentUpgradeFailedBackoffMaxMs MS max backoff after failed probe/shadow rounds (default: 60000)",
|
|
60
|
+
" --parentUpgradeQuietMs MS min quiet time since parent data before upgrades (default: 5000)",
|
|
61
|
+
" --parentUpgradeRepairQuietMs MS min quiet time since repair before upgrades (default: parentUpgradeQuietMs)",
|
|
62
|
+
" --parentUpgradeMaxPerPeer N max successful treatment upgrades per peer, 0 = unlimited (default: 2)",
|
|
63
|
+
" --parentUpgradeRepairGuard 0|1 skip treatment upgrades while missing data (default: 1)",
|
|
64
|
+
" --parentUpgradeDataGuard 0|1 wait for finite channel completion before treatment upgrades (default: 1)",
|
|
65
|
+
" --parentUpgradeMode MODE treatment upgrade mode (direct|probe|shadow, default: preset-dependent)",
|
|
66
|
+
" --parentUpgradeVerifyStaleRootCapacity 0|1 allow shadow probes against tracker-full root (default: 1 for default-candidate, otherwise 0)",
|
|
67
|
+
" --parentUpgradeStaleRootProbeProbability R base sample for tracker-full root probes per peer (default: 0.015625, default-candidate: 0.00390625)",
|
|
68
|
+
" --parentProbeTimeoutMs MS timeout for probe-mode parent checks (default: 500)",
|
|
69
|
+
" --parentProbeMaxPerRound N max probe-mode candidates per upgrade check (default: 2)",
|
|
70
|
+
" --parentProbeMaxLagMessages N max sequence lag for probe-mode candidates (default: 0)",
|
|
71
|
+
" --parentProbeRejectCooldownMs MS cooldown after rejected parent probes (default: 10000)",
|
|
72
|
+
" --parentProbeRejectCooldownMaxMs MS max adaptive cooldown after rejected parent probes (default: 60000)",
|
|
73
|
+
" --parentShadowObserveMs MS min healthy shadow observation window before promotion (default: 2000)",
|
|
74
|
+
" --parentShadowMinObservations N min successful shadow observations before promotion (default: 2)",
|
|
75
|
+
" --parentShadowDualPathMs MS keep old parent during active-flow shadow cutover until candidate data is observed (default: 5000 for default-candidate, otherwise 0)",
|
|
76
|
+
" --parentShadowDualPathMinMessages N min candidate data messages before active-flow cutover (default: 32 for default-candidate, otherwise 1)",
|
|
77
|
+
];
|
|
78
|
+
export const defaultCandidateArgs = (...args) => [
|
|
79
|
+
"--parentUpgradePreset",
|
|
80
|
+
DEFAULT_CANDIDATE_PRESET,
|
|
81
|
+
...args,
|
|
82
|
+
];
|
|
83
|
+
export const parentUpgradeRuntimeOptions = (config, enabled = true) => Object.fromEntries(PARENT_UPGRADE_RUNTIME_OPTION_KEYS.map((key) => [
|
|
84
|
+
key,
|
|
85
|
+
key === "parentUpgradeIntervalMs" && !enabled ? 0 : config[key],
|
|
86
|
+
]));
|
|
87
|
+
export const parseBool01 = (value, fallback) => {
|
|
88
|
+
if (value === undefined)
|
|
89
|
+
return fallback;
|
|
90
|
+
return value === "1";
|
|
91
|
+
};
|
|
92
|
+
export const parseCsvNumbers = (value, fallback) => {
|
|
93
|
+
if (!value)
|
|
94
|
+
return [...fallback];
|
|
95
|
+
const parsed = value
|
|
96
|
+
.split(",")
|
|
97
|
+
.map((part) => Number(part.trim()))
|
|
98
|
+
.filter((part) => Number.isFinite(part));
|
|
99
|
+
return parsed.length > 0 ? parsed : [...fallback];
|
|
100
|
+
};
|
|
101
|
+
export const ratioLimit = (baseline, ratio, absoluteSlack = 1e-9) => Math.max(absoluteSlack, baseline * ratio + absoluteSlack);
|
|
102
|
+
export const avgFinite = (values) => {
|
|
103
|
+
const finite = values.filter((value) => Number.isFinite(value));
|
|
104
|
+
return finite.length === 0
|
|
105
|
+
? NaN
|
|
106
|
+
: finite.reduce((sum, value) => sum + value, 0) / finite.length;
|
|
107
|
+
};
|
|
108
|
+
export const maxFinite = (values) => {
|
|
109
|
+
const finite = values.filter((value) => Number.isFinite(value));
|
|
110
|
+
return finite.length === 0 ? NaN : Math.max(...finite);
|
|
111
|
+
};
|
|
112
|
+
export const fmt = (value, digits = 2) => Number.isFinite(value) ? value.toFixed(digits) : "NaN";
|
|
113
|
+
export const parseParentUpgradePreset = (value) => {
|
|
114
|
+
const preset = value ?? "raw";
|
|
115
|
+
if (preset !== "raw" && preset !== DEFAULT_CANDIDATE_PRESET) {
|
|
116
|
+
throw new Error(`Unknown parent upgrade preset: ${preset}`);
|
|
117
|
+
}
|
|
118
|
+
return preset;
|
|
119
|
+
};
|
|
120
|
+
export const isDefaultCandidatePreset = (preset) => preset === DEFAULT_CANDIDATE_PRESET;
|
|
121
|
+
export const defaultEvidenceLimitsForPreset = (preset, harness) => {
|
|
122
|
+
const defaultCandidate = isDefaultCandidatePreset(preset);
|
|
123
|
+
return {
|
|
124
|
+
maxProbePerUpgrade: defaultCandidate ? (harness === "multi" ? 8 : 5) : 2,
|
|
125
|
+
maxRootChildrenDelta: defaultCandidate ? 2 : 4,
|
|
126
|
+
maxRootUploadPctDelta: 1,
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
export const parseParentUpgradePresetConfig = (get) => {
|
|
130
|
+
const parentUpgradePreset = parseParentUpgradePreset(get("--parentUpgradePreset"));
|
|
131
|
+
const defaultCandidate = isDefaultCandidatePreset(parentUpgradePreset);
|
|
132
|
+
const parentUpgradeQuietMs = Number(get("--parentUpgradeQuietMs") ?? 5_000);
|
|
133
|
+
const parentUpgradeMaxChildLoadRatio = Number(get("--parentUpgradeMaxChildLoadRatio") ?? 0.5);
|
|
134
|
+
const parentUpgradeRootMinLevelGain = Number(get("--parentUpgradeRootMinLevelGain") ?? 3);
|
|
135
|
+
const parentUpgradeMinFreeSlots = Number(get("--parentUpgradeMinFreeSlots") ?? 8);
|
|
136
|
+
const parentUpgradeRootMaxChildLoadRatio = Number(get("--parentUpgradeRootMaxChildLoadRatio") ??
|
|
137
|
+
Math.min(parentUpgradeMaxChildLoadRatio, 0.4));
|
|
138
|
+
const parentUpgradeModeRaw = get("--parentUpgradeMode");
|
|
139
|
+
const parentUpgradeMode = parentUpgradeModeRaw === "probe" || parentUpgradeModeRaw === "shadow"
|
|
140
|
+
? parentUpgradeModeRaw
|
|
141
|
+
: parentUpgradeModeRaw === "direct"
|
|
142
|
+
? "direct"
|
|
143
|
+
: defaultCandidate
|
|
144
|
+
? "shadow"
|
|
145
|
+
: "direct";
|
|
146
|
+
return {
|
|
147
|
+
parentUpgradePreset,
|
|
148
|
+
parentUpgradeIntervalMs: Number(get("--parentUpgradeIntervalMs") ?? 1_000),
|
|
149
|
+
parentUpgradeLeafOnly: parseBool01(get("--parentUpgradeLeafOnly"), true),
|
|
150
|
+
parentUpgradeMinLevelGain: Number(get("--parentUpgradeMinLevelGain") ?? 2),
|
|
151
|
+
parentUpgradeRootMinLevelGain,
|
|
152
|
+
parentUpgradeRootMinSubtreeGain: Number(get("--parentUpgradeRootMinSubtreeGain") ?? parentUpgradeRootMinLevelGain),
|
|
153
|
+
parentUpgradeNonRootMinLevelGain: Number(get("--parentUpgradeNonRootMinLevelGain") ?? 2),
|
|
154
|
+
parentUpgradeMinFreeSlots,
|
|
155
|
+
parentUpgradeRootMinFreeSlots: Number(get("--parentUpgradeRootMinFreeSlots") ?? parentUpgradeMinFreeSlots),
|
|
156
|
+
parentUpgradeMaxChildLoadRatio,
|
|
157
|
+
parentUpgradeRootMaxChildLoadRatio,
|
|
158
|
+
parentUpgradeCooldownMs: Number(get("--parentUpgradeCooldownMs") ?? 5_000),
|
|
159
|
+
parentUpgradeFailedBackoffMinMs: Number(get("--parentUpgradeFailedBackoffMinMs") ?? 5_000),
|
|
160
|
+
parentUpgradeFailedBackoffMaxMs: Number(get("--parentUpgradeFailedBackoffMaxMs") ?? 60_000),
|
|
161
|
+
parentUpgradeQuietMs,
|
|
162
|
+
parentUpgradeRepairQuietMs: Number(get("--parentUpgradeRepairQuietMs") ?? parentUpgradeQuietMs),
|
|
163
|
+
parentUpgradeMaxPerPeer: Number(get("--parentUpgradeMaxPerPeer") ?? 2),
|
|
164
|
+
parentUpgradeRepairGuard: parseBool01(get("--parentUpgradeRepairGuard"), true),
|
|
165
|
+
parentUpgradeDataGuard: parseBool01(get("--parentUpgradeDataGuard"), true),
|
|
166
|
+
parentUpgradeMode,
|
|
167
|
+
parentUpgradeVerifyStaleRootCapacity: parseBool01(get("--parentUpgradeVerifyStaleRootCapacity"), defaultCandidate),
|
|
168
|
+
parentUpgradeStaleRootProbeProbability: Number(get("--parentUpgradeStaleRootProbeProbability") ??
|
|
169
|
+
(defaultCandidate
|
|
170
|
+
? DEFAULT_CANDIDATE_STALE_ROOT_PROBE_PROBABILITY
|
|
171
|
+
: RAW_STALE_ROOT_PROBE_PROBABILITY)),
|
|
172
|
+
parentProbeTimeoutMs: Number(get("--parentProbeTimeoutMs") ?? 500),
|
|
173
|
+
parentProbeMaxPerRound: Number(get("--parentProbeMaxPerRound") ?? 2),
|
|
174
|
+
parentProbeMaxLagMessages: Number(get("--parentProbeMaxLagMessages") ?? 0),
|
|
175
|
+
parentProbeRejectCooldownMs: Number(get("--parentProbeRejectCooldownMs") ?? 10_000),
|
|
176
|
+
parentProbeRejectCooldownMaxMs: Number(get("--parentProbeRejectCooldownMaxMs") ?? 60_000),
|
|
177
|
+
parentShadowObserveMs: Number(get("--parentShadowObserveMs") ?? 2_000),
|
|
178
|
+
parentShadowMinObservations: Number(get("--parentShadowMinObservations") ?? 2),
|
|
179
|
+
parentShadowDualPathMs: Number(get("--parentShadowDualPathMs") ?? (defaultCandidate ? 5_000 : 0)),
|
|
180
|
+
parentShadowDualPathMinMessages: Number(get("--parentShadowDualPathMinMessages") ?? (defaultCandidate ? 32 : 1)),
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
//# sourceMappingURL=fanout-tree-parent-upgrade-preset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fanout-tree-parent-upgrade-preset.js","sourceRoot":"","sources":["../../benchmark/fanout-tree-parent-upgrade-preset.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ export type FanoutTreeSimParams = {
|
|
|
7
7
|
subscribers: number;
|
|
8
8
|
relayFraction: number;
|
|
9
9
|
messages: number;
|
|
10
|
+
secondBatchMessages: number;
|
|
11
|
+
secondBatchSettleMs: number;
|
|
10
12
|
msgRate: number;
|
|
11
13
|
msgSize: number;
|
|
12
14
|
intervalMs: number;
|
|
@@ -44,12 +46,46 @@ export type FanoutTreeSimParams = {
|
|
|
44
46
|
joinReqTimeoutMs: number;
|
|
45
47
|
candidateShuffleTopK: number;
|
|
46
48
|
candidateScoringMode: "ranked-shuffle" | "ranked-strict" | "weighted";
|
|
49
|
+
parentUpgradeIntervalMs: number;
|
|
50
|
+
parentUpgradeLeafOnly: boolean;
|
|
51
|
+
parentUpgradeMinLevelGain: number;
|
|
52
|
+
parentUpgradeRootMinLevelGain: number;
|
|
53
|
+
parentUpgradeRootMinSubtreeGain: number;
|
|
54
|
+
parentUpgradeNonRootMinLevelGain: number;
|
|
55
|
+
parentUpgradeMinFreeSlots: number;
|
|
56
|
+
parentUpgradeRootMinFreeSlots: number;
|
|
57
|
+
parentUpgradeMaxChildLoadRatio: number;
|
|
58
|
+
parentUpgradeRootMaxChildLoadRatio: number;
|
|
59
|
+
parentUpgradeCooldownMs: number;
|
|
60
|
+
parentUpgradeFailedBackoffMinMs: number;
|
|
61
|
+
parentUpgradeFailedBackoffMaxMs: number;
|
|
62
|
+
parentUpgradeQuietMs: number;
|
|
63
|
+
parentUpgradeRepairQuietMs: number;
|
|
64
|
+
parentUpgradeMaxPerPeer: number;
|
|
65
|
+
parentUpgradeRepairGuard: boolean;
|
|
66
|
+
parentUpgradeDataGuard: boolean;
|
|
67
|
+
parentUpgradeMode: "direct" | "probe" | "shadow";
|
|
68
|
+
parentUpgradeVerifyStaleRootCapacity: boolean;
|
|
69
|
+
parentUpgradeStaleRootProbeProbability: number;
|
|
70
|
+
parentProbeTimeoutMs: number;
|
|
71
|
+
parentProbeMaxPerRound: number;
|
|
72
|
+
parentProbeMaxLagMessages: number;
|
|
73
|
+
parentProbeRejectCooldownMs: number;
|
|
74
|
+
parentProbeRejectCooldownMaxMs: number;
|
|
75
|
+
parentShadowObserveMs: number;
|
|
76
|
+
parentShadowMinObservations: number;
|
|
77
|
+
parentShadowDualPathMs: number;
|
|
78
|
+
parentShadowDualPathMinMessages: number;
|
|
47
79
|
bootstrapEnsureIntervalMs: number;
|
|
48
80
|
trackerQueryIntervalMs: number;
|
|
49
81
|
joinAttemptsPerRound: number;
|
|
50
82
|
candidateCooldownMs: number;
|
|
51
83
|
joinPhases: boolean;
|
|
52
84
|
joinPhaseSettleMs: number;
|
|
85
|
+
lateRootConnectAfterMs: number;
|
|
86
|
+
lateRootDuringPublish: boolean;
|
|
87
|
+
lateRootMaxChildren: number;
|
|
88
|
+
lateRootConnectFraction: number;
|
|
53
89
|
maxLatencySamples: number;
|
|
54
90
|
profile: boolean;
|
|
55
91
|
progress: boolean;
|
|
@@ -70,6 +106,8 @@ export type FanoutTreeSimParams = {
|
|
|
70
106
|
assertAttachP95Ms: number;
|
|
71
107
|
assertMaxTreeLevelP95: number;
|
|
72
108
|
assertMaxFormationScore: number;
|
|
109
|
+
assertMinReparentUpgradeTotal: number;
|
|
110
|
+
assertMinActiveShadowPromoteTotal: number;
|
|
73
111
|
assertMaxOrphans: number;
|
|
74
112
|
assertRecoveryP95Ms: number;
|
|
75
113
|
assertMaxReparentsPerMin: number;
|
|
@@ -108,6 +146,17 @@ export type FanoutTreeSimResult = {
|
|
|
108
146
|
deliveredWithinDeadline: number;
|
|
109
147
|
deliveredWithinDeadlinePct: number;
|
|
110
148
|
duplicates: number;
|
|
149
|
+
secondBatchExpected: number;
|
|
150
|
+
secondBatchDelivered: number;
|
|
151
|
+
secondBatchDeliveredPct: number;
|
|
152
|
+
secondBatchDeliveredWithinDeadline: number;
|
|
153
|
+
secondBatchDeliveredWithinDeadlinePct: number;
|
|
154
|
+
secondBatchLatencySamples: number;
|
|
155
|
+
secondBatchLatencyP50: number;
|
|
156
|
+
secondBatchLatencyP95: number;
|
|
157
|
+
secondBatchLatencyP99: number;
|
|
158
|
+
secondBatchLatencyMax: number;
|
|
159
|
+
secondBatchLatencyP95ByHash: Record<string, number>;
|
|
111
160
|
latencySamples: number;
|
|
112
161
|
latencyP50: number;
|
|
113
162
|
latencyP95: number;
|
|
@@ -125,6 +174,53 @@ export type FanoutTreeSimResult = {
|
|
|
125
174
|
reparentDisconnectTotal: number;
|
|
126
175
|
reparentStaleTotal: number;
|
|
127
176
|
reparentKickedTotal: number;
|
|
177
|
+
publishActiveReparentUpgradeTotal: number;
|
|
178
|
+
publishActiveReparentUpgradeSkipDataTotal: number;
|
|
179
|
+
publishActiveReparentUpgradeSkipRepairTotal: number;
|
|
180
|
+
publishActiveReparentUpgradeSkipQuietTotal: number;
|
|
181
|
+
publishActiveParentProbeReqSentTotal: number;
|
|
182
|
+
publishActiveParentShadowStartTotal: number;
|
|
183
|
+
publishActiveParentShadowPromoteTotal: number;
|
|
184
|
+
reparentUpgradeTotal: number;
|
|
185
|
+
upgradedPeerHashes: string[];
|
|
186
|
+
upgradedBranchPeerHashes: string[];
|
|
187
|
+
reparentUpgradeSkipLeafTotal: number;
|
|
188
|
+
reparentUpgradeSkipRepairTotal: number;
|
|
189
|
+
reparentUpgradeSkipDataTotal: number;
|
|
190
|
+
reparentUpgradeSkipCooldownTotal: number;
|
|
191
|
+
reparentUpgradeSkipQuietTotal: number;
|
|
192
|
+
reparentUpgradeSkipBudgetTotal: number;
|
|
193
|
+
reparentUpgradeSkipCandidateLevelTotal: number;
|
|
194
|
+
reparentUpgradeSkipCandidateSlotsTotal: number;
|
|
195
|
+
reparentUpgradeSkipCandidatePressureTotal: number;
|
|
196
|
+
reparentUpgradeSkipRootPressureTotal: number;
|
|
197
|
+
reparentUpgradeSkipProbeNoReplyTotal: number;
|
|
198
|
+
reparentUpgradeSkipProbeNotRootedTotal: number;
|
|
199
|
+
reparentUpgradeSkipProbeRepairTotal: number;
|
|
200
|
+
reparentUpgradeSkipProbeLagTotal: number;
|
|
201
|
+
reparentUpgradeSkipProbeOverloadedTotal: number;
|
|
202
|
+
reparentUpgradeSkipProbeCooldownTotal: number;
|
|
203
|
+
parentProbeReqSentTotal: number;
|
|
204
|
+
parentProbeReqReceivedTotal: number;
|
|
205
|
+
parentProbeReplySentTotal: number;
|
|
206
|
+
parentProbeReplyReceivedTotal: number;
|
|
207
|
+
parentUpgradeRootReservationCreatedTotal: number;
|
|
208
|
+
parentUpgradeRootReservationConsumedTotal: number;
|
|
209
|
+
parentUpgradeRootReservationRejectedTotal: number;
|
|
210
|
+
parentUpgradeRootReservationMarginRejectedTotal: number;
|
|
211
|
+
parentUpgradeRootReservationBlockedTotal: number;
|
|
212
|
+
parentUpgradeRootReservationExpiredTotal: number;
|
|
213
|
+
parentShadowStartTotal: number;
|
|
214
|
+
parentShadowObserveTotal: number;
|
|
215
|
+
parentShadowPromoteTotal: number;
|
|
216
|
+
parentShadowResetTotal: number;
|
|
217
|
+
parentShadowRejectNoReplyTotal: number;
|
|
218
|
+
parentShadowRejectNotRootedTotal: number;
|
|
219
|
+
parentShadowRejectCapacityTotal: number;
|
|
220
|
+
parentShadowRejectRepairTotal: number;
|
|
221
|
+
parentShadowRejectLagTotal: number;
|
|
222
|
+
parentShadowRejectOverloadedTotal: number;
|
|
223
|
+
parentShadowRejectLevelTotal: number;
|
|
128
224
|
treeMaxLevel: number;
|
|
129
225
|
treeLevelP95: number;
|
|
130
226
|
treeLevelAvg: number;
|
|
@@ -135,6 +231,8 @@ export type FanoutTreeSimResult = {
|
|
|
135
231
|
maxUploadBps: number;
|
|
136
232
|
maxUploadFracPct: number;
|
|
137
233
|
maxUploadNode?: string;
|
|
234
|
+
rootUploadBps: number;
|
|
235
|
+
rootUploadFracPct: number;
|
|
138
236
|
streamQueuedBytesTotal: number;
|
|
139
237
|
streamQueuedBytesMax: number;
|
|
140
238
|
streamQueuedBytesP95: number;
|
|
@@ -176,6 +274,9 @@ export type FanoutTreeSimResult = {
|
|
|
176
274
|
protocolRepairReqSent: number;
|
|
177
275
|
protocolFetchReqSent: number;
|
|
178
276
|
protocolIHaveSent: number;
|
|
277
|
+
protocolTrackerAnnounceSent: number;
|
|
278
|
+
protocolTrackerQuerySent: number;
|
|
279
|
+
protocolTrackerReplySent: number;
|
|
179
280
|
protocolTrackerFeedbackSent: number;
|
|
180
281
|
protocolCacheHitsServed: number;
|
|
181
282
|
protocolHoleFillsFromNeighbor: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fanout-tree-sim-lib.d.ts","sourceRoot":"","sources":["../../benchmark/fanout-tree-sim-lib.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fanout-tree-sim-lib.d.ts","sourceRoot":"","sources":["../../benchmark/fanout-tree-sim-lib.ts"],"names":[],"mappings":"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"}
|