Hey,
Thanks for the customer workshop about Observability customers. We are now Observability customers. I’ve found three potential bugs, or at least behavior that feels weird to me:
- Spans vanishing: After running a page trace: Sometimes spans of a function just don’t show up. The function terminates but all or some spans are missing. Running a page trace for the same page multiple times in a row gives me different subsets of traces.
- Triggering another deployment?: When I run “Run Page Trace” from the Vercel Toolbar I noticed that I got traces from a previous deployment version (commit). Could it be that the “Run Page Trace” can accidentally be linked to old Serverless instances?
- Session ID filter not working: When I start a tracing session, end it and then view previous session traces it will pre-fill a session id in the logs filters. But it doesn’t seem to have an effect. I see logs from 10-20 minutes ago, which can definitely not be part of the last tracing session.
- One specific page takes 11s to load (lots of data) but when I trace it, the traces tell me that the page is ready in 3s. Something is odd here.
Seems like there are a few things you need to iron out. Otherwise great product, easy to setup.
Here is how I’m using traces, I think it’s right, but maybe I made a mistake:
import { trace } from "@opentelemetry/api";
const tracer = trace.getTracer("example-tracer");
export async function exampleFunction() {
return tracer.startActiveSpan("span-main", async (mainSpan) => {
const a = exampleCallA();
const b = await tracer.startActiveSpan("span-a", async (span) => {
const result = exampleCallB();
span.end();
return result;
});
const c = await tracer.startActiveSpan("span-b", async (span) => {
const result = exampleCallC();
span.end();
return result;
});
const d = tracer.startActiveSpan("span-c", (span) => {
const result = exampleCallD();
span.end();
return result;
});
const e = tracer.startActiveSpan("span-d", (span) => {
const result = exampleCallE();
span.end();
return result;
});
const f = tracer.startActiveSpan("span-e", (span) => {
const result = exampleCallF();
span.end();
return result;
});
const g = tracer.startActiveSpan("span-f", (span) => {
const result = exampleCallG();
span.end();
return result;
});
const h = tracer.startActiveSpan("span-final", (span) => {
const result = exampleCallH();
span.end();
return result;
});
mainSpan.end();
return h;
});
}
Implementation details removed and anonymized with ChatGPT.
Cheers