@milaboratories/pl-middle-layer 1.40.9 → 1.40.11
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/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +593 -578
- package/dist/index.mjs.map +1 -1
- package/dist/js_render/context.d.ts.map +1 -1
- package/dist/pool/driver.d.ts.map +1 -1
- package/dist/pool/ref_count_pool.d.ts +1 -0
- package/dist/pool/ref_count_pool.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/js_render/context.ts +4 -3
- package/src/pool/driver.ts +53 -33
- package/src/pool/ref_count_pool.ts +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/js_render/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAM3D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAU,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;KAGK;AACL,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,KAAK,IAAI,CAAC;AAM9E;;;;;;KAMK;AACL,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,qBAAa,kBAAkB;aAUX,KAAK,EAAE,KAAK;aACZ,EAAE,EAAE,cAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAXjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAE5C,SAAgB,SAAS,kBAAyB;IAElD,SAAgB,gBAAgB,EAAE,uBAAuB,GAAG,SAAS,CAAC;gBAGpD,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,cAAc,EACjB,cAAc,EAAE,cAAc,EAC/C,YAAY,EAAE,0BAA0B,GAAG,SAAS,EACpD,aAAa,CAAC,EAAE,aAAa;IAqBxB,kBAAkB;IAIzB,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAczB,cAAc,CAAC,IAAI,EAAE,MAAM;IAY3B,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa;IAgC9D,iBAAiB,CACtB,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,SAAS,EAC/D,KAAK,EAAE,KAAK,GAAG,SAAS,GACvB,aAAa;IAQT,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS;IAiCvF,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa;IAM5E,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa;IAS1E,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO;IAcjE,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAU1D,OAAO,CAAC,SAAS;CA6BlB;AAED;;8GAE8G;AAC9G,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAE7D,oHAAoH;IAC7G,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG;QAC/C,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB;IAiBD,sFAAsF;IAC/E,WAAW,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/js_render/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAM3D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAU,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;KAGK;AACL,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,KAAK,IAAI,CAAC;AAM9E;;;;;;KAMK;AACL,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,qBAAa,kBAAkB;aAUX,KAAK,EAAE,KAAK;aACZ,EAAE,EAAE,cAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAXjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAE5C,SAAgB,SAAS,kBAAyB;IAElD,SAAgB,gBAAgB,EAAE,uBAAuB,GAAG,SAAS,CAAC;gBAGpD,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,cAAc,EACjB,cAAc,EAAE,cAAc,EAC/C,YAAY,EAAE,0BAA0B,GAAG,SAAS,EACpD,aAAa,CAAC,EAAE,aAAa;IAqBxB,kBAAkB;IAIzB,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAczB,cAAc,CAAC,IAAI,EAAE,MAAM;IAY3B,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa;IAgC9D,iBAAiB,CACtB,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,SAAS,EAC/D,KAAK,EAAE,KAAK,GAAG,SAAS,GACvB,aAAa;IAQT,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS;IAiCvF,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa;IAM5E,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa;IAS1E,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO;IAcjE,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAU1D,OAAO,CAAC,SAAS;CA6BlB;AAED;;8GAE8G;AAC9G,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAE7D,oHAAoH;IAC7G,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG;QAC/C,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB;IAiBD,sFAAsF;IAC/E,WAAW,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO;CAyBnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/pool/driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,yBAAyB,CAAC;AAEhF,OAAO,KAAK,EAAE,aAAa,EAA2B,MAAM,4BAA4B,CAAC;AACzF,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EAEnB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,IAAI,eAAe,EAC/B,OAAO,EACP,SAAS,EAET,SAAS,EAIT,aAAa,EACb,QAAQ,EAET,MAAM,sBAAsB,CAAC;AAiB9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAQ3D,KAAK,oBAAoB,GAAG,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/pool/driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ export interface PollResource<R> {
|
|
|
15
15
|
}
|
|
16
16
|
export declare abstract class RefCountResourcePool<P, R> {
|
|
17
17
|
private readonly resources;
|
|
18
|
+
private readonly disposeQueue;
|
|
18
19
|
protected abstract createNewResource(params: P): R;
|
|
19
20
|
protected abstract calculateParamsKey(params: P): string;
|
|
20
21
|
private check;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref_count_pool.d.ts","sourceRoot":"","sources":["../../src/pool/ref_count_pool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ref_count_pool.d.ts","sourceRoot":"","sources":["../../src/pool/ref_count_pool.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;AAEjC,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,sBAAsB;IACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAErB,+CAA+C;IAC/C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,8BAAsB,oBAAoB,CAAC,CAAC,EAAE,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;IAClD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM;IAExD,OAAO,CAAC,KAAK;IAeN,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAyBnC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC;IAMxB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;CAG/C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/pl-middle-layer",
|
|
3
|
-
"version": "1.40.
|
|
3
|
+
"version": "1.40.11",
|
|
4
4
|
"description": "Pl Middle Layer",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=20.16.0"
|
|
@@ -32,22 +32,22 @@
|
|
|
32
32
|
"yaml": "^2.7.0",
|
|
33
33
|
"zod": "~3.23.8",
|
|
34
34
|
"remeda": "^2.22.6",
|
|
35
|
-
"@milaboratories/computable": "^2.6.0",
|
|
36
35
|
"@milaboratories/pl-http": "^1.1.4",
|
|
37
|
-
"@milaboratories/pl-client": "^2.11.
|
|
36
|
+
"@milaboratories/pl-client": "^2.11.5",
|
|
38
37
|
"@milaboratories/resolve-helper": "^1.1.0",
|
|
39
|
-
"@platforma-sdk/block-tools": "^2.5.
|
|
40
|
-
"@milaboratories/
|
|
38
|
+
"@platforma-sdk/block-tools": "^2.5.73",
|
|
39
|
+
"@milaboratories/computable": "^2.6.2",
|
|
41
40
|
"@milaboratories/pl-model-common": "~1.17.0",
|
|
42
|
-
"@milaboratories/pl-
|
|
41
|
+
"@milaboratories/pl-drivers": "^1.6.12",
|
|
43
42
|
"@milaboratories/pl-model-backend": "~1.1.2",
|
|
44
|
-
"@milaboratories/pl-
|
|
45
|
-
"@
|
|
46
|
-
"@milaboratories/ts-helpers": "^1.4.
|
|
43
|
+
"@milaboratories/pl-model-middle-layer": "~1.8.0",
|
|
44
|
+
"@milaboratories/pl-tree": "~1.7.4",
|
|
45
|
+
"@milaboratories/ts-helpers": "^1.4.2",
|
|
47
46
|
"@platforma-sdk/workflow-tengo": "4.13.0",
|
|
48
|
-
"@milaboratories/pl-
|
|
49
|
-
"@milaboratories/pl-
|
|
50
|
-
"@milaboratories/pl-
|
|
47
|
+
"@milaboratories/pl-deployments": "^2.4.6",
|
|
48
|
+
"@milaboratories/pl-config": "^1.6.2",
|
|
49
|
+
"@milaboratories/pl-errors": "^1.1.12",
|
|
50
|
+
"@platforma-sdk/model": "~1.41.6"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"semver": "^7.7.2",
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"jest": "^29.7.0",
|
|
61
61
|
"@jest/globals": "^29.7.0",
|
|
62
62
|
"ts-jest": "^29.2.6",
|
|
63
|
-
"@milaboratories/
|
|
64
|
-
"@milaboratories/
|
|
63
|
+
"@milaboratories/eslint-config": "^1.0.4",
|
|
64
|
+
"@milaboratories/build-configs": "1.0.5"
|
|
65
65
|
},
|
|
66
66
|
"scripts": {
|
|
67
67
|
"type-check": "tsc --noEmit --composite false",
|
package/src/js_render/context.ts
CHANGED
|
@@ -287,12 +287,13 @@ export class ErrorRepository {
|
|
|
287
287
|
return quickJSError;
|
|
288
288
|
}
|
|
289
289
|
|
|
290
|
-
|
|
291
|
-
|
|
290
|
+
const cause = quickJSError.cause;
|
|
291
|
+
if (!(typeof cause === 'object' && cause !== null && ('name' in cause) && typeof cause.name === 'string')) {
|
|
292
|
+
console.warn('ErrorRepo: quickJSError.cause is not an Error (can be stack limit exceeded)', stringifyWithResourceId(quickJSError));
|
|
292
293
|
return quickJSError;
|
|
293
294
|
}
|
|
294
295
|
|
|
295
|
-
const causeName =
|
|
296
|
+
const causeName = cause.name;
|
|
296
297
|
const errorId = causeName.slice(causeName.indexOf('/uuid:') + '/uuid:'.length);
|
|
297
298
|
if (!errorId) {
|
|
298
299
|
throw new Error(`ErrorRepo: quickJSError.cause.name does not contain errorId: ${causeName}, ${stringifyWithResourceId(quickJSError)}`);
|
package/src/pool/driver.ts
CHANGED
|
@@ -172,8 +172,8 @@ class PTableCache {
|
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
class PFrameHolder implements PFrameInternal.PFrameDataSource,
|
|
176
|
-
public readonly
|
|
175
|
+
class PFrameHolder implements PFrameInternal.PFrameDataSource, AsyncDisposable {
|
|
176
|
+
public readonly pFramePromise: Promise<PFrameInternal.PFrameV8>;
|
|
177
177
|
private readonly abortController = new AbortController();
|
|
178
178
|
private readonly blobIdToResource = new Map<string, ResourceInfo>();
|
|
179
179
|
private readonly blobHandleComputables = new Map<
|
|
@@ -206,14 +206,23 @@ class PFrameHolder implements PFrameInternal.PFrameDataSource, Disposable {
|
|
|
206
206
|
try {
|
|
207
207
|
const pFrame = new PFrame(this.spillPath, logFunc);
|
|
208
208
|
pFrame.setDataSource(this);
|
|
209
|
+
const promises: Promise<void>[] = [];
|
|
209
210
|
for (const column of distinctСolumns) {
|
|
210
211
|
pFrame.addColumnSpec(column.id, column.spec);
|
|
211
|
-
pFrame.setColumnData(column.id, column.data);
|
|
212
|
+
promises.push(Promise.resolve(pFrame.setColumnData(column.id, column.data/* , this.disposeSignal */)));
|
|
212
213
|
}
|
|
213
|
-
this.
|
|
214
|
+
this.pFramePromise = Promise.all(promises)
|
|
215
|
+
.then(() => pFrame)
|
|
216
|
+
.catch((err) => {
|
|
217
|
+
this.dispose();
|
|
218
|
+
pFrame.dispose();
|
|
219
|
+
throw new PFrameDriverError(
|
|
220
|
+
`PFrame creation failed asynchronously, columns: ${JSON.stringify(distinctСolumns)}, error: ${ensureError(err)}`,
|
|
221
|
+
);
|
|
222
|
+
});
|
|
214
223
|
} catch (err: unknown) {
|
|
215
224
|
throw new PFrameDriverError(
|
|
216
|
-
`PFrame creation failed, columns: ${JSON.stringify(distinctСolumns)}, error: ${ensureError(err)}`,
|
|
225
|
+
`PFrame creation failed synchronously, columns: ${JSON.stringify(distinctСolumns)}, error: ${ensureError(err)}`,
|
|
217
226
|
);
|
|
218
227
|
}
|
|
219
228
|
}
|
|
@@ -257,21 +266,27 @@ class PFrameHolder implements PFrameInternal.PFrameDataSource, Disposable {
|
|
|
257
266
|
return this.abortController.signal;
|
|
258
267
|
}
|
|
259
268
|
|
|
260
|
-
|
|
269
|
+
private dispose(): void {
|
|
261
270
|
this.abortController.abort();
|
|
262
271
|
for (const computable of this.blobHandleComputables.values()) computable.resetState();
|
|
263
|
-
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
async [Symbol.asyncDispose](): Promise<void> {
|
|
275
|
+
this.dispose();
|
|
276
|
+
await this.pFramePromise
|
|
277
|
+
.then((pFrame) => pFrame.dispose())
|
|
278
|
+
.catch(() => { /* mute error */ });
|
|
264
279
|
}
|
|
265
280
|
}
|
|
266
281
|
|
|
267
|
-
class PTableHolder implements
|
|
282
|
+
class PTableHolder implements AsyncDisposable {
|
|
268
283
|
private readonly abortController = new AbortController();
|
|
269
284
|
private readonly combinedDisposeSignal: AbortSignal;
|
|
270
285
|
|
|
271
286
|
constructor(
|
|
272
287
|
public readonly pFrame: PFrameHandle,
|
|
273
288
|
pFrameDisposeSignal: AbortSignal,
|
|
274
|
-
public readonly
|
|
289
|
+
public readonly pTablePromise: Promise<PFrameInternal.PTableV6>,
|
|
275
290
|
public readonly predecessor?: PollResource<PTableHolder>,
|
|
276
291
|
) {
|
|
277
292
|
this.combinedDisposeSignal = AbortSignal.any([pFrameDisposeSignal, this.abortController.signal]);
|
|
@@ -281,9 +296,11 @@ class PTableHolder implements Disposable {
|
|
|
281
296
|
return this.combinedDisposeSignal;
|
|
282
297
|
}
|
|
283
298
|
|
|
284
|
-
[Symbol.
|
|
299
|
+
async [Symbol.asyncDispose](): Promise<void> {
|
|
285
300
|
this.abortController.abort();
|
|
286
|
-
this.
|
|
301
|
+
await this.pTablePromise
|
|
302
|
+
.then((pTable) => pTable.dispose())
|
|
303
|
+
.catch(() => { /* mute error */ });
|
|
287
304
|
this.predecessor?.unref();
|
|
288
305
|
}
|
|
289
306
|
}
|
|
@@ -464,7 +481,7 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
464
481
|
}
|
|
465
482
|
|
|
466
483
|
const handle = params.pFrameHandle;
|
|
467
|
-
const {
|
|
484
|
+
const { pFramePromise, disposeSignal } = this.pFrames.getByKey(handle);
|
|
468
485
|
|
|
469
486
|
// 3. Sort
|
|
470
487
|
if (params.def.sorting.length > 0) {
|
|
@@ -475,8 +492,8 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
475
492
|
sorting: [],
|
|
476
493
|
},
|
|
477
494
|
});
|
|
478
|
-
const { resource: {
|
|
479
|
-
const sortedTable = pTable.sort(params.def.sorting);
|
|
495
|
+
const { resource: { pTablePromise } } = predecessor;
|
|
496
|
+
const sortedTable = pTablePromise.then((pTable) => pTable.sort(params.def.sorting));
|
|
480
497
|
return new PTableHolder(handle, disposeSignal, sortedTable, predecessor);
|
|
481
498
|
}
|
|
482
499
|
|
|
@@ -489,16 +506,16 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
489
506
|
filters: [],
|
|
490
507
|
},
|
|
491
508
|
});
|
|
492
|
-
const { resource: {
|
|
493
|
-
const filteredTable = pTable.filter(params.def.filters);
|
|
509
|
+
const { resource: { pTablePromise } } = predecessor;
|
|
510
|
+
const filteredTable = pTablePromise.then((pTable) => pTable.filter(params.def.filters));
|
|
494
511
|
return new PTableHolder(handle, disposeSignal, filteredTable, predecessor);
|
|
495
512
|
}
|
|
496
513
|
|
|
497
514
|
// 1. Join
|
|
498
|
-
const table = pFrame.createTable({
|
|
515
|
+
const table = pFramePromise.then((pFrame) => pFrame.createTable({
|
|
499
516
|
src: joinEntryToInternal(params.def.src),
|
|
500
517
|
filters: params.def.partitionFilters,
|
|
501
|
-
});
|
|
518
|
+
}));
|
|
502
519
|
return new PTableHolder(handle, disposeSignal, table);
|
|
503
520
|
}
|
|
504
521
|
|
|
@@ -577,7 +594,8 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
577
594
|
}]
|
|
578
595
|
: [],
|
|
579
596
|
};
|
|
580
|
-
const {
|
|
597
|
+
const { pFramePromise } = this.pFrames.getByKey(handle);
|
|
598
|
+
const pFrame = await pFramePromise;
|
|
581
599
|
const responce = await pFrame.findColumns(iRequest);
|
|
582
600
|
return {
|
|
583
601
|
hits: responce.hits
|
|
@@ -591,12 +609,14 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
591
609
|
}
|
|
592
610
|
|
|
593
611
|
public async getColumnSpec(handle: PFrameHandle, columnId: PObjectId): Promise<PColumnSpec> {
|
|
594
|
-
const {
|
|
612
|
+
const { pFramePromise } = this.pFrames.getByKey(handle);
|
|
613
|
+
const pFrame = await pFramePromise;
|
|
595
614
|
return await pFrame.getColumnSpec(columnId);
|
|
596
615
|
}
|
|
597
616
|
|
|
598
617
|
public async listColumns(handle: PFrameHandle): Promise<PColumnIdAndSpec[]> {
|
|
599
|
-
const {
|
|
618
|
+
const { pFramePromise } = this.pFrames.getByKey(handle);
|
|
619
|
+
const pFrame = await pFramePromise;
|
|
600
620
|
return await pFrame.listColumns();
|
|
601
621
|
}
|
|
602
622
|
|
|
@@ -616,7 +636,8 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
616
636
|
pFrameHandle: handle,
|
|
617
637
|
def: migratePTableFilters(request),
|
|
618
638
|
});
|
|
619
|
-
const { resource: {
|
|
639
|
+
const { resource: { pTablePromise, disposeSignal } } = table;
|
|
640
|
+
const pTable = await pTablePromise;
|
|
620
641
|
const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));
|
|
621
642
|
|
|
622
643
|
return await this.frameConcurrencyLimiter.run(async () => {
|
|
@@ -655,7 +676,8 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
655
676
|
);
|
|
656
677
|
}
|
|
657
678
|
|
|
658
|
-
const {
|
|
679
|
+
const { pFramePromise, disposeSignal } = this.pFrames.getByKey(handle);
|
|
680
|
+
const pFrame = await pFramePromise;
|
|
659
681
|
const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));
|
|
660
682
|
|
|
661
683
|
return await this.frameConcurrencyLimiter.run(async () => {
|
|
@@ -672,18 +694,15 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
672
694
|
// PTable istance methods
|
|
673
695
|
//
|
|
674
696
|
|
|
675
|
-
public getSpec(handle: PTableHandle): Promise<PTableColumnSpec[]> {
|
|
676
|
-
const {
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
return Promise.resolve(pTable.getSpec());
|
|
680
|
-
} catch (err: unknown) {
|
|
681
|
-
return Promise.reject(ensureError(err));
|
|
682
|
-
}
|
|
697
|
+
public async getSpec(handle: PTableHandle): Promise<PTableColumnSpec[]> {
|
|
698
|
+
const { pTablePromise } = this.pTables.getByKey(handle);
|
|
699
|
+
const pTable = await pTablePromise;
|
|
700
|
+
return pTable.getSpec();
|
|
683
701
|
}
|
|
684
702
|
|
|
685
703
|
public async getShape(handle: PTableHandle, signal?: AbortSignal): Promise<PTableShape> {
|
|
686
|
-
const {
|
|
704
|
+
const { pTablePromise, disposeSignal } = this.pTables.getByKey(handle);
|
|
705
|
+
const pTable = await pTablePromise;
|
|
687
706
|
const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));
|
|
688
707
|
|
|
689
708
|
return await this.tableConcurrencyLimiter.run(async () => {
|
|
@@ -699,7 +718,8 @@ export class PFrameDriver implements InternalPFrameDriver {
|
|
|
699
718
|
range: TableRange | undefined,
|
|
700
719
|
signal?: AbortSignal,
|
|
701
720
|
): Promise<PTableVector[]> {
|
|
702
|
-
const {
|
|
721
|
+
const { pTablePromise, disposeSignal } = this.pTables.getByKey(handle);
|
|
722
|
+
const pTable = await pTablePromise;
|
|
703
723
|
const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));
|
|
704
724
|
|
|
705
725
|
return await this.tableConcurrencyLimiter.run(async () => {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isDisposable, isAsyncDisposable } from '@milaboratories/ts-helpers';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Function associated with particular entry from the RefCountResourcePool.
|
|
3
5
|
*
|
|
@@ -19,6 +21,7 @@ export interface PollResource<R> {
|
|
|
19
21
|
|
|
20
22
|
export abstract class RefCountResourcePool<P, R> {
|
|
21
23
|
private readonly resources = new Map<string, RefCountEnvelop<R>>();
|
|
24
|
+
private readonly disposeQueue = Promise.resolve();
|
|
22
25
|
protected abstract createNewResource(params: P): R;
|
|
23
26
|
protected abstract calculateParamsKey(params: P): string;
|
|
24
27
|
|
|
@@ -27,15 +30,12 @@ export abstract class RefCountResourcePool<P, R> {
|
|
|
27
30
|
if (envelop === undefined) throw new Error('Unexpected state.');
|
|
28
31
|
if (envelop.refCount === 0) {
|
|
29
32
|
this.resources.delete(key);
|
|
33
|
+
const resource = envelop.resource;
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (isDisposable(envelop.resource)) {
|
|
37
|
-
// TODO: we can postpone disposal and run it in the background
|
|
38
|
-
envelop.resource[Symbol.dispose]();
|
|
35
|
+
if (isDisposable(resource)) {
|
|
36
|
+
const _ = this.disposeQueue.then(() => resource[Symbol.dispose]());
|
|
37
|
+
} else if (isAsyncDisposable(resource)) {
|
|
38
|
+
const _ = this.disposeQueue.then(() => resource[Symbol.asyncDispose]());
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|