add retry if timeout error for clickhouse
This commit is contained in:
@@ -29,7 +29,7 @@ const getError = (e: unknown) => {
|
|||||||
'Name: ' + e.name,
|
'Name: ' + e.name,
|
||||||
'Message: ' + e.message,
|
'Message: ' + e.message,
|
||||||
'Stack: ' + e.stack,
|
'Stack: ' + e.stack,
|
||||||
'Cause: ' + e.cause,
|
'Cause: ' + (e.cause ? String(e.cause) : ''),
|
||||||
].join('\n');
|
].join('\n');
|
||||||
}
|
}
|
||||||
return 'Unknown error';
|
return 'Unknown error';
|
||||||
|
|||||||
@@ -7,9 +7,10 @@ export const originalCh = createClient({
|
|||||||
password: process.env.CLICKHOUSE_PASSWORD,
|
password: process.env.CLICKHOUSE_PASSWORD,
|
||||||
database: process.env.CLICKHOUSE_DB,
|
database: process.env.CLICKHOUSE_DB,
|
||||||
max_open_connections: 10,
|
max_open_connections: 10,
|
||||||
|
request_timeout: 10000,
|
||||||
keep_alive: {
|
keep_alive: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
idle_socket_ttl: 5000,
|
idle_socket_ttl: 8000,
|
||||||
},
|
},
|
||||||
compression: {
|
compression: {
|
||||||
request: true,
|
request: true,
|
||||||
@@ -29,10 +30,11 @@ export const ch = new Proxy(originalCh, {
|
|||||||
} catch (error: unknown) {
|
} catch (error: unknown) {
|
||||||
if (
|
if (
|
||||||
error instanceof Error &&
|
error instanceof Error &&
|
||||||
error.message.includes('socket hang up')
|
(error.message.includes('socket hang up') ||
|
||||||
|
error.message.includes('Timeout error'))
|
||||||
) {
|
) {
|
||||||
console.error(
|
console.info(
|
||||||
`Caught socket hang up error on ${property.toString()}, retrying once.`
|
`Caught ${error.message} error on ${property.toString()}, retrying once.`
|
||||||
);
|
);
|
||||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user