Skip to content

Commit 63d8305

Browse files
committed
fix: prevent nanosecond timestamp overflow in OTLP conversion
1 parent b19cf6d commit 63d8305

3 files changed

Lines changed: 9 additions & 5 deletions

File tree

apps/webapp/app/v3/eventRepository/common.server.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export function extractContextFromCarrier(carrier: Record<string, unknown>) {
2121
}
2222

2323
export function getNowInNanoseconds(): bigint {
24-
return BigInt(new Date().getTime() * 1_000_000);
24+
return convertDateToNanoseconds(new Date());
2525
}
2626

2727
export function getDateFromNanoseconds(nanoseconds: bigint): Date {
@@ -35,7 +35,7 @@ export function calculateDurationFromStart(
3535
) {
3636
const $endtime = typeof endTime === "string" ? new Date(endTime) : endTime;
3737

38-
const duration = Number(BigInt($endtime.getTime() * 1_000_000) - startTime);
38+
const duration = Number(BigInt($endtime.getTime()) * BigInt(1_000_000) - startTime);
3939

4040
if (minimumDuration && duration < minimumDuration) {
4141
return minimumDuration;

apps/webapp/app/v3/eventRepository/index.server.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { logger } from "~/services/logger.server";
1010
import { FEATURE_FLAG } from "../featureFlags";
1111
import { flag } from "../featureFlags.server";
1212
import { getTaskEventStore } from "../taskEventStore.server";
13+
import { convertDateToNanoseconds } from "./common.server";
1314

1415
export function resolveEventRepositoryForStore(store: string | undefined): IEventRepository {
1516
const taskEventStore = store ?? env.EVENT_REPOSITORY_DEFAULT_STORE;
@@ -215,7 +216,7 @@ async function recordRunEvent(
215216
runId: foundRun.friendlyId,
216217
...attributes,
217218
},
218-
startTime: BigInt((startTime?.getTime() ?? Date.now()) * 1_000_000),
219+
startTime: convertDateToNanoseconds(startTime ?? new Date()),
219220
...optionsRest,
220221
});
221222

apps/webapp/app/v3/runEngineHandlers.server.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ import { MetadataTooLargeError } from "~/utils/packets";
1616
import { QueueSizeLimitExceededError } from "~/v3/services/common.server";
1717
import { TriggerTaskService } from "~/v3/services/triggerTask.server";
1818
import { tracer } from "~/v3/tracer.server";
19-
import { createExceptionPropertiesFromError } from "./eventRepository/common.server";
19+
import {
20+
convertDateToNanoseconds,
21+
createExceptionPropertiesFromError,
22+
} from "./eventRepository/common.server";
2023
import {
2124
recordRunDebugLog,
2225
resolveEventRepositoryForStore,
@@ -429,7 +432,7 @@ export function registerRunEngineEventBusHandlers() {
429432
const eventRepository = resolveEventRepositoryForStore(run.taskEventStore);
430433

431434
await eventRepository.recordEvent(retryMessage, {
432-
startTime: BigInt(time.getTime() * 1000000),
435+
startTime: convertDateToNanoseconds(time),
433436
taskSlug: run.taskIdentifier,
434437
environment,
435438
attributes: {

0 commit comments

Comments
 (0)