@adonis-agora/telescope 0.22.0 → 0.23.0
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/CHANGELOG.md +10 -0
- package/dist/src/ai/index.d.ts +1 -1
- package/dist/src/ai/index.js +1 -1
- package/dist/src/alerts/index.d.ts +1 -1
- package/dist/src/alerts/index.js +1 -1
- package/dist/src/index.d.ts +9 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/index.d.ts +1 -1
- package/dist/src/mcp/index.js +1 -1
- package/dist/src/profiling/index.d.ts +1 -1
- package/dist/src/profiling/index.js +1 -1
- package/dist/src/stores/factory.d.ts +79 -0
- package/dist/src/stores/factory.d.ts.map +1 -1
- package/dist/src/stores/factory.js +71 -0
- package/dist/src/stores/factory.js.map +1 -1
- package/dist/src/stores/parquet.d.ts +184 -0
- package/dist/src/stores/parquet.d.ts.map +1 -0
- package/dist/src/stores/parquet.js +461 -0
- package/dist/src/stores/parquet.js.map +1 -0
- package/dist/src/stores/parquet_duckdb.d.ts +52 -0
- package/dist/src/stores/parquet_duckdb.d.ts.map +1 -0
- package/dist/src/stores/parquet_duckdb.js +266 -0
- package/dist/src/stores/parquet_duckdb.js.map +1 -0
- package/dist/src/stores/parquet_format.d.ts +108 -0
- package/dist/src/stores/parquet_format.d.ts.map +1 -0
- package/dist/src/stores/parquet_format.js +175 -0
- package/dist/src/stores/parquet_format.js.map +1 -0
- package/dist/src/stores/parquet_hyparquet.d.ts +34 -0
- package/dist/src/stores/parquet_hyparquet.d.ts.map +1 -0
- package/dist/src/stores/parquet_hyparquet.js +212 -0
- package/dist/src/stores/parquet_hyparquet.js.map +1 -0
- package/dist/src/stores/parquet_location.d.ts +88 -0
- package/dist/src/stores/parquet_location.d.ts.map +1 -0
- package/dist/src/stores/parquet_location.js +194 -0
- package/dist/src/stores/parquet_location.js.map +1 -0
- package/dist/src/stores/tiered.d.ts +91 -0
- package/dist/src/stores/tiered.d.ts.map +1 -0
- package/dist/src/stores/tiered.js +254 -0
- package/dist/src/stores/tiered.js.map +1 -0
- package/dist/src/ui/index.d.ts +1 -1
- package/dist/src/ui/index.js +1 -1
- package/dist/src/watchers/index.d.ts +1 -1
- package/dist/src/watchers/index.js +1 -1
- package/package.json +29 -4
- package/skills/telescope-setup/SKILL.md +1 -1
- package/skills/telescope-storage-retention/SKILL.md +7 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @adonis-agora/telescope
|
|
2
2
|
|
|
3
|
+
## 0.23.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#199](https://github.com/DavideCarvalho/adonis-agora-telescope/pull/199) [`5fd17c2`](https://github.com/DavideCarvalho/adonis-agora-telescope/commit/5fd17c2a51043151155f1a6b46507183c0c41bce) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Add a tiered store: `storage.tiered({ hot, cold: storage.parquet({ location, engine }), hotFor })` keeps a hot driver (usually `storage.lucid()`) minutes deep and, on each prune cycle, moves older entries to hourly Parquet files in a directory or on S3 (through the host's own `S3Client`), deleting them from the hot tier only after the files are written. Reads route hot-then-cold and merge newest-first without duplicates, so `{ page, size }` pages across the tier boundary. The cold tier is read with pure-JS hyparquet by default, or DuckDB (`engine: 'duckdb'`, optional peer `@duckdb/node-api`), which is started with extension auto-load off and external access limited to its data directory, so it never loads `httpfs`/`aws`. New optional peers: `hyparquet`, `hyparquet-writer`, `hyparquet-compressors`, `@duckdb/node-api`, `@aws-sdk/client-s3`. See the new "Scaling storage" docs page.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- [#199](https://github.com/DavideCarvalho/adonis-agora-telescope/pull/199) [`5fd17c2`](https://github.com/DavideCarvalho/adonis-agora-telescope/commit/5fd17c2a51043151155f1a6b46507183c0c41bce) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - The Parquet cold tier no longer leaves unhandled promise rejections behind when a file is deleted while it is being read (retention or compaction racing a dashboard read). hyparquet prefetches several byte ranges per file on filtered reads and awaits only the first that fails; the rest used to reject unhandled, which crashes a Node process running with the default `--unhandled-rejections=throw`.
|
|
12
|
+
|
|
3
13
|
## 0.22.0
|
|
4
14
|
|
|
5
15
|
### Minor Changes
|
package/dist/src/ai/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export declare const VERSION = "0.
|
|
2
|
+
export declare const VERSION = "0.23.0";
|
|
3
3
|
export type { ResolvedTelescopeAiConfig, TelescopeAiConfig, } from './define_config.js';
|
|
4
4
|
export { DEFAULT_MAX_TOKENS, DEFAULT_MODEL, defineConfig, resolveConfig, } from './define_config.js';
|
|
5
5
|
export type { Diagnosis, DiagnosisConfidence, ExceptionEntryContent } from './diagnoser.js';
|
package/dist/src/ai/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export const VERSION = '0.
|
|
2
|
+
export const VERSION = '0.23.0';
|
|
3
3
|
// — config —
|
|
4
4
|
export { DEFAULT_MAX_TOKENS, DEFAULT_MODEL, defineConfig, resolveConfig, } from './define_config.js';
|
|
5
5
|
// — diagnosis model + parsing —
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export declare const VERSION = "0.
|
|
2
|
+
export declare const VERSION = "0.23.0";
|
|
3
3
|
export type { AlertChannel, ChannelFetch, ConsoleSink } from './alert_channel.js';
|
|
4
4
|
export { consoleChannel, customChannel, slackChannel, webhookChannel, } from './alert_channel.js';
|
|
5
5
|
export type { AlertDiagnosis, AlertGeoLocation, AlertMetric, AlertPayload, AlertRule, ExceptionAlertContext, GeoLookup, ResolvedAlerts, } from './alert_rule.js';
|
package/dist/src/alerts/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export const VERSION = '0.
|
|
2
|
+
export const VERSION = '0.23.0';
|
|
3
3
|
// — channels —
|
|
4
4
|
export { consoleChannel, customChannel, slackChannel, webhookChannel, } from './alert_channel.js';
|
|
5
5
|
// — alerter (exception source → tracker → channels) —
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export declare const VERSION = "0.
|
|
2
|
+
export declare const VERSION = "0.23.0";
|
|
3
3
|
export { configure } from '../configure.js';
|
|
4
4
|
export type { DiagnoserLike, DiagnosisCoordinatorOptions, DiagnosisSummary, } from './ai/diagnosis_coordinator.js';
|
|
5
5
|
export { DiagnosisCoordinator, formatDiagnosisMarkdown, } from './ai/diagnosis_coordinator.js';
|
|
@@ -59,12 +59,19 @@ export { SamplingTelescopeStore } from './sampling/sampling_store.js';
|
|
|
59
59
|
export type { CountBucket } from './service.js';
|
|
60
60
|
export { TelescopeService } from './service.js';
|
|
61
61
|
export type { EntryQuery, TelescopeStore } from './store.js';
|
|
62
|
-
export type { LucidStoreConfig, MemoryStoreConfig, StoreContext, StoreProvider, } from './stores/factory.js';
|
|
62
|
+
export type { ColdStoreProvider, LucidStoreConfig, MemoryStoreConfig, ParquetEngineConfig, ParquetLocationConfig, ParquetStoreConfig, StoreContext, StoreProvider, TieredStoreConfig, } from './stores/factory.js';
|
|
63
63
|
export { storage } from './stores/factory.js';
|
|
64
64
|
export type { CreateTableOptions, LucidDatabaseLike, LucidInsertBuilderLike, LucidQueryBuilderLike, LucidStoreOptions, TelescopeColumns, } from './stores/lucid.js';
|
|
65
65
|
export { createTableStatements, createTelescopeTable, DEFAULT_TABLE_NAME, LucidTelescopeStore, SCHEMA_META_TABLE_NAME, } from './stores/lucid.js';
|
|
66
66
|
export type { InMemoryStoreOptions } from './stores/memory.js';
|
|
67
67
|
export { InMemoryTelescopeStore } from './stores/memory.js';
|
|
68
|
+
export type { ColdEngineContext, ColdFile, ColdReadEngine, ParquetColdStoreOptions, } from './stores/parquet.js';
|
|
69
|
+
export { ParquetColdStore } from './stores/parquet.js';
|
|
70
|
+
export type { DuckDbEngineOptions } from './stores/parquet_duckdb.js';
|
|
71
|
+
export type { ColdObject, ColdObjectStore, S3ClientLike, S3LocationOptions, } from './stores/parquet_location.js';
|
|
72
|
+
export { DirectoryLocation, S3Location } from './stores/parquet_location.js';
|
|
73
|
+
export type { TieredPruneReport, TieredStoreOptions } from './stores/tiered.js';
|
|
74
|
+
export { TieredTelescopeStore } from './stores/tiered.js';
|
|
68
75
|
export type { EntrySubscriber, Unsubscribe } from './stream/entry_events.js';
|
|
69
76
|
export { EntryEvents } from './stream/entry_events.js';
|
|
70
77
|
export type { StreamOptions, StreamSession } from './stream/stream_handler.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export const VERSION = '0.
|
|
2
|
+
export const VERSION = '0.23.0';
|
|
3
3
|
// Re-export the configure hook from the package root so `node ace configure` finds it
|
|
4
4
|
export { configure } from '../configure.js';
|
|
5
5
|
// — AI diagnosis coordinator (wires the MCP tool + the alerter; SDK-free) —
|
|
@@ -51,6 +51,9 @@ export { TelescopeService } from './service.js';
|
|
|
51
51
|
export { storage } from './stores/factory.js';
|
|
52
52
|
export { createTableStatements, createTelescopeTable, DEFAULT_TABLE_NAME, LucidTelescopeStore, SCHEMA_META_TABLE_NAME, } from './stores/lucid.js';
|
|
53
53
|
export { InMemoryTelescopeStore } from './stores/memory.js';
|
|
54
|
+
export { ParquetColdStore } from './stores/parquet.js';
|
|
55
|
+
export { DirectoryLocation, S3Location } from './stores/parquet_location.js';
|
|
56
|
+
export { TieredTelescopeStore } from './stores/tiered.js';
|
|
54
57
|
// — live-stream (SSE entry-events pub/sub) —
|
|
55
58
|
export { EntryEvents } from './stream/entry_events.js';
|
|
56
59
|
export { DEFAULT_HEARTBEAT_MS, streamEntries } from './stream/stream_handler.js';
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/mcp/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export declare const VERSION = "0.
|
|
2
|
+
export declare const VERSION = "0.23.0";
|
|
3
3
|
export type { McpToolName, ResolvedTelescopeMcpConfig, TelescopeMcpConfig, } from './define_config.js';
|
|
4
4
|
export { defineConfig, MCP_TOOL_NAMES, resolveConfig } from './define_config.js';
|
|
5
5
|
export type { DiagnoseExceptionHook, JsonRpcRequest, McpToolSpec, TelescopeMcpServerOptions, } from './server.js';
|
package/dist/src/mcp/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export const VERSION = '0.
|
|
2
|
+
export const VERSION = '0.23.0';
|
|
3
3
|
// — config —
|
|
4
4
|
export { defineConfig, MCP_TOOL_NAMES, resolveConfig } from './define_config.js';
|
|
5
5
|
// — server (plain, testable JSON-RPC surface) —
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export declare const VERSION = "0.
|
|
2
|
+
export declare const VERSION = "0.23.0";
|
|
3
3
|
export { aggregateCpuProfile } from './aggregate-profile.js';
|
|
4
4
|
export type { CpuProfilerOptions, CpuProfilerResult, InspectorSessionLike, SessionFactory, } from './cpu-profiler.js';
|
|
5
5
|
export { CpuProfiler, defaultSessionFactory } from './cpu-profiler.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export const VERSION = '0.
|
|
2
|
+
export const VERSION = '0.23.0';
|
|
3
3
|
export { aggregateCpuProfile } from './aggregate-profile.js';
|
|
4
4
|
export { CpuProfiler, defaultSessionFactory } from './cpu-profiler.js';
|
|
5
5
|
export { defineConfig, resolveConfig } from './define_config.js';
|
|
@@ -2,6 +2,9 @@ import type { ApplicationService } from '@adonisjs/core/types';
|
|
|
2
2
|
import type { TelescopeStore } from '../store.js';
|
|
3
3
|
import type { LucidStoreOptions } from './lucid.js';
|
|
4
4
|
import type { InMemoryStoreOptions } from './memory.js';
|
|
5
|
+
import type { ParquetColdStore } from './parquet.js';
|
|
6
|
+
import type { DuckDbEngineOptions } from './parquet_duckdb.js';
|
|
7
|
+
import type { ColdObjectStore, S3LocationOptions } from './parquet_location.js';
|
|
5
8
|
/**
|
|
6
9
|
* Runtime context a {@link StoreProvider} receives when the telescope provider builds the
|
|
7
10
|
* configured store at boot.
|
|
@@ -33,6 +36,58 @@ export interface LucidStoreConfig extends LucidStoreOptions {
|
|
|
33
36
|
*/
|
|
34
37
|
connection?: string;
|
|
35
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Where the Parquet cold tier keeps its files: a local directory, an S3 bucket through
|
|
41
|
+
* the host's own `S3Client`, or any {@link ColdObjectStore}.
|
|
42
|
+
*/
|
|
43
|
+
export type ParquetLocationConfig = {
|
|
44
|
+
dir: string;
|
|
45
|
+
} | {
|
|
46
|
+
s3: S3LocationOptions;
|
|
47
|
+
} | ColdObjectStore;
|
|
48
|
+
/**
|
|
49
|
+
* Which engine reads the cold tier:
|
|
50
|
+
*
|
|
51
|
+
* - `'hyparquet'` (default) — pure JavaScript, nothing native, nothing downloaded.
|
|
52
|
+
* - `'duckdb'` / `{ duckdb: { ... } }` — `@duckdb/node-api` (an optional peer), faster on
|
|
53
|
+
* wide scans. Boot fails if it is selected but not installed; there is no silent
|
|
54
|
+
* fallback. It never loads DuckDB's `httpfs`/`aws` extensions.
|
|
55
|
+
*/
|
|
56
|
+
export type ParquetEngineConfig = 'hyparquet' | 'duckdb' | {
|
|
57
|
+
duckdb: DuckDbEngineOptions;
|
|
58
|
+
};
|
|
59
|
+
/** Options for the `parquet` cold-tier driver (used as `storage.tiered({ cold })`). */
|
|
60
|
+
export interface ParquetStoreConfig {
|
|
61
|
+
location: ParquetLocationConfig;
|
|
62
|
+
/** Default `'hyparquet'`. */
|
|
63
|
+
engine?: ParquetEngineConfig;
|
|
64
|
+
/** Written into file names and rows. Default `<hostname>-<pid>`. */
|
|
65
|
+
instanceId?: string;
|
|
66
|
+
/** Rows per row group. Default 10,000. */
|
|
67
|
+
rowGroupSize?: number;
|
|
68
|
+
/** Rows per file. Default 200,000. */
|
|
69
|
+
maxRowsPerFile?: number;
|
|
70
|
+
}
|
|
71
|
+
/** A configured cold tier: a thunk the tiered driver calls at boot. */
|
|
72
|
+
export type ColdStoreProvider = (ctx: StoreContext) => Promise<ParquetColdStore>;
|
|
73
|
+
/** Options for the `tiered` store driver. */
|
|
74
|
+
export interface TieredStoreConfig {
|
|
75
|
+
/** The hot tier: any driver from this factory (usually `storage.lucid()`) or a store. */
|
|
76
|
+
hot: StoreProvider | TelescopeStore;
|
|
77
|
+
/** The cold tier, `storage.parquet({ ... })`. */
|
|
78
|
+
cold: ColdStoreProvider;
|
|
79
|
+
/**
|
|
80
|
+
* How long entries stay hot before `prune` moves them to cold, e.g. `'5m'`. Must be
|
|
81
|
+
* shorter than `prune.after`, which becomes the cold tier's retention.
|
|
82
|
+
*/
|
|
83
|
+
hotFor: string | number;
|
|
84
|
+
/** Hot entries read per page while moving. Default 5,000. */
|
|
85
|
+
moveBatchSize?: number;
|
|
86
|
+
/** Entries buffered before a move writes them out as files. Default 50,000. */
|
|
87
|
+
moveFlushSize?: number;
|
|
88
|
+
/** Merge each closed hour's files during prune. Default `true`. */
|
|
89
|
+
compact?: boolean;
|
|
90
|
+
}
|
|
36
91
|
/**
|
|
37
92
|
* The store factory namespace used in `config/telescope.ts`:
|
|
38
93
|
*
|
|
@@ -57,5 +112,29 @@ export declare const storage: {
|
|
|
57
112
|
memory(config?: MemoryStoreConfig): StoreProvider;
|
|
58
113
|
/** A persistent, SQL-backed store on `@adonisjs/lucid` (sqlite / Postgres / MySQL). */
|
|
59
114
|
lucid(config?: LucidStoreConfig): StoreProvider;
|
|
115
|
+
/**
|
|
116
|
+
* The Parquet cold tier for {@link storage.tiered}: hourly-partitioned files in a
|
|
117
|
+
* directory or an S3 bucket. `hyparquet`, `hyparquet-writer` and
|
|
118
|
+
* `hyparquet-compressors` are optional peers, imported only when this is built;
|
|
119
|
+
* `@duckdb/node-api` too, and only for `engine: 'duckdb'`.
|
|
120
|
+
*/
|
|
121
|
+
parquet(config: ParquetStoreConfig): ColdStoreProvider;
|
|
122
|
+
/**
|
|
123
|
+
* Hot + cold: entries are recorded into `hot` and moved to `cold` (Parquet) by the
|
|
124
|
+
* pruner once older than `hotFor`; reads span both. Needs a `prune` block — its
|
|
125
|
+
* `after` is the cold tier's retention.
|
|
126
|
+
*
|
|
127
|
+
* ```ts
|
|
128
|
+
* stores: {
|
|
129
|
+
* tiered: storage.tiered({
|
|
130
|
+
* hot: storage.lucid(),
|
|
131
|
+
* cold: storage.parquet({ location: { dir: 'storage/telescope' } }),
|
|
132
|
+
* hotFor: '5m',
|
|
133
|
+
* }),
|
|
134
|
+
* },
|
|
135
|
+
* prune: { after: '7d', intervalMs: 60_000 },
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
tiered(config: TieredStoreConfig): StoreProvider;
|
|
60
139
|
};
|
|
61
140
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/stores/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/stores/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEhF;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,GAAG,EAAE,kBAAkB,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAE3E,6CAA6C;AAC7C,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,iBAAiB,CAAA;CAAE,GAAG,eAAe,CAAC;AAElG;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,QAAQ,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE3F,uFAAuF;AACvF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,6BAA6B;IAC7B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,uEAAuE;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEjF,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,yFAAyF;IACzF,GAAG,EAAE,aAAa,GAAG,cAAc,CAAC;IACpC,iDAAiD;IACjD,IAAI,EAAE,iBAAiB,CAAC;IACxB;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,OAAO;IAClB,+EAA+E;IAC/E,MAAM,UAAS,iBAAiB,GAAQ,aAAa;IAQrD,uFAAuF;IACvF,KAAK,UAAS,gBAAgB,GAAQ,aAAa;IAsBnD;;;;;OAKG;IACH,OAAO,SAAS,kBAAkB,GAAG,iBAAiB;IAgCtD;;;;;;;;;;;;;;;OAeG;IACH,MAAM,SAAS,iBAAiB,GAAG,aAAa;CAkBjD,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { durationToMs } from '../alerts/parse_duration.js';
|
|
1
2
|
/**
|
|
2
3
|
* The store factory namespace used in `config/telescope.ts`:
|
|
3
4
|
*
|
|
@@ -44,5 +45,75 @@ export const storage = {
|
|
|
44
45
|
return new LucidTelescopeStore(client, storeOptions);
|
|
45
46
|
};
|
|
46
47
|
},
|
|
48
|
+
/**
|
|
49
|
+
* The Parquet cold tier for {@link storage.tiered}: hourly-partitioned files in a
|
|
50
|
+
* directory or an S3 bucket. `hyparquet`, `hyparquet-writer` and
|
|
51
|
+
* `hyparquet-compressors` are optional peers, imported only when this is built;
|
|
52
|
+
* `@duckdb/node-api` too, and only for `engine: 'duckdb'`.
|
|
53
|
+
*/
|
|
54
|
+
parquet(config) {
|
|
55
|
+
return async () => {
|
|
56
|
+
const [{ ParquetColdStore, loadParquetLibs }, locations] = await Promise.all([
|
|
57
|
+
import('./parquet.js'),
|
|
58
|
+
import('./parquet_location.js'),
|
|
59
|
+
]);
|
|
60
|
+
const libs = await loadParquetLibs();
|
|
61
|
+
const location = 'dir' in config.location && typeof config.location.dir === 'string'
|
|
62
|
+
? new locations.DirectoryLocation(config.location.dir)
|
|
63
|
+
: 's3' in config.location
|
|
64
|
+
? new locations.S3Location(config.location.s3)
|
|
65
|
+
: config.location;
|
|
66
|
+
const engine = config.engine ?? 'hyparquet';
|
|
67
|
+
return ParquetColdStore.create({
|
|
68
|
+
location,
|
|
69
|
+
libs,
|
|
70
|
+
...(config.instanceId !== undefined ? { instanceId: config.instanceId } : {}),
|
|
71
|
+
...(config.rowGroupSize !== undefined ? { rowGroupSize: config.rowGroupSize } : {}),
|
|
72
|
+
...(config.maxRowsPerFile !== undefined ? { maxRowsPerFile: config.maxRowsPerFile } : {}),
|
|
73
|
+
engine: async (context) => {
|
|
74
|
+
if (engine === 'hyparquet') {
|
|
75
|
+
const { HyparquetEngine } = await import('./parquet_hyparquet.js');
|
|
76
|
+
return new HyparquetEngine(context);
|
|
77
|
+
}
|
|
78
|
+
const { DuckDbEngine } = await import('./parquet_duckdb.js');
|
|
79
|
+
return DuckDbEngine.create(context, engine === 'duckdb' ? {} : engine.duckdb);
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
},
|
|
84
|
+
/**
|
|
85
|
+
* Hot + cold: entries are recorded into `hot` and moved to `cold` (Parquet) by the
|
|
86
|
+
* pruner once older than `hotFor`; reads span both. Needs a `prune` block — its
|
|
87
|
+
* `after` is the cold tier's retention.
|
|
88
|
+
*
|
|
89
|
+
* ```ts
|
|
90
|
+
* stores: {
|
|
91
|
+
* tiered: storage.tiered({
|
|
92
|
+
* hot: storage.lucid(),
|
|
93
|
+
* cold: storage.parquet({ location: { dir: 'storage/telescope' } }),
|
|
94
|
+
* hotFor: '5m',
|
|
95
|
+
* }),
|
|
96
|
+
* },
|
|
97
|
+
* prune: { after: '7d', intervalMs: 60_000 },
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
tiered(config) {
|
|
101
|
+
return async (ctx) => {
|
|
102
|
+
const hotForMs = durationToMs(config.hotFor);
|
|
103
|
+
const [{ TieredTelescopeStore }, hot, cold] = await Promise.all([
|
|
104
|
+
import('./tiered.js'),
|
|
105
|
+
typeof config.hot === 'function' ? config.hot(ctx) : Promise.resolve(config.hot),
|
|
106
|
+
config.cold(ctx),
|
|
107
|
+
]);
|
|
108
|
+
return new TieredTelescopeStore({
|
|
109
|
+
hot,
|
|
110
|
+
cold,
|
|
111
|
+
hotForMs,
|
|
112
|
+
...(config.moveBatchSize !== undefined ? { moveBatchSize: config.moveBatchSize } : {}),
|
|
113
|
+
...(config.moveFlushSize !== undefined ? { moveFlushSize: config.moveFlushSize } : {}),
|
|
114
|
+
...(config.compact !== undefined ? { compact: config.compact } : {}),
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
},
|
|
47
118
|
};
|
|
48
119
|
//# sourceMappingURL=factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/stores/factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/stores/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import type { Entry } from '../entry.js';
|
|
2
|
+
import type { BucketCountQuery, BucketCountRow, EntryQuery, TraceIdQuery, TraceIdRow } from '../store.js';
|
|
3
|
+
import { type ColdObjectStore } from './parquet_location.js';
|
|
4
|
+
type Hyparquet = typeof import('hyparquet');
|
|
5
|
+
type HyparquetWriter = typeof import('hyparquet-writer');
|
|
6
|
+
type FileMetaData = import('hyparquet').FileMetaData;
|
|
7
|
+
type AsyncBuffer = import('hyparquet').AsyncBuffer;
|
|
8
|
+
type Compressors = import('hyparquet').Compressors;
|
|
9
|
+
/** Row-group time bounds, read from the `created_at` column statistics. */
|
|
10
|
+
export interface RowGroupStats {
|
|
11
|
+
rowStart: number;
|
|
12
|
+
rowEnd: number;
|
|
13
|
+
minMs: number;
|
|
14
|
+
maxMs: number;
|
|
15
|
+
}
|
|
16
|
+
/** What the cold store knows about one file without reading its rows. */
|
|
17
|
+
export interface ColdFile {
|
|
18
|
+
key: string;
|
|
19
|
+
size: number;
|
|
20
|
+
type: string;
|
|
21
|
+
hourStartMs: number;
|
|
22
|
+
numRows: number;
|
|
23
|
+
minMs: number;
|
|
24
|
+
maxMs: number;
|
|
25
|
+
rowGroups: RowGroupStats[];
|
|
26
|
+
}
|
|
27
|
+
/** The libraries both engines share: hyparquet reads footers, hyparquet-writer writes. */
|
|
28
|
+
export interface ParquetLibs {
|
|
29
|
+
hyparquet: Hyparquet;
|
|
30
|
+
writer: HyparquetWriter;
|
|
31
|
+
compressors: Compressors;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Everything an engine needs to read files: the location, the shared libraries and
|
|
35
|
+
* the footer cache. Engines never list or write; the cold store hands them the
|
|
36
|
+
* candidate files already pruned by partition and statistics.
|
|
37
|
+
*/
|
|
38
|
+
export interface ColdEngineContext {
|
|
39
|
+
location: ColdObjectStore;
|
|
40
|
+
libs: ParquetLibs;
|
|
41
|
+
/** Parsed footer of a file (cached). */
|
|
42
|
+
metadata(file: ColdFile): Promise<FileMetaData>;
|
|
43
|
+
/** A hyparquet `AsyncBuffer` over a file (ranged reads through the location). */
|
|
44
|
+
buffer(file: ColdFile): AsyncBuffer;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A cold-tier reader. `files` arrive pruned by the query's type and time bounds and
|
|
48
|
+
* sorted newest-first by their newest row; every method must treat a file that has
|
|
49
|
+
* vanished since it was listed (compaction, retention) as empty.
|
|
50
|
+
*/
|
|
51
|
+
export interface ColdReadEngine {
|
|
52
|
+
readonly name: 'hyparquet' | 'duckdb';
|
|
53
|
+
/** The newest `limit` matches (all matches when `limit` is undefined), newest-first. */
|
|
54
|
+
list(files: ColdFile[], query: EntryQuery, limit: number | undefined): Promise<Entry[]>;
|
|
55
|
+
get(files: ColdFile[], id: string): Promise<Entry | null>;
|
|
56
|
+
/** The `limit` most-recently-seen trace ids in `files`, with their newest timestamp. */
|
|
57
|
+
traceIds(files: ColdFile[], query: Pick<TraceIdQuery, 'before' | 'after'>, limit: number): Promise<TraceIdRow[]>;
|
|
58
|
+
countByBucket(files: ColdFile[], query: BucketCountQuery): Promise<BucketCountRow[]>;
|
|
59
|
+
close(): Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
/** Builds a {@link ColdReadEngine} for a store. */
|
|
62
|
+
export type ColdEngineFactory = (context: ColdEngineContext) => ColdReadEngine | Promise<ColdReadEngine>;
|
|
63
|
+
/** Options for {@link ParquetColdStore}. */
|
|
64
|
+
export interface ParquetColdStoreOptions {
|
|
65
|
+
location: ColdObjectStore;
|
|
66
|
+
/** Builds the reader, bound to this store's footer cache. */
|
|
67
|
+
engine: ColdEngineFactory;
|
|
68
|
+
libs: ParquetLibs;
|
|
69
|
+
/**
|
|
70
|
+
* Written into every file name (`<instanceId>-<uuid>.parquet`) and the `instance_id`
|
|
71
|
+
* column, so files from different pods never collide. Defaults to `<hostname>-<pid>`.
|
|
72
|
+
*/
|
|
73
|
+
instanceId?: string;
|
|
74
|
+
/** Rows per row group. Default 10,000. */
|
|
75
|
+
rowGroupSize?: number;
|
|
76
|
+
/** Rows per file before a write starts a new file. Default 200,000. */
|
|
77
|
+
maxRowsPerFile?: number;
|
|
78
|
+
/** How long a directory listing is reused, in ms. Default 2,000. */
|
|
79
|
+
listingTtlMs?: number;
|
|
80
|
+
/** Parsed footers kept in memory. Default 2,000 files. */
|
|
81
|
+
metadataCacheSize?: number;
|
|
82
|
+
/** Closed hours compacted per {@link ParquetColdStore.compact} call. Default 4. */
|
|
83
|
+
compactPartitionsPerRun?: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Entries as hourly-partitioned Parquet files in a {@link ColdObjectStore}:
|
|
87
|
+
*
|
|
88
|
+
* ```
|
|
89
|
+
* type=<type>/dt=<yyyy-mm-dd>/hour=<hh>/<instanceId>-<uuid>.parquet
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* Files are append-only and immutable: writing adds files, {@link compact} replaces a
|
|
93
|
+
* closed hour's files with one merged file (written before the inputs are deleted),
|
|
94
|
+
* and retention deletes whole files. Rows inside a file are sorted by `created_at, id`
|
|
95
|
+
* with ~10k-row groups and statistics on, so time-bounded reads skip row groups.
|
|
96
|
+
*
|
|
97
|
+
* This is the cold half of `storage.tiered()`; it is not a {@link TelescopeStore} on its
|
|
98
|
+
* own because recording one entry at a time as Parquet would make one file per entry.
|
|
99
|
+
*/
|
|
100
|
+
export declare class ParquetColdStore {
|
|
101
|
+
readonly location: ColdObjectStore;
|
|
102
|
+
engine: ColdReadEngine;
|
|
103
|
+
readonly instanceId: string;
|
|
104
|
+
private readonly libs;
|
|
105
|
+
private readonly rowGroupSize;
|
|
106
|
+
private readonly maxRowsPerFile;
|
|
107
|
+
private readonly listingTtlMs;
|
|
108
|
+
private readonly metadataCacheSize;
|
|
109
|
+
private readonly compactPartitionsPerRun;
|
|
110
|
+
private readonly listings;
|
|
111
|
+
/** Small, per-file stats for every file seen (dropped when the file disappears). */
|
|
112
|
+
private readonly stats;
|
|
113
|
+
/** Parsed footers, LRU-bounded (Map iteration order is insertion order). */
|
|
114
|
+
private readonly footers;
|
|
115
|
+
/** Build a store and its engine (the engine may need async setup, e.g. DuckDB). */
|
|
116
|
+
static create(options: ParquetColdStoreOptions): Promise<ParquetColdStore>;
|
|
117
|
+
private constructor();
|
|
118
|
+
/**
|
|
119
|
+
* Write entries as Parquet, one or more files per `(type, hour)`. Resolves to the keys
|
|
120
|
+
* written, so a caller can delete them again if a later step of its own fails.
|
|
121
|
+
*/
|
|
122
|
+
write(entries: Entry[]): Promise<string[]>;
|
|
123
|
+
private encode;
|
|
124
|
+
/** Entries matching `query`, newest-first, honouring `{ page, size }`. */
|
|
125
|
+
list(query?: EntryQuery): Promise<Entry[]>;
|
|
126
|
+
/** The newest `limit` matches with no page offset — what the tiered merge needs. */
|
|
127
|
+
top(query: EntryQuery, limit: number | undefined): Promise<Entry[]>;
|
|
128
|
+
get(id: string): Promise<Entry | null>;
|
|
129
|
+
listTraceIds(query: TraceIdQuery): Promise<TraceIdRow[]>;
|
|
130
|
+
/** The `limit` most-recently-seen traces, no offset (for the tiered merge). */
|
|
131
|
+
topTraceIds(query: Pick<TraceIdQuery, 'before' | 'after'>, limit: number): Promise<TraceIdRow[]>;
|
|
132
|
+
countByBucket(query: BucketCountQuery): Promise<BucketCountRow[]>;
|
|
133
|
+
/** Rows in the cold tier, from file footers (no rows are read). */
|
|
134
|
+
count(): Promise<number>;
|
|
135
|
+
/**
|
|
136
|
+
* The newest `created_at` the cold tier could hold for `query`, or `null` when it holds
|
|
137
|
+
* nothing for it. Lets the tiered store skip the cold tier when a page is already
|
|
138
|
+
* filled by hot entries that are all newer.
|
|
139
|
+
*/
|
|
140
|
+
newestCreatedAt(query: EntryQuery): Promise<Date | null>;
|
|
141
|
+
/**
|
|
142
|
+
* Delete every file whose whole hour is older than `olderThan`, keeping the newest
|
|
143
|
+
* files of that doomed set until they hold at least `keepLast` rows. Retention is
|
|
144
|
+
* file-granular: an hour stays until all of it has expired. Resolves to the rows
|
|
145
|
+
* deleted.
|
|
146
|
+
*/
|
|
147
|
+
expire(olderThan: Date, keepLast?: number): Promise<number>;
|
|
148
|
+
/**
|
|
149
|
+
* Merge the files of closed hours (hours that ended before `closedBefore`) so each
|
|
150
|
+
* holds one file per {@link ParquetColdStoreOptions.maxRowsPerFile} rows instead of
|
|
151
|
+
* one per prune cycle. The merged file is written before its inputs are deleted, so
|
|
152
|
+
* a reader never loses rows; one that lists in between sees both and the merge on
|
|
153
|
+
* read drops the duplicate ids. Resolves to the number of input files replaced.
|
|
154
|
+
*/
|
|
155
|
+
compact(closedBefore: Date): Promise<number>;
|
|
156
|
+
/** Delete every file. */
|
|
157
|
+
clear(): Promise<void>;
|
|
158
|
+
close(): Promise<void>;
|
|
159
|
+
/**
|
|
160
|
+
* Files that can hold rows for `query`: its type's prefix only, hours outside the
|
|
161
|
+
* time bounds dropped by partition, then files outside them dropped by footer stats.
|
|
162
|
+
* Sorted newest-first by each file's newest row.
|
|
163
|
+
*/
|
|
164
|
+
private candidates;
|
|
165
|
+
private list_;
|
|
166
|
+
private listAll;
|
|
167
|
+
/** The file with footer stats filled in, or `null` when it no longer exists. */
|
|
168
|
+
private withStats;
|
|
169
|
+
/** Parsed footer for a file, through a bounded LRU. */
|
|
170
|
+
metadata(file: ColdFile): Promise<FileMetaData>;
|
|
171
|
+
buffer(file: ColdFile): AsyncBuffer;
|
|
172
|
+
private forget;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Load the hyparquet trio. They are optional peers (only `storage.tiered()` needs them),
|
|
176
|
+
* so a missing one fails boot with a message naming it.
|
|
177
|
+
*/
|
|
178
|
+
export declare function loadParquetLibs(): Promise<ParquetLibs>;
|
|
179
|
+
/** Keep the first occurrence of each id (callers pass newest-first lists). */
|
|
180
|
+
export declare function dedupeById(entries: Entry[]): Entry[];
|
|
181
|
+
/** Merge newest-first lists into one newest-first list without duplicate ids. */
|
|
182
|
+
export declare function mergeNewestFirst(...lists: Entry[][]): Entry[];
|
|
183
|
+
export {};
|
|
184
|
+
//# sourceMappingURL=parquet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parquet.d.ts","sourceRoot":"","sources":["../../../src/stores/parquet.ts"],"names":[],"mappings":"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"}
|