@milaboratories/pl-middle-layer 1.43.58 → 1.43.60

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 (47) hide show
  1. package/dist/debug/index.cjs +0 -1
  2. package/dist/debug/index.cjs.map +1 -1
  3. package/dist/debug/index.d.ts +0 -1
  4. package/dist/debug/index.d.ts.map +1 -1
  5. package/dist/debug/index.js +0 -1
  6. package/dist/debug/index.js.map +1 -1
  7. package/dist/js_render/computable_context.cjs +6 -2
  8. package/dist/js_render/computable_context.cjs.map +1 -1
  9. package/dist/js_render/computable_context.d.ts +1 -1
  10. package/dist/js_render/computable_context.d.ts.map +1 -1
  11. package/dist/js_render/computable_context.js +6 -2
  12. package/dist/js_render/computable_context.js.map +1 -1
  13. package/dist/middle_layer/driver_kit.cjs +6 -1
  14. package/dist/middle_layer/driver_kit.cjs.map +1 -1
  15. package/dist/middle_layer/driver_kit.js +7 -2
  16. package/dist/middle_layer/driver_kit.js.map +1 -1
  17. package/dist/middle_layer/ops.cjs +4 -8
  18. package/dist/middle_layer/ops.cjs.map +1 -1
  19. package/dist/middle_layer/ops.d.ts +1 -1
  20. package/dist/middle_layer/ops.d.ts.map +1 -1
  21. package/dist/middle_layer/ops.js +4 -8
  22. package/dist/middle_layer/ops.js.map +1 -1
  23. package/dist/middle_layer/project.cjs +3 -0
  24. package/dist/middle_layer/project.cjs.map +1 -1
  25. package/dist/middle_layer/project.d.ts.map +1 -1
  26. package/dist/middle_layer/project.js +3 -0
  27. package/dist/middle_layer/project.js.map +1 -1
  28. package/dist/pool/data.cjs +0 -15
  29. package/dist/pool/data.cjs.map +1 -1
  30. package/dist/pool/data.d.ts +1 -2
  31. package/dist/pool/data.d.ts.map +1 -1
  32. package/dist/pool/data.js +1 -15
  33. package/dist/pool/data.js.map +1 -1
  34. package/dist/pool/driver.cjs +88 -906
  35. package/dist/pool/driver.cjs.map +1 -1
  36. package/dist/pool/driver.d.ts +14 -86
  37. package/dist/pool/driver.d.ts.map +1 -1
  38. package/dist/pool/driver.js +88 -907
  39. package/dist/pool/driver.js.map +1 -1
  40. package/package.json +17 -16
  41. package/src/debug/index.ts +0 -2
  42. package/src/js_render/computable_context.ts +8 -6
  43. package/src/middle_layer/driver_kit.ts +6 -6
  44. package/src/middle_layer/ops.ts +2 -9
  45. package/src/middle_layer/project.ts +3 -0
  46. package/src/pool/data.ts +0 -22
  47. package/src/pool/driver.ts +141 -1208
@@ -1 +1 @@
1
- {"version":3,"file":"driver.cjs","sources":["../../src/pool/driver.ts"],"sourcesContent":["import type { DownloadDriver } from '@milaboratories/pl-drivers';\nimport { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type { PlTreeEntry, PlTreeNodeAccessor } from '@milaboratories/pl-tree';\nimport { isPlTreeNodeAccessor } from '@milaboratories/pl-tree';\nimport type {\n Computable,\n ComputableCtx,\n ComputableStableDefined,\n} from '@milaboratories/computable';\nimport type {\n CalculateTableDataRequest,\n CalculateTableDataResponse,\n FindColumnsRequest,\n FindColumnsResponse,\n LocalBlobHandleAndSize,\n PColumnIdAndSpec,\n PColumnSpec,\n PFrameHandle,\n PObjectId,\n PTableColumnSpec,\n PTableHandle,\n PTableShape,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse,\n PFrameDriver as SdkPFrameDriver,\n PColumn,\n PFrameDef,\n JoinEntry,\n PTableDef,\n ValueType,\n PTableRecordSingleValueFilterV2,\n PTableRecordFilter,\n PColumnValues,\n DataInfo,\n PColumnValue,\n RemoteBlobHandleAndSize,\n RemoteBlobHandle,\n ContentHandler,\n} from '@platforma-sdk/model';\nimport {\n mapPObjectData,\n mapPTableDef,\n extractAllColumns,\n mapDataInfo,\n isDataInfo,\n ensureError,\n PFrameDriverError,\n isAbortError,\n isPFrameDriverError,\n uniqueBy,\n getAxisId,\n canonicalizeJson,\n} from '@platforma-sdk/model';\nimport { LRUCache } from 'lru-cache';\nimport {\n makeDataInfoFromPColumnValues,\n parseDataInfoResource,\n traverseParquetChunkResource,\n} from './data';\nimport { createHash } from 'node:crypto';\nimport { type MiLogger } from '@milaboratories/ts-helpers';\nimport { mapValues } from 'es-toolkit';\nimport {\n assertNever,\n emptyDir,\n ConcurrencyLimitingExecutor,\n RefCountResourcePool,\n type PoolResource,\n} from '@milaboratories/ts-helpers';\nimport canonicalize from 'canonicalize';\nimport { PFrameFactory, HttpHelpers } from '@milaboratories/pframes-rs-node';\nimport path from 'node:path';\nimport { getDebugFlags } from '../debug';\nimport { Readable } from 'node:stream';\n\ntype PColumnDataUniversal = PlTreeNodeAccessor | DataInfo<PlTreeNodeAccessor> | PColumnValues;\n\nfunction makeBlobId(res: PlTreeEntry): string {\n return String(res.rid);\n}\n\ntype LocalBlobPoolEntry = PoolResource<ComputableStableDefined<LocalBlobHandleAndSize>>;\n\nclass LocalBlobPool\n extends RefCountResourcePool<PlTreeEntry, ComputableStableDefined<LocalBlobHandleAndSize>>\n implements PFrameInternal.PFrameDataSourceV2 {\n constructor(private readonly blobDriver: DownloadDriver) {\n super();\n }\n\n protected calculateParamsKey(params: PlTreeEntry): string {\n return makeBlobId(params);\n }\n\n protected createNewResource(params: PlTreeEntry, _key: string): ComputableStableDefined<LocalBlobHandleAndSize> {\n return this.blobDriver.getDownloadedBlob(params);\n }\n\n public getByKey(blobId: string): ComputableStableDefined<LocalBlobHandleAndSize> {\n const resource = super.tryGetByKey(blobId);\n if (!resource) throw new PFrameDriverError(`Blob with id ${blobId} not found.`);\n return resource;\n }\n\n public async preloadBlob(blobIds: string[], signal?: AbortSignal): Promise<void> {\n try {\n await Promise.all(blobIds.map((blobId) => this.getByKey(blobId).awaitStableFullValue(signal)));\n } catch (err: unknown) {\n if (!isAbortError(err)) throw err;\n }\n };\n\n public async resolveBlobContent(blobId: string, signal?: AbortSignal): Promise<Uint8Array> {\n const computable = this.getByKey(blobId);\n const blob = await computable.awaitStableValue(signal);\n return await this.blobDriver.getContent(blob.handle, { signal });\n };\n}\n\ntype RemoteBlobPoolEntry = PoolResource<Computable<RemoteBlobHandleAndSize>>;\n\nclass RemoteBlobPool\n extends RefCountResourcePool<PlTreeEntry, Computable<RemoteBlobHandleAndSize>> {\n constructor(private readonly blobDriver: DownloadDriver) {\n super();\n }\n\n protected calculateParamsKey(params: PlTreeEntry): string {\n return String(params.rid);\n }\n\n protected createNewResource(params: PlTreeEntry, _key: string): Computable<RemoteBlobHandleAndSize> {\n return this.blobDriver.getOnDemandBlob(params);\n }\n\n public async withContent<T>(\n handle: RemoteBlobHandle,\n options: {\n range: PFrameInternal.FileRange;\n signal: AbortSignal;\n handler: ContentHandler<T>;\n },\n ): Promise<T> {\n return await this.blobDriver.withContent(handle, {\n range: {\n from: options.range.start,\n to: options.range.end + 1,\n },\n signal: options.signal,\n handler: options.handler,\n });\n }\n}\n\ninterface BlobStoreOptions extends PFrameInternal.ObjectStoreOptions {\n remoteBlobPool: RemoteBlobPool;\n};\n\nclass BlobStore extends PFrameInternal.BaseObjectStore {\n private readonly remoteBlobPool: RemoteBlobPool;\n\n constructor(options: BlobStoreOptions) {\n super(options);\n this.remoteBlobPool = options.remoteBlobPool;\n }\n\n public override async request(\n filename: PFrameInternal.ParquetFileName,\n params: {\n method: PFrameInternal.HttpMethod;\n range?: PFrameInternal.HttpRange;\n signal: AbortSignal;\n callback: (response: PFrameInternal.ObjectStoreResponse) => Promise<void>;\n },\n ): Promise<void> {\n const blobId = filename.slice(0, -PFrameInternal.ParquetExtension.length);\n const respond = async (response: PFrameInternal.ObjectStoreResponse): Promise<void> => {\n try {\n await params.callback(response);\n } catch (error: unknown) {\n this.logger('warn',\n `PFrames blob store received unhandled rejection from HTTP handler: ${ensureError(error)}`,\n );\n }\n };\n\n try {\n const computable = this.remoteBlobPool.tryGetByKey(blobId);\n if (!computable) return await respond({ type: 'NotFound' });\n\n let blob: RemoteBlobHandleAndSize;\n try {\n blob = await computable.getValue();\n } catch (error: unknown) {\n this.logger('error',\n `PFrames blob store failed to get blob from computable: ${ensureError(error)}`,\n );\n return await respond({ type: 'InternalError' });\n }\n params.signal.throwIfAborted();\n\n const translatedRange = this.translate(blob.size, params.range);\n if (!translatedRange) {\n return await respond({\n type: 'RangeNotSatisfiable',\n size: blob.size,\n });\n }\n\n if (params.method === 'HEAD') {\n return await respond({\n type: 'Ok',\n size: blob.size,\n range: translatedRange,\n });\n }\n\n this.logger('info',\n `PFrames blob store requesting content for ${blobId}, `\n + `range [${translatedRange.start}..=${translatedRange.end}]`,\n );\n return await this.remoteBlobPool.withContent(blob.handle, {\n range: translatedRange,\n signal: params.signal,\n handler: async (data) => {\n return await respond({\n type: 'Ok',\n size: blob.size,\n range: translatedRange,\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n data: Readable.fromWeb(data),\n });\n },\n });\n } catch (error: unknown) {\n if (!isAbortError(error)) {\n this.logger('warn',\n `PFrames blob store unhandled error: ${ensureError(error)}`,\n );\n }\n return await respond({ type: 'InternalError' });\n }\n }\n}\n\ntype InternalPFrameData = PFrameDef<PFrameInternal.DataInfo<PlTreeEntry>>;\n\nconst valueTypes: ValueType[] = ['Int', 'Long', 'Float', 'Double', 'String', 'Bytes'] as const;\n\nfunction migrateFilters(\n filters: PTableRecordFilter[],\n logger: PFrameInternal.Logger,\n): PTableRecordFilter[] {\n const filtersV1 = [];\n const filtersV2: PTableRecordSingleValueFilterV2[] = [];\n for (const filter of filters) {\n if ((filter.type as unknown) === 'bySingleColumn') {\n filtersV1.push(filter);\n filtersV2.push({\n ...filter,\n type: 'bySingleColumnV2',\n });\n } else {\n filtersV2.push(filter);\n }\n }\n if (filtersV1.length > 0) {\n const filtersV1Json = JSON.stringify(filtersV1);\n logger('warn',\n `type overriten from 'bySingleColumn' to 'bySingleColumnV2' for filters: ${filtersV1Json}`,\n );\n }\n return filtersV2;\n}\n\nfunction migratePTableFilters<T>(\n def: Omit<PTableDef<T>, 'partitionFilters'> | PTableDef<T>,\n logger: PFrameInternal.Logger,\n): PTableDef<T> {\n if (!('partitionFilters' in def)) {\n // For old blocks assume all axes filters to be partition filters\n return {\n ...def,\n partitionFilters: migrateFilters(def.filters.filter((f) => f.column.type === 'axis'), logger),\n filters: migrateFilters(def.filters.filter((f) => f.column.type === 'column'), logger),\n };\n }\n return {\n ...def,\n partitionFilters: migrateFilters(def.partitionFilters, logger),\n filters: migrateFilters(def.filters, logger),\n };\n}\n\nfunction hasArtificialColumns<T>(entry: JoinEntry<T>): boolean {\n switch (entry.type) {\n case 'column':\n case 'slicedColumn':\n case 'inlineColumn':\n return false;\n case 'artificialColumn':\n return true;\n case 'full':\n case 'inner':\n return entry.entries.some(hasArtificialColumns);\n case 'outer':\n return hasArtificialColumns(entry.primary) || entry.secondary.some(hasArtificialColumns);\n default:\n assertNever(entry);\n }\n}\n\nconst bigintReplacer = (_: string, v: unknown) => (typeof v === 'bigint' ? v.toString() : v);\n\nclass PFramePool extends RefCountResourcePool<InternalPFrameData, PFrameHolder> {\n constructor(\n private readonly parquetServer: PFrameInternal.HttpServerInfo,\n private readonly localBlobPool: LocalBlobPool,\n private readonly remoteBlobPool: RemoteBlobPool,\n private readonly logger: PFrameInternal.Logger,\n private readonly spillPath: string,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: InternalPFrameData): string {\n try {\n return stableKeyFromPFrameData(params);\n } catch (err: unknown) {\n if (isPFrameDriverError(err)) throw err;\n throw new PFrameDriverError(\n `PFrame handle calculation failed, `\n + `request: ${JSON.stringify(params, bigintReplacer)}, `\n + `error: ${ensureError(err)}`,\n );\n }\n }\n\n protected createNewResource(params: InternalPFrameData, key: string): PFrameHolder {\n if (getDebugFlags().logPFrameRequests) {\n this.logger('info',\n `PFrame creation (pFrameHandle = ${key}): `\n + `${JSON.stringify(params, bigintReplacer)}`,\n );\n }\n return new PFrameHolder(\n this.parquetServer,\n this.localBlobPool,\n this.remoteBlobPool,\n this.logger,\n this.spillPath,\n params,\n );\n }\n\n public getByKey(key: PFrameHandle): PFrameHolder {\n const resource = super.tryGetByKey(key);\n if (!resource) throw new PFrameDriverError(`PFrame not found, handle = ${key}`);\n return resource;\n }\n}\n\nclass PTableDefPool extends RefCountResourcePool<FullPTableDef, PTableDefHolder> {\n constructor(private readonly logger: PFrameInternal.Logger) {\n super();\n }\n\n protected calculateParamsKey(params: FullPTableDef): string {\n return stableKeyFromFullPTableDef(params);\n }\n\n protected createNewResource(params: FullPTableDef, key: string): PTableDefHolder {\n return new PTableDefHolder(params, key as PTableHandle, this.logger);\n }\n\n public getByKey(key: PTableHandle): PTableDefHolder {\n const resource = super.tryGetByKey(key);\n if (!resource) throw new PFrameDriverError(`PTable definition not found, handle = ${key}`);\n return resource;\n }\n}\n\nclass PTablePool extends RefCountResourcePool<FullPTableDef, PTableHolder> {\n constructor(\n private readonly pFrames: PFramePool,\n private readonly pTableDefs: PTableDefPool,\n private readonly logger: PFrameInternal.Logger,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: FullPTableDef): string {\n return stableKeyFromFullPTableDef(params);\n }\n\n protected createNewResource(params: FullPTableDef, key: string): PTableHolder {\n if (getDebugFlags().logPFrameRequests) {\n this.logger('info',\n `PTable creation (pTableHandle = ${key}): `\n + `${JSON.stringify(params, bigintReplacer)}`,\n );\n }\n\n const handle = params.pFrameHandle;\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(handle);\n\n const defDisposeSignal = this.pTableDefs.tryGetByKey(key)?.disposeSignal;\n const combinedSignal = AbortSignal.any([disposeSignal, defDisposeSignal].filter((s) => !!s));\n\n // 3. Sort\n if (params.def.sorting.length > 0) {\n const predecessor = this.acquire({\n ...params,\n def: {\n ...params.def,\n sorting: [],\n },\n });\n const { resource: { pTablePromise } } = predecessor;\n const sortedTable = pTablePromise.then((pTable) => pTable.sort(params.def.sorting));\n return new PTableHolder(handle, combinedSignal, sortedTable, predecessor);\n }\n\n // 2. Filter (except the case with artificial columns where cartesian creates too many rows)\n if (!hasArtificialColumns(params.def.src) && params.def.filters.length > 0) {\n const predecessor = this.acquire({\n ...params,\n def: {\n ...params.def,\n filters: [],\n },\n });\n const { resource: { pTablePromise } } = predecessor;\n const filteredTable = pTablePromise.then((pTable) => pTable.filter(params.def.filters));\n return new PTableHolder(handle, combinedSignal, filteredTable, predecessor);\n }\n\n // 1. Join\n const table = pFramePromise.then((pFrame) => pFrame.createTable({\n src: joinEntryToInternal(params.def.src),\n // `params.def.filters` would be non-empty only when join has artificial columns\n filters: [...params.def.partitionFilters, ...params.def.filters],\n }));\n return new PTableHolder(handle, combinedSignal, table);\n }\n\n public getByKey(key: PTableHandle): PTableHolder {\n const resource = super.tryGetByKey(key);\n if (!resource) throw new PFrameDriverError(`PTable not found, handle = ${key}`);\n return resource;\n }\n}\n\nclass PTableCacheUi {\n private readonly perFrame = new Map<PFrameHandle, LRUCache<PTableHandle, PoolResource<PTableHolder>>>();\n private readonly global: LRUCache<PTableHandle, PoolResource<PTableHolder>>;\n private readonly disposeListeners = new Set<PTableHandle>();\n\n constructor(\n private readonly logger: PFrameInternal.Logger,\n private readonly ops: Pick<PFrameDriverOps, 'pFramesCacheMaxSize' | 'pFrameCacheMaxCount'>,\n ) {\n this.global = new LRUCache<PTableHandle, PoolResource<PTableHolder>>({\n maxSize: this.ops.pFramesCacheMaxSize,\n dispose: (resource, key, reason) => {\n if (reason === 'evict') {\n this.perFrame.get(resource.resource.pFrame)?.delete(key);\n }\n\n if (this.perFrame.get(resource.resource.pFrame)?.size === 0) {\n this.perFrame.delete(resource.resource.pFrame);\n }\n\n resource.unref();\n if (getDebugFlags().logPFrameRequests) {\n logger('info', `calculateTableData cache - removed PTable ${key} (reason: ${reason})`);\n }\n },\n });\n }\n\n public cache(resource: PoolResource<PTableHolder>, size: number): void {\n const key = resource.key as PTableHandle;\n if (getDebugFlags().logPFrameRequests) {\n this.logger('info', `calculateTableData cache - added PTable ${key} with size ${size}`);\n }\n\n this.global.set(key, resource, { size: Math.max(size, 1) }); // 1 is minimum size to avoid cache evictions\n\n let perFrame = this.perFrame.get(resource.resource.pFrame);\n if (!perFrame) {\n perFrame = new LRUCache<PTableHandle, PoolResource<PTableHolder>>({\n max: this.ops.pFrameCacheMaxCount,\n dispose: (_resource, key, reason) => {\n if (reason === 'evict') {\n this.global.delete(key);\n }\n },\n });\n this.perFrame.set(resource.resource.pFrame, perFrame);\n }\n perFrame.set(key, resource);\n\n if (!this.disposeListeners.has(key)) {\n const disposeListener = () => {\n this.perFrame.get(resource.resource.pFrame)?.delete(key);\n this.global.delete(key);\n\n this.disposeListeners.delete(key);\n resource.resource.disposeSignal.removeEventListener('abort', disposeListener);\n };\n this.disposeListeners.add(key);\n resource.resource.disposeSignal.addEventListener('abort', disposeListener);\n }\n }\n}\n\nclass PTableCacheModel {\n private readonly global: LRUCache<PTableHandle, PoolResource<PTableHolder>>;\n private readonly disposeListeners = new Set<PTableHandle>();\n\n constructor(\n private readonly logger: PFrameInternal.Logger,\n ops: Pick<PFrameDriverOps, 'pTablesCacheMaxSize'>,\n ) {\n this.global = new LRUCache<PTableHandle, PoolResource<PTableHolder>>({\n maxSize: ops.pTablesCacheMaxSize,\n dispose: (resource, key, reason) => {\n resource.unref();\n if (getDebugFlags().logPFrameRequests) {\n logger('info', `createPTable cache - removed PTable ${key} (reason: ${reason})`);\n }\n },\n });\n }\n\n public cache(resource: PoolResource<PTableHolder>, size: number, defDisposeSignal: AbortSignal): void {\n const key = resource.key as PTableHandle;\n if (getDebugFlags().logPFrameRequests) {\n this.logger('info', `createPTable cache - added PTable ${key} with size ${size}`);\n }\n\n const status: LRUCache.Status<PoolResource<PTableHolder>> = {};\n this.global.set(key, resource, { size: Math.max(size, 1), status }); // 1 is minimum size to avoid cache evictions\n\n if (status.maxEntrySizeExceeded) {\n resource.unref();\n if (getDebugFlags().logPFrameRequests) {\n this.logger('info', `createPTable cache - removed PTable ${key} (maxEntrySizeExceeded)`);\n }\n } else {\n if (!this.disposeListeners.has(key)) {\n const disposeListener = () => {\n this.global.delete(key);\n\n this.disposeListeners.delete(key);\n defDisposeSignal.removeEventListener('abort', disposeListener);\n };\n this.disposeListeners.add(key);\n defDisposeSignal.addEventListener('abort', disposeListener);\n }\n }\n }\n}\n\nclass PFrameHolder implements PFrameInternal.PFrameDataSourceV2, AsyncDisposable {\n public readonly pFramePromise: Promise<PFrameInternal.PFrameV12>;\n private readonly abortController = new AbortController();\n private readonly localBlobs: LocalBlobPoolEntry[] = [];\n private readonly remoteBlobs: RemoteBlobPoolEntry[] = [];\n\n constructor(\n public readonly parquetServer: PFrameInternal.HttpServerInfo,\n private readonly localBlobPool: LocalBlobPool,\n private readonly remoteBlobPool: RemoteBlobPool,\n logger: PFrameInternal.Logger,\n private readonly spillPath: string,\n columns: InternalPFrameData,\n ) {\n const makeLocalBlobId = (blob: PlTreeEntry): string => {\n const localBlob = this.localBlobPool.acquire(blob);\n this.localBlobs.push(localBlob);\n return localBlob.key;\n };\n\n const makeRemoteBlobId = (blob: PlTreeEntry): string => {\n const remoteBlob = this.remoteBlobPool.acquire(blob);\n this.remoteBlobs.push(remoteBlob);\n return remoteBlob.key + PFrameInternal.ParquetExtension;\n };\n\n const mapColumnData = (data: PFrameInternal.DataInfo<PlTreeEntry>): PFrameInternal.DataInfo<string> => {\n switch (data.type) {\n case 'Json':\n return { ...data };\n case 'JsonPartitioned':\n return {\n ...data,\n parts: mapValues(data.parts, makeLocalBlobId),\n };\n case 'BinaryPartitioned':\n return {\n ...data,\n parts: mapValues(data.parts, (v) => ({\n index: makeLocalBlobId(v.index),\n values: makeLocalBlobId(v.values),\n })),\n };\n case 'ParquetPartitioned':\n return {\n ...data,\n parts: mapValues(data.parts, (v) => ({\n ...v,\n data: makeRemoteBlobId(v.data),\n })),\n };\n default:\n assertNever(data);\n }\n };\n\n const jsonifiedColumns = columns.map((column) => ({\n ...column,\n data: mapColumnData(column.data),\n }));\n\n try {\n const pFrame = PFrameFactory.createPFrame({ spillPath: this.spillPath, logger });\n pFrame.setDataSource(this);\n\n const promises: Promise<void>[] = [];\n for (const column of jsonifiedColumns) {\n pFrame.addColumnSpec(column.id, column.spec);\n promises.push(pFrame.setColumnData(column.id, column.data, { signal: this.disposeSignal }));\n }\n\n this.pFramePromise = Promise.all(promises)\n .then(() => pFrame)\n .catch((err) => {\n this.dispose();\n pFrame.dispose();\n throw new PFrameDriverError(\n `PFrame creation failed asynchronously, `\n + `columns: ${JSON.stringify(jsonifiedColumns)}, `\n + `error: ${ensureError(err)}`,\n );\n });\n } catch (err: unknown) {\n throw new PFrameDriverError(\n `PFrame creation failed synchronously, `\n + `columns: ${JSON.stringify(jsonifiedColumns)}, `\n + `error: ${ensureError(err)}`,\n );\n }\n }\n\n public readonly preloadBlob = async (blobIds: string[]): Promise<void> => {\n return await this.localBlobPool.preloadBlob(blobIds, this.disposeSignal);\n };\n\n public readonly resolveBlobContent = async (blobId: string): Promise<Uint8Array> => {\n return await this.localBlobPool.resolveBlobContent(blobId, this.disposeSignal);\n };\n\n public get disposeSignal(): AbortSignal {\n return this.abortController.signal;\n }\n\n private dispose(): void {\n this.abortController.abort();\n this.localBlobs.forEach((entry) => entry.unref());\n this.remoteBlobs.forEach((entry) => entry.unref());\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n this.dispose();\n await this.pFramePromise\n .then((pFrame) => pFrame.dispose())\n .catch(() => { /* mute error */ });\n }\n}\n\nclass PTableDefHolder implements Disposable {\n private readonly abortController = new AbortController();\n\n constructor(\n public readonly def: FullPTableDef,\n private readonly pTableHandle: PTableHandle,\n private readonly logger: PFrameInternal.Logger,\n ) {\n if (getDebugFlags().logPFrameRequests) {\n this.logger('info', `PTable definition saved (pTableHandle = ${this.pTableHandle})`);\n }\n }\n\n public get disposeSignal(): AbortSignal {\n return this.abortController.signal;\n }\n\n [Symbol.dispose](): void {\n this.abortController.abort();\n if (getDebugFlags().logPFrameRequests) {\n this.logger('info', `PTable definition disposed (pTableHandle = ${this.pTableHandle})`);\n }\n }\n}\n\nclass PTableHolder implements AsyncDisposable {\n private readonly abortController = new AbortController();\n private readonly combinedDisposeSignal: AbortSignal;\n\n constructor(\n public readonly pFrame: PFrameHandle,\n pFrameDisposeSignal: AbortSignal,\n public readonly pTablePromise: Promise<PFrameInternal.PTableV7>,\n private readonly predecessor?: PoolResource<PTableHolder>,\n ) {\n this.combinedDisposeSignal = AbortSignal.any([pFrameDisposeSignal, this.abortController.signal]);\n }\n\n public get disposeSignal(): AbortSignal {\n return this.combinedDisposeSignal;\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n this.abortController.abort();\n await this.pTablePromise\n .then((pTable) => pTable.dispose())\n .catch(() => { /* mute error */ });\n this.predecessor?.unref();\n }\n}\n\ntype FullPTableDef = {\n pFrameHandle: PFrameHandle;\n def: PTableDef<PObjectId>;\n};\n\nexport type PFrameDriverOps = {\n /** Port to run parquet HTTP server on. */\n parquetServerPort: number;\n /** Concurrency limits for `getUniqueValues` and `calculateTableData` requests */\n pFrameConcurrency: number;\n /** Concurrency limits for `getShape` and `getData` requests */\n pTableConcurrency: number;\n /** Maximum number of `calculateTableData` results cached for each PFrame */\n pFrameCacheMaxCount: number;\n /**\n * Maximum size of `calculateTableData` results cached for PFrames overall.\n * The limit is soft, as the same table could be materialized with other requests and will not be deleted in such case.\n * Also each table has predeccessors, overlapping predecessors will be counted twice, so the effective limit is smaller.\n */\n pFramesCacheMaxSize: number;\n /**\n * Maximum size of `createPTable` results cached on disk.\n * The limit is soft, as the same table could be materialized with other requests and will not be deleted in such case.\n * Also each table has predeccessors, overlapping predecessors will be counted twice, so the effective limit is smaller.\n */\n pTablesCacheMaxSize: number;\n};\n\n/**\n * Extends public and safe SDK's driver API with methods used internally in the middle\n * layer and in tests.\n */\nexport interface InternalPFrameDriver extends SdkPFrameDriver, AsyncDisposable {\n /** Dispose the driver and all its resources. */\n dispose(): Promise<void>;\n\n /**\n * Dump active PFrames allocations in pprof format.\n * The result of this function should be saved as `profile.pb.gz`.\n * Use {@link https://pprof.me/} or {@link https://www.speedscope.app/}\n * to view the allocation flamechart.\n * @warning This method will always reject on Windows!\n */\n pprofDump(): Promise<Uint8Array>;\n\n /** Create a new PFrame */\n createPFrame(\n def: PFrameDef<PColumnDataUniversal>,\n ctx: ComputableCtx,\n ): PFrameHandle;\n\n /** Create a new PTable */\n createPTable(\n def: PTableDef<PColumn<PColumnDataUniversal>>,\n ctx: ComputableCtx,\n ): PTableHandle;\n\n /** Calculates data for the table and returns complete data representation of it */\n calculateTableData(\n handle: PFrameHandle,\n request: CalculateTableDataRequest<PObjectId>,\n range: TableRange | undefined,\n signal?: AbortSignal\n ): Promise<CalculateTableDataResponse>;\n\n /** Calculate set of unique values for a specific axis for the filtered set of records */\n getUniqueValues(\n handle: PFrameHandle,\n request: UniqueValuesRequest,\n signal?: AbortSignal\n ): Promise<UniqueValuesResponse>;\n\n /** Unified table shape */\n getShape(\n handle: PTableHandle,\n signal?: AbortSignal,\n ): Promise<PTableShape>;\n\n /**\n * Retrieve the data from the table. To retrieve only data required, it can be\n * sliced both horizontally ({@link columnIndices}) and vertically\n * ({@link range}).\n *\n * @param columnIndices unified indices of columns to be retrieved\n * @param range optionally limit the range of records to retrieve\n * */\n getData(\n handle: PTableHandle,\n columnIndices: number[],\n range: TableRange | undefined,\n signal?: AbortSignal,\n ): Promise<PTableVector[]>;\n}\n\nexport class PFrameDriver implements InternalPFrameDriver {\n private readonly pFrames: PFramePool;\n private readonly pTableDefs: PTableDefPool;\n private readonly pTables: PTablePool;\n\n private readonly pTableCacheUi: PTableCacheUi;\n private readonly pTableCacheModel: PTableCacheModel;\n\n private readonly frameConcurrencyLimiter: ConcurrencyLimitingExecutor;\n private readonly tableConcurrencyLimiter: ConcurrencyLimitingExecutor;\n\n public async pprofDump(): Promise<Uint8Array> {\n return await PFrameFactory.pprofDump();\n }\n\n public static async init(\n blobDriver: DownloadDriver,\n miLogger: MiLogger,\n spillPath: string,\n ops: PFrameDriverOps,\n ): Promise<PFrameDriver> {\n const resolvedSpillPath = path.resolve(spillPath);\n await emptyDir(resolvedSpillPath);\n\n const logger: PFrameInternal.Logger = (level, message) => miLogger[level](message);\n const localBlobPool = new LocalBlobPool(blobDriver);\n const remoteBlobPool = new RemoteBlobPool(blobDriver);\n\n const store = new BlobStore({ remoteBlobPool, logger });\n const handler = HttpHelpers.createRequestHandler({ store: store });\n const server = await HttpHelpers.createHttpServer({ handler, port: ops.parquetServerPort });\n\n return new PFrameDriver(logger, server, localBlobPool, remoteBlobPool, resolvedSpillPath, ops);\n }\n\n private constructor(\n private readonly logger: PFrameInternal.Logger,\n private readonly server: PFrameInternal.HttpServer,\n localBlobPool: LocalBlobPool,\n remoteBlobPool: RemoteBlobPool,\n spillPath: string,\n ops: PFrameDriverOps,\n ) {\n const concurrencyLimiter = new ConcurrencyLimitingExecutor(ops.pFrameConcurrency);\n this.frameConcurrencyLimiter = concurrencyLimiter;\n this.tableConcurrencyLimiter = new ConcurrencyLimitingExecutor(ops.pTableConcurrency);\n\n this.pFrames = new PFramePool(server.info, localBlobPool, remoteBlobPool, logger, spillPath);\n this.pTableDefs = new PTableDefPool(logger);\n this.pTables = new PTablePool(this.pFrames, this.pTableDefs, logger);\n\n this.pTableCacheUi = new PTableCacheUi(logger, ops);\n this.pTableCacheModel = new PTableCacheModel(logger, ops);\n }\n\n async dispose(): Promise<void> {\n return await this.server.stop();\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n return await this.dispose();\n }\n\n //\n // Internal / Config API Methods\n //\n\n public createPFrame(\n def: PFrameDef<PColumnDataUniversal>,\n ctx: ComputableCtx,\n ): PFrameHandle {\n const columns: InternalPFrameData = def\n .filter((c) => valueTypes.find((t) => t === c.spec.valueType))\n .map((c) =>\n mapPObjectData(c, (d) =>\n isPlTreeNodeAccessor(d)\n ? parseDataInfoResource(d)\n : isDataInfo(d)\n ? d.type === 'ParquetPartitioned'\n ? mapDataInfo(d, (a) => traverseParquetChunkResource(a))\n : mapDataInfo(d, (a) => a.persist())\n : makeDataInfoFromPColumnValues(c.spec, d),\n ),\n );\n const distinctColumns = uniqueBy(columns, (column) => column.id);\n\n const res = this.pFrames.acquire(distinctColumns);\n ctx.addOnDestroy(res.unref);\n return res.key as PFrameHandle;\n }\n\n public createPTable(\n rawDef: PTableDef<PColumn<PColumnDataUniversal>>,\n ctx: ComputableCtx,\n ): PTableHandle {\n const def = migratePTableFilters(rawDef, this.logger);\n const pFrameHandle = this.createPFrame(extractAllColumns(def.src), ctx);\n const defIds = mapPTableDef(def, (c) => c.id);\n const sortedDef = sortPTableDef(defIds);\n\n const { key, unref } = this.pTableDefs.acquire({ def: sortedDef, pFrameHandle });\n if (getDebugFlags().logPFrameRequests) {\n this.logger('info', `Create PTable call (pFrameHandle = ${pFrameHandle}; pTableHandle = ${key})`);\n }\n ctx.addOnDestroy(unref); // in addition to pframe unref added in createPFrame above\n return key as PTableHandle;\n }\n\n //\n // PFrame istance methods\n //\n\n public async findColumns(\n handle: PFrameHandle,\n request: FindColumnsRequest,\n ): Promise<FindColumnsResponse> {\n const iRequest: PFrameInternal.FindColumnsRequest = {\n ...request,\n compatibleWith:\n request.compatibleWith.length !== 0\n ? [{\n axesSpec: [\n ...new Map(request.compatibleWith.map(\n (item) => [canonicalize(item)!, item] as const,\n )).values(),\n ],\n qualifications: [],\n }]\n : [],\n };\n\n const { pFramePromise } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n\n const responce = await pFrame.findColumns(iRequest);\n return {\n hits: responce.hits\n .filter((h) => // only exactly matching columns\n h.mappingVariants.length === 0\n || h.mappingVariants.some((v) =>\n v.qualifications.forHit.length === 0\n && v.qualifications.forQueries.every((q) => q.length === 0)))\n .map((h) => h.hit),\n };\n }\n\n public async getColumnSpec(handle: PFrameHandle, columnId: PObjectId): Promise<PColumnSpec> {\n const { pFramePromise } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n return await pFrame.getColumnSpec(columnId);\n }\n\n public async listColumns(handle: PFrameHandle): Promise<PColumnIdAndSpec[]> {\n const { pFramePromise } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n return await pFrame.listColumns();\n }\n\n public async calculateTableData(\n handle: PFrameHandle,\n request: CalculateTableDataRequest<PObjectId>,\n range: TableRange | undefined,\n signal?: AbortSignal,\n ): Promise<CalculateTableDataResponse> {\n if (getDebugFlags().logPFrameRequests) {\n this.logger('info',\n `Call calculateTableData, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`,\n );\n }\n\n const table = this.pTables.acquire({\n pFrameHandle: handle,\n def: sortPTableDef(migratePTableFilters(request, this.logger)),\n });\n const { pTablePromise, disposeSignal } = table.resource;\n const pTable = await pTablePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n return await this.frameConcurrencyLimiter.run(async () => {\n try {\n const spec = pTable.getSpec();\n const data = await pTable.getData([...spec.keys()], {\n range,\n signal: combinedSignal,\n });\n\n const resultSize = await pTable.getFootprint({\n withPredecessors: false,\n signal: combinedSignal,\n });\n if (resultSize >= 2 * 1024 * 1024 * 1024) {\n throw new PFrameDriverError(`Join results exceed 2GB, please add filters to shrink the result size`);\n }\n\n const overallSize = await pTable.getFootprint({\n withPredecessors: true,\n signal: combinedSignal,\n });\n this.pTableCacheUi.cache(table, overallSize);\n\n return spec.map((spec, i) => ({\n spec: spec,\n data: data[i],\n }));\n } catch (err: unknown) {\n table.unref();\n throw err;\n }\n });\n }\n\n public async getUniqueValues(\n handle: PFrameHandle,\n request: UniqueValuesRequest,\n signal?: AbortSignal,\n ): Promise<UniqueValuesResponse> {\n if (getDebugFlags().logPFrameRequests) {\n this.logger('info',\n `Call getUniqueValues, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`,\n );\n }\n\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n return await this.frameConcurrencyLimiter.run(async () => {\n return await pFrame.getUniqueValues({\n ...request,\n filters: migrateFilters(request.filters, this.logger),\n }, {\n signal: combinedSignal,\n });\n });\n }\n\n //\n // PTable istance methods\n //\n\n public async getSpec(handle: PTableHandle): Promise<PTableColumnSpec[]> {\n const { def } = this.pTableDefs.getByKey(handle);\n using table = this.pTables.acquire(def);\n\n const { pTablePromise } = table.resource;\n const pTable = await pTablePromise;\n\n return pTable.getSpec();\n }\n\n public async getShape(handle: PTableHandle, signal?: AbortSignal): Promise<PTableShape> {\n const { def, disposeSignal: defDisposeSignal } = this.pTableDefs.getByKey(handle);\n const table = this.pTables.acquire(def);\n\n const { pTablePromise, disposeSignal } = table.resource;\n const pTable = await pTablePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n const { shape, overallSize } = await this.tableConcurrencyLimiter.run(async () => {\n const shape = await pTable.getShape({\n signal: combinedSignal,\n });\n\n const overallSize = await pTable.getFootprint({\n withPredecessors: true,\n signal: combinedSignal,\n });\n\n return { shape, overallSize };\n });\n\n this.pTableCacheModel.cache(table, overallSize, defDisposeSignal);\n return shape;\n }\n\n public async getData(\n handle: PTableHandle,\n columnIndices: number[],\n range: TableRange | undefined,\n signal?: AbortSignal,\n ): Promise<PTableVector[]> {\n const { def, disposeSignal: defDisposeSignal } = this.pTableDefs.getByKey(handle);\n const table = this.pTables.acquire(def);\n\n const { pTablePromise, disposeSignal } = table.resource;\n const pTable = await pTablePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n const { data, overallSize } = await this.tableConcurrencyLimiter.run(async () => {\n const data = await pTable.getData(columnIndices, {\n range,\n signal: combinedSignal,\n });\n\n const overallSize = await pTable.getFootprint({\n withPredecessors: true,\n signal: combinedSignal,\n });\n\n return { data, overallSize };\n });\n\n this.pTableCacheModel.cache(table, overallSize, defDisposeSignal);\n return data;\n }\n}\n\nfunction joinEntryToInternal(entry: JoinEntry<PObjectId>): PFrameInternal.JoinEntryV4 {\n const type = entry.type;\n switch (type) {\n case 'column':\n return {\n type: 'column',\n columnId: entry.column,\n };\n case 'slicedColumn':\n return {\n type: 'slicedColumn',\n columnId: entry.column,\n newId: entry.newId,\n axisFilters: entry.axisFilters,\n };\n case 'artificialColumn':\n return {\n type: 'artificialColumn',\n columnId: entry.column,\n newId: entry.newId,\n axesIndices: entry.axesIndices,\n };\n case 'inlineColumn':\n return {\n type: 'inlineColumn',\n newId: entry.column.id,\n spec: entry.column.spec,\n dataInfo: {\n type: 'Json',\n keyLength: entry.column.spec.axesSpec.length,\n data: entry.column.data.reduce((acc, row) => {\n acc[JSON.stringify(row.key)] = row.val;\n return acc;\n }, {} as Record<string, PColumnValue>),\n },\n };\n case 'inner':\n case 'full':\n return {\n type: entry.type,\n entries: entry.entries.map((col) => joinEntryToInternal(col)),\n };\n case 'outer':\n return {\n type: 'outer',\n primary: joinEntryToInternal(entry.primary),\n secondary: entry.secondary.map((col) => joinEntryToInternal(col)),\n };\n default:\n throw new PFrameDriverError(`unsupported PFrame join entry type: ${type satisfies never}`);\n }\n}\n\nfunction sortPTableDef(def: PTableDef<PObjectId>): PTableDef<PObjectId> {\n function cmpJoinEntries(lhs: JoinEntry<PObjectId>, rhs: JoinEntry<PObjectId>): number {\n if (lhs.type !== rhs.type) {\n return lhs.type < rhs.type ? -1 : 1;\n }\n const type = lhs.type;\n switch (type) {\n case 'column':\n return lhs.column < (rhs as typeof lhs).column ? -1 : 1;\n case 'slicedColumn':\n case 'artificialColumn':\n return lhs.newId < (rhs as typeof lhs).newId ? -1 : 1;\n case 'inlineColumn': {\n return lhs.column.id < (rhs as typeof lhs).column.id ? -1 : 1;\n }\n case 'inner':\n case 'full': {\n const rhsInner = rhs as typeof lhs;\n if (lhs.entries.length !== rhsInner.entries.length) {\n return lhs.entries.length - rhsInner.entries.length;\n }\n for (let i = 0; i < lhs.entries.length; i++) {\n const cmp = cmpJoinEntries(lhs.entries[i], rhsInner.entries[i]);\n if (cmp !== 0) {\n return cmp;\n }\n }\n return 0;\n }\n case 'outer': {\n const rhsOuter = rhs as typeof lhs;\n const cmp = cmpJoinEntries(lhs.primary, rhsOuter.primary);\n if (cmp !== 0) {\n return cmp;\n }\n if (lhs.secondary.length !== rhsOuter.secondary.length) {\n return lhs.secondary.length - rhsOuter.secondary.length;\n }\n for (let i = 0; i < lhs.secondary.length; i++) {\n const cmp = cmpJoinEntries(lhs.secondary[i], rhsOuter.secondary[i]);\n if (cmp !== 0) {\n return cmp;\n }\n }\n return 0;\n }\n default:\n assertNever(type);\n }\n }\n function sortJoinEntry(entry: JoinEntry<PObjectId>): JoinEntry<PObjectId> {\n switch (entry.type) {\n case 'column':\n case 'slicedColumn':\n case 'inlineColumn':\n return entry;\n case 'artificialColumn': {\n const sortedAxesIndices = entry.axesIndices.toSorted((lhs, rhs) => lhs - rhs);\n return {\n ...entry,\n axesIndices: sortedAxesIndices,\n };\n }\n case 'inner':\n case 'full': {\n const sortedEntries = entry.entries.map(sortJoinEntry);\n sortedEntries.sort(cmpJoinEntries);\n return {\n ...entry,\n entries: sortedEntries,\n };\n }\n case 'outer': {\n const sortedSecondary = entry.secondary.map(sortJoinEntry);\n sortedSecondary.sort(cmpJoinEntries);\n return {\n ...entry,\n primary: sortJoinEntry(entry.primary),\n secondary: sortedSecondary,\n };\n }\n default:\n assertNever(entry);\n }\n }\n function sortFilters(filters: PTableRecordFilter[]): PTableRecordFilter[] {\n return filters.toSorted((lhs, rhs) => {\n if (lhs.column.type === 'axis' && rhs.column.type === 'axis') {\n const lhsId = canonicalizeJson(getAxisId(lhs.column.id));\n const rhsId = canonicalizeJson(getAxisId(rhs.column.id));\n return lhsId < rhsId ? -1 : 1;\n } else if (lhs.column.type === 'column' && rhs.column.type === 'column') {\n return lhs.column.id < rhs.column.id ? -1 : 1;\n } else {\n return lhs.column.type === 'axis' ? -1 : 1;\n }\n });\n }\n return {\n src: sortJoinEntry(def.src),\n partitionFilters: sortFilters(def.partitionFilters),\n filters: sortFilters(def.filters),\n sorting: def.sorting,\n };\n}\n\nfunction stableKeyFromFullPTableDef(data: FullPTableDef): string {\n try {\n const hash = createHash('sha256');\n hash.update(canonicalize(data)!);\n return hash.digest().toString('hex');\n } catch (err: unknown) {\n throw new PFrameDriverError(\n `PTable handle calculation failed, `\n + `request: ${JSON.stringify(data)}, `\n + `error: ${ensureError(err)}`,\n );\n }\n}\n\nfunction stableKeyFromPFrameData(data: PColumn<PFrameInternal.DataInfo<PlTreeEntry>>[]): string {\n const orderedData = [...data].map((column) =>\n mapPObjectData(column, (r) => {\n let result: {\n type: string;\n keyLength: number;\n payload: {\n key: string;\n value: null | number | string | [string, string];\n }[];\n };\n const type = r.type;\n switch (type) {\n case 'Json':\n result = {\n type: r.type,\n keyLength: r.keyLength,\n payload: Object.entries(r.data).map(([part, value]) => ({\n key: part,\n value,\n })),\n };\n break;\n case 'JsonPartitioned':\n result = {\n type: r.type,\n keyLength: r.partitionKeyLength,\n payload: Object.entries(r.parts).map(([part, info]) => ({\n key: part,\n value: makeBlobId(info),\n })),\n };\n break;\n case 'BinaryPartitioned':\n result = {\n type: r.type,\n keyLength: r.partitionKeyLength,\n payload: Object.entries(r.parts).map(([part, info]) => ({\n key: part,\n value: [makeBlobId(info.index), makeBlobId(info.values)] as const,\n })),\n };\n break;\n case 'ParquetPartitioned':\n result = {\n type: r.type,\n keyLength: r.partitionKeyLength,\n payload: Object.entries(r.parts).map(([part, info]) => ({\n key: part,\n value: info.dataDigest || [\n makeBlobId(info.data),\n JSON.stringify({ axes: info.axes, column: info.column }),\n ] as const,\n })),\n };\n break;\n default:\n throw new PFrameDriverError(`unsupported resource type: ${JSON.stringify(type satisfies never)}`);\n }\n result.payload.sort((lhs, rhs) => lhs.key < rhs.key ? -1 : 1);\n return result;\n }),\n );\n orderedData.sort((lhs, rhs) => lhs.id < rhs.id ? -1 : 1);\n\n const hash = createHash('sha256');\n hash.update(canonicalize(orderedData)!);\n return hash.digest().toString('hex');\n}\n"],"names":["RefCountResourcePool","PFrameDriverError","isAbortError","PFrameInternal","ensureError","Readable","assertNever","isPFrameDriverError","getDebugFlags","LRUCache","mapValues","PFrameFactory","emptyDir","HttpHelpers","ConcurrencyLimitingExecutor","mapPObjectData","isPlTreeNodeAccessor","parseDataInfoResource","isDataInfo","mapDataInfo","traverseParquetChunkResource","makeDataInfoFromPColumnValues","uniqueBy","extractAllColumns","mapPTableDef","__addDisposableResource","canonicalizeJson","getAxisId","createHash"],"mappings":"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"}
1
+ {"version":3,"file":"driver.cjs","sources":["../../src/pool/driver.ts"],"sourcesContent":["import {\n mapDataInfo,\n isDataInfo,\n ensureError,\n PFrameDriverError,\n isAbortError,\n type LocalBlobHandleAndSize,\n type RemoteBlobHandleAndSize,\n type RemoteBlobHandle,\n type ContentHandler,\n type PColumnSpec,\n type PColumnDataUniversal,\n} from '@platforma-sdk/model';\nimport { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport {\n emptyDir,\n RefCountPoolBase,\n type PoolEntry,\n type MiLogger,\n} from '@milaboratories/ts-helpers';\nimport type { DownloadDriver } from '@milaboratories/pl-drivers';\nimport {\n isPlTreeNodeAccessor,\n type PlTreeEntry,\n type PlTreeNodeAccessor,\n} from '@milaboratories/pl-tree';\nimport type {\n Computable,\n ComputableStableDefined,\n} from '@milaboratories/computable';\nimport {\n makeJsonDataInfo,\n AbstractPFrameDriver,\n AbstractPFrameDriverOpsDefaults,\n type AbstractInternalPFrameDriver,\n type AbstractPFrameDriverOps,\n type LocalBlobProvider,\n type RemoteBlobProvider,\n} from '@milaboratories/pf-driver';\nimport { HttpHelpers } from '@milaboratories/pframes-rs-node';\nimport path from 'node:path';\nimport { Readable } from 'node:stream';\nimport {\n parseDataInfoResource,\n traverseParquetChunkResource,\n} from './data';\n\nfunction makeBlobId(res: PlTreeEntry): PFrameInternal.PFrameBlobId {\n return String(res.rid);\n}\n\ntype LocalBlob = ComputableStableDefined<LocalBlobHandleAndSize>;\nclass LocalBlobProviderImpl\n extends RefCountPoolBase<PlTreeEntry, PFrameInternal.PFrameBlobId, LocalBlob>\n implements LocalBlobProvider<PlTreeEntry> {\n constructor(\n private readonly blobDriver: DownloadDriver,\n private readonly logger: PFrameInternal.Logger,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: PlTreeEntry): PFrameInternal.PFrameBlobId {\n return makeBlobId(params);\n }\n\n protected createNewResource(params: PlTreeEntry, _key: PFrameInternal.PFrameBlobId): LocalBlob {\n return this.blobDriver.getDownloadedBlob(params);\n }\n\n public getByKey(blobId: PFrameInternal.PFrameBlobId): LocalBlob {\n const resource = super.tryGetByKey(blobId);\n if (!resource) throw new PFrameDriverError(`Local blob with id ${blobId} not found.`);\n return resource;\n }\n\n public makeDataSource(signal: AbortSignal): Omit<PFrameInternal.PFrameDataSourceV2, 'parquetServer'> {\n return {\n preloadBlob: async (blobIds: PFrameInternal.PFrameBlobId[]) => {\n try {\n await Promise.all(blobIds.map((blobId) => this.getByKey(blobId).awaitStableFullValue(signal)));\n } catch (err: unknown) {\n if (!isAbortError(err)) throw err;\n }\n },\n resolveBlobContent: async (blobId: PFrameInternal.PFrameBlobId) => {\n const computable = this.getByKey(blobId);\n const blob = await computable.awaitStableValue(signal);\n return await this.blobDriver.getContent(blob.handle, { signal });\n },\n };\n }\n}\n\ntype RemoteBlob = Computable<RemoteBlobHandleAndSize>;\nclass RemoteBlobPool\n extends RefCountPoolBase<PlTreeEntry, PFrameInternal.PFrameBlobId, RemoteBlob> {\n constructor(\n private readonly blobDriver: DownloadDriver,\n private readonly logger: PFrameInternal.Logger,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: PlTreeEntry): PFrameInternal.PFrameBlobId {\n return makeBlobId(params);\n }\n\n protected createNewResource(params: PlTreeEntry, _key: PFrameInternal.PFrameBlobId): RemoteBlob {\n return this.blobDriver.getOnDemandBlob(params);\n }\n\n public getByKey(blobId: PFrameInternal.PFrameBlobId): RemoteBlob {\n const resource = super.tryGetByKey(blobId);\n if (!resource) throw new PFrameDriverError(`Remote blob with id ${blobId} not found.`);\n return resource;\n }\n\n public async withContent<T>(\n handle: RemoteBlobHandle,\n options: {\n range: PFrameInternal.FileRange;\n signal: AbortSignal;\n handler: ContentHandler<T>;\n },\n ): Promise<T> {\n return await this.blobDriver.withContent(handle, {\n range: {\n from: options.range.start,\n to: options.range.end + 1,\n },\n signal: options.signal,\n handler: options.handler,\n });\n }\n}\n\ninterface BlobStoreOptions extends PFrameInternal.ObjectStoreOptions {\n remoteBlobProvider: RemoteBlobPool;\n};\n\nclass BlobStore extends PFrameInternal.BaseObjectStore {\n private readonly remoteBlobProvider: RemoteBlobPool;\n\n constructor(options: BlobStoreOptions) {\n super(options);\n this.remoteBlobProvider = options.remoteBlobProvider;\n }\n\n public override async request(\n filename: PFrameInternal.ParquetFileName,\n params: {\n method: PFrameInternal.HttpMethod;\n range?: PFrameInternal.HttpRange;\n signal: AbortSignal;\n callback: (response: PFrameInternal.ObjectStoreResponse) => Promise<void>;\n },\n ): Promise<void> {\n const blobId = filename.slice(0, -PFrameInternal.ParquetExtension.length);\n const respond = async (response: PFrameInternal.ObjectStoreResponse): Promise<void> => {\n try {\n await params.callback(response);\n } catch (error: unknown) {\n this.logger('warn',\n `PFrames blob store received unhandled rejection from HTTP handler: ${ensureError(error)}`,\n );\n }\n };\n\n try {\n const computable = this.remoteBlobProvider.tryGetByKey(blobId);\n if (!computable) return await respond({ type: 'NotFound' });\n\n let blob: RemoteBlobHandleAndSize;\n try {\n blob = await computable.getValue();\n } catch (error: unknown) {\n this.logger('error',\n `PFrames blob store failed to get blob from computable: ${ensureError(error)}`,\n );\n return await respond({ type: 'InternalError' });\n }\n params.signal.throwIfAborted();\n\n const translatedRange = this.translate(blob.size, params.range);\n if (!translatedRange) {\n return await respond({\n type: 'RangeNotSatisfiable',\n size: blob.size,\n });\n }\n\n if (params.method === 'HEAD') {\n return await respond({\n type: 'Ok',\n size: blob.size,\n range: translatedRange,\n });\n }\n\n this.logger('info',\n `PFrames blob store requesting content for ${blobId}, `\n + `range [${translatedRange.start}..=${translatedRange.end}]`,\n );\n return await this.remoteBlobProvider.withContent(blob.handle, {\n range: translatedRange,\n signal: params.signal,\n handler: async (data) => {\n return await respond({\n type: 'Ok',\n size: blob.size,\n range: translatedRange,\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n data: Readable.fromWeb(data),\n });\n },\n });\n } catch (error: unknown) {\n if (!isAbortError(error)) {\n this.logger('warn',\n `PFrames blob store unhandled error: ${ensureError(error)}`,\n );\n }\n return await respond({ type: 'InternalError' });\n }\n }\n}\n\nclass RemoteBlobProviderImpl implements RemoteBlobProvider<PlTreeEntry> {\n constructor(\n private readonly pool: RemoteBlobPool,\n private readonly server: PFrameInternal.HttpServer,\n ) {}\n\n public static async init(\n blobDriver: DownloadDriver,\n logger: PFrameInternal.Logger,\n serverOptions: Omit<PFrameInternal.HttpServerOptions, 'handler'>,\n ): Promise<RemoteBlobProviderImpl> {\n const pool = new RemoteBlobPool(blobDriver, logger);\n const store = new BlobStore({ remoteBlobProvider: pool, logger });\n\n const handler = HttpHelpers.createRequestHandler({ store });\n const server = await HttpHelpers.createHttpServer({ ...serverOptions, handler });\n logger('info', `PFrames HTTP server started on ${server.info.url}`);\n\n return new RemoteBlobProviderImpl(pool, server);\n }\n\n public acquire(params: PlTreeEntry): PoolEntry {\n return this.pool.acquire(params);\n }\n\n public httpServerInfo(): PFrameInternal.HttpServerInfo {\n return this.server.info;\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.server.stop();\n }\n}\n\nexport interface InternalPFrameDriver\n extends AbstractInternalPFrameDriver<PColumnDataUniversal<PlTreeNodeAccessor>> {};\n\nexport type PFrameDriverOps = AbstractPFrameDriverOps & {\n /** Port to run parquet HTTP server on. */\n parquetServerPort: number;\n};\n\nexport const PFrameDriverOpsDefaults: PFrameDriverOps = {\n ...AbstractPFrameDriverOpsDefaults,\n parquetServerPort: 0, // 0 means that some unused port will be assigned by the OS\n};\n\nexport async function createPFrameDriver(params: {\n blobDriver: DownloadDriver;\n logger: MiLogger;\n spillPath: string;\n options: PFrameDriverOps;\n}): Promise<InternalPFrameDriver> {\n const resolvedSpillPath = path.resolve(params.spillPath);\n await emptyDir(resolvedSpillPath);\n\n const logger: PFrameInternal.Logger = (level, message) => params.logger[level](message);\n const localBlobProvider = new LocalBlobProviderImpl(params.blobDriver, logger);\n const remoteBlobProvider = await RemoteBlobProviderImpl.init(\n params.blobDriver,\n logger,\n { port: params.options.parquetServerPort },\n );\n\n const resolveDataInfo = (spec: PColumnSpec, data: PColumnDataUniversal<PlTreeNodeAccessor>) => {\n return isPlTreeNodeAccessor(data)\n ? parseDataInfoResource(data)\n : isDataInfo(data)\n ? data.type === 'ParquetPartitioned'\n ? mapDataInfo(data, (a) => traverseParquetChunkResource(a))\n : mapDataInfo(data, (a) => a.persist())\n : makeJsonDataInfo(spec, data);\n };\n\n return new AbstractPFrameDriver({\n logger,\n localBlobProvider,\n remoteBlobProvider,\n spillPath: resolvedSpillPath,\n options: params.options,\n resolveDataInfo,\n });\n}\n"],"names":["RefCountPoolBase","PFrameDriverError","isAbortError","PFrameInternal","ensureError","Readable","HttpHelpers","AbstractPFrameDriverOpsDefaults","emptyDir","data","isPlTreeNodeAccessor","parseDataInfoResource","isDataInfo","mapDataInfo","traverseParquetChunkResource","makeJsonDataInfo","AbstractPFrameDriver"],"mappings":"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"}
@@ -1,91 +1,19 @@
1
- import type { DownloadDriver } from '@milaboratories/pl-drivers';
2
- import type { PlTreeNodeAccessor } from '@milaboratories/pl-tree';
3
- import type { ComputableCtx } from '@milaboratories/computable';
4
- import type { CalculateTableDataRequest, CalculateTableDataResponse, FindColumnsRequest, FindColumnsResponse, PColumnIdAndSpec, PColumnSpec, PFrameHandle, PObjectId, PTableColumnSpec, PTableHandle, PTableShape, PTableVector, TableRange, UniqueValuesRequest, UniqueValuesResponse, PFrameDriver as SdkPFrameDriver, PColumn, PFrameDef, PTableDef, PColumnValues, DataInfo } from '@platforma-sdk/model';
1
+ import { type PColumnDataUniversal } from '@platforma-sdk/model';
5
2
  import { type MiLogger } from '@milaboratories/ts-helpers';
6
- type PColumnDataUniversal = PlTreeNodeAccessor | DataInfo<PlTreeNodeAccessor> | PColumnValues;
7
- export type PFrameDriverOps = {
3
+ import type { DownloadDriver } from '@milaboratories/pl-drivers';
4
+ import { type PlTreeNodeAccessor } from '@milaboratories/pl-tree';
5
+ import { type AbstractInternalPFrameDriver, type AbstractPFrameDriverOps } from '@milaboratories/pf-driver';
6
+ export interface InternalPFrameDriver extends AbstractInternalPFrameDriver<PColumnDataUniversal<PlTreeNodeAccessor>> {
7
+ }
8
+ export type PFrameDriverOps = AbstractPFrameDriverOps & {
8
9
  /** Port to run parquet HTTP server on. */
9
10
  parquetServerPort: number;
10
- /** Concurrency limits for `getUniqueValues` and `calculateTableData` requests */
11
- pFrameConcurrency: number;
12
- /** Concurrency limits for `getShape` and `getData` requests */
13
- pTableConcurrency: number;
14
- /** Maximum number of `calculateTableData` results cached for each PFrame */
15
- pFrameCacheMaxCount: number;
16
- /**
17
- * Maximum size of `calculateTableData` results cached for PFrames overall.
18
- * The limit is soft, as the same table could be materialized with other requests and will not be deleted in such case.
19
- * Also each table has predeccessors, overlapping predecessors will be counted twice, so the effective limit is smaller.
20
- */
21
- pFramesCacheMaxSize: number;
22
- /**
23
- * Maximum size of `createPTable` results cached on disk.
24
- * The limit is soft, as the same table could be materialized with other requests and will not be deleted in such case.
25
- * Also each table has predeccessors, overlapping predecessors will be counted twice, so the effective limit is smaller.
26
- */
27
- pTablesCacheMaxSize: number;
28
11
  };
29
- /**
30
- * Extends public and safe SDK's driver API with methods used internally in the middle
31
- * layer and in tests.
32
- */
33
- export interface InternalPFrameDriver extends SdkPFrameDriver, AsyncDisposable {
34
- /** Dispose the driver and all its resources. */
35
- dispose(): Promise<void>;
36
- /**
37
- * Dump active PFrames allocations in pprof format.
38
- * The result of this function should be saved as `profile.pb.gz`.
39
- * Use {@link https://pprof.me/} or {@link https://www.speedscope.app/}
40
- * to view the allocation flamechart.
41
- * @warning This method will always reject on Windows!
42
- */
43
- pprofDump(): Promise<Uint8Array>;
44
- /** Create a new PFrame */
45
- createPFrame(def: PFrameDef<PColumnDataUniversal>, ctx: ComputableCtx): PFrameHandle;
46
- /** Create a new PTable */
47
- createPTable(def: PTableDef<PColumn<PColumnDataUniversal>>, ctx: ComputableCtx): PTableHandle;
48
- /** Calculates data for the table and returns complete data representation of it */
49
- calculateTableData(handle: PFrameHandle, request: CalculateTableDataRequest<PObjectId>, range: TableRange | undefined, signal?: AbortSignal): Promise<CalculateTableDataResponse>;
50
- /** Calculate set of unique values for a specific axis for the filtered set of records */
51
- getUniqueValues(handle: PFrameHandle, request: UniqueValuesRequest, signal?: AbortSignal): Promise<UniqueValuesResponse>;
52
- /** Unified table shape */
53
- getShape(handle: PTableHandle, signal?: AbortSignal): Promise<PTableShape>;
54
- /**
55
- * Retrieve the data from the table. To retrieve only data required, it can be
56
- * sliced both horizontally ({@link columnIndices}) and vertically
57
- * ({@link range}).
58
- *
59
- * @param columnIndices unified indices of columns to be retrieved
60
- * @param range optionally limit the range of records to retrieve
61
- * */
62
- getData(handle: PTableHandle, columnIndices: number[], range: TableRange | undefined, signal?: AbortSignal): Promise<PTableVector[]>;
63
- }
64
- export declare class PFrameDriver implements InternalPFrameDriver {
65
- private readonly logger;
66
- private readonly server;
67
- private readonly pFrames;
68
- private readonly pTableDefs;
69
- private readonly pTables;
70
- private readonly pTableCacheUi;
71
- private readonly pTableCacheModel;
72
- private readonly frameConcurrencyLimiter;
73
- private readonly tableConcurrencyLimiter;
74
- pprofDump(): Promise<Uint8Array>;
75
- static init(blobDriver: DownloadDriver, miLogger: MiLogger, spillPath: string, ops: PFrameDriverOps): Promise<PFrameDriver>;
76
- private constructor();
77
- dispose(): Promise<void>;
78
- [Symbol.asyncDispose](): Promise<void>;
79
- createPFrame(def: PFrameDef<PColumnDataUniversal>, ctx: ComputableCtx): PFrameHandle;
80
- createPTable(rawDef: PTableDef<PColumn<PColumnDataUniversal>>, ctx: ComputableCtx): PTableHandle;
81
- findColumns(handle: PFrameHandle, request: FindColumnsRequest): Promise<FindColumnsResponse>;
82
- getColumnSpec(handle: PFrameHandle, columnId: PObjectId): Promise<PColumnSpec>;
83
- listColumns(handle: PFrameHandle): Promise<PColumnIdAndSpec[]>;
84
- calculateTableData(handle: PFrameHandle, request: CalculateTableDataRequest<PObjectId>, range: TableRange | undefined, signal?: AbortSignal): Promise<CalculateTableDataResponse>;
85
- getUniqueValues(handle: PFrameHandle, request: UniqueValuesRequest, signal?: AbortSignal): Promise<UniqueValuesResponse>;
86
- getSpec(handle: PTableHandle): Promise<PTableColumnSpec[]>;
87
- getShape(handle: PTableHandle, signal?: AbortSignal): Promise<PTableShape>;
88
- getData(handle: PTableHandle, columnIndices: number[], range: TableRange | undefined, signal?: AbortSignal): Promise<PTableVector[]>;
89
- }
90
- export {};
12
+ export declare const PFrameDriverOpsDefaults: PFrameDriverOps;
13
+ export declare function createPFrameDriver(params: {
14
+ blobDriver: DownloadDriver;
15
+ logger: MiLogger;
16
+ spillPath: string;
17
+ options: PFrameDriverOps;
18
+ }): Promise<InternalPFrameDriver>;
91
19
  //# sourceMappingURL=driver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/pool/driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/pool/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAIL,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAG7B,MAAM,2BAA2B,CAAC;AAgOnC,MAAM,WAAW,oBACf,SAAQ,4BAA4B,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;CAAG;AAEnF,MAAM,MAAM,eAAe,GAAG,uBAAuB,GAAG;IACtD,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAGrC,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;CAC1B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA8BhC"}