From 9ee8626f9620a58177e86e2273a7641ba0f65934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Thu, 18 Jul 2024 21:16:07 +0200 Subject: [PATCH] add retry if timeout error for clickhouse --- packages/db/src/buffers/buffer.ts | 2 +- packages/db/src/clickhouse-client.ts | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/db/src/buffers/buffer.ts b/packages/db/src/buffers/buffer.ts index 20c8d61b..0b02e923 100644 --- a/packages/db/src/buffers/buffer.ts +++ b/packages/db/src/buffers/buffer.ts @@ -29,7 +29,7 @@ const getError = (e: unknown) => { 'Name: ' + e.name, 'Message: ' + e.message, 'Stack: ' + e.stack, - 'Cause: ' + e.cause, + 'Cause: ' + (e.cause ? String(e.cause) : ''), ].join('\n'); } return 'Unknown error'; diff --git a/packages/db/src/clickhouse-client.ts b/packages/db/src/clickhouse-client.ts index c9615674..0581fcf1 100644 --- a/packages/db/src/clickhouse-client.ts +++ b/packages/db/src/clickhouse-client.ts @@ -7,9 +7,10 @@ export const originalCh = createClient({ password: process.env.CLICKHOUSE_PASSWORD, database: process.env.CLICKHOUSE_DB, max_open_connections: 10, + request_timeout: 10000, keep_alive: { enabled: true, - idle_socket_ttl: 5000, + idle_socket_ttl: 8000, }, compression: { request: true, @@ -29,10 +30,11 @@ export const ch = new Proxy(originalCh, { } catch (error: unknown) { if ( error instanceof Error && - error.message.includes('socket hang up') + (error.message.includes('socket hang up') || + error.message.includes('Timeout error')) ) { - console.error( - `Caught socket hang up error on ${property.toString()}, retrying once.` + console.info( + `Caught ${error.message} error on ${property.toString()}, retrying once.` ); await new Promise((resolve) => setTimeout(resolve, 500)); try {