@cubejs-backend/query-orchestrator 1.3.43 → 1.3.44

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.
Files changed (33) hide show
  1. package/dist/src/orchestrator/LocalQueueDriver.d.ts +7 -122
  2. package/dist/src/orchestrator/LocalQueueDriver.d.ts.map +1 -1
  3. package/dist/src/orchestrator/LocalQueueDriver.js +12 -319
  4. package/dist/src/orchestrator/LocalQueueDriver.js.map +1 -1
  5. package/dist/src/orchestrator/LocalQueueDriverConnection.d.ts +70 -0
  6. package/dist/src/orchestrator/LocalQueueDriverConnection.d.ts.map +1 -0
  7. package/dist/src/orchestrator/LocalQueueDriverConnection.js +235 -0
  8. package/dist/src/orchestrator/LocalQueueDriverConnection.js.map +1 -0
  9. package/dist/src/orchestrator/PreAggregationLoadCache.d.ts +3 -0
  10. package/dist/src/orchestrator/PreAggregationLoadCache.d.ts.map +1 -1
  11. package/dist/src/orchestrator/PreAggregationLoader.d.ts.map +1 -1
  12. package/dist/src/orchestrator/PreAggregationLoader.js +3 -1
  13. package/dist/src/orchestrator/PreAggregationLoader.js.map +1 -1
  14. package/dist/src/orchestrator/PreAggregations.d.ts +2 -2
  15. package/dist/src/orchestrator/PreAggregations.d.ts.map +1 -1
  16. package/dist/src/orchestrator/PreAggregations.js +2 -3
  17. package/dist/src/orchestrator/PreAggregations.js.map +1 -1
  18. package/dist/src/orchestrator/QueryCache.d.ts +4 -4
  19. package/dist/src/orchestrator/QueryCache.d.ts.map +1 -1
  20. package/dist/src/orchestrator/QueryCache.js +49 -49
  21. package/dist/src/orchestrator/QueryCache.js.map +1 -1
  22. package/dist/src/orchestrator/QueryOrchestrator.d.ts +5 -2
  23. package/dist/src/orchestrator/QueryOrchestrator.d.ts.map +1 -1
  24. package/dist/src/orchestrator/QueryOrchestrator.js.map +1 -1
  25. package/dist/src/orchestrator/QueryQueue.d.ts +72 -160
  26. package/dist/src/orchestrator/QueryQueue.d.ts.map +1 -1
  27. package/dist/src/orchestrator/QueryQueue.js +51 -159
  28. package/dist/src/orchestrator/QueryQueue.js.map +1 -1
  29. package/dist/src/orchestrator/index.d.ts +1 -0
  30. package/dist/src/orchestrator/index.d.ts.map +1 -1
  31. package/dist/src/orchestrator/index.js +1 -0
  32. package/dist/src/orchestrator/index.js.map +1 -1
  33. package/package.json +6 -6
@@ -1,135 +1,90 @@
1
- export class QueryQueue {
2
- /**
3
- * Class constructor.
4
- *
5
- * @param {*} redisQueuePrefix
6
- * @param {*} options
7
- */
8
- constructor(redisQueuePrefix: any, options: any);
9
- /**
10
- * @type {string}
11
- */
12
- redisQueuePrefix: string;
13
- /**
14
- * @type {number}
15
- */
16
- concurrency: number;
17
- /**
18
- * @protected
19
- * @type {number}
20
- */
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ import { QueueDriverInterface, QueryKey, QueryKeyHash, QueueId, QueryDef, QueryStageStateResponse, AddToQueueOptions } from '@cubejs-backend/base-driver';
4
+ import { QueryStream } from './QueryStream';
5
+ import { CacheAndQueryDriverType } from './QueryOrchestrator';
6
+ export type CancelHandlerFn = (query: QueryDef) => Promise<void>;
7
+ export type QueryHandlerFn = (query: QueryDef, cancelHandler: CancelHandlerFn) => Promise<unknown>;
8
+ export type StreamHandlerFn = (query: QueryDef, stream: QueryStream) => Promise<unknown>;
9
+ export type QueryHandlersMap = Record<string, QueryHandlerFn>;
10
+ export type SendProcessMessageFn = (queryKeyHash: QueryKeyHash, queueId: QueueId | null) => Promise<void> | void;
11
+ export type SendCancelMessageFn = (query: QueryDef, queueId: QueueId | null) => Promise<void> | void;
12
+ export type ExecuteInQueueOptions = Omit<AddToQueueOptions, 'queueId'> & {
13
+ spanId?: string;
14
+ };
15
+ export type QueryQueueOptions = {
16
+ cacheAndQueueDriver: CacheAndQueryDriverType;
17
+ logger: (message: any, event: any) => void;
18
+ sendCancelMessageFn?: SendCancelMessageFn;
19
+ sendProcessMessageFn?: SendProcessMessageFn;
20
+ cancelHandlers: Record<string, CancelHandlerFn>;
21
+ queryHandlers: QueryHandlersMap;
22
+ streamHandler?: StreamHandlerFn;
23
+ processUid?: string;
24
+ concurrency?: number;
25
+ continueWaitTimeout?: number;
26
+ executionTimeout?: number;
27
+ orphanedTimeout?: number;
28
+ heartBeatInterval?: number;
29
+ redisPool?: any;
30
+ cubeStoreDriverFactory?: any;
31
+ queueDriverFactory?: (cacheAndQueueDriver: string, queueDriverOptions: any) => QueueDriverInterface;
32
+ skipQueue?: boolean;
33
+ };
34
+ export declare class QueryQueue {
35
+ protected readonly redisQueuePrefix: string;
36
+ protected concurrency: number;
21
37
  protected continueWaitTimeout: number;
22
- /**
23
- * @protected
24
- * @type {number}
25
- */
26
38
  protected executionTimeout: number;
27
- /**
28
- * @protected
29
- * @type {number}
30
- */
31
39
  protected orphanedTimeout: number;
32
- /**
33
- * @protected
34
- * @type {number}
35
- */
36
40
  protected heartBeatInterval: number;
37
- /**
38
- * @protected
39
- * @type {function(QueryKeyHash, QueueId | null): Promise<void>}
40
- */
41
- protected sendProcessMessageFn: (arg0: QueryKeyHash, arg1: QueueId | null) => Promise<void>;
42
- /**
43
- * @protected
44
- * @param {QueryDef} query
45
- * @param {QueueId | null} queueId
46
- * @type {function(*): Promise<void>}
47
- */
48
- protected sendCancelMessageFn: (arg0: any) => Promise<void>;
49
- /**
50
- * @protected
51
- * @type {*}
52
- */
53
- protected queryHandlers: any;
54
- /**
55
- * @protected
56
- * @type {*}
57
- */
58
- protected cancelHandlers: any;
59
- /**
60
- * @protected
61
- * @type {function(string, *): void}
62
- */
63
- protected logger: (arg0: string, arg1: any) => void;
64
- processUid: any;
65
- /**
66
- * @type {QueueDriverInterface}
67
- */
68
- queueDriver: QueueDriverInterface;
69
- /**
70
- * @protected
71
- * @type {boolean}
72
- */
41
+ protected readonly sendProcessMessageFn: SendProcessMessageFn;
42
+ protected readonly sendCancelMessageFn: SendCancelMessageFn;
43
+ protected readonly queryHandlers: QueryHandlersMap;
44
+ protected readonly streamHandler: StreamHandlerFn | undefined;
45
+ protected cancelHandlers: Record<string, CancelHandlerFn>;
46
+ protected logger: any;
47
+ protected processUid: string;
48
+ protected queueDriver: QueueDriverInterface;
73
49
  protected skipQueue: boolean;
74
50
  /**
75
51
  * Persistent queries streams maps.
76
52
  */
77
- streams: Map<any, any>;
53
+ protected readonly streams: Map<any, any>;
78
54
  /**
79
55
  * Notify streaming queries when streaming has been started and stream is available.
80
56
  */
81
- streamEvents: EventEmitter<[never]>;
57
+ protected readonly streamEvents: EventEmitter<[never]>;
58
+ constructor(redisQueuePrefix: string, options: QueryQueueOptions);
59
+ getQueueDriver(): QueueDriverInterface;
60
+ getConcurrency(): number;
82
61
  /**
83
62
  * Returns stream object which will be used to pipe data from data source.
84
- *
85
- * @param {QueryKeyHash} queryKeyHash
86
- * @return {QueryStream | undefined}
87
63
  */
88
64
  getQueryStream(queryKeyHash: QueryKeyHash): QueryStream | undefined;
89
- /**
90
- * @param {QueryKeyHash} key
91
- * @param {{ [alias: string]: string }} aliasNameToMember
92
- * @return {QueryStream}
93
- */
94
- createQueryStream(key: QueryKeyHash, aliasNameToMember: {
95
- [alias: string]: string;
96
- }): QueryStream;
97
- counter: number;
65
+ createQueryStream(key: QueryKeyHash, aliasNameToMember: Record<string, string>): QueryStream;
66
+ protected counter: number;
98
67
  generateQueueId(): number;
99
68
  /**
100
69
  * Push query to the queue and call `QueryQueue.reconcileQueue()` method if
101
70
  * `options.skipQueue` is set to `false`, execute query skipping queue
102
71
  * otherwise.
103
72
  *
104
- * @param {string} queryHandler
105
- * @param {*} queryKey
106
- * @param {*} query
107
- * @param {number=} priority
108
- * @param {*=} options
109
- * @returns {*}
110
- *
111
73
  * @throw {ContinueWaitError}
112
74
  */
113
- executeInQueue(queryHandler: string, queryKey: any, query: any, priority?: number | undefined, options?: any | undefined): any;
75
+ executeInQueue(queryHandler: string, queryKey: QueryKey, query: QueryDef, priority?: number, executeOptions?: ExecuteInQueueOptions): Promise<any>;
114
76
  /**
115
- * Parse query result.
116
- *
117
- * @param {*} result
118
- * @returns {*}
119
- *
120
77
  * @throw {Error}
121
78
  */
122
- parseResult(result: any): any;
79
+ protected parseResult(result: any): any;
80
+ protected reconcileAgain: boolean;
81
+ protected reconcilePromise: Promise<void> | null;
123
82
  /**
124
83
  * Run query queue reconciliation flow by calling internal `reconcileQueueImpl`
125
84
  * method. Returns promise which will be resolved with the reconciliation
126
85
  * result.
127
- *
128
- * @returns {Promise}
129
86
  */
130
- reconcileQueue(): Promise<any>;
131
- reconcileAgain: boolean;
132
- reconcilePromise: any;
87
+ reconcileQueue(): Promise<void>;
133
88
  shutdown(): Promise<boolean>;
134
89
  /**
135
90
  * Returns a full list of queued queries, including stalled, orphaned, active
@@ -137,15 +92,8 @@ export class QueryQueue {
137
92
  *
138
93
  * @returns {Promise<Object>}
139
94
  */
140
- getQueries(): Promise<any>;
141
- /**
142
- * Cancel query by its `queryKey`.
143
- *
144
- * @param {QueryKeyHash} queryKey
145
- * @param {QueueId | null} queueId
146
- * @returns {void}
147
- */
148
- cancelQuery(queryKey: QueryKeyHash, queueId: QueueId | null): void;
95
+ getQueries(): Promise<unknown[]>;
96
+ cancelQuery(queryKey: QueryKeyHash, queueId: QueueId | null): Promise<boolean>;
149
97
  /**
150
98
  * Reconciliation logic: cancel stalled and orphaned queries from the queue
151
99
  * and pick some planned to be processed queries to process.
@@ -153,81 +101,45 @@ export class QueryQueue {
153
101
  * @private
154
102
  * @returns {Promise<void>}
155
103
  */
156
- private reconcileQueueImpl;
104
+ protected reconcileQueueImpl(): Promise<void>;
157
105
  /**
158
106
  * Apply query timeout to the query. Throw if query execution time takes more
159
- * than specified timeout. Returns resolved `promise` value.
107
+ * than the specified timeout. Returns resolved `promise` value.
160
108
  *
161
- * @param {Promise<*>} promise
162
- * @returns {Promise<*>}
163
- *
164
- * @throw
109
+ * @throw {TimeoutError}
165
110
  */
166
- queryTimeout(promise: Promise<any>): Promise<any>;
111
+ protected queryTimeout<T>(promise: Promise<T>): Promise<T>;
167
112
  /**
168
113
  * Returns the list of queries planned to be processed and the list of active
169
114
  * queries.
170
- *
171
- * @returns {Promise<QueryStageStateResponse>}
172
115
  */
173
116
  fetchQueryStageState(): Promise<QueryStageStateResponse>;
174
117
  /**
175
118
  * Returns current state of the specified by the `stageQueryKey` query if it
176
119
  * exists.
177
120
  *
178
- * @param {*} stageQueryKey
179
- * @param {number=} priorityFilter
180
- * @param {QueryStageStateResponse=} queryStageState
181
121
  * @returns {Promise<undefined> | Promise<{ stage: string, timeElapsed: number }>}
182
122
  */
183
- getQueryStage(stageQueryKey: any, priorityFilter?: number | undefined, queryStageState?: QueryStageStateResponse | undefined): Promise<undefined> | Promise<{
123
+ getQueryStage(stageQueryKey: QueryKey, priorityFilter?: number, queryStageState?: QueryStageStateResponse): Promise<{
184
124
  stage: string;
185
125
  timeElapsed: number;
126
+ } | {
127
+ stage: string;
128
+ timeElapsed?: undefined;
186
129
  }>;
187
130
  /**
188
131
  * Execute query without adding it to the queue.
189
- *
190
- * @param {*} query
191
- * @param {QueueId} queueId
192
- * @returns {Promise<{ result: undefined | Object, error: string | undefined }>}
193
132
  */
194
- processQuerySkipQueue(query: any, queueId: QueueId): Promise<{
195
- result: undefined | any;
196
- error: string | undefined;
197
- }>;
133
+ protected processQuerySkipQueue(query: QueryDef, queueId: QueueId): Promise<any>;
198
134
  /**
199
- * Processing query specified by the `queryKey`. This method encapsulate most
200
- * of the logic related with the queues updates, heartbeat, etc.
201
- *
202
- * @param {QueryKeyHash} queryKeyHashed
203
- * @param {QueueId | null} queueId Supported by new Cube Store and Memory
204
- * @return {Promise<{ result: undefined | Object, error: string | undefined }>}
135
+ * Processing query specified by the `queryKey`. This method encapsulates most
136
+ * of the logic related to the queue updates, heartbeat, etc.
205
137
  */
206
- processQuery(queryKeyHashed: QueryKeyHash, queueId: QueueId | null): Promise<{
207
- result: undefined | any;
208
- error: string | undefined;
209
- }>;
138
+ protected processQuery(queryKeyHashed: QueryKeyHash, queueId: QueueId | null): Promise<void>;
210
139
  /**
211
140
  * Processing cancel query flow.
212
- *
213
- * @param {QueryDef} query
214
- * @param {QueueId | null} queueId
215
- */
216
- processCancel(query: QueryDef, queueId: QueueId | null): Promise<void>;
217
- /**
218
- * Returns hash sum of the specified `queryKey`.
219
- *
220
- * @param {QueryKey} queryKey
221
- * @returns {QueryKeyHash}
222
141
  */
223
- redisHash(queryKey: QueryKey): QueryKeyHash;
142
+ protected processCancel(query: QueryDef, queueId: QueueId | null): Promise<void>;
143
+ protected redisHash(queryKey: QueryKey): QueryKeyHash;
224
144
  }
225
- import { QueryKeyHash } from '@cubejs-backend/base-driver';
226
- import { QueueId } from '@cubejs-backend/base-driver';
227
- import { QueueDriverInterface } from '@cubejs-backend/base-driver';
228
- import { EventEmitter } from 'events';
229
- import { QueryStream } from './QueryStream';
230
- import { QueryStageStateResponse } from '@cubejs-backend/base-driver';
231
- import { QueryDef } from '@cubejs-backend/base-driver';
232
- import { QueryKey } from '@cubejs-backend/base-driver';
233
145
  //# sourceMappingURL=QueryQueue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryQueue.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/QueryQueue.js"],"names":[],"mappings":"AAyCA;IACE;;;;;OAKG;IACH,iDAqGC;IApGC;;OAEG;IACH,kBAFU,MAAM,CAEwB;IAExC;;OAEG;IACH,aAFU,MAAM,CAE2B;IAE3C;;;OAGG;IACH,+BAFU,MAAM,CAE2C;IAE3D;;;OAGG;IACH,4BAFU,MAAM,CAE4D;IAE5E;;;OAGG;IACH,2BAFU,MAAM,CAEqC;IAErD;;;OAGG;IACH,6BAFU,MAAM,CAEwC;IAExD;;;OAGG;IACH,uCAFmB,YAAY,QAAE,OAAO,GAAG,IAAI,KAAG,QAAQ,IAAI,CAAC,CAE+D;IAE9H;;;;;OAKG;IACH,8CAFuB,QAAQ,IAAI,CAAC,CAEmF;IAEvH;;;OAGG;IACH,6BAA0C;IAE1C;;;OAGG;IACH,8BAA4C;IAE5C;;;OAGG;IACH,yBAFmB,MAAM,gBAAM,IAAI,CAEqE;IAExG,gBAAuD;IAevD;;OAEG;IACH,aAFU,oBAAoB,CAEwD;IACtF;;;OAGG;IACH,qBAFU,OAAO,CAEiB;IAElC;;OAEG;IACH,uBAAwB;IAExB;;OAEG;IACH,oCAAsC;IAGxC;;;;;OAKG;IACH,6BAHW,YAAY,GACX,WAAW,GAAG,SAAS,CAIlC;IAED;;;;OAIG;IACH,uBAJW,YAAY;;QAEX,WAAW,CAYtB;IAED,gBAAY;IAEZ,0BAEC;IAED;;;;;;;;;;;;;OAaG;IACH,6BATW,MAAM,wCAGN,MAAM,8CA4LhB;IAED;;;;;;;OAOG;IACH,8BAcC;IAED;;;;;;OAMG;IACH,+BAuBC;IArBG,wBAA2B;IAC3B,sBAcI;IAQR,6BAQC;IAED;;;;;OAKG;IACH,cAFa,YAAe,CA+C3B;IAED;;;;;;OAMG;IACH,sBAJW,YAAY,WACZ,OAAO,GAAG,IAAI,GACZ,IAAI,CA0BhB;IAED;;;;;;OAMG;IACH,2BAgDC;IAED;;;;;;;;OAQG;IACH,sBALW,YAAU,GACR,YAAU,CAsBtB;IAED;;;;;OAKG;IACH,wBAFa,QAAQ,uBAAuB,CAAC,CAS5C;IAED;;;;;;;;OAQG;IACH,mDAJW,MAAM,gCACN,uBAAuB,eACrB,QAAQ,SAAS,CAAC,GAAG,QAAQ;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CA0BhF;IAED;;;;;;OAMG;IACH,2CAHW,OAAO,GACL,QAAQ;QAAE,MAAM,EAAE,SAAS,MAAS,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CA+D9E;IAED;;;;;;;OAOG;IACH,6BAJW,YAAY,WACZ,OAAO,GAAG,IAAI,GACb,QAAQ;QAAE,MAAM,EAAE,SAAS,MAAS,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAoP7E;IAED;;;;;OAKG;IACH,qBAHW,QAAQ,WACR,OAAO,GAAG,IAAI,iBAkBxB;IAED;;;;;OAKG;IACH,oBAHW,QAAQ,GACN,YAAY,CAIxB;CACF;6BAv/BM,6BAA6B;wBAA7B,6BAA6B;qCAA7B,6BAA6B;6BATP,QAAQ;4BAeT,eAAe;wCANpC,6BAA6B;yBAA7B,6BAA6B;yBAA7B,6BAA6B"}
1
+ {"version":3,"file":"QueryQueue.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/QueryQueue.ts"],"names":[],"mappings":"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"}