@clickhouse/client 1.18.2-head.d329e47.1 → 1.18.2-head.e5e3fc4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/config.d.ts CHANGED
@@ -17,6 +17,11 @@ export type NodeClickHouseClientConfigOptions = BaseClickHouseClientConfigOption
17
17
  * When set to `0`, the idle socket management feature is disabled.
18
18
  * @default 2500 */
19
19
  idle_socket_ttl?: number;
20
+ /** Eagerly destroy the sockets that are considered stale (idle for more than `idle_socket_ttl`),
21
+ * without waiting for the timeout to trigger. This allows freeing up stale sockets
22
+ * in case of longer event loop delays.
23
+ * @default false */
24
+ eagerly_destroy_stale_sockets?: boolean;
20
25
  };
21
26
  /** Custom HTTP agent to use for the outgoing HTTP(s) requests.
22
27
  * If set, {@link BaseClickHouseClientConfigOptions.max_open_connections}, {@link tls} and {@link keep_alive}
package/dist/config.js CHANGED
@@ -62,6 +62,7 @@ exports.NodeConfigImpl = {
62
62
  connection_params: params,
63
63
  set_basic_auth_header: nodeConfig.set_basic_auth_header ?? true,
64
64
  capture_enhanced_stack_trace: nodeConfig.capture_enhanced_stack_trace ?? false,
65
+ eagerly_destroy_stale_sockets: nodeConfig.keep_alive?.eagerly_destroy_stale_sockets ?? false,
65
66
  http_agent: nodeConfig.http_agent,
66
67
  keep_alive,
67
68
  tls,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,9 @@ export interface CreateConnectionParams {
9
9
  http_agent: http.Agent | https.Agent | undefined;
10
10
  set_basic_auth_header: boolean;
11
11
  capture_enhanced_stack_trace: boolean;
12
+ eagerly_destroy_stale_sockets?: boolean;
12
13
  }
13
14
  /** A factory for easier mocking after Node.js 22.18 */
14
15
  export declare class NodeConnectionFactory {
15
- static create({ connection_params, tls, keep_alive, http_agent, set_basic_auth_header, capture_enhanced_stack_trace, }: CreateConnectionParams): NodeBaseConnection;
16
+ static create({ connection_params, tls, keep_alive, http_agent, set_basic_auth_header, capture_enhanced_stack_trace, eagerly_destroy_stale_sockets, }: CreateConnectionParams): NodeBaseConnection;
16
17
  }
@@ -7,7 +7,7 @@ const node_https_connection_1 = require("./node_https_connection");
7
7
  /** A factory for easier mocking after Node.js 22.18 */
8
8
  // eslint-disable-next-line @typescript-eslint/no-extraneous-class
9
9
  class NodeConnectionFactory {
10
- static create({ connection_params, tls, keep_alive, http_agent, set_basic_auth_header, capture_enhanced_stack_trace, }) {
10
+ static create({ connection_params, tls, keep_alive, http_agent, set_basic_auth_header, capture_enhanced_stack_trace, eagerly_destroy_stale_sockets = false, }) {
11
11
  if (http_agent !== undefined) {
12
12
  return new node_custom_agent_connection_1.NodeCustomAgentConnection({
13
13
  ...connection_params,
@@ -15,6 +15,7 @@ class NodeConnectionFactory {
15
15
  capture_enhanced_stack_trace,
16
16
  keep_alive, // only used to enforce proper KeepAlive headers
17
17
  http_agent,
18
+ eagerly_destroy_stale_sockets,
18
19
  });
19
20
  }
20
21
  switch (connection_params.url.protocol) {
@@ -24,6 +25,7 @@ class NodeConnectionFactory {
24
25
  set_basic_auth_header,
25
26
  capture_enhanced_stack_trace,
26
27
  keep_alive,
28
+ eagerly_destroy_stale_sockets,
27
29
  });
28
30
  case 'https:':
29
31
  return new node_https_connection_1.NodeHttpsConnection({
@@ -32,6 +34,7 @@ class NodeConnectionFactory {
32
34
  capture_enhanced_stack_trace,
33
35
  keep_alive,
34
36
  tls,
37
+ eagerly_destroy_stale_sockets,
35
38
  });
36
39
  default:
37
40
  throw new Error('Only HTTP and HTTPS protocols are supported');
@@ -1 +1 @@
1
- {"version":3,"file":"create_connection.js","sourceRoot":"","sources":["../../src/connection/create_connection.ts"],"names":[],"mappings":";;;AAOA,iFAA0E;AAC1E,iEAA2D;AAC3D,mEAA6D;AAW7D,uDAAuD;AACvD,kEAAkE;AAClE,MAAa,qBAAqB;IAChC,MAAM,CAAC,MAAM,CAAC,EACZ,iBAAiB,EACjB,GAAG,EACH,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,4BAA4B,GACL;QACvB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,wDAAyB,CAAC;gBACnC,GAAG,iBAAiB;gBACpB,qBAAqB;gBACrB,4BAA4B;gBAC5B,UAAU,EAAE,gDAAgD;gBAC5D,UAAU;aACX,CAAC,CAAA;QACJ,CAAC;QACD,QAAQ,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACvC,KAAK,OAAO;gBACV,OAAO,IAAI,yCAAkB,CAAC;oBAC5B,GAAG,iBAAiB;oBACpB,qBAAqB;oBACrB,4BAA4B;oBAC5B,UAAU;iBACX,CAAC,CAAA;YACJ,KAAK,QAAQ;gBACX,OAAO,IAAI,2CAAmB,CAAC;oBAC7B,GAAG,iBAAiB;oBACpB,qBAAqB;oBACrB,4BAA4B;oBAC5B,UAAU;oBACV,GAAG;iBACJ,CAAC,CAAA;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;CACF;AAtCD,sDAsCC"}
1
+ {"version":3,"file":"create_connection.js","sourceRoot":"","sources":["../../src/connection/create_connection.ts"],"names":[],"mappings":";;;AAOA,iFAA0E;AAC1E,iEAA2D;AAC3D,mEAA6D;AAY7D,uDAAuD;AACvD,kEAAkE;AAClE,MAAa,qBAAqB;IAChC,MAAM,CAAC,MAAM,CAAC,EACZ,iBAAiB,EACjB,GAAG,EACH,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,GAAG,KAAK,GACd;QACvB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,wDAAyB,CAAC;gBACnC,GAAG,iBAAiB;gBACpB,qBAAqB;gBACrB,4BAA4B;gBAC5B,UAAU,EAAE,gDAAgD;gBAC5D,UAAU;gBACV,6BAA6B;aAC9B,CAAC,CAAA;QACJ,CAAC;QACD,QAAQ,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACvC,KAAK,OAAO;gBACV,OAAO,IAAI,yCAAkB,CAAC;oBAC5B,GAAG,iBAAiB;oBACpB,qBAAqB;oBACrB,4BAA4B;oBAC5B,UAAU;oBACV,6BAA6B;iBAC9B,CAAC,CAAA;YACJ,KAAK,QAAQ;gBACX,OAAO,IAAI,2CAAmB,CAAC;oBAC7B,GAAG,iBAAiB;oBACpB,qBAAqB;oBACrB,4BAA4B;oBAC5B,UAAU;oBACV,GAAG;oBACH,6BAA6B;iBAC9B,CAAC,CAAA;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;CACF;AA1CD,sDA0CC"}
@@ -1,9 +1,10 @@
1
- import type { ConnBaseQueryParams, ConnCommandResult, Connection, ConnectionParams, ConnExecParams, ConnExecResult, ConnInsertParams, ConnInsertResult, ConnPingResult, ConnQueryResult, LogWriter } from '@clickhouse/client-common';
1
+ import type { ConnBaseQueryParams, ConnCommandResult, Connection, ConnectionParams, ConnExecParams, ConnExecResult, ConnInsertParams, ConnInsertResult, ConnPingResult, ConnQueryResult } from '@clickhouse/client-common';
2
2
  import { ClickHouseLogLevel } from '@clickhouse/client-common';
3
3
  import { type ConnPingParams } from '@clickhouse/client-common';
4
4
  import type Http from 'http';
5
5
  import type Https from 'node:https';
6
- import Stream from 'stream';
6
+ import type Stream from 'stream';
7
+ import { type RequestParams } from './socket_pool';
7
8
  export type NodeConnectionParams = ConnectionParams & {
8
9
  tls?: TLSParams;
9
10
  http_agent?: Http.Agent | Https.Agent;
@@ -14,6 +15,10 @@ export type NodeConnectionParams = ConnectionParams & {
14
15
  idle_socket_ttl: number;
15
16
  };
16
17
  log_level: ClickHouseLogLevel;
18
+ /**
19
+ * Eagerly destroy the sockets that are considered stale (idle for more than `idle_socket_ttl`), without waiting for the timeout to trigger. This allows to free up the stale sockets in case of longer event loop delays.
20
+ */
21
+ eagerly_destroy_stale_sockets: boolean;
17
22
  };
18
23
  export type TLSParams = {
19
24
  ca_cert: Buffer;
@@ -24,34 +29,13 @@ export type TLSParams = {
24
29
  key: Buffer;
25
30
  type: 'Mutual';
26
31
  };
27
- export interface RequestParams {
28
- method: 'GET' | 'POST';
29
- url: URL;
30
- headers: Http.OutgoingHttpHeaders;
31
- body?: string | Stream.Readable;
32
- abort_signal: AbortSignal;
33
- enable_response_compression?: boolean;
34
- enable_request_compression?: boolean;
35
- try_decompress_response_stream?: boolean;
36
- ignore_error_response?: boolean;
37
- parse_summary?: boolean;
38
- query: string;
39
- query_id: string;
40
- log_writer: LogWriter;
41
- log_level: ClickHouseLogLevel;
42
- }
43
32
  export declare abstract class NodeBaseConnection implements Connection<Stream.Readable> {
44
33
  protected readonly params: NodeConnectionParams;
45
34
  protected readonly agent: Http.Agent;
46
35
  protected readonly defaultAuthHeader: string;
47
36
  protected readonly defaultHeaders: Http.OutgoingHttpHeaders;
48
- private readonly jsonHandling;
49
- private readonly knownSockets;
50
37
  private readonly connectionId;
51
- private socketCounter;
52
- private requestCounter;
53
- private getNewSocketId;
54
- private getNewRequestId;
38
+ private readonly socketPool;
55
39
  protected constructor(params: NodeConnectionParams, agent: Http.Agent);
56
40
  ping(params: ConnPingParams): Promise<ConnPingResult>;
57
41
  query(params: ConnBaseQueryParams): Promise<ConnQueryResult<Stream.Readable>>;
@@ -66,7 +50,6 @@ export declare abstract class NodeBaseConnection implements Connection<Stream.Re
66
50
  private getAbortController;
67
51
  private logRequestError;
68
52
  private httpRequestErrorMessage;
69
- private parseSummary;
70
53
  private runExec;
71
54
  private request;
72
55
  }