[Bug Report] Observability

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:

  1. 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.
  2. 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?
  3. 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.
  4. 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

Thanks for sharing these. I’m not an expert on session tracing, so I’ll have to ask the team for help.

If you’re comfortable sharing more details, having the project ID where you saw the issue and screenshots of what you see would be helpful :folded_hands:

I can share these in private, they contain specific information to our product. I would also be available to jump on a call with an engineer, then I could show code and traces.

I reached out in a DM so you can share more details