From 9da9c019086b289dd22dc8fa4235c6db6a846147 Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Tue, 5 Sep 2023 09:30:21 -0700 Subject: [PATCH] Debug tracing: include session and anonymous ids This adds session ids and anonymous ids to trace metadata. Note: This required setting `session`id on the `Telemetry` object as a public property. Set as readonly. --- packages/next/src/telemetry/storage.ts | 3 ++- packages/next/src/trace/trace-uploader.ts | 11 +++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/next/src/telemetry/storage.ts b/packages/next/src/telemetry/storage.ts index f341ae84b39d2..485776c709e41 100644 --- a/packages/next/src/telemetry/storage.ts +++ b/packages/next/src/telemetry/storage.ts @@ -58,9 +58,10 @@ function getStorageDirectory(distDir: string): string | undefined { } export class Telemetry { + readonly sessionId: string + private conf: Conf | null private distDir: string - private sessionId: string private loadProjectId: undefined | string | Promise private NEXT_TELEMETRY_DISABLED: any private NEXT_TELEMETRY_DEBUG: any diff --git a/packages/next/src/trace/trace-uploader.ts b/packages/next/src/trace/trace-uploader.ts index 3de3e16f13a1d..f6753ed636a57 100644 --- a/packages/next/src/trace/trace-uploader.ts +++ b/packages/next/src/trace/trace-uploader.ts @@ -8,6 +8,7 @@ import os from 'os' import { createInterface } from 'readline' import { createReadStream } from 'fs' import path from 'path' +import { Telemetry } from '../telemetry/storage' // Predefined set of the event names to be included in the trace. // If the trace span's name matches to one of the event names in the set, @@ -52,14 +53,16 @@ interface TraceEvent { } interface TraceMetadata { + anonymousId: string arch: string commit: string cpus: number + isTurboSession: boolean mode: string + nextVersion: string pkgName: string platform: string - isTurboSession: boolean - nextVersion: string + sessionId: string } ;(async function upload() { @@ -70,6 +73,8 @@ interface TraceMetadata { ) ).version + const telemetry = new Telemetry({ distDir }) + const projectPkgJsonPath = await findUp('package.json') assert(projectPkgJsonPath) @@ -125,6 +130,7 @@ interface TraceMetadata { const body: TraceRequestBody = { metadata: { + anonymousId: telemetry.anonymousId, arch: os.arch(), commit, cpus: os.cpus().length, @@ -133,6 +139,7 @@ interface TraceMetadata { nextVersion, pkgName, platform: os.platform(), + sessionId: telemetry.sessionId, }, traces: [...traces.values()], }