fix workbench otel http span timing (#1815)
This commit is contained in:
@@ -124,6 +124,13 @@ export async function handleWorkbenchRealtimeHttp(request, response, url, option
|
||||
const activeTraceId = requestedTraceId
|
||||
?? safeTraceId(initialSession?.lastTraceId ?? initialSessionSnapshot.lastTraceId ?? initialSessionSnapshot.currentTraceId)
|
||||
?? null;
|
||||
attachWorkbenchRealtimeOtelContext(request, {
|
||||
sessionId: streamSessionId ?? requestedSessionId,
|
||||
traceId: activeTraceId,
|
||||
threadId: streamThreadId,
|
||||
heartbeatMs,
|
||||
outboxMode: typeof (options.runtimeStore ?? null)?.readWorkbenchProjectionOutbox === "function"
|
||||
});
|
||||
if (activeTraceId) {
|
||||
await (perf ? perf.measure("workbench_initial_trace", () => writeTraceRealtimeSnapshot({ writeEvent, options, actor: auth.actor, traceId: activeTraceId, reason: "initial" })) : writeTraceRealtimeSnapshot({ writeEvent, options, actor: auth.actor, traceId: activeTraceId, reason: "initial" }));
|
||||
const runtimeStore = options.runtimeStore ?? null;
|
||||
@@ -222,6 +229,22 @@ export async function handleWorkbenchRealtimeHttp(request, response, url, option
|
||||
});
|
||||
}
|
||||
|
||||
function attachWorkbenchRealtimeOtelContext(request, fields = {}) {
|
||||
const context = request?.hwlabHttpRequestContext;
|
||||
if (!context) return;
|
||||
context.route = "/v1/workbench/events";
|
||||
context.otelAttributes = {
|
||||
...(context.otelAttributes ?? {}),
|
||||
"workbench.route": "events",
|
||||
"workbench.session_id": fields.sessionId ?? null,
|
||||
traceId: fields.traceId ?? null,
|
||||
"workbench.trace_id": fields.traceId ?? null,
|
||||
"workbench.thread_id": fields.threadId ?? null,
|
||||
"workbench.sse.heartbeat_ms": fields.heartbeatMs ?? null,
|
||||
"workbench.sse.outbox_mode": fields.outboxMode === true
|
||||
};
|
||||
}
|
||||
|
||||
function realtimeEventCreatedAt(payload) {
|
||||
const candidates = [payload?.event?.createdAt, payload?.snapshot?.lastEvent?.createdAt, payload?.turn?.updatedAt];
|
||||
for (const value of candidates) {
|
||||
|
||||
Reference in New Issue
Block a user