From f27aa538a6fe8c3f0b2b89a4a43a94c6215a07a0 Mon Sep 17 00:00:00 2001 From: deepshekhardas Date: Fri, 22 May 2026 11:54:56 +0530 Subject: [PATCH] fix: null-safe getTime() calls in replication services (#3519) Add optional chaining to getTime() calls on createdAt, updatedAt fields in runs and sessions replication services. When CDC sends rows before timestamps are fully populated, calling .getTime() on undefined crashes the replication service with a TypeError. - runsReplicationService.server.ts: null-safe updatedAt/createdAt in #prepareTaskRunInsert and #preparePayloadInsert - sessionsReplicationService.server.ts: null-safe createdAt/updatedAt in toSessionInsertArray --- apps/webapp/app/services/runsReplicationService.server.ts | 6 +++--- .../app/services/sessionsReplicationService.server.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/webapp/app/services/runsReplicationService.server.ts b/apps/webapp/app/services/runsReplicationService.server.ts index 167564572eb..6b2437cf3db 100644 --- a/apps/webapp/app/services/runsReplicationService.server.ts +++ b/apps/webapp/app/services/runsReplicationService.server.ts @@ -875,8 +875,8 @@ export class RunsReplicationService { organizationId, // organization_id run.projectId, // project_id run.id, // run_id - run.updatedAt.getTime(), // updated_at - run.createdAt.getTime(), // created_at + run.updatedAt?.getTime() ?? Date.now(), // updated_at + run.createdAt?.getTime() ?? Date.now(), // created_at run.status, // status environmentType, // environment_type run.friendlyId, // friendly_id @@ -936,7 +936,7 @@ export class RunsReplicationService { // Return array matching PAYLOAD_COLUMNS order return [ run.id, // run_id - run.createdAt.getTime(), // created_at + run.createdAt?.getTime() ?? Date.now(), // created_at payload, // payload ]; } diff --git a/apps/webapp/app/services/sessionsReplicationService.server.ts b/apps/webapp/app/services/sessionsReplicationService.server.ts index f7f384faffc..1dde83c01b9 100644 --- a/apps/webapp/app/services/sessionsReplicationService.server.ts +++ b/apps/webapp/app/services/sessionsReplicationService.server.ts @@ -750,8 +750,8 @@ function toSessionInsertArray( session.closedAt ? session.closedAt.getTime() : null, session.closedReason ?? "", session.expiresAt ? session.expiresAt.getTime() : null, - session.createdAt.getTime(), - session.updatedAt.getTime(), + session.createdAt?.getTime() ?? Date.now(), + session.updatedAt?.getTime() ?? Date.now(), version.toString(), isDeleted ? 1 : 0, ];