fix: 披露 Workbench Kafka 重放耗时

This commit is contained in:
root
2026-07-20 04:05:43 +02:00
parent 7680a7c3bd
commit 48d51f6924
3 changed files with 71 additions and 14 deletions
@@ -758,17 +758,34 @@ async function handleKafkaRefreshReplayWorkbenchRealtimeHttp(request, response,
liveBufferLimit: refreshReplay.liveBufferLimit,
identityWindowLimit: refreshReplay.matchedEventLimit + refreshReplay.liveBufferLimit,
subscribeLive: (listener) => bridge.subscribeLiveHwlabEvents(listener),
queryRetention: ({ signal }) => bridge.queryHwlabEventRetention({
sessionId: requestedSessionId,
traceId: requestedTraceId,
limit: refreshReplay.matchedEventLimit,
scanLimit: refreshReplay.scanLimit,
timeoutMs: refreshReplay.timeoutMs,
groupIdPrefix: refreshReplay.groupIdPrefix,
partitionKey: requestedSessionId,
fromBeginning: true,
signal
}),
queryRetention: async ({ signal }) => {
const result = await bridge.queryHwlabEventRetention({
sessionId: requestedSessionId,
traceId: requestedTraceId,
limit: refreshReplay.matchedEventLimit,
scanLimit: refreshReplay.scanLimit,
timeoutMs: refreshReplay.timeoutMs,
groupIdPrefix: refreshReplay.groupIdPrefix,
partitionKey: requestedSessionId,
fromBeginning: true,
signal
});
(options.logger ?? console).log(JSON.stringify({
code: "workbench-kafka-refresh-query",
component: "hwlab-workbench-realtime",
sessionId: requestedSessionId,
traceId: requestedTraceId,
completionReason: result?.completionReason ?? null,
complete: result?.completion?.complete === true,
scannedCount: result?.scannedCount ?? null,
matchedCount: result?.matchedCount ?? null,
partitionKeyScoped: result?.partitionKeyScoped === true,
targetPartition: result?.targetPartition ?? null,
timing: result?.timing ?? null,
valuesPrinted: false
}));
return result;
},
deliverEvent: (envelope, transport) => enqueueEvent("hwlab.event.v1", envelope, transport),
deliverConnected: (summary) => enqueueEvent("workbench.connected", {
type: "connected",
+14 -1
View File
@@ -132,7 +132,20 @@ describe("Workbench native HTTP adapter", () => {
], {});
for (let index = 0; index < 20 && subscribers.size === 0; index += 1) await Bun.sleep(5);
for (const listener of subscribers) listener({ schema: "hwlab.event.v1", sessionId: "ses_l0_sse", traceId: "trc_l0_sse", event: { type: "backend", eventType: "backend", label: "agentrun:backend:command-created" } });
expect(await pending).toMatchObject({ ok: true, operation: "events.inspect", connected: true, eventCount: 1, eventTypes: ["backend"] });
expect(await pending).toMatchObject({
ok: true,
operation: "events.inspect",
connected: true,
connectedContract: {
deliverySemantics: "live-only",
realtimeSource: "hwlab.event.v1",
replay: false,
liveOnly: true,
refreshReplay: null
},
eventCount: 1,
eventTypes: ["backend"]
});
} finally {
server.stop(true);
await app.close();