diff --git a/src/app/functions/server/getExperimentationId.ts b/src/app/functions/server/getExperimentationId.ts index 6e03a6efcea..0da2fadcf3d 100644 --- a/src/app/functions/server/getExperimentationId.ts +++ b/src/app/functions/server/getExperimentationId.ts @@ -28,6 +28,12 @@ export function getExperimentationId( // If the user is logged in, use the Subscriber ID. const namespace = process.env.NIMBUS_UUID_NAMESPACE; if (!namespace) { + logger.error( + "NIMBUS_UUID_NAMESPACE environment variable is missing. Cannot generate experimentationId.", + { + accountId, + }, + ); throw new Error( "NIMBUS_UUID_NAMESPACE not set, cannot create experimentationId", ); @@ -47,6 +53,9 @@ export function getExperimentationId( ); return "guest-no-experimentation-id-set-by-monitor-middleware"; } + logger.info("Using experimentationId from header for guest user", { + experimentationId, + }); return experimentationId as ExperimentationId; } } diff --git a/src/app/functions/server/getExperiments.ts b/src/app/functions/server/getExperiments.ts index 66dc85ff271..d1bfa29e4c6 100644 --- a/src/app/functions/server/getExperiments.ts +++ b/src/app/functions/server/getExperiments.ts @@ -50,6 +50,12 @@ export async function getExperiments(params: { serverUrl.searchParams.set("nimbus_preview", "true"); } + logger.info("Sending request to Cirrus", { + serverUrl: serverUrl.toString(), + previewMode: params.previewMode, + client_id: params.experimentationId, + }); + const response = await fetch(serverUrl, { headers: { "Content-Type": "application/json", @@ -65,6 +71,14 @@ export async function getExperiments(params: { }), }); + if (!response.ok) { + logger.error("Cirrus request failed", { + status: response.status, + url: serverUrl.toString(), + }); + throw new Error(`Cirrus request failed: ${response.statusText}`); + } + const json = await response.json(); let experimentData; @@ -76,7 +90,12 @@ export async function getExperiments(params: { return (experimentData as ExperimentData) ?? defaultExperimentData; } catch (ex) { - logger.error("Could not connect to Cirrus", { serverUrl, ex }); + logger.error("Could not connect to Cirrus", { + serverUrl, + ex, + flags, + params, + }); captureException(ex); return defaultExperimentData; } diff --git a/src/middleware.ts b/src/middleware.ts index b713ef80b39..a8f4dac7b1e 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -5,6 +5,7 @@ import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; import nextConfig from "../next.config"; +import { logger } from "./app/functions/server/logging"; // This function can be marked `async` if using `await` inside export function middleware(request: NextRequest) { @@ -49,6 +50,7 @@ export function middleware(request: NextRequest) { value: experimentationId, path: "/", }); + logger.info("Set experimentation ID cookie", { experimentationId }); } return response;