@indigoai-us/hq-cloud 6.18.14-alpha.1 → 6.18.14
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/bin/sync-runner-receiver-unresolved-company.test.d.ts +2 -0
- package/dist/bin/sync-runner-receiver-unresolved-company.test.d.ts.map +1 -0
- package/dist/bin/sync-runner-receiver-unresolved-company.test.js +379 -0
- package/dist/bin/sync-runner-receiver-unresolved-company.test.js.map +1 -0
- package/dist/bin/sync-runner-watch-loop.d.ts +1 -0
- package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-loop.js +55 -27
- package/dist/bin/sync-runner-watch-loop.js.map +1 -1
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +20 -1
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/sync.test.js +31 -0
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/object-io.d.ts.map +1 -1
- package/dist/object-io.js +10 -0
- package/dist/object-io.js.map +1 -1
- package/dist/object-io.test.js +28 -1
- package/dist/object-io.test.js.map +1 -1
- package/dist/sync/event-sync.d.ts +0 -2
- package/dist/sync/event-sync.d.ts.map +1 -1
- package/dist/sync/event-sync.js +0 -11
- package/dist/sync/event-sync.js.map +1 -1
- package/dist/sync/event-sync.test.js +0 -103
- package/dist/sync/event-sync.test.js.map +1 -1
- package/dist/sync/push-receiver.d.ts +5 -0
- package/dist/sync/push-receiver.d.ts.map +1 -1
- package/dist/sync/push-receiver.js +25 -10
- package/dist/sync/push-receiver.js.map +1 -1
- package/dist/sync-core.d.ts +7 -0
- package/dist/sync-core.d.ts.map +1 -1
- package/dist/sync-core.js +12 -0
- package/dist/sync-core.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-runner-receiver-unresolved-company.test.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-receiver-unresolved-company.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { encodePushEvent } from "../sync/push-event.js";
|
|
6
|
+
import { SqsPushReceiver, } from "../sync/push-receiver.js";
|
|
7
|
+
import { UNRESOLVED_COMPANY_EXIT } from "../lib/exit-codes.js";
|
|
8
|
+
import { runRunnerWithLoop } from "./sync-runner.js";
|
|
9
|
+
import { shouldAcknowledgeParallelUnresolvedCompany } from "./sync-runner-watch-loop.js";
|
|
10
|
+
const TEST_QUEUE = "https://sqs.invalid.test/queue";
|
|
11
|
+
const TEST_TENANT = "tenant-test";
|
|
12
|
+
const hasRetryVisibility = (sqs) => sqs.visibilityChanges.some((change) => change.visibilityTimeoutSeconds === 20);
|
|
13
|
+
class SingleBatchSqs {
|
|
14
|
+
messages;
|
|
15
|
+
deleted = [];
|
|
16
|
+
visibilityChanges = [];
|
|
17
|
+
delivered = false;
|
|
18
|
+
constructor(messages) {
|
|
19
|
+
this.messages = messages;
|
|
20
|
+
}
|
|
21
|
+
async receiveMessage(args) {
|
|
22
|
+
if (!this.delivered) {
|
|
23
|
+
this.delivered = true;
|
|
24
|
+
return { messages: this.messages };
|
|
25
|
+
}
|
|
26
|
+
if (args.waitTimeSeconds <= 1)
|
|
27
|
+
return { messages: [] };
|
|
28
|
+
if (args.signal.aborted)
|
|
29
|
+
return { messages: [] };
|
|
30
|
+
return new Promise((resolve) => {
|
|
31
|
+
args.signal.addEventListener("abort", () => resolve({ messages: [] }), {
|
|
32
|
+
once: true,
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async deleteMessage(args) {
|
|
37
|
+
this.deleted.push(args.receiptHandle);
|
|
38
|
+
}
|
|
39
|
+
async changeMessageVisibility(args) {
|
|
40
|
+
this.visibilityChanges.push(args);
|
|
41
|
+
}
|
|
42
|
+
async changeMessageVisibilityBatch(args) {
|
|
43
|
+
this.visibilityChanges.push(...args.entries.map((entry) => ({
|
|
44
|
+
receiptHandle: entry.receiptHandle,
|
|
45
|
+
visibilityTimeoutSeconds: args.visibilityTimeoutSeconds,
|
|
46
|
+
})));
|
|
47
|
+
return { failedEntries: [] };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function message(event, receiptHandle, approximateReceiveCount) {
|
|
51
|
+
return {
|
|
52
|
+
Body: encodePushEvent(event),
|
|
53
|
+
ReceiptHandle: receiptHandle,
|
|
54
|
+
MessageId: `message-${receiptHandle}`,
|
|
55
|
+
...(approximateReceiveCount === undefined ? {} : { approximateReceiveCount }),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const originalEnvironment = new Map();
|
|
59
|
+
const scratchDirs = [];
|
|
60
|
+
function setTestEnvironment(parallel) {
|
|
61
|
+
for (const key of [
|
|
62
|
+
"HQ_STATE_DIR",
|
|
63
|
+
"HQ_FLAGS_API_URL",
|
|
64
|
+
"HQ_SYNC_EVENT_SYNC",
|
|
65
|
+
"HQ_SYNC_PARALLEL_COORDINATOR",
|
|
66
|
+
]) {
|
|
67
|
+
if (!originalEnvironment.has(key))
|
|
68
|
+
originalEnvironment.set(key, process.env[key]);
|
|
69
|
+
}
|
|
70
|
+
const scratch = fs.mkdtempSync(path.join(os.tmpdir(), "hq-c206-receiver-"));
|
|
71
|
+
scratchDirs.push(scratch);
|
|
72
|
+
process.env.HQ_STATE_DIR = path.join(scratch, "state");
|
|
73
|
+
fs.mkdirSync(process.env.HQ_STATE_DIR, { recursive: true });
|
|
74
|
+
delete process.env.HQ_FLAGS_API_URL;
|
|
75
|
+
process.env.HQ_SYNC_EVENT_SYNC = "0";
|
|
76
|
+
process.env.HQ_SYNC_PARALLEL_COORDINATOR = parallel ? "1" : "0";
|
|
77
|
+
return path.join(scratch, "hq");
|
|
78
|
+
}
|
|
79
|
+
async function waitFor(predicate, description) {
|
|
80
|
+
const deadline = Date.now() + 2_000;
|
|
81
|
+
while (!predicate()) {
|
|
82
|
+
if (Date.now() >= deadline)
|
|
83
|
+
throw new Error(`timed out waiting for ${description}`);
|
|
84
|
+
await new Promise((resolve) => setTimeout(resolve, 5));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function makeEvent(relativePath, sequenceNumber) {
|
|
88
|
+
return {
|
|
89
|
+
relativePath,
|
|
90
|
+
kind: "upsert",
|
|
91
|
+
contentHash: "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
92
|
+
mtime: "2026-09-28T00:00:00.000Z",
|
|
93
|
+
originDeviceId: "peer-device",
|
|
94
|
+
originTenantId: TEST_TENANT,
|
|
95
|
+
sequenceNumber,
|
|
96
|
+
eventTimestamp: "2026-09-28T00:00:00.000Z",
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
async function runReceiverCase(options) {
|
|
100
|
+
const hqRoot = setTestEnvironment(options.parallel);
|
|
101
|
+
fs.mkdirSync(path.join(hqRoot, "companies", "alpha"), { recursive: true });
|
|
102
|
+
fs.mkdirSync(path.join(hqRoot, "companies", "beta"), { recursive: true });
|
|
103
|
+
for (const event of options.events) {
|
|
104
|
+
const companySlug = /^companies\/([^/]+)\//.exec(event.relativePath)?.[1];
|
|
105
|
+
if (companySlug) {
|
|
106
|
+
fs.mkdirSync(path.join(hqRoot, "companies", companySlug), { recursive: true });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const sqs = new SingleBatchSqs(options.events.map((event, index) => message(event, `receipt-${index + 1}`, options.receiveCountForEvent?.(event, index))));
|
|
110
|
+
const stderr = [];
|
|
111
|
+
const runPassCalls = [];
|
|
112
|
+
let shutdownHandler;
|
|
113
|
+
const loop = runRunnerWithLoop(["--companies", "--watch", "--event-push", "--direction", "pull", "--hq-root", hqRoot], {
|
|
114
|
+
runPass: async (argv) => {
|
|
115
|
+
runPassCalls.push(argv);
|
|
116
|
+
if (!argv.includes("--scope-path"))
|
|
117
|
+
return 0;
|
|
118
|
+
const companyIndex = argv.indexOf("--company");
|
|
119
|
+
const slug = companyIndex >= 0 ? argv[companyIndex + 1] : undefined;
|
|
120
|
+
const event = options.events.find((candidate) => slug === undefined || candidate.relativePath.startsWith(`companies/${slug}/`));
|
|
121
|
+
if (!event)
|
|
122
|
+
throw new Error("targeted pull did not include a test event path");
|
|
123
|
+
return options.exitForEvent(event);
|
|
124
|
+
},
|
|
125
|
+
acquireWatchOwnerLease: () => ({
|
|
126
|
+
status: "acquired",
|
|
127
|
+
lease: {
|
|
128
|
+
statusPath: "test://watch-owner",
|
|
129
|
+
lost: new Promise(() => { }),
|
|
130
|
+
release: async () => { },
|
|
131
|
+
},
|
|
132
|
+
}),
|
|
133
|
+
createWatcher: () => ({
|
|
134
|
+
onChange: () => () => { },
|
|
135
|
+
start: () => { },
|
|
136
|
+
stop: () => { },
|
|
137
|
+
dispose: () => { },
|
|
138
|
+
}),
|
|
139
|
+
createReceiver: ({ syncBatchFn }) => new SqsPushReceiver({
|
|
140
|
+
tenantId: TEST_TENANT,
|
|
141
|
+
queueUrl: TEST_QUEUE,
|
|
142
|
+
sqs,
|
|
143
|
+
syncBatchFn,
|
|
144
|
+
sleep: async () => { },
|
|
145
|
+
publishMetric: async () => undefined,
|
|
146
|
+
logger: { debug: () => { }, info: () => { }, warn: () => { }, error: () => { } },
|
|
147
|
+
}),
|
|
148
|
+
getIdTokenClaims: () => null,
|
|
149
|
+
getAccessToken: async () => "test-token",
|
|
150
|
+
startEventSync: async () => null,
|
|
151
|
+
sleep: () => new Promise(() => { }),
|
|
152
|
+
stderr: { write: (line) => { stderr.push(line); } },
|
|
153
|
+
onShutdownSignal: (handler) => {
|
|
154
|
+
shutdownHandler = handler;
|
|
155
|
+
return () => { };
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
return {
|
|
159
|
+
sqs,
|
|
160
|
+
stderr,
|
|
161
|
+
runPassCalls,
|
|
162
|
+
shutdown: () => shutdownHandler?.(),
|
|
163
|
+
loop,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
afterEach(() => {
|
|
167
|
+
for (const [key, value] of originalEnvironment) {
|
|
168
|
+
if (value === undefined)
|
|
169
|
+
delete process.env[key];
|
|
170
|
+
else
|
|
171
|
+
process.env[key] = value;
|
|
172
|
+
}
|
|
173
|
+
originalEnvironment.clear();
|
|
174
|
+
for (const dir of scratchDirs.splice(0))
|
|
175
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
176
|
+
});
|
|
177
|
+
describe("receiver unresolved-company exit handling", () => {
|
|
178
|
+
it("serial lane acknowledges a redelivered exit 19 and warns once with only company and path count", async () => {
|
|
179
|
+
const events = [
|
|
180
|
+
makeEvent("companies/alpha/docs/one.md", 1),
|
|
181
|
+
makeEvent("companies/alpha/docs/two.md", 2),
|
|
182
|
+
];
|
|
183
|
+
const result = await runReceiverCase({
|
|
184
|
+
parallel: false,
|
|
185
|
+
events,
|
|
186
|
+
exitForEvent: () => UNRESOLVED_COMPANY_EXIT,
|
|
187
|
+
receiveCountForEvent: () => 2,
|
|
188
|
+
});
|
|
189
|
+
try {
|
|
190
|
+
await waitFor(() => result.sqs.deleted.length === 2 || hasRetryVisibility(result.sqs), "serial receipt outcome");
|
|
191
|
+
expect(result.sqs.deleted).toEqual(["receipt-1", "receipt-2"]);
|
|
192
|
+
expect(result.sqs.visibilityChanges).toEqual([]);
|
|
193
|
+
const warnings = result.stderr.filter((line) => line.includes('"event":"receiver.unresolved-company"'));
|
|
194
|
+
expect(warnings).toHaveLength(1);
|
|
195
|
+
expect(JSON.parse(warnings[0])).toMatchObject({
|
|
196
|
+
level: "warn",
|
|
197
|
+
event: "receiver.unresolved-company",
|
|
198
|
+
companySlug: "alpha",
|
|
199
|
+
pathCount: 2,
|
|
200
|
+
});
|
|
201
|
+
expect(warnings[0]).not.toContain("one.md");
|
|
202
|
+
expect(warnings[0]).not.toContain("two.md");
|
|
203
|
+
}
|
|
204
|
+
finally {
|
|
205
|
+
result.shutdown();
|
|
206
|
+
await result.loop;
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
it("parallel coordinator acknowledges a redelivered exit 19 without a visibility retry", async () => {
|
|
210
|
+
const result = await runReceiverCase({
|
|
211
|
+
parallel: true,
|
|
212
|
+
events: [makeEvent("companies/beta/docs/parallel.md", 1)],
|
|
213
|
+
exitForEvent: () => UNRESOLVED_COMPANY_EXIT,
|
|
214
|
+
receiveCountForEvent: () => 2,
|
|
215
|
+
});
|
|
216
|
+
try {
|
|
217
|
+
await waitFor(() => result.sqs.deleted.length === 1 || hasRetryVisibility(result.sqs), "parallel receipt outcome");
|
|
218
|
+
expect(result.sqs.deleted).toEqual(["receipt-1"]);
|
|
219
|
+
expect(result.sqs.visibilityChanges).toEqual([]);
|
|
220
|
+
expect(result.stderr.some((line) => line.includes('"event":"receiver.unresolved-company"'))).toBe(true);
|
|
221
|
+
}
|
|
222
|
+
finally {
|
|
223
|
+
result.shutdown();
|
|
224
|
+
await result.loop;
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
it("warns once per company across watch-loop restarts in one runner process", async () => {
|
|
228
|
+
const first = await runReceiverCase({
|
|
229
|
+
parallel: false,
|
|
230
|
+
events: [makeEvent("companies/restart/docs/first.md", 1)],
|
|
231
|
+
exitForEvent: () => UNRESOLVED_COMPANY_EXIT,
|
|
232
|
+
receiveCountForEvent: () => 2,
|
|
233
|
+
});
|
|
234
|
+
try {
|
|
235
|
+
await waitFor(() => first.sqs.deleted.length === 1 || hasRetryVisibility(first.sqs), "first restart receipt outcome");
|
|
236
|
+
expect(first.sqs.deleted).toEqual(["receipt-1"]);
|
|
237
|
+
expect(first.stderr.filter((line) => line.includes('"event":"receiver.unresolved-company"'))).toHaveLength(1);
|
|
238
|
+
}
|
|
239
|
+
finally {
|
|
240
|
+
first.shutdown();
|
|
241
|
+
await first.loop;
|
|
242
|
+
}
|
|
243
|
+
const restarted = await runReceiverCase({
|
|
244
|
+
parallel: false,
|
|
245
|
+
events: [makeEvent("companies/restart/docs/second.md", 2)],
|
|
246
|
+
exitForEvent: () => UNRESOLVED_COMPANY_EXIT,
|
|
247
|
+
receiveCountForEvent: () => 2,
|
|
248
|
+
});
|
|
249
|
+
try {
|
|
250
|
+
await waitFor(() => restarted.sqs.deleted.length === 1 || hasRetryVisibility(restarted.sqs), "restarted receipt outcome");
|
|
251
|
+
expect(restarted.sqs.deleted).toEqual(["receipt-1"]);
|
|
252
|
+
expect(restarted.sqs.visibilityChanges).toEqual([]);
|
|
253
|
+
expect(restarted.stderr.filter((line) => line.includes('"event":"receiver.unresolved-company"'))).toHaveLength(0);
|
|
254
|
+
}
|
|
255
|
+
finally {
|
|
256
|
+
restarted.shutdown();
|
|
257
|
+
await restarted.loop;
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
it("retries only the failing route in a mixed batch", async () => {
|
|
261
|
+
const result = await runReceiverCase({
|
|
262
|
+
parallel: false,
|
|
263
|
+
events: [
|
|
264
|
+
makeEvent("companies/alpha/docs/unresolved.md", 1),
|
|
265
|
+
makeEvent("companies/beta/docs/failing.md", 2),
|
|
266
|
+
],
|
|
267
|
+
exitForEvent: (event) => event.relativePath.includes("alpha/")
|
|
268
|
+
? UNRESOLVED_COMPANY_EXIT
|
|
269
|
+
: 1,
|
|
270
|
+
receiveCountForEvent: (event) => event.relativePath.includes("alpha/") ? 2 : 1,
|
|
271
|
+
});
|
|
272
|
+
try {
|
|
273
|
+
await waitFor(() => result.sqs.deleted.includes("receipt-2") ||
|
|
274
|
+
result.sqs.visibilityChanges.some((change) => change.receiptHandle === "receipt-2" && change.visibilityTimeoutSeconds === 20), "mixed route failing receipt outcome");
|
|
275
|
+
expect(result.sqs.deleted).toEqual(["receipt-1"]);
|
|
276
|
+
expect(result.sqs.visibilityChanges).toEqual([
|
|
277
|
+
{ receiptHandle: "receipt-2", visibilityTimeoutSeconds: 20 },
|
|
278
|
+
]);
|
|
279
|
+
}
|
|
280
|
+
finally {
|
|
281
|
+
result.shutdown();
|
|
282
|
+
await result.loop;
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
it.each([
|
|
286
|
+
{ parallel: false, lane: "serial" },
|
|
287
|
+
{ parallel: true, lane: "parallel coordinator" },
|
|
288
|
+
])("$lane retries an exit 19 on first delivery without deleting or warning", async ({ parallel }) => {
|
|
289
|
+
const result = await runReceiverCase({
|
|
290
|
+
parallel,
|
|
291
|
+
events: [makeEvent(`companies/first-${parallel ? "parallel" : "serial"}/docs/first.md`, 1)],
|
|
292
|
+
exitForEvent: () => UNRESOLVED_COMPANY_EXIT,
|
|
293
|
+
receiveCountForEvent: () => 1,
|
|
294
|
+
});
|
|
295
|
+
try {
|
|
296
|
+
await waitFor(() => hasRetryVisibility(result.sqs) || result.sqs.deleted.length > 0, "first-delivery receipt outcome");
|
|
297
|
+
expect(result.sqs.deleted).toEqual([]);
|
|
298
|
+
expect(result.sqs.visibilityChanges).toEqual([
|
|
299
|
+
{ receiptHandle: "receipt-1", visibilityTimeoutSeconds: 20 },
|
|
300
|
+
]);
|
|
301
|
+
expect(result.stderr.filter((line) => line.includes('"event":"receiver.unresolved-company"'))).toHaveLength(0);
|
|
302
|
+
}
|
|
303
|
+
finally {
|
|
304
|
+
result.shutdown();
|
|
305
|
+
await result.loop;
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
it.each([
|
|
309
|
+
{ parallel: false, lane: "serial" },
|
|
310
|
+
{ parallel: true, lane: "parallel coordinator" },
|
|
311
|
+
])("$lane leaves an exit 19 unacknowledged when receive count is missing", async ({ parallel }) => {
|
|
312
|
+
const result = await runReceiverCase({
|
|
313
|
+
parallel,
|
|
314
|
+
events: [makeEvent(`companies/missing-${parallel ? "parallel" : "serial"}/docs/missing.md`, 1)],
|
|
315
|
+
exitForEvent: () => UNRESOLVED_COMPANY_EXIT,
|
|
316
|
+
});
|
|
317
|
+
try {
|
|
318
|
+
await waitFor(() => hasRetryVisibility(result.sqs) || result.sqs.deleted.length > 0, "missing-count receipt outcome");
|
|
319
|
+
expect(result.sqs.deleted).toEqual([]);
|
|
320
|
+
expect(result.sqs.visibilityChanges).toEqual([
|
|
321
|
+
{ receiptHandle: "receipt-1", visibilityTimeoutSeconds: 20 },
|
|
322
|
+
]);
|
|
323
|
+
expect(result.stderr.filter((line) => line.includes('"event":"receiver.unresolved-company"'))).toHaveLength(0);
|
|
324
|
+
}
|
|
325
|
+
finally {
|
|
326
|
+
result.shutdown();
|
|
327
|
+
await result.loop;
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
it("decides unresolved receipts independently when a parallel batch has mixed receive counts", async () => {
|
|
331
|
+
const result = await runReceiverCase({
|
|
332
|
+
parallel: true,
|
|
333
|
+
events: [
|
|
334
|
+
makeEvent("companies/alpha/docs/retried.md", 1),
|
|
335
|
+
makeEvent("companies/beta/docs/first.md", 2),
|
|
336
|
+
],
|
|
337
|
+
exitForEvent: () => UNRESOLVED_COMPANY_EXIT,
|
|
338
|
+
receiveCountForEvent: (event) => event.relativePath.includes("alpha/") ? 2 : 1,
|
|
339
|
+
});
|
|
340
|
+
try {
|
|
341
|
+
await waitFor(() => result.sqs.deleted.length > 0 || hasRetryVisibility(result.sqs), "mixed receive-count receipt outcome");
|
|
342
|
+
expect(result.sqs.deleted).toEqual(["receipt-1"]);
|
|
343
|
+
expect(result.sqs.visibilityChanges).toEqual([
|
|
344
|
+
{ receiptHandle: "receipt-2", visibilityTimeoutSeconds: 20 },
|
|
345
|
+
]);
|
|
346
|
+
}
|
|
347
|
+
finally {
|
|
348
|
+
result.shutdown();
|
|
349
|
+
await result.loop;
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
it("parallel coordinator retries an exit 1 route in a mixed batch while acknowledging exit 19", async () => {
|
|
353
|
+
expect(shouldAcknowledgeParallelUnresolvedCompany(true, 1)).toBe(false);
|
|
354
|
+
expect(shouldAcknowledgeParallelUnresolvedCompany(true, UNRESOLVED_COMPANY_EXIT)).toBe(true);
|
|
355
|
+
const result = await runReceiverCase({
|
|
356
|
+
parallel: true,
|
|
357
|
+
events: [
|
|
358
|
+
makeEvent("companies/alpha/docs/unresolved.md", 1),
|
|
359
|
+
makeEvent("companies/beta/docs/failing.md", 2),
|
|
360
|
+
],
|
|
361
|
+
exitForEvent: (event) => event.relativePath.includes("alpha/")
|
|
362
|
+
? UNRESOLVED_COMPANY_EXIT
|
|
363
|
+
: 1,
|
|
364
|
+
receiveCountForEvent: () => 2,
|
|
365
|
+
});
|
|
366
|
+
try {
|
|
367
|
+
await waitFor(() => result.sqs.deleted.length > 0 || hasRetryVisibility(result.sqs), "parallel mixed-route receipt outcome");
|
|
368
|
+
expect(result.sqs.deleted).toEqual(["receipt-1"]);
|
|
369
|
+
expect(result.sqs.visibilityChanges).toEqual([
|
|
370
|
+
{ receiptHandle: "receipt-2", visibilityTimeoutSeconds: 20 },
|
|
371
|
+
]);
|
|
372
|
+
}
|
|
373
|
+
finally {
|
|
374
|
+
result.shutdown();
|
|
375
|
+
await result.loop;
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
//# sourceMappingURL=sync-runner-receiver-unresolved-company.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-runner-receiver-unresolved-company.test.js","sourceRoot":"","sources":["../../src/bin/sync-runner-receiver-unresolved-company.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAkB,MAAM,uBAAuB,CAAC;AACxE,OAAO,EACL,eAAe,GAGhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,0CAA0C,EAAE,MAAM,6BAA6B,CAAC;AAEzF,MAAM,UAAU,GAAG,gCAAgC,CAAC;AACpD,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,kBAAkB,GAAG,CAAC,GAAmB,EAAW,EAAE,CAC1D,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;AAEjF,MAAM,cAAc;IAQW;IAPpB,OAAO,GAAa,EAAE,CAAC;IACvB,iBAAiB,GAGrB,EAAE,CAAC;IACA,SAAS,GAAG,KAAK,CAAC;IAE1B,YAA6B,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;IAAG,CAAC;IAE3D,KAAK,CAAC,cAAc,CAAC,IAKpB;QACC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC;YAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE;gBACrE,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAiD;QACnE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,IAI7B;QACC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,IAIlC;QACC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC1D,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;SACxD,CAAC,CAAC,CAAC,CAAC;QACL,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IAC/B,CAAC;CACF;AAED,SAAS,OAAO,CACd,KAAgB,EAChB,aAAqB,EACrB,uBAAgC;IAEhC,OAAO;QACL,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC;QAC5B,aAAa,EAAE,aAAa;QAC5B,SAAS,EAAE,WAAW,aAAa,EAAE;QACrC,GAAG,CAAC,uBAAuB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,CAAC;KAC9E,CAAC;AACJ,CAAC;AAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAClE,MAAM,WAAW,GAAa,EAAE,CAAC;AAEjC,SAAS,kBAAkB,CAAC,QAAiB;IAC3C,KAAK,MAAM,GAAG,IAAI;QAChB,cAAc;QACd,kBAAkB;QAClB,oBAAoB;QACpB,8BAA8B;KAC/B,EAAE,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC5E,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvD,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,SAAwB,EAAE,WAAmB;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IACpC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;QACpF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,YAAoB,EAAE,cAAsB;IAC7D,OAAO;QACL,YAAY;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,yEAAyE;QACtF,KAAK,EAAE,0BAA0B;QACjC,cAAc,EAAE,aAAa;QAC7B,cAAc,EAAE,WAAW;QAC3B,cAAc;QACd,cAAc,EAAE,0BAA0B;KAC3C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAK9B;IAOC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,WAAW,EAAE,CAAC;YAChB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,cAAc,CAC5B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAC1C,KAAK,EACL,WAAW,KAAK,GAAG,CAAC,EAAE,EACtB,OAAO,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAC7C,CAAC,CACH,CAAC;IACF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,YAAY,GAAe,EAAE,CAAC;IACpC,IAAI,eAAyC,CAAC;IAC9C,MAAM,IAAI,GAAG,iBAAiB,CAC5B,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EACtF;QACE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAC9C,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,IAAI,GAAG,CAAC,CAC9E,CAAC;YACF,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAC/E,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QACD,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7B,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE;gBACL,UAAU,EAAE,oBAAoB;gBAChC,IAAI,EAAE,IAAI,OAAO,CAAQ,GAAG,EAAE,GAAE,CAAC,CAAC;gBAClC,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;aACxB;SACF,CAAC;QACF,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;YACpB,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;YACxB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;YACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SAClB,CAAC;QACF,cAAc,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC;YACvD,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,UAAU;YACpB,GAAG;YACH,WAAW;YACX,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;YACrB,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS;YACpC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE;SAC7E,CAAC;QACF,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;QAC5B,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY;QACxC,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QAChC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QACxC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACnD,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE;YAC5B,eAAe,GAAG,OAAO,CAAC;YAC1B,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;KACF,CACF,CAAC;IAEF,OAAO;QACL,GAAG;QACH,MAAM;QACN,YAAY;QACZ,QAAQ,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE;QACnC,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAS,CAAC,GAAG,EAAE;IACb,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,mBAAmB,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;YAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAChC,CAAC;IACD,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5F,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,EAAE,CAAC,gGAAgG,EAAE,KAAK,IAAI,EAAE;QAC9G,MAAM,MAAM,GAAG;YACb,SAAS,CAAC,6BAA6B,EAAE,CAAC,CAAC;YAC3C,SAAS,CAAC,6BAA6B,EAAE,CAAC,CAAC;SAC5C,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,QAAQ,EAAE,KAAK;YACf,MAAM;YACN,YAAY,EAAE,GAAG,EAAE,CAAC,uBAAuB;YAC3C,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAC;YACjH,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;YAC/D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACxG,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC7C,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,6BAA6B;gBACpC,WAAW,EAAE,OAAO;gBACpB,SAAS,EAAE,CAAC;aACb,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;QAClG,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,CAAC,SAAS,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;YACzD,YAAY,EAAE,GAAG,EAAE,CAAC,uBAAuB;YAC3C,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,0BAA0B,CAAC,CAAC;YACnH,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1G,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC;YAClC,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,CAAC,SAAS,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;YACzD,YAAY,EAAE,GAAG,EAAE,CAAC,uBAAuB;YAC3C,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAC;YACtH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChH,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,KAAK,CAAC,IAAI,CAAC;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC;YACtC,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,CAAC,SAAS,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;YAC1D,YAAY,EAAE,GAAG,EAAE,CAAC,uBAAuB;YAC3C,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAC;YAC1H,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpH,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,SAAS,CAAC,IAAI,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE;gBACN,SAAS,CAAC,oCAAoC,EAAE,CAAC,CAAC;gBAClD,SAAS,CAAC,gCAAgC,EAAE,CAAC,CAAC;aAC/C;YACD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC5D,CAAC,CAAC,uBAAuB;gBACzB,CAAC,CAAC,CAAC;YACL,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/E,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACtC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC3C,MAAM,CAAC,aAAa,KAAK,WAAW,IAAI,MAAM,CAAC,wBAAwB,KAAK,EAAE,CAC/E,EACL,qCAAqC,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;gBAC3C,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB,EAAE,EAAE,EAAE;aAC7D,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;QACN,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;QACnC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,sBAAsB,EAAE;KACjD,CAAC,CAAC,wEAAwE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QAClG,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,QAAQ;YACR,MAAM,EAAE,CAAC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,gBAAgB,EAAE,CAAC,CAAC,CAAC;YAC3F,YAAY,EAAE,GAAG,EAAE,CAAC,uBAAuB;YAC3C,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,gCAAgC,CAAC,CAAC;YACvH,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;gBAC3C,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB,EAAE,EAAE,EAAE;aAC7D,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;QACN,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;QACnC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,sBAAsB,EAAE;KACjD,CAAC,CAAC,sEAAsE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QAChG,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,QAAQ;YACR,MAAM,EAAE,CAAC,SAAS,CAAC,qBAAqB,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,kBAAkB,EAAE,CAAC,CAAC,CAAC;YAC/F,YAAY,EAAE,GAAG,EAAE,CAAC,uBAAuB;SAC5C,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAC;YACtH,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;gBAC3C,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB,EAAE,EAAE,EAAE;aAC7D,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0FAA0F,EAAE,KAAK,IAAI,EAAE;QACxG,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,SAAS,CAAC,iCAAiC,EAAE,CAAC,CAAC;gBAC/C,SAAS,CAAC,8BAA8B,EAAE,CAAC,CAAC;aAC7C;YACD,YAAY,EAAE,GAAG,EAAE,CAAC,uBAAuB;YAC3C,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/E,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,qCAAqC,CAAC,CAAC;YAC5H,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;gBAC3C,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB,EAAE,EAAE,EAAE;aAC7D,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2FAA2F,EAAE,KAAK,IAAI,EAAE;QACzG,MAAM,CAAC,0CAA0C,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,MAAM,CAAC,0CAA0C,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7F,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,SAAS,CAAC,oCAAoC,EAAE,CAAC,CAAC;gBAClD,SAAS,CAAC,gCAAgC,EAAE,CAAC,CAAC;aAC/C;YACD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC5D,CAAC,CAAC,uBAAuB;gBACzB,CAAC,CAAC,CAAC;YACL,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,sCAAsC,CAAC,CAAC;YAC7H,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;gBAC3C,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB,EAAE,EAAE,EAAE;aAC7D,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC"}
|
|
@@ -387,6 +387,7 @@ export declare function publishedContentHashFromJournalEntry(entry: Readonly<Jou
|
|
|
387
387
|
* Pure so the threshold is unit-testable without a watcher or a journal.
|
|
388
388
|
*/
|
|
389
389
|
export declare function shouldQuarantineWatcherDeleteIntents(expandedEntries: number, journalEntries: number): boolean;
|
|
390
|
+
export declare function shouldAcknowledgeParallelUnresolvedCompany(accepted: boolean, exitCode: number): boolean;
|
|
390
391
|
export declare function runOneShotWithOperationLock(argv: string[], parsed: ParsedLoopArgs, deps: RunnerLoopDeps, runtime: WatchLoopRuntime): Promise<number>;
|
|
391
392
|
export declare function runWatchLoop(argv: string[], parsed: ParsedLoopArgs, deps: RunnerLoopDeps, runtime: WatchLoopRuntime): Promise<number>;
|
|
392
393
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-runner-watch-loop.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-watch-loop.ts"],"names":[],"mappings":"AAwBA,OAAO,EAML,KAAK,UAAU,EAEf,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAUL,WAAW,EASZ,MAAM,eAAe,CAAC;AAevB,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AASlC,OAAO,EACL,UAAU,EA0CX,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAEL,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,eAAe,EAIrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAahD,OAAO,KAAK,EACV,yBAAyB,EACzB,SAAS,EAET,cAAc,EACd,iBAAiB,EAElB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-runner-watch-loop.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-watch-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,7 @@ import { InlineSyncWorkerAdapter, } from "../sync/sync-work.js";
|
|
|
35
35
|
import { buildRoutePullArgv, buildScopedPushArgv, buildScopedDrainPullArgv, buildTargetedPullArgv, isWatchRouteSelected, routeChangeToTarget, routeKey, scopePathForRoute, } from "./sync-runner-watch-routes.js";
|
|
36
36
|
import { resolveSkipCompanies } from "./sync-runner-planning.js";
|
|
37
37
|
const FULL_RECONCILE_EVERY_TICKS = 10;
|
|
38
|
+
const warnedUnresolvedReceiverCompanies = new Set();
|
|
38
39
|
/** Maximum time shutdown waits for event-sync startup before abandoning it. */
|
|
39
40
|
export const EVENT_SYNC_STARTUP_SHUTDOWN_WAIT_MS = 5_000;
|
|
40
41
|
/** A deferred full chore must get the next admission after this long. */
|
|
@@ -1318,6 +1319,17 @@ function isBulkIntentOverride() {
|
|
|
1318
1319
|
function passExitCode(outcome) {
|
|
1319
1320
|
return typeof outcome === "number" ? outcome : outcome.exitCode;
|
|
1320
1321
|
}
|
|
1322
|
+
export function shouldAcknowledgeParallelUnresolvedCompany(accepted, exitCode) {
|
|
1323
|
+
return accepted && exitCode === UNRESOLVED_COMPANY_EXIT;
|
|
1324
|
+
}
|
|
1325
|
+
function unresolvedReceiverMessagesWereRedelivered(events, receiveCountsByPath) {
|
|
1326
|
+
return events.every((event) => {
|
|
1327
|
+
const receiveCounts = receiveCountsByPath?.get(event.relativePath);
|
|
1328
|
+
return receiveCounts !== undefined &&
|
|
1329
|
+
receiveCounts.length > 0 &&
|
|
1330
|
+
receiveCounts.every((count) => count !== undefined && Number.isFinite(count) && count >= 2);
|
|
1331
|
+
});
|
|
1332
|
+
}
|
|
1321
1333
|
function targetedReceiverDispatchError(outcome, accepted, authRequiredExitCode) {
|
|
1322
1334
|
const exitCode = passExitCode(outcome);
|
|
1323
1335
|
const result = typeof outcome === "number" ? undefined : outcome.result;
|
|
@@ -3295,6 +3307,18 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
3295
3307
|
};
|
|
3296
3308
|
let receiver = null;
|
|
3297
3309
|
let receiverHasQueuedWork = false;
|
|
3310
|
+
const warnUnresolvedReceiverCompany = (route, pathCount) => {
|
|
3311
|
+
if (route.kind !== "company" ||
|
|
3312
|
+
warnedUnresolvedReceiverCompanies.has(route.slug))
|
|
3313
|
+
return;
|
|
3314
|
+
warnedUnresolvedReceiverCompanies.add(route.slug);
|
|
3315
|
+
(deps.stderr ?? process.stderr).write(`${JSON.stringify({
|
|
3316
|
+
level: "warn",
|
|
3317
|
+
event: "receiver.unresolved-company",
|
|
3318
|
+
companySlug: route.slug,
|
|
3319
|
+
pathCount,
|
|
3320
|
+
})}\n`);
|
|
3321
|
+
};
|
|
3298
3322
|
const onReceiveActivity = (hasMessages) => {
|
|
3299
3323
|
receiverHasQueuedWork = hasMessages;
|
|
3300
3324
|
if (hasMessages)
|
|
@@ -3542,7 +3566,7 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
3542
3566
|
// a known-small event can be slow solely because an earlier event exhausted
|
|
3543
3567
|
// the delivery-wide fast budget.
|
|
3544
3568
|
const receiverLaneByBatch = new WeakMap();
|
|
3545
|
-
const drainParallelReceiverLane = async (lane, laneEvents) => {
|
|
3569
|
+
const drainParallelReceiverLane = async (lane, laneEvents, receiveCountsByPath) => {
|
|
3546
3570
|
const eventsByRoute = new Map();
|
|
3547
3571
|
for (const event of laneEvents) {
|
|
3548
3572
|
const route = routeChangeToTarget(event.relativePath);
|
|
@@ -3556,20 +3580,31 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
3556
3580
|
// Submit every route in this lane before awaiting any result. In
|
|
3557
3581
|
// particular, a later route's fast receipt must never wait for an
|
|
3558
3582
|
// earlier route's slow pull to finish.
|
|
3559
|
-
const
|
|
3583
|
+
const routeGroups = [...eventsByRoute.values()];
|
|
3584
|
+
const completed = await Promise.all(routeGroups.map(({ route, events }) => {
|
|
3560
3585
|
return runRealtimePass("receiver", "pull", events.map((event) => event.relativePath), lane, (slice, telemetry, coordinatorFenced) => {
|
|
3561
3586
|
const slicePaths = slice.paths.map((path) => path.canonicalPath);
|
|
3562
3587
|
const exactFileUpserts = exactUpsertPathsForCoordinatorSlice(events, slicePaths);
|
|
3563
3588
|
return withScopeContentHashesFile(route, events, slicePaths, (contentHashesFile) => runGuarded(buildTargetedPullArgv(route, passArgv, slicePaths, exactFileUpserts, contentHashesFile), undefined, lane, "realtime", lane === "fast", slice.signal, false, telemetry, coordinatorFenced));
|
|
3564
3589
|
});
|
|
3565
3590
|
}));
|
|
3566
|
-
for (const execution of completed) {
|
|
3567
|
-
|
|
3591
|
+
for (const [index, execution] of completed.entries()) {
|
|
3592
|
+
const { route, events } = routeGroups[index];
|
|
3593
|
+
const pathCount = events.length;
|
|
3594
|
+
const exitCode = passExitCode(execution.result);
|
|
3595
|
+
if (shouldAcknowledgeParallelUnresolvedCompany(execution.accepted, exitCode)) {
|
|
3596
|
+
if (!unresolvedReceiverMessagesWereRedelivered(events, receiveCountsByPath)) {
|
|
3597
|
+
throw targetedReceiverDispatchError(execution.result, execution.accepted, runtime.authRequiredPassExit);
|
|
3598
|
+
}
|
|
3599
|
+
warnUnresolvedReceiverCompany(route, pathCount);
|
|
3600
|
+
continue;
|
|
3601
|
+
}
|
|
3602
|
+
if (!execution.accepted || exitCode !== 0) {
|
|
3568
3603
|
throw targetedReceiverDispatchError(execution.result, execution.accepted, runtime.authRequiredPassExit);
|
|
3569
3604
|
}
|
|
3570
3605
|
}
|
|
3571
3606
|
};
|
|
3572
|
-
const receiverSyncBatchFn = async ({ events }) => {
|
|
3607
|
+
const receiverSyncBatchFn = async ({ events, approximateReceiveCountsByPath, }) => {
|
|
3573
3608
|
if (stopped)
|
|
3574
3609
|
return;
|
|
3575
3610
|
// The injectable receiver seam and the production SQS receiver both
|
|
@@ -3587,19 +3622,19 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
3587
3622
|
const lane = receiverLaneByBatch.get(events);
|
|
3588
3623
|
if (lane) {
|
|
3589
3624
|
receiverLaneByBatch.delete(events);
|
|
3590
|
-
await drainParallelReceiverLane(lane, events);
|
|
3625
|
+
await drainParallelReceiverLane(lane, events, approximateReceiveCountsByPath);
|
|
3591
3626
|
return;
|
|
3592
3627
|
}
|
|
3593
3628
|
// Direct embedders may invoke the engine without first going through
|
|
3594
3629
|
// SqsPushReceiver. Preserve that seam while applying the same
|
|
3595
3630
|
// delivery-wide partition the receiver would expose.
|
|
3596
3631
|
const lanes = partitionByKnownSizes(events, receiverEventSize);
|
|
3597
|
-
await drainParallelReceiverLane("fast", lanes.fast);
|
|
3598
|
-
await drainParallelReceiverLane("slow", lanes.slow);
|
|
3632
|
+
await drainParallelReceiverLane("fast", lanes.fast, approximateReceiveCountsByPath);
|
|
3633
|
+
await drainParallelReceiverLane("slow", lanes.slow, approximateReceiveCountsByPath);
|
|
3599
3634
|
return;
|
|
3600
3635
|
}
|
|
3601
3636
|
const lanes = partitionByKnownSizes(events, receiverEventSize);
|
|
3602
|
-
const drainLane = async (lane, laneEvents) => {
|
|
3637
|
+
const drainLane = async (lane, laneEvents, receiveCountsByPath) => {
|
|
3603
3638
|
const eventsByRoute = new Map();
|
|
3604
3639
|
for (const event of laneEvents) {
|
|
3605
3640
|
const route = routeChangeToTarget(event.relativePath);
|
|
@@ -3619,7 +3654,15 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
3619
3654
|
for (const { route, events: routeEvents, upsertPaths } of eventsByRoute.values()) {
|
|
3620
3655
|
const paths = routeEvents.map((event) => event.relativePath);
|
|
3621
3656
|
const result = await withScopeContentHashesFile(route, routeEvents, paths, (contentHashesFile) => runGuarded(buildTargetedPullArgv(route, passArgv, paths, upsertPaths, contentHashesFile), undefined, lane, "realtime"));
|
|
3622
|
-
|
|
3657
|
+
const exitCode = passExitCode(result);
|
|
3658
|
+
if (exitCode === UNRESOLVED_COMPANY_EXIT) {
|
|
3659
|
+
if (!unresolvedReceiverMessagesWereRedelivered(routeEvents, receiveCountsByPath)) {
|
|
3660
|
+
throw targetedReceiverDispatchError(result, true, runtime.authRequiredPassExit);
|
|
3661
|
+
}
|
|
3662
|
+
warnUnresolvedReceiverCompany(route, routeEvents.length);
|
|
3663
|
+
continue;
|
|
3664
|
+
}
|
|
3665
|
+
if (exitCode !== 0) {
|
|
3623
3666
|
throw targetedReceiverDispatchError(result, true, runtime.authRequiredPassExit);
|
|
3624
3667
|
}
|
|
3625
3668
|
}
|
|
@@ -3628,8 +3671,8 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
3628
3671
|
// established slow pass continue while the small scoped pull uses its
|
|
3629
3672
|
// ref-counted lock carve-out; the residue remains serialized and cannot
|
|
3630
3673
|
// starve the slow lane.
|
|
3631
|
-
await drainLane("fast", lanes.fast);
|
|
3632
|
-
await drainLane("slow", lanes.slow);
|
|
3674
|
+
await drainLane("fast", lanes.fast, approximateReceiveCountsByPath);
|
|
3675
|
+
await drainLane("slow", lanes.slow, approximateReceiveCountsByPath);
|
|
3633
3676
|
};
|
|
3634
3677
|
receiverSyncBatchFn.partition = (events) => {
|
|
3635
3678
|
const lanes = partitionByKnownSizes(events, receiverEventSize);
|
|
@@ -3711,20 +3754,6 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
3711
3754
|
if (resolveEventSync(process.env.HQ_SYNC_EVENT_SYNC)) {
|
|
3712
3755
|
const startES = deps.startEventSync ?? defaultStartEventSync;
|
|
3713
3756
|
eventSyncStartup = (async () => {
|
|
3714
|
-
const reportRealtimeStatus = (mode) => {
|
|
3715
|
-
const interval = explicitPollMs;
|
|
3716
|
-
const status = {
|
|
3717
|
-
type: "realtime-mode",
|
|
3718
|
-
mode,
|
|
3719
|
-
...(mode === "poll-only"
|
|
3720
|
-
? {
|
|
3721
|
-
minPollMs: interval ?? ADAPTIVE_POLL_FLOOR_MS,
|
|
3722
|
-
maxPollMs: interval ?? ADAPTIVE_POLL_CEIL_MS,
|
|
3723
|
-
}
|
|
3724
|
-
: {}),
|
|
3725
|
-
};
|
|
3726
|
-
stdout.write(`${JSON.stringify(status)}\n`);
|
|
3727
|
-
};
|
|
3728
3757
|
const eventSyncClient = new VaultClient({
|
|
3729
3758
|
apiUrl: runtime.apiUrl,
|
|
3730
3759
|
authToken: getAccessToken,
|
|
@@ -3753,7 +3782,6 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
3753
3782
|
publishedContentHashStateDir: getStateDir(),
|
|
3754
3783
|
publishedContentHashLookup,
|
|
3755
3784
|
onReceiveActivity,
|
|
3756
|
-
onRealtimeStatus: reportRealtimeStatus,
|
|
3757
3785
|
});
|
|
3758
3786
|
if (!handles)
|
|
3759
3787
|
return;
|