@sixb/pipeline-worker 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/execute-run-step.d.ts +1 -0
- package/dist/execute-run-step.d.ts.map +1 -1
- package/dist/execute-sql-step.d.ts +1 -0
- package/dist/execute-sql-step.d.ts.map +1 -1
- package/dist/index.js +21 -16
- package/dist/index.js.map +5 -5
- package/dist/run-step.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/execute-run-step.ts +2 -0
- package/src/execute-sql-step.ts +2 -0
- package/src/run-step.ts +13 -6
|
@@ -10,6 +10,7 @@ export declare function executeRunStep(input: {
|
|
|
10
10
|
readonly signal: AbortSignal;
|
|
11
11
|
readonly logSession: PipelineLogSession;
|
|
12
12
|
readonly outputDataset: DatasetDefinition;
|
|
13
|
+
readonly expectedLatestVersionId: string | null;
|
|
13
14
|
readonly resolvedInputs: readonly ResolvedStepInput[];
|
|
14
15
|
}): Promise<{
|
|
15
16
|
readonly version: DatasetVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-run-step.d.ts","sourceRoot":"","sources":["../src/execute-run-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,kBAAkB,EAClB,sBAAsB,EAEvB,MAAM,YAAY,CAAA;AAEnB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAErF,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IACrC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAA;IACvC,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAA;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,iBAAiB,EAAE,CAAA;CACtD,GAAG,OAAO,CAAC;IACV,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B,CAAC,
|
|
1
|
+
{"version":3,"file":"execute-run-step.d.ts","sourceRoot":"","sources":["../src/execute-run-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,kBAAkB,EAClB,sBAAsB,EAEvB,MAAM,YAAY,CAAA;AAEnB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAErF,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IACrC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAA;IACvC,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAA;IACzC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/C,QAAQ,CAAC,cAAc,EAAE,SAAS,iBAAiB,EAAE,CAAA;CACtD,GAAG,OAAO,CAAC;IACV,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B,CAAC,CAsED"}
|
|
@@ -9,6 +9,7 @@ export declare function executeSqlStep(input: {
|
|
|
9
9
|
readonly job: PipelineJob;
|
|
10
10
|
readonly signal: AbortSignal;
|
|
11
11
|
readonly outputDataset: DatasetDefinition;
|
|
12
|
+
readonly expectedLatestVersionId: string | null;
|
|
12
13
|
readonly resolvedInputs: readonly ResolvedStepInput[];
|
|
13
14
|
}): Promise<{
|
|
14
15
|
readonly version: DatasetVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-sql-step.d.ts","sourceRoot":"","sources":["../src/execute-sql-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAEnB,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAwCjE,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IACrC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAA;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,iBAAiB,EAAE,CAAA;CACtD,GAAG,OAAO,CAAC;IACV,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAC,
|
|
1
|
+
{"version":3,"file":"execute-sql-step.d.ts","sourceRoot":"","sources":["../src/execute-sql-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAEnB,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAwCjE,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IACrC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAA;IACzC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/C,QAAQ,CAAC,cAAc,EAAE,SAAS,iBAAiB,EAAE,CAAA;CACtD,GAAG,OAAO,CAAC;IACV,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAC,CAgFD"}
|
package/dist/index.js
CHANGED
|
@@ -320,6 +320,7 @@ async function executeRunStep(input) {
|
|
|
320
320
|
await step.executor.handler(context);
|
|
321
321
|
throwIfAborted(signal);
|
|
322
322
|
const commit = await write.commit({
|
|
323
|
+
expectedLatestVersionId: input.expectedLatestVersionId,
|
|
323
324
|
commitMessage: `pipeline ${pipeline.id} step ${step.id} run ${job.id}`
|
|
324
325
|
});
|
|
325
326
|
const { outcome, ...version } = commit;
|
|
@@ -393,15 +394,16 @@ async function executeSqlStep(input) {
|
|
|
393
394
|
});
|
|
394
395
|
throwIfAborted(signal);
|
|
395
396
|
const commit = await runtime.lakeStorage.sql.execute({
|
|
396
|
-
sources: Object.fromEntries(resolvedInputs.map((
|
|
397
|
-
|
|
397
|
+
sources: Object.fromEntries(resolvedInputs.map((input) => [
|
|
398
|
+
input.name,
|
|
398
399
|
{
|
|
399
|
-
dataset:
|
|
400
|
-
versionId:
|
|
400
|
+
dataset: input.dataset,
|
|
401
|
+
versionId: input.version.versionId
|
|
401
402
|
}
|
|
402
403
|
])),
|
|
403
404
|
sql: step.executor.sql,
|
|
404
405
|
target: outputDataset,
|
|
406
|
+
expectedLatestVersionId: input.expectedLatestVersionId,
|
|
405
407
|
mode: step.mode,
|
|
406
408
|
producer: {
|
|
407
409
|
kind: "pipeline",
|
|
@@ -430,13 +432,8 @@ async function runStep(input) {
|
|
|
430
432
|
throwIfAborted(signal);
|
|
431
433
|
let resolvedInputs;
|
|
432
434
|
let outputDataset;
|
|
435
|
+
let expectedLatestVersionId;
|
|
433
436
|
try {
|
|
434
|
-
resolvedInputs = await resolveStepInputs({
|
|
435
|
-
runtime,
|
|
436
|
-
pipeline,
|
|
437
|
-
step,
|
|
438
|
-
pipelineRunId: job.id
|
|
439
|
-
});
|
|
440
437
|
outputDataset = requireRegisteredDataset({
|
|
441
438
|
dataset: runtime.datasets.getById(step.output.id),
|
|
442
439
|
pipelineId: pipeline.id,
|
|
@@ -446,6 +443,13 @@ async function runStep(input) {
|
|
|
446
443
|
datasetId: step.output.id
|
|
447
444
|
});
|
|
448
445
|
await runtime.lakeStorage.createDataset(outputDataset);
|
|
446
|
+
expectedLatestVersionId = (await runtime.lakeStorage.getLatestVersion(outputDataset.id))?.versionId ?? null;
|
|
447
|
+
resolvedInputs = await resolveStepInputs({
|
|
448
|
+
runtime,
|
|
449
|
+
pipeline,
|
|
450
|
+
step,
|
|
451
|
+
pipelineRunId: job.id
|
|
452
|
+
});
|
|
449
453
|
} catch (error) {
|
|
450
454
|
if (statusForFailure(signal, error) === "failed") {
|
|
451
455
|
throw createPipelineStepFailure({
|
|
@@ -481,6 +485,7 @@ async function runStep(input) {
|
|
|
481
485
|
signal,
|
|
482
486
|
logSession: input.logSession,
|
|
483
487
|
outputDataset,
|
|
488
|
+
expectedLatestVersionId,
|
|
484
489
|
resolvedInputs
|
|
485
490
|
});
|
|
486
491
|
committedVersion = execution.version;
|
|
@@ -739,16 +744,16 @@ class PipelineWorker extends QueueWorker {
|
|
|
739
744
|
runtime: this.context,
|
|
740
745
|
run,
|
|
741
746
|
signal,
|
|
742
|
-
onRunStarted: (
|
|
743
|
-
onRunFinished: (
|
|
744
|
-
onRunFailed: (error,
|
|
747
|
+
onRunStarted: (run) => emitPipelineRunStarted(this.host.events, run, durableExecution.correlationId),
|
|
748
|
+
onRunFinished: (run) => emitPipelineRunFinished(this.host.events, run, durableExecution.correlationId),
|
|
749
|
+
onRunFailed: (error, run, failure) => {
|
|
745
750
|
reportRunFailure(this.host, error, {
|
|
746
751
|
projectId: this.host.id,
|
|
747
752
|
attempt: job.attempt,
|
|
748
753
|
runKind: "pipeline",
|
|
749
754
|
run: {
|
|
750
|
-
runId:
|
|
751
|
-
pipelineId:
|
|
755
|
+
runId: run.id,
|
|
756
|
+
pipelineId: run.pipelineId
|
|
752
757
|
},
|
|
753
758
|
failure
|
|
754
759
|
});
|
|
@@ -806,4 +811,4 @@ export {
|
|
|
806
811
|
PipelineWorker
|
|
807
812
|
};
|
|
808
813
|
|
|
809
|
-
//# debugId=
|
|
814
|
+
//# debugId=F41F62F6D8367E5E64756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"import type { DomainEventLog } from \"@sixb/core\"\nimport type {\n PipelineRunRecord,\n PipelineRunStatus,\n PipelineStepRunRecord,\n} from \"@sixb/core/storage\"\nimport type { PipelineJob, PipelineStepLifecycleContext, PipelineStepRunResult } from \"./types\"\n\nconst SOURCE = \"SixbPipelineWorker\"\n\nexport async function emitPipelineRunStarted(\n events: DomainEventLog | undefined,\n run: Pick<PipelineRunRecord, \"id\" | \"pipelineId\" | \"startedAt\">,\n correlationId: string\n): Promise<void> {\n if (!run.startedAt) {\n throw new Error(`[SixbPipelineWorker] Pipeline run '${run.id}' started without a timestamp.`)\n }\n await events?.emit(\n {\n events: [\n {\n type: \"pipeline.run.started\",\n payload: {\n pipelineId: run.pipelineId,\n runId: run.id,\n startedAt: run.startedAt.toISOString(),\n },\n },\n ],\n correlationId,\n },\n { source: SOURCE }\n )\n}\n\nexport async function emitPipelineRunStepStarted(\n events: DomainEventLog | undefined,\n step: Pick<\n PipelineStepRunRecord,\n \"id\" | \"pipelineRunId\" | \"pipelineId\" | \"stepId\" | \"datasetId\" | \"startedAt\"\n >,\n context: PipelineStepLifecycleContext,\n correlationId: string\n): Promise<void> {\n await events?.emit(\n {\n events: [\n {\n type: \"pipeline.run.step.started\",\n payload: {\n pipelineId: step.pipelineId,\n runId: step.pipelineRunId,\n stepRunId: step.id,\n stepId: step.stepId,\n stepIndex: context.stepIndex,\n totalSteps: context.totalSteps,\n datasetId: step.datasetId,\n startedAt: step.startedAt.toISOString(),\n },\n },\n ],\n correlationId,\n },\n { source: SOURCE }\n )\n}\n\nexport async function emitPipelineRunStepFinished(\n events: DomainEventLog | undefined,\n step: Pick<\n PipelineStepRunRecord,\n | \"id\"\n | \"pipelineRunId\"\n | \"pipelineId\"\n | \"stepId\"\n | \"datasetId\"\n | \"status\"\n | \"finishedAt\"\n | \"output\"\n | \"rowsWritten\"\n | \"error\"\n >,\n context: PipelineStepLifecycleContext,\n correlationId: string\n): Promise<void> {\n await events?.emit(\n {\n events: [\n {\n type: \"pipeline.run.step.finished\",\n payload: {\n pipelineId: step.pipelineId,\n runId: step.pipelineRunId,\n stepRunId: step.id,\n stepId: step.stepId,\n stepIndex: context.stepIndex,\n totalSteps: context.totalSteps,\n datasetId: step.datasetId,\n status: requireTerminalStatus(step.status, `Pipeline step run '${step.id}'`),\n finishedAt: requireFinishedAt(step.id, step.finishedAt).toISOString(),\n ...(step.output ? { versionId: step.output.versionId } : {}),\n ...(step.rowsWritten !== undefined ? { rowsWritten: step.rowsWritten } : {}),\n ...(step.error ? { error: step.error } : {}),\n },\n },\n ],\n correlationId,\n },\n { source: SOURCE }\n )\n}\n\nexport async function emitDatasetVersionCommitted(\n events: DomainEventLog | undefined,\n job: PipelineJob,\n step: PipelineStepRunResult,\n correlationId: string\n): Promise<void> {\n if (!step.versionCreated) return\n\n // Emit step outputs immediately so dataset event schedules can react before later steps finish.\n await events?.emit(\n {\n events: [\n {\n type: \"dataset.version.committed\" as const,\n payload: {\n datasetId: step.version.datasetId,\n versionId: step.version.versionId,\n createdAt: step.version.createdAt.toISOString(),\n producer: {\n kind: \"pipeline\" as const,\n id: job.pipelineId,\n runId: job.id,\n stepId: step.run.stepId,\n },\n },\n },\n ],\n correlationId,\n },\n { source: SOURCE }\n )\n}\n\nexport async function emitPipelineRunFinished(\n events: DomainEventLog | undefined,\n run: Pick<PipelineRunRecord, \"id\" | \"pipelineId\" | \"status\" | \"output\" | \"error\">,\n correlationId: string\n): Promise<void> {\n await events?.emit(\n {\n events: [{ type: \"pipeline.run.finished\", payload: buildPipelineRunFinishedPayload(run) }],\n correlationId,\n },\n { source: SOURCE }\n )\n}\n\nfunction buildPipelineRunFinishedPayload(\n run: Pick<PipelineRunRecord, \"id\" | \"pipelineId\" | \"status\" | \"output\" | \"error\">\n) {\n return {\n pipelineId: run.pipelineId,\n runId: run.id,\n status: requireTerminalStatus(run.status, `Pipeline run '${run.id}'`),\n ...(run.output\n ? {\n datasetId: run.output.datasetId,\n versionId: run.output.versionId,\n }\n : {}),\n ...(run.error ? { error: run.error } : {}),\n }\n}\n\nfunction requireFinishedAt(stepRunId: string, finishedAt: Date | undefined): Date {\n if (finishedAt) {\n return finishedAt\n }\n\n throw new Error(`[SixbPipelineWorker] Pipeline step run '${stepRunId}' has no finishedAt.`)\n}\n\nfunction requireTerminalStatus(\n status: PipelineRunStatus,\n context: string\n): Exclude<PipelineRunStatus, \"queued\" | \"running\"> {\n if (status === \"queued\" || status === \"running\") {\n throw new Error(`[SixbPipelineWorker] ${context} is still running.`)\n }\n\n return status\n}\n",
|
|
7
7
|
"import { captureSixbFailure } from \"@sixb/core/internal/errors\"\nimport { resolveLoggingService } from \"@sixb/core/internal/logging\"\nimport type { DatasetVersion } from \"@sixb/core/lake-storage\"\nimport { PIPELINE_RUN_FAILURE_CODES, type PipelineRunRecord } from \"@sixb/core/storage\"\nimport {\n createPipelineBookkeepingError,\n requireFinishedAt,\n requirePipeline,\n statusForFailure,\n throwIfAborted,\n unwrapPipelineStepFailure,\n} from \"./errors\"\nimport { runStep } from \"./run-step\"\nimport type {\n PipelineRunFinishedHandler,\n PipelineRunResult,\n PipelineStepRunResult,\n RunPipelineJobInput,\n} from \"./types\"\n\nexport class PipelineRunAlreadyStartedError extends Error {\n override readonly name = \"PipelineRunAlreadyStartedError\"\n\n constructor(readonly run: PipelineRunRecord) {\n super(`[SixbPipelineWorker] Pipeline run '${run.id}' has already started.`)\n }\n}\n\nexport async function runPipelineJob(input: RunPipelineJobInput): Promise<PipelineRunResult> {\n const { runtime, run: durableRun } = input\n const job = { id: durableRun.id, pipelineId: durableRun.pipelineId }\n const signal = input.signal ?? new AbortController().signal\n if (durableRun.projectId !== runtime.id) {\n throw new Error(\n `[SixbPipelineWorker] Pipeline run '${durableRun.id}' belongs to project '${durableRun.projectId}', not '${runtime.id}'.`\n )\n }\n const logSession = resolveLoggingService(runtime.id, runtime.logging).startExecution({\n kind: \"pipeline\",\n id: job.id,\n })\n const steps: PipelineStepRunResult[] = []\n let startedRun: PipelineRunRecord | undefined\n let finalVersion: DatasetVersion | undefined\n let finished = false\n\n throwIfAborted(signal)\n\n try {\n try {\n startedRun = await runtime.pipelineRunsStorage.start({\n projectId: runtime.id,\n id: job.id,\n })\n } catch (error) {\n const existing = await runtime.pipelineRunsStorage.getById({\n projectId: runtime.id,\n id: job.id,\n })\n if (\n existing?.pipelineId === durableRun.pipelineId &&\n existing.executionId === durableRun.executionId\n ) {\n throw new PipelineRunAlreadyStartedError(existing)\n }\n throw error\n }\n await input.onRunStarted?.(startedRun)\n\n const pipeline = requirePipeline(runtime.pipelines.getById(job.pipelineId), job)\n\n for (const [stepIndex, node] of pipeline.graph.nodes.entries()) {\n const stepResult = await runStep({\n runtime,\n pipeline,\n step: node.step,\n stepIndex,\n job,\n signal,\n logSession,\n onStepStarted: input.onStepStarted,\n onStepFinished: input.onStepFinished,\n })\n\n steps.push(stepResult)\n finalVersion = stepResult.version\n // This is the durability boundary for per-step output events.\n await input.onStepCommitted?.(stepResult)\n }\n\n let run: PipelineRunRecord\n try {\n run = await runtime.pipelineRunsStorage.finish({\n projectId: runtime.id,\n id: job.id,\n status: \"succeeded\",\n output: finalVersion\n ? {\n datasetId: finalVersion.datasetId,\n versionId: finalVersion.versionId,\n }\n : undefined,\n })\n } catch (error) {\n if (finalVersion) {\n throw createPipelineBookkeepingError({\n pipelineId: pipeline.id,\n runId: job.id,\n version: finalVersion,\n cause: error,\n })\n }\n throw error\n }\n const finishedRun = {\n ...run,\n finishedAt: requireFinishedAt({\n pipelineId: pipeline.id,\n runId: job.id,\n finishedAt: run.finishedAt,\n }),\n }\n\n finished = true\n await notifyRunFinished(input.onRunFinished, finishedRun)\n return {\n run: finishedRun,\n steps,\n version: finalVersion,\n }\n } catch (error) {\n const reportedError = unwrapPipelineStepFailure(error)\n if (startedRun && !finished) {\n const status = statusForFailure(signal, error)\n try {\n const failure = captureSixbFailure(error, {\n allowedCodes: PIPELINE_RUN_FAILURE_CODES,\n defaultCode: status === \"cancelled\" ? \"runtime.cancelled\" : \"internal.unexpected\",\n details: { pipelineId: durableRun.pipelineId, runId: job.id },\n })\n const run = await runtime.pipelineRunsStorage.finish({\n projectId: runtime.id,\n id: job.id,\n status,\n error: failure,\n })\n if (status === \"failed\" && run.status === \"failed\") {\n input.onRunFailed?.(reportedError, run, failure)\n }\n await notifyRunFinished(input.onRunFinished, run)\n } catch {\n // The run did not transition to the requested terminal status.\n }\n }\n\n throw reportedError\n } finally {\n await logSession.flush()\n }\n}\n\nasync function notifyRunFinished(\n handler: PipelineRunFinishedHandler | undefined,\n run: PipelineRunRecord\n): Promise<void> {\n try {\n await handler?.(run)\n } catch (error) {\n // The built-in event log reports lost batches itself. Anything reaching here is a broken\n // invariant in a custom lifecycle handler and must not change an already durable outcome.\n console.error(\"[SixbPipelineWorker] Pipeline run lifecycle handler failed:\", error)\n }\n}\n",
|
|
8
8
|
"import type { DatasetDefinition, PipelineDefinition } from \"@sixb/core\"\nimport { createSixbError, isSixbError, summarizeErrorMessage } from \"@sixb/core/internal/errors\"\nimport type { DatasetVersion } from \"@sixb/core/lake-storage\"\nimport type { PipelineRunStatus } from \"@sixb/core/storage\"\nimport type { PipelineJob } from \"./types\"\n\nexport function throwIfAborted(signal: AbortSignal): void {\n if (signal.aborted) {\n throw createAbortError()\n }\n}\n\nexport function statusForFailure(\n signal: AbortSignal,\n error: unknown\n): Extract<PipelineRunStatus, \"failed\" | \"cancelled\"> {\n return signal.aborted || isAbortError(error) ? \"cancelled\" : \"failed\"\n}\n\nexport function requireFinishedAt(input: {\n readonly pipelineId: string\n readonly runId: string\n readonly finishedAt: Date | undefined\n}): Date {\n if (input.finishedAt) {\n return input.finishedAt\n }\n\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline run '${input.runId}' finished without a finishedAt timestamp.`,\n { details: { pipelineId: input.pipelineId, runId: input.runId } }\n )\n}\n\nexport function createStepBookkeepingError(options: {\n readonly pipelineId: string\n readonly pipelineRunId: string\n readonly stepId: string\n readonly stepRunId: string\n readonly version: DatasetVersion\n readonly cause: unknown\n}): Error {\n // The dataset version is already durable; retrying the whole pipeline could duplicate appends.\n return createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${options.pipelineId}' step '${options.stepId}' committed dataset version '${options.version.versionId}', but failed to finalize step run '${options.stepRunId}'. The dataset commit may already have succeeded and the step run record may need repair.`,\n {\n cause: options.cause,\n details: {\n pipelineId: options.pipelineId,\n pipelineRunId: options.pipelineRunId,\n stepId: options.stepId,\n stepRunId: options.stepRunId,\n datasetId: options.version.datasetId,\n versionId: options.version.versionId,\n },\n }\n )\n}\n\nexport function createPipelineStepFailure(options: {\n readonly pipelineId: string\n readonly pipelineRunId: string\n readonly stepId: string\n readonly stepRunId?: string\n readonly cause: unknown\n}) {\n return createSixbError(\n \"pipeline.step_failed\",\n summarizeErrorMessage(options.cause, \"Pipeline step execution failed.\"),\n {\n cause: options.cause,\n details: {\n pipelineId: options.pipelineId,\n pipelineRunId: options.pipelineRunId,\n stepId: options.stepId,\n ...(options.stepRunId ? { stepRunId: options.stepRunId } : {}),\n },\n }\n )\n}\n\nexport function unwrapPipelineStepFailure(error: unknown): unknown {\n return isSixbError(error) && error.code === \"pipeline.step_failed\" && error.cause !== undefined\n ? error.cause\n : error\n}\n\nexport function createPipelineBookkeepingError(options: {\n readonly pipelineId: string\n readonly runId: string\n readonly version: DatasetVersion\n readonly cause: unknown\n}): Error {\n return createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${options.pipelineId}' committed final dataset version '${options.version.versionId}', but failed to finalize pipeline run '${options.runId}'. The dataset commit may already have succeeded and the pipeline run record may need repair.`,\n {\n cause: options.cause,\n details: {\n pipelineId: options.pipelineId,\n runId: options.runId,\n datasetId: options.version.datasetId,\n versionId: options.version.versionId,\n },\n }\n )\n}\n\nexport function requirePipeline(\n pipeline: PipelineDefinition | null,\n job: PipelineJob\n): PipelineDefinition {\n if (!pipeline) {\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Unknown pipeline '${job.pipelineId}'.`,\n { details: { pipelineId: job.pipelineId, runId: job.id } }\n )\n }\n\n return pipeline\n}\n\nexport function requireRegisteredDataset(options: {\n readonly dataset: DatasetDefinition | null\n readonly pipelineId: string\n readonly pipelineRunId: string\n readonly stepId: string\n readonly role: \"input\" | \"output\"\n readonly name?: string\n readonly datasetId: string\n}): DatasetDefinition {\n if (options.dataset) {\n return options.dataset\n }\n\n const namedRole = options.role === \"input\" ? `input '${options.name ?? \"unknown\"}'` : \"output\"\n\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${options.pipelineId}' step '${options.stepId}' ${namedRole} references unknown dataset '${options.datasetId}'.`,\n {\n details: {\n pipelineId: options.pipelineId,\n pipelineRunId: options.pipelineRunId,\n stepId: options.stepId,\n datasetId: options.datasetId,\n },\n }\n )\n}\n\nfunction createAbortError(): Error {\n const error = new Error(\"Worker runtime aborted.\")\n error.name = \"AbortError\"\n return error\n}\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof Error && error.name === \"AbortError\"\n}\n",
|
|
9
|
-
"import type { DatasetDefinition, PipelineDefinition, PipelineStepDefinition } from \"@sixb/core\"\nimport { captureSixbFailure } from \"@sixb/core/internal/errors\"\nimport type { DatasetVersion } from \"@sixb/core/lake-storage\"\nimport { PIPELINE_RUN_FAILURE_CODES, type PipelineStepRunRecord } from \"@sixb/core/storage\"\nimport {\n createPipelineStepFailure,\n createStepBookkeepingError,\n requireRegisteredDataset,\n statusForFailure,\n throwIfAborted,\n} from \"./errors\"\nimport { executeRunStep } from \"./execute-run-step\"\nimport { executeSqlStep } from \"./execute-sql-step\"\nimport { type ResolvedStepInput, resolveStepInputs } from \"./step-inputs\"\nimport type {\n PipelineJob,\n PipelineLogSession,\n PipelineStepFinishedHandler,\n PipelineStepRunResult,\n PipelineStepStartedHandler,\n PipelineWorkerContext,\n} from \"./types\"\n\ntype StepExecutionResult = {\n readonly version: DatasetVersion\n readonly versionCreated: boolean\n readonly rowsWritten?: number\n}\n\nexport async function runStep(input: {\n readonly runtime: PipelineWorkerContext\n readonly pipeline: PipelineDefinition\n readonly step: PipelineStepDefinition\n readonly stepIndex: number\n readonly job: PipelineJob\n readonly signal: AbortSignal\n readonly logSession: PipelineLogSession\n readonly onStepStarted?: PipelineStepStartedHandler\n readonly onStepFinished?: PipelineStepFinishedHandler\n}): Promise<PipelineStepRunResult> {\n const { runtime, pipeline, step, stepIndex, job, signal } = input\n const lifecycleContext = {\n stepIndex,\n totalSteps: pipeline.graph.nodes.length,\n }\n\n throwIfAborted(signal)\n let resolvedInputs: readonly ResolvedStepInput[]\n let outputDataset: DatasetDefinition\n
|
|
10
|
-
"import type {\n DatasetDefinition,\n DatasetRow,\n PipelineDefinition,\n PipelineStepDefinition,\n PipelineStepRunContext,\n} from \"@sixb/core\"\nimport { createSixbError } from \"@sixb/core/internal/errors\"\nimport type { DatasetVersion } from \"@sixb/core/lake-storage\"\nimport { throwIfAborted } from \"./errors\"\nimport { createStepInputs, type ResolvedStepInput } from \"./step-inputs\"\nimport type { PipelineJob, PipelineLogSession, PipelineWorkerContext } from \"./types\"\n\nexport async function executeRunStep(input: {\n readonly runtime: PipelineWorkerContext\n readonly pipeline: PipelineDefinition\n readonly step: PipelineStepDefinition\n readonly job: PipelineJob\n readonly signal: AbortSignal\n readonly logSession: PipelineLogSession\n readonly outputDataset: DatasetDefinition\n readonly resolvedInputs: readonly ResolvedStepInput[]\n}): Promise<{\n readonly version: DatasetVersion\n readonly versionCreated: boolean\n readonly rowsWritten: number\n}> {\n const { runtime, pipeline, step, job, signal, outputDataset, resolvedInputs } = input\n\n if (step.executor.kind !== \"run\") {\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${pipeline.id}' step '${step.id}' uses SQL execution, which is not supported by the run step executor.`,\n {\n details: {\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n datasetId: outputDataset.id,\n },\n }\n )\n }\n\n const logger = input.logSession.withContext({ stepId: step.id })\n let rowsWritten = 0\n const write = await runtime.lakeStorage.beginWrite({\n dataset: outputDataset,\n mode: step.mode,\n inputs: resolvedInputs.map((resolved) => resolved.ref),\n producer: {\n kind: \"pipeline\",\n id: pipeline.id,\n runId: job.id,\n stepId: step.id,\n },\n })\n\n try {\n const context: PipelineStepRunContext = {\n projectId: runtime.id,\n pipelineId: pipeline.id,\n stepId: step.id,\n runId: job.id,\n signal,\n logger,\n inputs: createStepInputs(runtime.lakeStorage, resolvedInputs),\n output: {\n async writeRows(rows) {\n await write.writeRows(\n countRowsWritten(rows, signal, () => {\n rowsWritten += 1\n })\n )\n },\n },\n }\n\n await step.executor.handler(context)\n throwIfAborted(signal)\n\n const commit = await write.commit({\n commitMessage: `pipeline ${pipeline.id} step ${step.id} run ${job.id}`,\n })\n const { outcome, ...version } = commit\n\n return {\n version,\n versionCreated: outcome === \"created\",\n rowsWritten,\n }\n } catch (error) {\n await write.abort().catch(() => {})\n throw error\n }\n}\n\nasync function* countRowsWritten(\n rows: Iterable<DatasetRow> | AsyncIterable<DatasetRow>,\n signal: AbortSignal,\n onWritten: () => void\n): AsyncIterable<DatasetRow> {\n for await (const row of rows) {\n throwIfAborted(signal)\n yield row\n onWritten()\n }\n}\n",
|
|
9
|
+
"import type { DatasetDefinition, PipelineDefinition, PipelineStepDefinition } from \"@sixb/core\"\nimport { captureSixbFailure } from \"@sixb/core/internal/errors\"\nimport type { DatasetVersion } from \"@sixb/core/lake-storage\"\nimport { PIPELINE_RUN_FAILURE_CODES, type PipelineStepRunRecord } from \"@sixb/core/storage\"\nimport {\n createPipelineStepFailure,\n createStepBookkeepingError,\n requireRegisteredDataset,\n statusForFailure,\n throwIfAborted,\n} from \"./errors\"\nimport { executeRunStep } from \"./execute-run-step\"\nimport { executeSqlStep } from \"./execute-sql-step\"\nimport { type ResolvedStepInput, resolveStepInputs } from \"./step-inputs\"\nimport type {\n PipelineJob,\n PipelineLogSession,\n PipelineStepFinishedHandler,\n PipelineStepRunResult,\n PipelineStepStartedHandler,\n PipelineWorkerContext,\n} from \"./types\"\n\ntype StepExecutionResult = {\n readonly version: DatasetVersion\n readonly versionCreated: boolean\n readonly rowsWritten?: number\n}\n\nexport async function runStep(input: {\n readonly runtime: PipelineWorkerContext\n readonly pipeline: PipelineDefinition\n readonly step: PipelineStepDefinition\n readonly stepIndex: number\n readonly job: PipelineJob\n readonly signal: AbortSignal\n readonly logSession: PipelineLogSession\n readonly onStepStarted?: PipelineStepStartedHandler\n readonly onStepFinished?: PipelineStepFinishedHandler\n}): Promise<PipelineStepRunResult> {\n const { runtime, pipeline, step, stepIndex, job, signal } = input\n const lifecycleContext = {\n stepIndex,\n totalSteps: pipeline.graph.nodes.length,\n }\n\n throwIfAborted(signal)\n let resolvedInputs: readonly ResolvedStepInput[]\n let outputDataset: DatasetDefinition\n let expectedLatestVersionId: string | null\n try {\n outputDataset = requireRegisteredDataset({\n dataset: runtime.datasets.getById(step.output.id),\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n role: \"output\",\n datasetId: step.output.id,\n })\n\n await runtime.lakeStorage.createDataset(outputDataset)\n // Capture the output guard before any input is pinned. A later capture could legitimize\n // overwriting a concurrent run with results computed from older inputs.\n expectedLatestVersionId =\n (await runtime.lakeStorage.getLatestVersion(outputDataset.id))?.versionId ?? null\n resolvedInputs = await resolveStepInputs({\n runtime,\n pipeline,\n step,\n pipelineRunId: job.id,\n })\n } catch (error) {\n if (statusForFailure(signal, error) === \"failed\") {\n throw createPipelineStepFailure({\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n cause: error,\n })\n }\n throw error\n }\n const inputRefs = resolvedInputs.map((resolved) => resolved.ref)\n\n const stepRunId = `${job.id}:step:${stepIndex + 1}:${step.id}`\n const startedStepRun = await runtime.pipelineRunsStorage.startStep({\n projectId: runtime.id,\n id: stepRunId,\n pipelineRunId: job.id,\n pipelineId: pipeline.id,\n stepId: step.id,\n datasetId: outputDataset.id,\n mode: step.mode,\n inputs: inputRefs,\n })\n await input.onStepStarted?.(startedStepRun, lifecycleContext)\n\n let committedVersion: DatasetVersion | undefined\n let rowsWritten: number | undefined\n\n try {\n const execution = await executeStep({\n runtime,\n pipeline,\n step,\n job,\n signal,\n logSession: input.logSession,\n outputDataset,\n expectedLatestVersionId,\n resolvedInputs,\n })\n committedVersion = execution.version\n rowsWritten = execution.rowsWritten\n\n let stepRun: PipelineStepRunRecord\n try {\n stepRun = await runtime.pipelineRunsStorage.finishStep({\n projectId: runtime.id,\n id: stepRunId,\n status: \"succeeded\",\n output: {\n datasetId: committedVersion.datasetId,\n versionId: committedVersion.versionId,\n },\n rowsWritten,\n })\n } catch (error) {\n throw createStepBookkeepingError({\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n stepRunId,\n version: committedVersion,\n cause: error,\n })\n }\n await input.onStepFinished?.(stepRun, lifecycleContext)\n\n return {\n run: stepRun,\n version: committedVersion,\n versionCreated: execution.versionCreated,\n }\n } catch (error) {\n if (!committedVersion) {\n const status = statusForFailure(signal, error)\n const failureError =\n status === \"failed\"\n ? createPipelineStepFailure({\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n stepRunId,\n cause: error,\n })\n : error\n const failedStepRun = await runtime.pipelineRunsStorage\n .finishStep({\n projectId: runtime.id,\n id: stepRunId,\n status,\n rowsWritten,\n error: captureSixbFailure(failureError, {\n allowedCodes: PIPELINE_RUN_FAILURE_CODES,\n defaultCode: status === \"cancelled\" ? \"runtime.cancelled\" : \"internal.unexpected\",\n details: {\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n stepRunId,\n },\n }),\n })\n .catch(() => null)\n\n if (failedStepRun) {\n await input.onStepFinished?.(failedStepRun, lifecycleContext)\n }\n\n throw failureError\n }\n\n throw error\n }\n}\n\nasync function executeStep(input: {\n readonly runtime: PipelineWorkerContext\n readonly pipeline: PipelineDefinition\n readonly step: PipelineStepDefinition\n readonly job: PipelineJob\n readonly signal: AbortSignal\n readonly logSession: PipelineLogSession\n readonly outputDataset: DatasetDefinition\n readonly expectedLatestVersionId: string | null\n readonly resolvedInputs: readonly ResolvedStepInput[]\n}): Promise<StepExecutionResult> {\n switch (input.step.executor.kind) {\n case \"run\":\n return executeRunStep(input)\n case \"sql\":\n return executeSqlStep(input)\n }\n}\n",
|
|
10
|
+
"import type {\n DatasetDefinition,\n DatasetRow,\n PipelineDefinition,\n PipelineStepDefinition,\n PipelineStepRunContext,\n} from \"@sixb/core\"\nimport { createSixbError } from \"@sixb/core/internal/errors\"\nimport type { DatasetVersion } from \"@sixb/core/lake-storage\"\nimport { throwIfAborted } from \"./errors\"\nimport { createStepInputs, type ResolvedStepInput } from \"./step-inputs\"\nimport type { PipelineJob, PipelineLogSession, PipelineWorkerContext } from \"./types\"\n\nexport async function executeRunStep(input: {\n readonly runtime: PipelineWorkerContext\n readonly pipeline: PipelineDefinition\n readonly step: PipelineStepDefinition\n readonly job: PipelineJob\n readonly signal: AbortSignal\n readonly logSession: PipelineLogSession\n readonly outputDataset: DatasetDefinition\n readonly expectedLatestVersionId: string | null\n readonly resolvedInputs: readonly ResolvedStepInput[]\n}): Promise<{\n readonly version: DatasetVersion\n readonly versionCreated: boolean\n readonly rowsWritten: number\n}> {\n const { runtime, pipeline, step, job, signal, outputDataset, resolvedInputs } = input\n\n if (step.executor.kind !== \"run\") {\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${pipeline.id}' step '${step.id}' uses SQL execution, which is not supported by the run step executor.`,\n {\n details: {\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n datasetId: outputDataset.id,\n },\n }\n )\n }\n\n const logger = input.logSession.withContext({ stepId: step.id })\n let rowsWritten = 0\n const write = await runtime.lakeStorage.beginWrite({\n dataset: outputDataset,\n mode: step.mode,\n inputs: resolvedInputs.map((resolved) => resolved.ref),\n producer: {\n kind: \"pipeline\",\n id: pipeline.id,\n runId: job.id,\n stepId: step.id,\n },\n })\n\n try {\n const context: PipelineStepRunContext = {\n projectId: runtime.id,\n pipelineId: pipeline.id,\n stepId: step.id,\n runId: job.id,\n signal,\n logger,\n inputs: createStepInputs(runtime.lakeStorage, resolvedInputs),\n output: {\n async writeRows(rows) {\n await write.writeRows(\n countRowsWritten(rows, signal, () => {\n rowsWritten += 1\n })\n )\n },\n },\n }\n\n await step.executor.handler(context)\n throwIfAborted(signal)\n\n const commit = await write.commit({\n expectedLatestVersionId: input.expectedLatestVersionId,\n commitMessage: `pipeline ${pipeline.id} step ${step.id} run ${job.id}`,\n })\n const { outcome, ...version } = commit\n\n return {\n version,\n versionCreated: outcome === \"created\",\n rowsWritten,\n }\n } catch (error) {\n await write.abort().catch(() => {})\n throw error\n }\n}\n\nasync function* countRowsWritten(\n rows: Iterable<DatasetRow> | AsyncIterable<DatasetRow>,\n signal: AbortSignal,\n onWritten: () => void\n): AsyncIterable<DatasetRow> {\n for await (const row of rows) {\n throwIfAborted(signal)\n yield row\n onWritten()\n }\n}\n",
|
|
11
11
|
"import type {\n DatasetDefinition,\n PipelineDefinition,\n PipelineStepDefinition,\n PipelineStepInput,\n PipelineStepRunContext,\n} from \"@sixb/core\"\nimport { createSixbError } from \"@sixb/core/internal/errors\"\nimport type {\n DatasetVersion,\n DatasetVersionRef,\n ReadDatasetRowsInput,\n} from \"@sixb/core/lake-storage\"\nimport { requireRegisteredDataset } from \"./errors\"\nimport type { PipelineWorkerContext } from \"./types\"\n\nexport interface ResolvedStepInput {\n readonly name: string\n readonly dataset: DatasetDefinition\n readonly version: DatasetVersion\n readonly ref: DatasetVersionRef\n}\n\nexport async function resolveStepInputs(input: {\n readonly runtime: PipelineWorkerContext\n readonly pipeline: PipelineDefinition\n readonly step: PipelineStepDefinition\n readonly pipelineRunId: string\n}): Promise<readonly ResolvedStepInput[]> {\n const { runtime, pipeline, step, pipelineRunId } = input\n const resolved: ResolvedStepInput[] = []\n\n for (const [name, declaredDataset] of Object.entries(step.inputs)) {\n const dataset = requireRegisteredDataset({\n dataset: runtime.datasets.getById(declaredDataset.id),\n pipelineId: pipeline.id,\n pipelineRunId,\n stepId: step.id,\n role: \"input\",\n name,\n datasetId: declaredDataset.id,\n })\n\n const version = await runtime.lakeStorage.getLatestVersion(dataset.id)\n if (!version) {\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${pipeline.id}' step '${step.id}' input '${name}' dataset '${dataset.id}' has no committed version.`,\n {\n details: {\n pipelineId: pipeline.id,\n pipelineRunId,\n stepId: step.id,\n datasetId: dataset.id,\n },\n }\n )\n }\n\n resolved.push({\n name,\n dataset,\n version,\n ref: {\n datasetId: version.datasetId,\n versionId: version.versionId,\n },\n })\n }\n\n return resolved\n}\n\nexport function createStepInputs(\n lakeStorage: PipelineWorkerContext[\"lakeStorage\"],\n resolved: readonly ResolvedStepInput[]\n): PipelineStepRunContext[\"inputs\"] {\n const inputs: Record<string, PipelineStepInput> = {}\n\n for (const input of resolved) {\n inputs[input.name] = {\n dataset: input.dataset,\n version: input.version,\n readRows(readInput: Omit<ReadDatasetRowsInput, \"datasetId\" | \"versionId\"> = {}) {\n // Step readers stay pinned even if newer versions commit while the handler runs.\n return lakeStorage.readRows({\n ...readInput,\n datasetId: input.dataset.id,\n versionId: input.version.versionId,\n })\n },\n }\n }\n\n return inputs\n}\n",
|
|
12
|
-
"import type {\n DatasetDefinition,\n LakeStorage,\n LakeStorageWithSql,\n PipelineDefinition,\n PipelineStepDefinition,\n} from \"@sixb/core\"\nimport { createSixbError } from \"@sixb/core/internal/errors\"\nimport type {\n DatasetVersion,\n DatasetWriteMode,\n LakeSqlTransformCapabilities,\n} from \"@sixb/core/lake-storage\"\nimport { throwIfAborted } from \"./errors\"\nimport type { ResolvedStepInput } from \"./step-inputs\"\nimport type { PipelineJob, PipelineWorkerContext } from \"./types\"\n\nfunction hasSqlExecutor(lakeStorage: LakeStorage): lakeStorage is LakeStorageWithSql {\n const sql = \"sql\" in lakeStorage ? lakeStorage.sql : null\n\n return (\n typeof sql === \"object\" && sql !== null && \"execute\" in sql && typeof sql.execute === \"function\"\n )\n}\n\nfunction assertSqlModeSupported(input: {\n readonly capabilities: LakeSqlTransformCapabilities\n readonly dialect: string\n readonly mode: DatasetWriteMode\n readonly pipelineId: string\n readonly pipelineRunId: string\n readonly stepId: string\n readonly datasetId: string\n}): void {\n const supported =\n input.mode === \"append\"\n ? input.capabilities.supportsAppend\n : input.capabilities.supportsSnapshot\n if (supported) return\n\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${input.pipelineId}' step '${input.stepId}' writes in ` +\n `'${input.mode}' mode, which the ${input.dialect} SQL executor does not support.`,\n {\n details: {\n pipelineId: input.pipelineId,\n pipelineRunId: input.pipelineRunId,\n stepId: input.stepId,\n datasetId: input.datasetId,\n },\n }\n )\n}\n\nexport async function executeSqlStep(input: {\n readonly runtime: PipelineWorkerContext\n readonly pipeline: PipelineDefinition\n readonly step: PipelineStepDefinition\n readonly job: PipelineJob\n readonly signal: AbortSignal\n readonly outputDataset: DatasetDefinition\n readonly resolvedInputs: readonly ResolvedStepInput[]\n}): Promise<{\n readonly version: DatasetVersion\n readonly versionCreated: boolean\n readonly rowsWritten?: number\n}> {\n const { runtime, pipeline, step, job, signal, outputDataset, resolvedInputs } = input\n\n if (step.executor.kind !== \"sql\") {\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${pipeline.id}' step '${step.id}' uses run execution, which is not supported by the SQL step executor.`,\n {\n details: {\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n datasetId: outputDataset.id,\n },\n }\n )\n }\n\n if (!hasSqlExecutor(runtime.lakeStorage)) {\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${pipeline.id}' step '${step.id}' requires SQL transform support, but lake storage does not provide lakeStorage.sql.execute(...).`,\n {\n details: {\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n datasetId: outputDataset.id,\n },\n }\n )\n }\n\n // `LakeSqlExecutor.capabilities` is a required field on the contract that nothing read,\n // so a provider declaring `supportsAppend: false` was asked to be honest and then\n // ignored — the unsupported mode failed somewhere inside the provider instead, in\n // whatever words that provider happened to use.\n assertSqlModeSupported({\n capabilities: runtime.lakeStorage.sql.capabilities,\n dialect: runtime.lakeStorage.sql.dialect,\n mode: step.mode,\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n datasetId: outputDataset.id,\n })\n\n throwIfAborted(signal)\n\n const commit = await runtime.lakeStorage.sql.execute({\n sources: Object.fromEntries(\n resolvedInputs.map((input) => [\n input.name,\n {\n dataset: input.dataset,\n versionId: input.version.versionId,\n },\n ])\n ),\n sql: step.executor.sql,\n target: outputDataset,\n mode: step.mode,\n producer: {\n kind: \"pipeline\",\n id: pipeline.id,\n runId: job.id,\n stepId: step.id,\n },\n commitMessage: `pipeline ${pipeline.id} step ${step.id} run ${job.id}`,\n })\n\n throwIfAborted(signal)\n const { outcome, ...version } = commit\n\n return {\n version,\n versionCreated: outcome === \"created\",\n rowsWritten: version.rowCount,\n }\n}\n"
|
|
12
|
+
"import type {\n DatasetDefinition,\n LakeStorage,\n LakeStorageWithSql,\n PipelineDefinition,\n PipelineStepDefinition,\n} from \"@sixb/core\"\nimport { createSixbError } from \"@sixb/core/internal/errors\"\nimport type {\n DatasetVersion,\n DatasetWriteMode,\n LakeSqlTransformCapabilities,\n} from \"@sixb/core/lake-storage\"\nimport { throwIfAborted } from \"./errors\"\nimport type { ResolvedStepInput } from \"./step-inputs\"\nimport type { PipelineJob, PipelineWorkerContext } from \"./types\"\n\nfunction hasSqlExecutor(lakeStorage: LakeStorage): lakeStorage is LakeStorageWithSql {\n const sql = \"sql\" in lakeStorage ? lakeStorage.sql : null\n\n return (\n typeof sql === \"object\" && sql !== null && \"execute\" in sql && typeof sql.execute === \"function\"\n )\n}\n\nfunction assertSqlModeSupported(input: {\n readonly capabilities: LakeSqlTransformCapabilities\n readonly dialect: string\n readonly mode: DatasetWriteMode\n readonly pipelineId: string\n readonly pipelineRunId: string\n readonly stepId: string\n readonly datasetId: string\n}): void {\n const supported =\n input.mode === \"append\"\n ? input.capabilities.supportsAppend\n : input.capabilities.supportsSnapshot\n if (supported) return\n\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${input.pipelineId}' step '${input.stepId}' writes in ` +\n `'${input.mode}' mode, which the ${input.dialect} SQL executor does not support.`,\n {\n details: {\n pipelineId: input.pipelineId,\n pipelineRunId: input.pipelineRunId,\n stepId: input.stepId,\n datasetId: input.datasetId,\n },\n }\n )\n}\n\nexport async function executeSqlStep(input: {\n readonly runtime: PipelineWorkerContext\n readonly pipeline: PipelineDefinition\n readonly step: PipelineStepDefinition\n readonly job: PipelineJob\n readonly signal: AbortSignal\n readonly outputDataset: DatasetDefinition\n readonly expectedLatestVersionId: string | null\n readonly resolvedInputs: readonly ResolvedStepInput[]\n}): Promise<{\n readonly version: DatasetVersion\n readonly versionCreated: boolean\n readonly rowsWritten?: number\n}> {\n const { runtime, pipeline, step, job, signal, outputDataset, resolvedInputs } = input\n\n if (step.executor.kind !== \"sql\") {\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${pipeline.id}' step '${step.id}' uses run execution, which is not supported by the SQL step executor.`,\n {\n details: {\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n datasetId: outputDataset.id,\n },\n }\n )\n }\n\n if (!hasSqlExecutor(runtime.lakeStorage)) {\n throw createSixbError(\n \"internal.unexpected\",\n `[SixbPipelineWorker] Pipeline '${pipeline.id}' step '${step.id}' requires SQL transform support, but lake storage does not provide lakeStorage.sql.execute(...).`,\n {\n details: {\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n datasetId: outputDataset.id,\n },\n }\n )\n }\n\n // `LakeSqlExecutor.capabilities` is a required field on the contract that nothing read,\n // so a provider declaring `supportsAppend: false` was asked to be honest and then\n // ignored — the unsupported mode failed somewhere inside the provider instead, in\n // whatever words that provider happened to use.\n assertSqlModeSupported({\n capabilities: runtime.lakeStorage.sql.capabilities,\n dialect: runtime.lakeStorage.sql.dialect,\n mode: step.mode,\n pipelineId: pipeline.id,\n pipelineRunId: job.id,\n stepId: step.id,\n datasetId: outputDataset.id,\n })\n\n throwIfAborted(signal)\n\n const commit = await runtime.lakeStorage.sql.execute({\n sources: Object.fromEntries(\n resolvedInputs.map((input) => [\n input.name,\n {\n dataset: input.dataset,\n versionId: input.version.versionId,\n },\n ])\n ),\n sql: step.executor.sql,\n target: outputDataset,\n expectedLatestVersionId: input.expectedLatestVersionId,\n mode: step.mode,\n producer: {\n kind: \"pipeline\",\n id: pipeline.id,\n runId: job.id,\n stepId: step.id,\n },\n commitMessage: `pipeline ${pipeline.id} step ${step.id} run ${job.id}`,\n })\n\n throwIfAborted(signal)\n const { outcome, ...version } = commit\n\n return {\n version,\n versionCreated: outcome === \"created\",\n rowsWritten: version.rowCount,\n }\n}\n"
|
|
13
13
|
],
|
|
14
|
-
"mappings": "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",
|
|
15
|
-
"debugId": "
|
|
14
|
+
"mappings": "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",
|
|
15
|
+
"debugId": "F41F62F6D8367E5E64756E2164756E21",
|
|
16
16
|
"names": []
|
|
17
17
|
}
|
package/dist/run-step.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-step.d.ts","sourceRoot":"","sources":["../src/run-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAc/F,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAQhB,wBAAsB,OAAO,CAAC,KAAK,EAAE;IACnC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAA;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,0BAA0B,CAAA;IACnD,QAAQ,CAAC,cAAc,CAAC,EAAE,2BAA2B,CAAA;CACtD,GAAG,OAAO,CAAC,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"run-step.d.ts","sourceRoot":"","sources":["../src/run-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAc/F,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAQhB,wBAAsB,OAAO,CAAC,KAAK,EAAE;IACnC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAA;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,0BAA0B,CAAA;IACnD,QAAQ,CAAC,cAAc,CAAC,EAAE,2BAA2B,CAAA;CACtD,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAkJjC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sixb/pipeline-worker",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Worker that runs Sixb pipelines",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sixb",
|
|
@@ -35,16 +35,16 @@
|
|
|
35
35
|
"prepack": "bun run build"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"@sixb/core": "0.1.
|
|
38
|
+
"@sixb/core": "0.1.9"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@sixb/core": "0.1.
|
|
41
|
+
"@sixb/core": "0.1.9",
|
|
42
42
|
"@types/bun": "latest",
|
|
43
43
|
"typescript": "^5.7.0"
|
|
44
44
|
},
|
|
45
45
|
"license": "MIT",
|
|
46
46
|
"engines": {
|
|
47
|
-
"bun": ">=1.
|
|
47
|
+
"bun": ">=1.4.2"
|
|
48
48
|
},
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"access": "public"
|
package/src/execute-run-step.ts
CHANGED
|
@@ -19,6 +19,7 @@ export async function executeRunStep(input: {
|
|
|
19
19
|
readonly signal: AbortSignal
|
|
20
20
|
readonly logSession: PipelineLogSession
|
|
21
21
|
readonly outputDataset: DatasetDefinition
|
|
22
|
+
readonly expectedLatestVersionId: string | null
|
|
22
23
|
readonly resolvedInputs: readonly ResolvedStepInput[]
|
|
23
24
|
}): Promise<{
|
|
24
25
|
readonly version: DatasetVersion
|
|
@@ -80,6 +81,7 @@ export async function executeRunStep(input: {
|
|
|
80
81
|
throwIfAborted(signal)
|
|
81
82
|
|
|
82
83
|
const commit = await write.commit({
|
|
84
|
+
expectedLatestVersionId: input.expectedLatestVersionId,
|
|
83
85
|
commitMessage: `pipeline ${pipeline.id} step ${step.id} run ${job.id}`,
|
|
84
86
|
})
|
|
85
87
|
const { outcome, ...version } = commit
|
package/src/execute-sql-step.ts
CHANGED
|
@@ -60,6 +60,7 @@ export async function executeSqlStep(input: {
|
|
|
60
60
|
readonly job: PipelineJob
|
|
61
61
|
readonly signal: AbortSignal
|
|
62
62
|
readonly outputDataset: DatasetDefinition
|
|
63
|
+
readonly expectedLatestVersionId: string | null
|
|
63
64
|
readonly resolvedInputs: readonly ResolvedStepInput[]
|
|
64
65
|
}): Promise<{
|
|
65
66
|
readonly version: DatasetVersion
|
|
@@ -126,6 +127,7 @@ export async function executeSqlStep(input: {
|
|
|
126
127
|
),
|
|
127
128
|
sql: step.executor.sql,
|
|
128
129
|
target: outputDataset,
|
|
130
|
+
expectedLatestVersionId: input.expectedLatestVersionId,
|
|
129
131
|
mode: step.mode,
|
|
130
132
|
producer: {
|
|
131
133
|
kind: "pipeline",
|
package/src/run-step.ts
CHANGED
|
@@ -47,13 +47,8 @@ export async function runStep(input: {
|
|
|
47
47
|
throwIfAborted(signal)
|
|
48
48
|
let resolvedInputs: readonly ResolvedStepInput[]
|
|
49
49
|
let outputDataset: DatasetDefinition
|
|
50
|
+
let expectedLatestVersionId: string | null
|
|
50
51
|
try {
|
|
51
|
-
resolvedInputs = await resolveStepInputs({
|
|
52
|
-
runtime,
|
|
53
|
-
pipeline,
|
|
54
|
-
step,
|
|
55
|
-
pipelineRunId: job.id,
|
|
56
|
-
})
|
|
57
52
|
outputDataset = requireRegisteredDataset({
|
|
58
53
|
dataset: runtime.datasets.getById(step.output.id),
|
|
59
54
|
pipelineId: pipeline.id,
|
|
@@ -64,6 +59,16 @@ export async function runStep(input: {
|
|
|
64
59
|
})
|
|
65
60
|
|
|
66
61
|
await runtime.lakeStorage.createDataset(outputDataset)
|
|
62
|
+
// Capture the output guard before any input is pinned. A later capture could legitimize
|
|
63
|
+
// overwriting a concurrent run with results computed from older inputs.
|
|
64
|
+
expectedLatestVersionId =
|
|
65
|
+
(await runtime.lakeStorage.getLatestVersion(outputDataset.id))?.versionId ?? null
|
|
66
|
+
resolvedInputs = await resolveStepInputs({
|
|
67
|
+
runtime,
|
|
68
|
+
pipeline,
|
|
69
|
+
step,
|
|
70
|
+
pipelineRunId: job.id,
|
|
71
|
+
})
|
|
67
72
|
} catch (error) {
|
|
68
73
|
if (statusForFailure(signal, error) === "failed") {
|
|
69
74
|
throw createPipelineStepFailure({
|
|
@@ -102,6 +107,7 @@ export async function runStep(input: {
|
|
|
102
107
|
signal,
|
|
103
108
|
logSession: input.logSession,
|
|
104
109
|
outputDataset,
|
|
110
|
+
expectedLatestVersionId,
|
|
105
111
|
resolvedInputs,
|
|
106
112
|
})
|
|
107
113
|
committedVersion = execution.version
|
|
@@ -187,6 +193,7 @@ async function executeStep(input: {
|
|
|
187
193
|
readonly signal: AbortSignal
|
|
188
194
|
readonly logSession: PipelineLogSession
|
|
189
195
|
readonly outputDataset: DatasetDefinition
|
|
196
|
+
readonly expectedLatestVersionId: string | null
|
|
190
197
|
readonly resolvedInputs: readonly ResolvedStepInput[]
|
|
191
198
|
}): Promise<StepExecutionResult> {
|
|
192
199
|
switch (input.step.executor.kind) {
|