From d136595d180619d95f6c50c8bf253a1cb68c2c4c Mon Sep 17 00:00:00 2001 From: Danish Arora Date: Mon, 22 Sep 2025 22:51:22 +0530 Subject: [PATCH] chore(sds): allow specifying lookback time range for store query --- .../sdk/src/query_on_connect/query_on_connect.ts | 11 ++++++++++- .../sdk/src/reliable_channel/reliable_channel.ts | 13 ++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/sdk/src/query_on_connect/query_on_connect.ts b/packages/sdk/src/query_on_connect/query_on_connect.ts index f42c2ada91..6ff34b3cc8 100644 --- a/packages/sdk/src/query_on_connect/query_on_connect.ts +++ b/packages/sdk/src/query_on_connect/query_on_connect.ts @@ -26,6 +26,12 @@ export interface QueryOnConnectOptions { * @default [[DEFAULT_FORCE_QUERY_THRESHOLD_MS]] */ forceQueryThresholdMs?: number; + /** + * Maximum lookback window for the initial store query performed by + * QueryOnConnect when a store peer connects. + * @default [[MAX_TIME_RANGE_QUERY_MS]] (24 hours) + */ + maxTimeRangeQueryMs?: number; } export enum QueryOnConnectEvent { @@ -51,6 +57,7 @@ export class QueryOnConnect< private lastSuccessfulQuery: number; private lastTimeOffline: number; private readonly forceQueryThresholdMs: number; + private readonly maxTimeRangeQueryMs: number; public constructor( public decoders: IDecoder[], @@ -67,6 +74,8 @@ export class QueryOnConnect< this.lastTimeOffline = 0; this.forceQueryThresholdMs = options?.forceQueryThresholdMs ?? DEFAULT_FORCE_QUERY_THRESHOLD_MS; + this.maxTimeRangeQueryMs = + options?.maxTimeRangeQueryMs ?? MAX_TIME_RANGE_QUERY_MS; } public start(): void { @@ -140,7 +149,7 @@ export class QueryOnConnect< return calculateTimeRange( Date.now(), this.lastSuccessfulQuery, - MAX_TIME_RANGE_QUERY_MS + this.maxTimeRangeQueryMs ); } diff --git a/packages/sdk/src/reliable_channel/reliable_channel.ts b/packages/sdk/src/reliable_channel/reliable_channel.ts index 713309b90f..6bb83e49bc 100644 --- a/packages/sdk/src/reliable_channel/reliable_channel.ts +++ b/packages/sdk/src/reliable_channel/reliable_channel.ts @@ -111,6 +111,12 @@ export type ReliableChannelOptions = MessageChannelOptions & { * @default 1000 (1 second) */ processTaskMinElapseMs?: number; + /** + * Maximum lookback window for the initial store query performed by + * QueryOnConnect when a store peer connects. + * @default 24h + */ + initialQueryLookbackMs?: number; }; /** @@ -190,7 +196,12 @@ export class ReliableChannel< [this.decoder], peerManagerEvents, node.events, - this._retrieve.bind(this) + this._retrieve.bind(this), + { + maxTimeRangeQueryMs: options?.initialQueryLookbackMs, + // Keep existing default unless user overrides + forceQueryThresholdMs: undefined + } ); } }