build-raptor 0.129.0 → 0.131.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/build-raptor.js +7259 -0
- package/index.d.ts +22 -0
- package/index.js +7231 -0
- package/package.json +13 -17
- package/dist/deps/brand/brand.d.ts +0 -5
- package/dist/deps/brand/brand.js +0 -3
- package/dist/deps/brand/index.d.ts +0 -1
- package/dist/deps/brand/index.js +0 -18
- package/dist/deps/build-failed-error/build-failed-error.d.ts +0 -14
- package/dist/deps/build-failed-error/build-failed-error.js +0 -13
- package/dist/deps/build-failed-error/index.d.ts +0 -1
- package/dist/deps/build-failed-error/index.js +0 -18
- package/dist/deps/build-raptor-api/build-raptor-api.d.ts +0 -351
- package/dist/deps/build-raptor-api/build-raptor-api.js +0 -132
- package/dist/deps/build-raptor-api/index.d.ts +0 -2
- package/dist/deps/build-raptor-api/index.js +0 -19
- package/dist/deps/build-raptor-api/step-by-step-processor.d.ts +0 -35
- package/dist/deps/build-raptor-api/step-by-step-processor.js +0 -3
- package/dist/deps/build-raptor-core/breakdown.d.ts +0 -18
- package/dist/deps/build-raptor-core/breakdown.js +0 -99
- package/dist/deps/build-raptor-core/build-raptor-config.d.ts +0 -18
- package/dist/deps/build-raptor-core/build-raptor-config.js +0 -21
- package/dist/deps/build-raptor-core/default-asset-publisher.d.ts +0 -10
- package/dist/deps/build-raptor-core/default-asset-publisher.js +0 -16
- package/dist/deps/build-raptor-core/engine-bootstrapper.d.ts +0 -50
- package/dist/deps/build-raptor-core/engine-bootstrapper.js +0 -200
- package/dist/deps/build-raptor-core/engine-event-scheme.d.ts +0 -20
- package/dist/deps/build-raptor-core/engine-event-scheme.js +0 -3
- package/dist/deps/build-raptor-core/engine.d.ts +0 -66
- package/dist/deps/build-raptor-core/engine.js +0 -285
- package/dist/deps/build-raptor-core/examplify-zod.d.ts +0 -93
- package/dist/deps/build-raptor-core/examplify-zod.js +0 -257
- package/dist/deps/build-raptor-core/execution-plan.d.ts +0 -20
- package/dist/deps/build-raptor-core/execution-plan.js +0 -66
- package/dist/deps/build-raptor-core/execution-record.d.ts +0 -17
- package/dist/deps/build-raptor-core/execution-record.js +0 -3
- package/dist/deps/build-raptor-core/execution-type.d.ts +0 -2
- package/dist/deps/build-raptor-core/execution-type.js +0 -3
- package/dist/deps/build-raptor-core/find-repo-dir.d.ts +0 -1
- package/dist/deps/build-raptor-core/find-repo-dir.js +0 -27
- package/dist/deps/build-raptor-core/fingerprint-ledger.d.ts +0 -33
- package/dist/deps/build-raptor-core/fingerprint-ledger.js +0 -164
- package/dist/deps/build-raptor-core/fingerprint.d.ts +0 -3
- package/dist/deps/build-raptor-core/fingerprint.js +0 -13
- package/dist/deps/build-raptor-core/fingerprinter.d.ts +0 -14
- package/dist/deps/build-raptor-core/fingerprinter.js +0 -121
- package/dist/deps/build-raptor-core/hasher.d.ts +0 -21
- package/dist/deps/build-raptor-core/hasher.js +0 -93
- package/dist/deps/build-raptor-core/index.d.ts +0 -9
- package/dist/deps/build-raptor-core/index.js +0 -26
- package/dist/deps/build-raptor-core/model.d.ts +0 -17
- package/dist/deps/build-raptor-core/model.js +0 -40
- package/dist/deps/build-raptor-core/nop-asset-publisher.d.ts +0 -6
- package/dist/deps/build-raptor-core/nop-asset-publisher.js +0 -12
- package/dist/deps/build-raptor-core/performance-report.d.ts +0 -5
- package/dist/deps/build-raptor-core/performance-report.js +0 -3
- package/dist/deps/build-raptor-core/phase.d.ts +0 -1
- package/dist/deps/build-raptor-core/phase.js +0 -3
- package/dist/deps/build-raptor-core/planner.d.ts +0 -12
- package/dist/deps/build-raptor-core/planner.js +0 -43
- package/dist/deps/build-raptor-core/purger.d.ts +0 -11
- package/dist/deps/build-raptor-core/purger.js +0 -65
- package/dist/deps/build-raptor-core/slot-index.d.ts +0 -6
- package/dist/deps/build-raptor-core/slot-index.js +0 -17
- package/dist/deps/build-raptor-core/step-by-step-transmitter.d.ts +0 -15
- package/dist/deps/build-raptor-core/step-by-step-transmitter.js +0 -94
- package/dist/deps/build-raptor-core/tar-stream.d.ts +0 -20
- package/dist/deps/build-raptor-core/tar-stream.js +0 -194
- package/dist/deps/build-raptor-core/task-executor.d.ts +0 -32
- package/dist/deps/build-raptor-core/task-executor.js +0 -321
- package/dist/deps/build-raptor-core/task-store-cli.d.ts +0 -1
- package/dist/deps/build-raptor-core/task-store-cli.js +0 -61
- package/dist/deps/build-raptor-core/task-store-event.d.ts +0 -17
- package/dist/deps/build-raptor-core/task-store-event.js +0 -3
- package/dist/deps/build-raptor-core/task-store.d.ts +0 -41
- package/dist/deps/build-raptor-core/task-store.js +0 -302
- package/dist/deps/build-raptor-core/task-summary.d.ts +0 -12
- package/dist/deps/build-raptor-core/task-summary.js +0 -3
- package/dist/deps/build-raptor-core/task-tracker.d.ts +0 -23
- package/dist/deps/build-raptor-core/task-tracker.js +0 -97
- package/dist/deps/build-raptor-core/task.d.ts +0 -30
- package/dist/deps/build-raptor-core/task.js +0 -90
- package/dist/deps/build-raptor-core/updatable-task-output-registry.d.ts +0 -13
- package/dist/deps/build-raptor-core/updatable-task-output-registry.js +0 -75
- package/dist/deps/build-raptor-core/validate-task-infos.d.ts +0 -3
- package/dist/deps/build-raptor-core/validate-task-infos.js +0 -53
- package/dist/deps/build-raptor-core-testkit/build-raptor-core-testkit.d.ts +0 -1
- package/dist/deps/build-raptor-core-testkit/build-raptor-core-testkit.js +0 -18
- package/dist/deps/build-raptor-core-testkit/driver.d.ts +0 -119
- package/dist/deps/build-raptor-core-testkit/driver.js +0 -305
- package/dist/deps/build-raptor-core-testkit/index.d.ts +0 -3
- package/dist/deps/build-raptor-core-testkit/index.js +0 -20
- package/dist/deps/build-raptor-core-testkit/repo-protocol-testkit.d.ts +0 -35
- package/dist/deps/build-raptor-core-testkit/repo-protocol-testkit.js +0 -226
- package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.d.ts +0 -27
- package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.js +0 -140
- package/dist/deps/build-raptor-jest-reporter/index.d.ts +0 -0
- package/dist/deps/build-raptor-jest-reporter/index.js +0 -33
- package/dist/deps/build-run-id/build-run-id.d.ts +0 -3
- package/dist/deps/build-run-id/build-run-id.js +0 -13
- package/dist/deps/build-run-id/index.d.ts +0 -1
- package/dist/deps/build-run-id/index.js +0 -18
- package/dist/deps/core-types/core-types.d.ts +0 -29
- package/dist/deps/core-types/core-types.js +0 -81
- package/dist/deps/core-types/index.d.ts +0 -1
- package/dist/deps/core-types/index.js +0 -18
- package/dist/deps/logger/index.d.ts +0 -1
- package/dist/deps/logger/index.js +0 -18
- package/dist/deps/logger/logger.d.ts +0 -26
- package/dist/deps/logger/logger.js +0 -152
- package/dist/deps/misc/arrays.d.ts +0 -7
- package/dist/deps/misc/arrays.js +0 -67
- package/dist/deps/misc/camelize-record.d.ts +0 -6
- package/dist/deps/misc/camelize-record.js +0 -16
- package/dist/deps/misc/clean-directory.d.ts +0 -4
- package/dist/deps/misc/clean-directory.js +0 -80
- package/dist/deps/misc/constructs.d.ts +0 -106
- package/dist/deps/misc/constructs.js +0 -131
- package/dist/deps/misc/directory-scanner.d.ts +0 -49
- package/dist/deps/misc/directory-scanner.js +0 -165
- package/dist/deps/misc/executor.d.ts +0 -39
- package/dist/deps/misc/executor.js +0 -59
- package/dist/deps/misc/file-system-storage-client.d.ts +0 -23
- package/dist/deps/misc/file-system-storage-client.js +0 -93
- package/dist/deps/misc/folderify.d.ts +0 -8
- package/dist/deps/misc/folderify.js +0 -86
- package/dist/deps/misc/graph.d.ts +0 -29
- package/dist/deps/misc/graph.js +0 -200
- package/dist/deps/misc/in-memory-storage-client.d.ts +0 -21
- package/dist/deps/misc/in-memory-storage-client.js +0 -75
- package/dist/deps/misc/index.d.ts +0 -20
- package/dist/deps/misc/index.js +0 -37
- package/dist/deps/misc/int.d.ts +0 -10
- package/dist/deps/misc/int.js +0 -29
- package/dist/deps/misc/internal/graph-executor.d.ts +0 -15
- package/dist/deps/misc/internal/graph-executor.js +0 -93
- package/dist/deps/misc/maps.d.ts +0 -29
- package/dist/deps/misc/maps.js +0 -47
- package/dist/deps/misc/misc.d.ts +0 -23
- package/dist/deps/misc/misc.js +0 -94
- package/dist/deps/misc/object-map.d.ts +0 -10
- package/dist/deps/misc/object-map.js +0 -26
- package/dist/deps/misc/promises.d.ts +0 -39
- package/dist/deps/misc/promises.js +0 -78
- package/dist/deps/misc/records.d.ts +0 -11
- package/dist/deps/misc/records.js +0 -40
- package/dist/deps/misc/slurp-dir.d.ts +0 -1
- package/dist/deps/misc/slurp-dir.js +0 -14
- package/dist/deps/misc/storage-client.d.ts +0 -12
- package/dist/deps/misc/storage-client.js +0 -3
- package/dist/deps/misc/stream-to-buffer.d.ts +0 -2
- package/dist/deps/misc/stream-to-buffer.js +0 -26
- package/dist/deps/misc/strings.d.ts +0 -12
- package/dist/deps/misc/strings.js +0 -68
- package/dist/deps/misc/typed-publisher.d.ts +0 -17
- package/dist/deps/misc/typed-publisher.js +0 -65
- package/dist/deps/repo-protocol/index.d.ts +0 -3
- package/dist/deps/repo-protocol/index.js +0 -20
- package/dist/deps/repo-protocol/repo-protocol.d.ts +0 -49
- package/dist/deps/repo-protocol/repo-protocol.js +0 -3
- package/dist/deps/repo-protocol/task-info.d.ts +0 -18
- package/dist/deps/repo-protocol/task-info.js +0 -3
- package/dist/deps/repo-protocol/test-run-summary.d.ts +0 -54
- package/dist/deps/repo-protocol/test-run-summary.js +0 -32
- package/dist/deps/repo-protocol-toolbox/generate-task-infos.d.ts +0 -5
- package/dist/deps/repo-protocol-toolbox/generate-task-infos.js +0 -26
- package/dist/deps/repo-protocol-toolbox/index.d.ts +0 -3
- package/dist/deps/repo-protocol-toolbox/index.js +0 -20
- package/dist/deps/repo-protocol-toolbox/repo-protocol-toolbox.d.ts +0 -10
- package/dist/deps/repo-protocol-toolbox/repo-protocol-toolbox.js +0 -90
- package/dist/deps/repo-protocol-toolbox/task-definition.d.ts +0 -14
- package/dist/deps/repo-protocol-toolbox/task-definition.js +0 -3
- package/dist/deps/reporter-output/index.d.ts +0 -1
- package/dist/deps/reporter-output/index.js +0 -18
- package/dist/deps/reporter-output/reporter-output.d.ts +0 -49
- package/dist/deps/reporter-output/reporter-output.js +0 -25
- package/dist/deps/s3-storage-client/creds.d.ts +0 -4
- package/dist/deps/s3-storage-client/creds.js +0 -3
- package/dist/deps/s3-storage-client/get-s3-storage-client-factory.d.ts +0 -3
- package/dist/deps/s3-storage-client/get-s3-storage-client-factory.js +0 -45
- package/dist/deps/s3-storage-client/index.d.ts +0 -2
- package/dist/deps/s3-storage-client/index.js +0 -19
- package/dist/deps/s3-storage-client/main.d.ts +0 -1
- package/dist/deps/s3-storage-client/main.js +0 -20
- package/dist/deps/s3-storage-client/s3-storage-client.d.ts +0 -25
- package/dist/deps/s3-storage-client/s3-storage-client.js +0 -134
- package/dist/deps/task-name/index.d.ts +0 -1
- package/dist/deps/task-name/index.js +0 -18
- package/dist/deps/task-name/task-name.d.ts +0 -17
- package/dist/deps/task-name/task-name.js +0 -44
- package/dist/deps/unit-metadata/index.d.ts +0 -1
- package/dist/deps/unit-metadata/index.js +0 -18
- package/dist/deps/unit-metadata/unit-metadata.d.ts +0 -14
- package/dist/deps/unit-metadata/unit-metadata.js +0 -32
- package/dist/deps/yarn-repo-protocol/build-task-record.d.ts +0 -61
- package/dist/deps/yarn-repo-protocol/build-task-record.js +0 -29
- package/dist/deps/yarn-repo-protocol/generate-test-run-summary.d.ts +0 -4
- package/dist/deps/yarn-repo-protocol/generate-test-run-summary.js +0 -26
- package/dist/deps/yarn-repo-protocol/index.d.ts +0 -2
- package/dist/deps/yarn-repo-protocol/index.js +0 -19
- package/dist/deps/yarn-repo-protocol/rerun-list.d.ts +0 -12
- package/dist/deps/yarn-repo-protocol/rerun-list.js +0 -6
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.d.ts +0 -24
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.js +0 -33
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.d.ts +0 -82
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.js +0 -1036
- package/dist/src/build-raptor-cli.d.ts +0 -60
- package/dist/src/build-raptor-cli.js +0 -514
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.js +0 -20
- package/dist/src/main.d.ts +0 -2
- package/dist/src/main.js +0 -23
- package/dist/src/register-asset-request.d.ts +0 -18
- package/dist/src/register-asset-request.js +0 -11
- package/dist/src/task-execution-visualizer.d.ts +0 -17
- package/dist/src/task-execution-visualizer.js +0 -116
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.TaskStore = exports.BlobId = void 0;
|
|
37
|
-
const build_failed_error_1 = require("build-failed-error");
|
|
38
|
-
const core_types_1 = require("core-types");
|
|
39
|
-
const fs = __importStar(require("fs"));
|
|
40
|
-
const fs_1 = require("fs");
|
|
41
|
-
const fse = __importStar(require("fs-extra"));
|
|
42
|
-
const misc_1 = require("misc");
|
|
43
|
-
const path = __importStar(require("path"));
|
|
44
|
-
const stream = __importStar(require("stream"));
|
|
45
|
-
const Tmp = __importStar(require("tmp-promise"));
|
|
46
|
-
const util = __importStar(require("util"));
|
|
47
|
-
const zlib = __importStar(require("zlib"));
|
|
48
|
-
const zod_1 = require("zod");
|
|
49
|
-
const tar_stream_1 = require("./tar-stream");
|
|
50
|
-
const pipeline = util.promisify(stream.pipeline);
|
|
51
|
-
const unzip = util.promisify(zlib.unzip);
|
|
52
|
-
const Metadata = zod_1.z.object({
|
|
53
|
-
/**
|
|
54
|
-
* An array of output locations (paths in repo)
|
|
55
|
-
*/
|
|
56
|
-
outputs: zod_1.z.string().array(),
|
|
57
|
-
/**
|
|
58
|
-
* A record that maps output locations (path in repo) to content hashes. Include output location that were defined in
|
|
59
|
-
* the TaskInfo with isPublic: true. This allows downloading the content from a content-addressable storage.
|
|
60
|
-
*/
|
|
61
|
-
publicFiles: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).default({}),
|
|
62
|
-
});
|
|
63
|
-
function validate(input) {
|
|
64
|
-
if (input.length === 0) {
|
|
65
|
-
throw new Error(`Bad BlobId: <${input}>`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
const BlobId = (s) => {
|
|
69
|
-
validate(s);
|
|
70
|
-
return s;
|
|
71
|
-
};
|
|
72
|
-
exports.BlobId = BlobId;
|
|
73
|
-
class TaskStore {
|
|
74
|
-
constructor(repoRootDir, client, logger, publisher, trace) {
|
|
75
|
-
this.repoRootDir = repoRootDir;
|
|
76
|
-
this.client = client;
|
|
77
|
-
this.logger = logger;
|
|
78
|
-
this.publisher = publisher;
|
|
79
|
-
this.trace = trace;
|
|
80
|
-
this.logger.info(`TaskStore created`);
|
|
81
|
-
}
|
|
82
|
-
async putBlob(content, hint) {
|
|
83
|
-
const ret = blobIdOf(content);
|
|
84
|
-
if (content.length === 0) {
|
|
85
|
-
return ret;
|
|
86
|
-
}
|
|
87
|
-
const key = { type: 'blob', blobId: ret };
|
|
88
|
-
if (await this.client.objectExists(key)) {
|
|
89
|
-
return ret;
|
|
90
|
-
}
|
|
91
|
-
this.trace?.push(`putting object: ${JSON.stringify(ret)} (hint: ${hint})=> ${content.length}`);
|
|
92
|
-
await this.client.putObject(key, content);
|
|
93
|
-
this.logger.info(`>>> uploaded ${hint}`);
|
|
94
|
-
return ret;
|
|
95
|
-
}
|
|
96
|
-
async getBlob(blobId) {
|
|
97
|
-
const nothing = emptyBuffer();
|
|
98
|
-
if (blobId === blobIdOf(nothing)) {
|
|
99
|
-
return nothing;
|
|
100
|
-
}
|
|
101
|
-
return await this.client.getObject({ type: 'blob', blobId }, 'buffer');
|
|
102
|
-
}
|
|
103
|
-
async getIfExists(k) {
|
|
104
|
-
const exists = await this.client.objectExists(k);
|
|
105
|
-
if (!exists) {
|
|
106
|
-
return undefined;
|
|
107
|
-
}
|
|
108
|
-
return await this.client.getObject(k, 'string');
|
|
109
|
-
}
|
|
110
|
-
async putVerdict(taskName, fingerprint, verdict, blobId) {
|
|
111
|
-
const key = { type: 'verdict', taskName, fingerprint, verdict, version: 2 };
|
|
112
|
-
// we put the key in the content for debugging purposes: it allows humans to understand what this object is
|
|
113
|
-
// about when inspecting underlying storage (the key underwhich the object is stored key is likely to be hashed so
|
|
114
|
-
// it is totally unreadable).
|
|
115
|
-
await this.client.putObject(key, JSON.stringify({ key, blobId }));
|
|
116
|
-
}
|
|
117
|
-
async getVerdict(taskName, fingerprint) {
|
|
118
|
-
const baseKey = { type: 'verdict', taskName, fingerprint, version: 2 };
|
|
119
|
-
const [ok, fail] = await Promise.all([
|
|
120
|
-
this.getIfExists({ ...baseKey, verdict: 'OK' }),
|
|
121
|
-
this.getIfExists({ ...baseKey, verdict: 'FAIL' }),
|
|
122
|
-
]);
|
|
123
|
-
const getBlobId = (content) => {
|
|
124
|
-
const parsed = JSON.parse(content);
|
|
125
|
-
// TODO(imaman): use zod to validate parsed
|
|
126
|
-
return (0, exports.BlobId)(parsed.blobId);
|
|
127
|
-
};
|
|
128
|
-
if (ok && fail) {
|
|
129
|
-
return ['FLAKY', getBlobId(ok)];
|
|
130
|
-
}
|
|
131
|
-
if (ok) {
|
|
132
|
-
return ['OK', getBlobId(ok)];
|
|
133
|
-
}
|
|
134
|
-
if (fail) {
|
|
135
|
-
return ['FAIL', getBlobId(fail)];
|
|
136
|
-
}
|
|
137
|
-
return ['UNKNOWN', blobIdOf(emptyBuffer())];
|
|
138
|
-
}
|
|
139
|
-
async bundle(outputs) {
|
|
140
|
-
if (!outputs.length) {
|
|
141
|
-
return { buffer: emptyBuffer(), publicFiles: {} };
|
|
142
|
-
}
|
|
143
|
-
this.trace?.push(`bundling ${JSON.stringify(outputs)}`);
|
|
144
|
-
const pairs = await (0, misc_1.promises)(outputs.filter(o => o.isPublic))
|
|
145
|
-
.map(async (o) => {
|
|
146
|
-
const resolved = this.repoRootDir.resolve(o.pathInRepo);
|
|
147
|
-
const stat = fs.statSync(resolved);
|
|
148
|
-
if (!stat.isFile()) {
|
|
149
|
-
throw new build_failed_error_1.BuildFailedError(`cannot publish an output location that is not a file: "${o.pathInRepo.val}"`);
|
|
150
|
-
}
|
|
151
|
-
const content = fs.readFileSync(resolved);
|
|
152
|
-
const h = await this.client.putContentAddressable(content);
|
|
153
|
-
return [o.pathInRepo.val, h];
|
|
154
|
-
})
|
|
155
|
-
.reify(STORAGE_CONCURRENCY);
|
|
156
|
-
const m = { outputs: outputs.map(o => o.pathInRepo.val), publicFiles: Object.fromEntries(pairs) };
|
|
157
|
-
const metadataBuf = Buffer.from(JSON.stringify(Metadata.parse(m)), 'utf-8');
|
|
158
|
-
if (metadataBuf.length > 100000) {
|
|
159
|
-
// Just for sanity.
|
|
160
|
-
throw new Error('metadata is too big');
|
|
161
|
-
}
|
|
162
|
-
const lenBuf = Buffer.alloc(LEN_BUF_SIZE);
|
|
163
|
-
lenBuf.writeInt32BE(metadataBuf.length);
|
|
164
|
-
const tempFile = await Tmp.file();
|
|
165
|
-
const pack = tar_stream_1.TarStream.pack();
|
|
166
|
-
const scanner = new misc_1.DirectoryScanner(this.repoRootDir.resolve());
|
|
167
|
-
for (const curr of outputs.filter(o => !o.isPublic)) {
|
|
168
|
-
const o = curr.pathInRepo;
|
|
169
|
-
const exists = await fse.pathExists(this.repoRootDir.resolve(o));
|
|
170
|
-
if (!exists) {
|
|
171
|
-
// TODO(imaman): turn this into a user-build-error? move it out of this file?
|
|
172
|
-
throw new Error(`Output location <${o}> does not exist (under <${this.repoRootDir}>)`);
|
|
173
|
-
}
|
|
174
|
-
await scanner.scanTree(o.val, (p, content, stat) => {
|
|
175
|
-
if (stat.isDirectory()) {
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
if (!stat.isSymbolicLink() && !stat.isFile()) {
|
|
179
|
-
throw new Error(`Cannot handle non-files in output: ${p} (under ${this.repoRootDir})`);
|
|
180
|
-
}
|
|
181
|
-
const resolved = this.repoRootDir.resolve((0, core_types_1.PathInRepo)(p));
|
|
182
|
-
// the return value of fs.stat() and friends has counterintuitive behavior: .mtimeMs will undeterministically
|
|
183
|
-
// include fractions of ms (e.g., 1690808418692.3323). Thus we're sticking with .mtime.getTime(). Similarly for
|
|
184
|
-
// atime, ctime.
|
|
185
|
-
const { mtime, atime, ctime } = fs.statSync(resolved);
|
|
186
|
-
this.trace?.push(`adding an entry: ${stat.mode.toString(8)} ${p} ${mtime.toISOString()}`);
|
|
187
|
-
if (stat.isSymbolicLink()) {
|
|
188
|
-
const linkTarget = content.toString('utf-8');
|
|
189
|
-
const resolved = path.isAbsolute(linkTarget) ? linkTarget : path.join(path.dirname(p), linkTarget);
|
|
190
|
-
const normalized = path.normalize(resolved);
|
|
191
|
-
pack.symlink({ from: p, mtime, to: normalized });
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
pack.entry({ path: p, mode: stat.mode, mtime, ctime, atime }, content);
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
const b = pack.toBuffer();
|
|
199
|
-
this.trace?.push(`digest of b is ${(0, misc_1.computeObjectHash)({ data: b.toString('hex') })}`);
|
|
200
|
-
const source = stream.Readable.from(b);
|
|
201
|
-
const gzip = zlib.createGzip();
|
|
202
|
-
const destination = (0, fs_1.createWriteStream)(tempFile.path);
|
|
203
|
-
await pipeline(source, gzip, destination);
|
|
204
|
-
const gzipped = await fse.readFile(tempFile.path);
|
|
205
|
-
this.trace?.push(`gzipped is ${gzipped.length} long`);
|
|
206
|
-
const ret = Buffer.concat([lenBuf, metadataBuf, gzipped]);
|
|
207
|
-
this.trace?.push(`bundling digest of ret is ${(0, misc_1.computeObjectHash)({ data: ret.toString('hex') })}`);
|
|
208
|
-
return { buffer: ret, publicFiles: m.publicFiles };
|
|
209
|
-
}
|
|
210
|
-
async unbundle(buf) {
|
|
211
|
-
if (buf.length === 0) {
|
|
212
|
-
return { files: [], publicFiles: {} };
|
|
213
|
-
}
|
|
214
|
-
const metadataLen = buf.slice(0, LEN_BUF_SIZE).readInt32BE();
|
|
215
|
-
const unparsed = JSON.parse(buf.slice(LEN_BUF_SIZE, LEN_BUF_SIZE + metadataLen).toString('utf-8'));
|
|
216
|
-
const metadata = Metadata.parse(unparsed);
|
|
217
|
-
const outputs = metadata.outputs.map(at => (0, core_types_1.PathInRepo)(at));
|
|
218
|
-
const removeOutputDir = async (o) => await fse.rm(this.repoRootDir.resolve(o), { recursive: true, force: true });
|
|
219
|
-
await (0, misc_1.promises)(outputs)
|
|
220
|
-
.map(async (o) => await removeOutputDir(o))
|
|
221
|
-
.reify(20);
|
|
222
|
-
const source = buf.slice(LEN_BUF_SIZE + metadataLen);
|
|
223
|
-
const unzipped = await unzip(source);
|
|
224
|
-
try {
|
|
225
|
-
await tar_stream_1.TarStream.extract(unzipped, this.repoRootDir.resolve(), this.logger);
|
|
226
|
-
}
|
|
227
|
-
catch (e) {
|
|
228
|
-
throw new Error(`unbundling a buffer (${buf.length} bytes) has failed: ${e}`);
|
|
229
|
-
}
|
|
230
|
-
await (0, misc_1.promises)(Object.keys(metadata.publicFiles)).forEach(STORAGE_CONCURRENCY, async (pir) => {
|
|
231
|
-
const pathInRepo = (0, core_types_1.PathInRepo)(pir);
|
|
232
|
-
const resolved = this.repoRootDir.resolve(pathInRepo);
|
|
233
|
-
const hash = metadata.publicFiles[pathInRepo.val];
|
|
234
|
-
if (!hash) {
|
|
235
|
-
throw new Error(`hash not found for "${pathInRepo}"`);
|
|
236
|
-
}
|
|
237
|
-
const buf = await this.client.getContentAddressable(hash);
|
|
238
|
-
fs.writeFileSync(resolved, buf);
|
|
239
|
-
});
|
|
240
|
-
return { files: outputs, publicFiles: metadata.publicFiles };
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Use only from tests
|
|
244
|
-
*/
|
|
245
|
-
async recordTaskForTesting(taskName, fingerprint, outputs, verdict) {
|
|
246
|
-
await this.recordTask(taskName, fingerprint, outputs.map(o => ({ pathInRepo: o, isPublic: false })), verdict);
|
|
247
|
-
}
|
|
248
|
-
async recordTask(taskName, fingerprint, outputs, verdict) {
|
|
249
|
-
const { blobId, publicFiles } = await this.recordBlob(taskName, outputs);
|
|
250
|
-
this.logger.info(`task=${taskName}, outputs=${JSON.stringify(outputs)}, publicFiles=${JSON.stringify(publicFiles)}`);
|
|
251
|
-
this.putVerdict(taskName, fingerprint, verdict, blobId);
|
|
252
|
-
await Promise.all([
|
|
253
|
-
this.publisher?.publish('taskStore', {
|
|
254
|
-
opcode: 'RECORDED',
|
|
255
|
-
taskName,
|
|
256
|
-
blobId,
|
|
257
|
-
fingerprint,
|
|
258
|
-
files: [...outputs.map(o => o.pathInRepo.val)],
|
|
259
|
-
}),
|
|
260
|
-
this.publisher?.publish('publicFiles', { taskName, publicFiles }),
|
|
261
|
-
]);
|
|
262
|
-
}
|
|
263
|
-
async recordBlob(taskName, outputs) {
|
|
264
|
-
const { buffer, publicFiles } = await this.bundle(outputs);
|
|
265
|
-
const blobId = await this.putBlob(buffer, taskName);
|
|
266
|
-
return { blobId, publicFiles };
|
|
267
|
-
}
|
|
268
|
-
async restoreTask(taskName, fingerprint) {
|
|
269
|
-
const [verdict, blobId] = await this.getVerdict(taskName, fingerprint);
|
|
270
|
-
const { files, publicFiles } = await this.restoreBlob(blobId);
|
|
271
|
-
await Promise.all([
|
|
272
|
-
this.publisher?.publish('taskStore', {
|
|
273
|
-
opcode: 'RESTORED',
|
|
274
|
-
taskName,
|
|
275
|
-
blobId,
|
|
276
|
-
fingerprint,
|
|
277
|
-
files: files.map(o => o.val),
|
|
278
|
-
}),
|
|
279
|
-
this.publisher?.publish('publicFiles', { taskName, publicFiles }),
|
|
280
|
-
]);
|
|
281
|
-
return verdict;
|
|
282
|
-
}
|
|
283
|
-
async restoreBlob(blobId) {
|
|
284
|
-
const buf = await this.getBlob(blobId);
|
|
285
|
-
const ret = await this.unbundle(buf);
|
|
286
|
-
return ret;
|
|
287
|
-
}
|
|
288
|
-
async checkVerdict(taskName, fingerprint) {
|
|
289
|
-
const [verdict] = await this.getVerdict(taskName, fingerprint);
|
|
290
|
-
return verdict;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
exports.TaskStore = TaskStore;
|
|
294
|
-
function emptyBuffer() {
|
|
295
|
-
return Buffer.from('');
|
|
296
|
-
}
|
|
297
|
-
function blobIdOf(buf) {
|
|
298
|
-
return (0, exports.BlobId)((0, misc_1.computeHash)(buf));
|
|
299
|
-
}
|
|
300
|
-
const LEN_BUF_SIZE = 8;
|
|
301
|
-
const STORAGE_CONCURRENCY = 100;
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXNrLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDJEQUFxRDtBQUNyRCwyQ0FBaUQ7QUFDakQsdUNBQXdCO0FBQ3hCLDJCQUFzQztBQUN0Qyw4Q0FBK0I7QUFFL0IsK0JBQXFIO0FBQ3JILDJDQUE0QjtBQUM1QiwrQ0FBZ0M7QUFFaEMsaURBQWtDO0FBQ2xDLDJDQUE0QjtBQUM1QiwyQ0FBNEI7QUFDNUIsNkJBQXVCO0FBR3ZCLDZDQUF3QztBQUt4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUV4QyxNQUFNLFFBQVEsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3hCOztPQUVHO0lBQ0gsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUU7SUFDM0I7OztPQUdHO0lBQ0gsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Q0FDMUQsQ0FBQyxDQUFBO0FBS0YsU0FBUyxRQUFRLENBQUMsS0FBYTtJQUM3QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxHQUFHLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU0sTUFBTSxHQUEwQixDQUFDLENBQVMsRUFBRSxFQUFFO0lBQ3pELFFBQVEsQ0FBQyxDQUFDLENB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
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { TaskName } from 'task-name';
|
|
2
|
-
import { ExecutionType } from './execution-type';
|
|
3
|
-
import { SlotIndex } from './slot-index';
|
|
4
|
-
export interface TaskSummary {
|
|
5
|
-
taskName: TaskName;
|
|
6
|
-
outputFile?: string;
|
|
7
|
-
verdict: 'OK' | 'FAIL' | 'CRASH' | 'UNKNOWN';
|
|
8
|
-
execution: ExecutionType;
|
|
9
|
-
startedAt: SlotIndex;
|
|
10
|
-
endedAt: SlotIndex;
|
|
11
|
-
rootCause?: TaskName;
|
|
12
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1zdW1tYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rhc2stc3VtbWFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ExitStatus } from 'repo-protocol';
|
|
2
|
-
import { TaskName } from 'task-name';
|
|
3
|
-
import { ExecutionPlan } from './execution-plan';
|
|
4
|
-
import { PerformanceReport } from './performance-report';
|
|
5
|
-
import { Task } from './task';
|
|
6
|
-
export declare class TaskTracker {
|
|
7
|
-
private readonly plan;
|
|
8
|
-
private numRunning;
|
|
9
|
-
private readonly usedConcurrencyLevles;
|
|
10
|
-
private numExecuted;
|
|
11
|
-
private counter;
|
|
12
|
-
constructor(plan: ExecutionPlan);
|
|
13
|
-
tasks(): Task[];
|
|
14
|
-
getDependencyTasks(tn: TaskName): Task[];
|
|
15
|
-
hasVerdict(taskName: TaskName): boolean;
|
|
16
|
-
getPerformanceReport(): PerformanceReport;
|
|
17
|
-
changeStatus(taskName: TaskName, status: 'RUNNING' | 'DONE'): void;
|
|
18
|
-
registerCachedVerdict(taskName: TaskName, cachedVerdict: 'OK' | 'FLAKY' | 'FAIL'): void;
|
|
19
|
-
registerVerdict(taskName: TaskName, status: ExitStatus, outputFile: string): void;
|
|
20
|
-
getTask(tn: TaskName): Task;
|
|
21
|
-
get successful(): boolean;
|
|
22
|
-
private propagateFailure;
|
|
23
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TaskTracker = void 0;
|
|
4
|
-
const misc_1 = require("misc");
|
|
5
|
-
const slot_index_1 = require("./slot-index");
|
|
6
|
-
class TaskTracker {
|
|
7
|
-
constructor(plan) {
|
|
8
|
-
this.plan = plan;
|
|
9
|
-
this.numRunning = 0;
|
|
10
|
-
this.usedConcurrencyLevles = [];
|
|
11
|
-
this.numExecuted = 0;
|
|
12
|
-
this.counter = (0, slot_index_1.SlotIndex)(0);
|
|
13
|
-
}
|
|
14
|
-
tasks() {
|
|
15
|
-
return this.plan.tasks();
|
|
16
|
-
}
|
|
17
|
-
getDependencyTasks(tn) {
|
|
18
|
-
return this.plan.taskGraph.neighborsOf(tn).map(tn => this.getTask(tn));
|
|
19
|
-
}
|
|
20
|
-
hasVerdict(taskName) {
|
|
21
|
-
return (0, misc_1.switchOn)(this.getTask(taskName).record.verdict, {
|
|
22
|
-
UNKNOWN: () => false,
|
|
23
|
-
OK: () => true,
|
|
24
|
-
FAIL: () => true,
|
|
25
|
-
CRASH: () => true,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
getPerformanceReport() {
|
|
29
|
-
return {
|
|
30
|
-
maxUsedConcurrency: Math.max(...this.usedConcurrencyLevles),
|
|
31
|
-
numExecuted: this.numExecuted,
|
|
32
|
-
usedConcurrencyLevles: this.usedConcurrencyLevles,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
changeStatus(taskName, status) {
|
|
36
|
-
const t = this.getTask(taskName);
|
|
37
|
-
this.counter = (0, slot_index_1.SlotIndex)(this.counter, (0, misc_1.switchOn)(status, { RUNNING: () => (0, misc_1.Int)(0), DONE: () => (0, misc_1.Int)(1) }));
|
|
38
|
-
t.changeStatus(status, this.counter);
|
|
39
|
-
if (status === 'RUNNING') {
|
|
40
|
-
this.numRunning += 1;
|
|
41
|
-
this.numExecuted += 1;
|
|
42
|
-
this.usedConcurrencyLevles.push(this.numRunning);
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
if (status === 'DONE') {
|
|
46
|
-
this.numRunning -= 1;
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
(0, misc_1.shouldNeverHappen)(status);
|
|
50
|
-
}
|
|
51
|
-
registerCachedVerdict(taskName, cachedVerdict) {
|
|
52
|
-
const task = this.getTask(taskName);
|
|
53
|
-
if (cachedVerdict === 'OK' || cachedVerdict === 'FLAKY') {
|
|
54
|
-
task.assignVerdict('OK', 'CACHED');
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
if (cachedVerdict == 'FAIL') {
|
|
58
|
-
task.assignVerdict('FAIL', 'CACHED');
|
|
59
|
-
this.propagateFailure(taskName);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
(0, misc_1.shouldNeverHappen)(cachedVerdict);
|
|
63
|
-
}
|
|
64
|
-
registerVerdict(taskName, status, outputFile) {
|
|
65
|
-
const task = this.getTask(taskName);
|
|
66
|
-
task.assignVerdict(status, 'EXECUTED');
|
|
67
|
-
(0, misc_1.switchOn)(status, {
|
|
68
|
-
CRASH: () => { },
|
|
69
|
-
FAIL: () => task.setOutputFile(outputFile),
|
|
70
|
-
OK: () => task.setOutputFile(outputFile),
|
|
71
|
-
});
|
|
72
|
-
(0, misc_1.switchOn)(status, {
|
|
73
|
-
CRASH: () => { },
|
|
74
|
-
FAIL: () => this.propagateFailure(taskName),
|
|
75
|
-
OK: () => { },
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
getTask(tn) {
|
|
79
|
-
return this.plan.getTask(tn);
|
|
80
|
-
}
|
|
81
|
-
get successful() {
|
|
82
|
-
return this.tasks().every(t => t.record.verdict === 'OK');
|
|
83
|
-
}
|
|
84
|
-
propagateFailure(taskName) {
|
|
85
|
-
const toFail = this.plan.errorPropagationGraph.traverseFrom(taskName, { direction: 'backwards' });
|
|
86
|
-
for (const t of toFail) {
|
|
87
|
-
if (t === taskName) {
|
|
88
|
-
// TODO(imaman): not tested
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
const r = this.getTask(t);
|
|
92
|
-
r.assignVerdict('FAIL', 'CANNOT_START', taskName);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
exports.TaskTracker = TaskTracker;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay10cmFja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rhc2stdHJhY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBdUQ7QUFNdkQsNkNBQXdDO0FBR3hDLE1BQWEsV0FBVztJQU10QixZQUE2QixJQUFtQjtRQUFuQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBTHhDLGVBQVUsR0FBRyxDQUFDLENBQUE7UUFDTCwwQkFBcUIsR0FBYSxFQUFFLENBQUE7UUFDN0MsZ0JBQVcsR0FBRyxDQUFDLENBQUE7UUFDZixZQUFPLEdBQWMsSUFBQSxzQkFBUyxFQUFDLENBQUMsQ0FBQyxDQUFBO0lBRVUsQ0FBQztJQUVwRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzFCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFZO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQWtCO1FBQzNCLE9BQU8sSUFBQSxlQUFRLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLO1lBQ3BCLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQ2QsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7WUFDaEIsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7U0FDbEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEdB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
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { PathInRepo } from 'core-types';
|
|
2
|
-
import { OutputLocation, TaskInfo } from 'repo-protocol';
|
|
3
|
-
import { TaskName } from 'task-name';
|
|
4
|
-
import { ExecutionRecord } from './execution-record';
|
|
5
|
-
import { Fingerprint } from './fingerprint';
|
|
6
|
-
import { Phase } from './phase';
|
|
7
|
-
import { SlotIndex } from './slot-index';
|
|
8
|
-
export declare class Task {
|
|
9
|
-
private readonly buildRunId;
|
|
10
|
-
readonly taskInfo: TaskInfo;
|
|
11
|
-
readonly labels: readonly string[];
|
|
12
|
-
readonly name: TaskName;
|
|
13
|
-
readonly id: string;
|
|
14
|
-
private fingerprint;
|
|
15
|
-
private readonly executionRecord;
|
|
16
|
-
readonly inputs: readonly PathInRepo[];
|
|
17
|
-
constructor(buildRunId: string, taskInfo: TaskInfo, inputs: PathInRepo[], labels: readonly string[]);
|
|
18
|
-
get unitId(): import("unit-metadata").UnitId;
|
|
19
|
-
changeStatus(status: 'RUNNING' | 'DONE', counter: SlotIndex): void;
|
|
20
|
-
getFingerprint(): Fingerprint;
|
|
21
|
-
computeFingerprint(fingerprintsOfInputs: Fingerprint[]): void;
|
|
22
|
-
setPhase(phase: Phase): void;
|
|
23
|
-
getPhase(): Phase;
|
|
24
|
-
hasPhase(): boolean;
|
|
25
|
-
get record(): ExecutionRecord;
|
|
26
|
-
get outputLocations(): OutputLocation[];
|
|
27
|
-
assignVerdict(verdict: 'OK' | 'FAIL' | 'CRASH', executionType: 'EXECUTED' | 'CACHED' | 'CANNOT_START', rootCause?: TaskName): void;
|
|
28
|
-
setOutputFile(outputFile: string): void;
|
|
29
|
-
getDurationMillis(): number | undefined;
|
|
30
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Task = void 0;
|
|
4
|
-
const misc_1 = require("misc");
|
|
5
|
-
const task_name_1 = require("task-name");
|
|
6
|
-
const fingerprint_1 = require("./fingerprint");
|
|
7
|
-
const slot_index_1 = require("./slot-index");
|
|
8
|
-
class Task {
|
|
9
|
-
constructor(buildRunId, taskInfo, inputs, labels) {
|
|
10
|
-
this.buildRunId = buildRunId;
|
|
11
|
-
this.taskInfo = taskInfo;
|
|
12
|
-
this.labels = labels;
|
|
13
|
-
this.inputs = (0, misc_1.uniqueBy)((0, misc_1.sortBy)(inputs, t => t.val), t => t.val);
|
|
14
|
-
this.name = taskInfo.taskName;
|
|
15
|
-
this.id = (0, misc_1.computeObjectHash)({ buildRunId: this.buildRunId, name: this.name });
|
|
16
|
-
this.executionRecord = {
|
|
17
|
-
verdict: 'UNKNOWN',
|
|
18
|
-
executionType: 'UNKNOWN',
|
|
19
|
-
startedAt: (0, slot_index_1.SlotIndex)(-1),
|
|
20
|
-
endedAt: (0, slot_index_1.SlotIndex)(-1),
|
|
21
|
-
phases: [],
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
get unitId() {
|
|
25
|
-
return (0, task_name_1.TaskName)().undo(this.name).unitId;
|
|
26
|
-
}
|
|
27
|
-
changeStatus(status, counter) {
|
|
28
|
-
if (status === 'RUNNING') {
|
|
29
|
-
this.executionRecord.startedAt = counter;
|
|
30
|
-
}
|
|
31
|
-
else if (status === 'DONE') {
|
|
32
|
-
this.executionRecord.endedAt = counter;
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
(0, misc_1.shouldNeverHappen)(status);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
getFingerprint() {
|
|
39
|
-
return this.fingerprint ?? (0, misc_1.failMe)(`fingerprint not set in ${this.name}`);
|
|
40
|
-
}
|
|
41
|
-
computeFingerprint(fingerprintsOfInputs) {
|
|
42
|
-
if (this.fingerprint !== undefined) {
|
|
43
|
-
throw new Error(`Fingerprint was already set in ${this.name}`);
|
|
44
|
-
}
|
|
45
|
-
const fp = (0, misc_1.computeObjectHash)({
|
|
46
|
-
fingerprintsOfInputs,
|
|
47
|
-
info: this.taskInfo, // eslint-disable-line @typescript-eslint/consistent-type-assertions
|
|
48
|
-
});
|
|
49
|
-
this.fingerprint = (0, fingerprint_1.Fingerprint)(fp);
|
|
50
|
-
}
|
|
51
|
-
setPhase(phase) {
|
|
52
|
-
this.executionRecord.phases.push({ phase, timestampMillis: Date.now() });
|
|
53
|
-
}
|
|
54
|
-
getPhase() {
|
|
55
|
-
const pos = this.executionRecord.phases.length - 1;
|
|
56
|
-
return pos >= 0 ? this.executionRecord.phases[pos].phase : 'UNSTARTED';
|
|
57
|
-
}
|
|
58
|
-
hasPhase() {
|
|
59
|
-
return this.executionRecord.phases.length > 0;
|
|
60
|
-
}
|
|
61
|
-
get record() {
|
|
62
|
-
return this.executionRecord;
|
|
63
|
-
}
|
|
64
|
-
get outputLocations() {
|
|
65
|
-
return this.taskInfo.outputLocations ?? [];
|
|
66
|
-
}
|
|
67
|
-
assignVerdict(verdict, executionType, rootCause) {
|
|
68
|
-
this.executionRecord.verdict = verdict;
|
|
69
|
-
this.executionRecord.executionType = executionType;
|
|
70
|
-
this.executionRecord.rootCause = rootCause;
|
|
71
|
-
}
|
|
72
|
-
setOutputFile(outputFile) {
|
|
73
|
-
this.executionRecord.outputFile = outputFile;
|
|
74
|
-
}
|
|
75
|
-
getDurationMillis() {
|
|
76
|
-
const phases = this.executionRecord.phases;
|
|
77
|
-
if (phases.length < 2) {
|
|
78
|
-
return undefined;
|
|
79
|
-
}
|
|
80
|
-
// Find the first RUNNING phase and the last phase
|
|
81
|
-
const runningPhase = phases.find(p => p.phase === 'RUNNING');
|
|
82
|
-
const lastPhase = phases[phases.length - 1];
|
|
83
|
-
if (!runningPhase) {
|
|
84
|
-
return undefined;
|
|
85
|
-
}
|
|
86
|
-
return lastPhase.timestampMillis - runningPhase.timestampMillis;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
exports.Task = Task;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLCtCQUErRjtBQUUvRix5Q0FBb0M7QUFJcEMsK0NBQTJDO0FBRTNDLDZDQUF3QztBQUV4QyxNQUFhLElBQUk7SUFPZixZQUNtQixVQUFrQixFQUMxQixRQUFrQixFQUMzQixNQUFvQixFQUNYLE1BQXlCO1FBSGpCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUVsQixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUVsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUEsZUFBUSxFQUNwQixJQUFBLGFBQU0sRUFBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQzFCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDWCxDQUFBO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFBO1FBQzdCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBQSx3QkFBaUIsRUFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUM3RSxJQUFJLENBQUMsZUFBZSxHQUFHO1lBQ3JCLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLGFBQWEsRUFBRSxTQUFTO1lBQ3hCLFNBQVMsRUFBRSxJQUFBLHNCQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsT0FBTyxFQUFFLElBQUEsc0JBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFBLG9CQUFRLEdBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FB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
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { PathInRepo } from 'core-types';
|
|
2
|
-
import { TaskName } from 'task-name';
|
|
3
|
-
export interface TaskOutputRegistry {
|
|
4
|
-
lookup(outputLoc: PathInRepo): TaskName | undefined;
|
|
5
|
-
wideLookup(outputLoc: PathInRepo): TaskName[];
|
|
6
|
-
}
|
|
7
|
-
export declare class UpdateableTaskOutputRegistry implements TaskOutputRegistry {
|
|
8
|
-
private readonly map;
|
|
9
|
-
constructor();
|
|
10
|
-
add(taskName: TaskName, outputLoc: PathInRepo): void;
|
|
11
|
-
lookup(outputLoc: PathInRepo): TaskName | undefined;
|
|
12
|
-
wideLookup(outputLoc: PathInRepo): TaskName[];
|
|
13
|
-
}
|