This commit is contained in:
2026-04-17 17:15:33 -04:00
parent c8fa99c6d2
commit 6f118107d9
16 changed files with 128 additions and 18 deletions

View File

@@ -129,7 +129,7 @@ export class Authenticator {
'Container is ready'
);
const sessionId = `tg_${telegramUserId}_${Date.now()}`;
const sessionId = `tg_${telegramUserId}`;
return {
userId,

View File

@@ -248,7 +248,7 @@ export class TelegramHandler {
* Clean up sessions that have been idle longer than maxAgeMs.
* Triggers Iceberg flush for each expired session via harness.cleanup().
*/
async cleanupSessions(maxAgeMs = 30 * 60 * 1000): Promise<void> {
async cleanupSessions(maxAgeMs = 2 * 60 * 60 * 1000): Promise<void> {
const now = Date.now();
const expired: string[] = [];

View File

@@ -511,13 +511,18 @@ export class WebSocketHandler {
hasSymbolIndexService: !!symbolIndexService
}, 'Service availability');
const requestId = payload.request_id || randomUUID();
if (!ohlcService && !symbolIndexService) {
logger.warn('No datafeed services available');
logger.warn({ requestId }, 'No datafeed services available yet');
socket.send(JSON.stringify({
type: 'error',
request_id: requestId,
error_message: 'Services initializing, please retry',
}));
return;
}
const requestId = payload.request_id || randomUUID();
try {
switch (payload.type) {
case 'get_config': {

View File

@@ -14,7 +14,7 @@ import type { FastifyBaseLogger } from 'fastify';
* Iceberg for durable storage with time-travel capabilities.
*/
export class TieredCheckpointSaver extends BaseCheckpointSaver<number> {
private readonly HOT_TTL_SECONDS = 3600; // 1 hour
private readonly HOT_TTL_SECONDS = 86400; // 24 hours
private readonly KEY_PREFIX = 'ckpt:';
constructor(

View File

@@ -30,7 +30,7 @@ export interface StoredMessage {
*/
export class ConversationStore {
private readonly HOT_MESSAGE_LIMIT = 50; // Redis buffer ceiling
private readonly HOT_TTL_SECONDS = 3600; // 1 hour
private readonly HOT_TTL_SECONDS = 86400; // 24 hours
constructor(
private redis: Redis,