@cubejs-backend/query-orchestrator 1.3.43 → 1.3.45
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/src/orchestrator/LocalQueueDriver.d.ts +7 -122
- package/dist/src/orchestrator/LocalQueueDriver.d.ts.map +1 -1
- package/dist/src/orchestrator/LocalQueueDriver.js +12 -319
- package/dist/src/orchestrator/LocalQueueDriver.js.map +1 -1
- package/dist/src/orchestrator/LocalQueueDriverConnection.d.ts +70 -0
- package/dist/src/orchestrator/LocalQueueDriverConnection.d.ts.map +1 -0
- package/dist/src/orchestrator/LocalQueueDriverConnection.js +235 -0
- package/dist/src/orchestrator/LocalQueueDriverConnection.js.map +1 -0
- package/dist/src/orchestrator/PreAggregationLoadCache.d.ts +3 -0
- package/dist/src/orchestrator/PreAggregationLoadCache.d.ts.map +1 -1
- package/dist/src/orchestrator/PreAggregationLoader.d.ts.map +1 -1
- package/dist/src/orchestrator/PreAggregationLoader.js +3 -1
- package/dist/src/orchestrator/PreAggregationLoader.js.map +1 -1
- package/dist/src/orchestrator/PreAggregations.d.ts +6 -5
- package/dist/src/orchestrator/PreAggregations.d.ts.map +1 -1
- package/dist/src/orchestrator/PreAggregations.js +32 -4
- package/dist/src/orchestrator/PreAggregations.js.map +1 -1
- package/dist/src/orchestrator/QueryCache.d.ts +5 -5
- package/dist/src/orchestrator/QueryCache.d.ts.map +1 -1
- package/dist/src/orchestrator/QueryCache.js +54 -59
- package/dist/src/orchestrator/QueryCache.js.map +1 -1
- package/dist/src/orchestrator/QueryOrchestrator.d.ts +5 -2
- package/dist/src/orchestrator/QueryOrchestrator.d.ts.map +1 -1
- package/dist/src/orchestrator/QueryOrchestrator.js.map +1 -1
- package/dist/src/orchestrator/QueryQueue.d.ts +72 -160
- package/dist/src/orchestrator/QueryQueue.d.ts.map +1 -1
- package/dist/src/orchestrator/QueryQueue.js +51 -159
- package/dist/src/orchestrator/QueryQueue.js.map +1 -1
- package/dist/src/orchestrator/index.d.ts +1 -0
- package/dist/src/orchestrator/index.d.ts.map +1 -1
- package/dist/src/orchestrator/index.js +1 -0
- package/dist/src/orchestrator/index.js.map +1 -1
- package/package.json +6 -6
|
@@ -1,135 +1,90 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
protected
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
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:
|
|
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<
|
|
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<
|
|
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
|
-
|
|
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
|
-
* @
|
|
162
|
-
* @returns {Promise<*>}
|
|
163
|
-
*
|
|
164
|
-
* @throw
|
|
109
|
+
* @throw {TimeoutError}
|
|
165
110
|
*/
|
|
166
|
-
queryTimeout(promise: Promise<
|
|
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:
|
|
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:
|
|
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
|
|
200
|
-
* of the logic related
|
|
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
|
-
|
|
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.
|
|
1
|
+
{"version":3,"file":"QueryQueue.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/QueryQueue.ts"],"names":[],"mappings":"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"}
|