Skip to content

Commit 7d80c32

Browse files
authored
Merge pull request #126 from detsys-pr-bot/detsys-ts-update-817e4d4123b6fb4eae5aa557658f25f8539e7240
Update `detsys-ts`: Merge pull request #62 from DeterminateSystems/dont-pull-microstackshots
2 parents 4cf6b19 + 7bc6ec5 commit 7d80c32

2 files changed

Lines changed: 48 additions & 17 deletions

File tree

dist/index.js

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -93421,7 +93421,7 @@ const external_node_child_process_namespaceObject = __WEBPACK_EXTERNAL_createReq
9342193421
const external_node_path_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:path");
9342293422
;// CONCATENATED MODULE: external "node:stream/promises"
9342393423
const external_node_stream_promises_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:stream/promises");
93424-
;// CONCATENATED MODULE: ./node_modules/.pnpm/github.com+DeterminateSystems+detsys-ts@e8f6e8f54d85aa0fd3d0b694dd3279a21497a33b_my6t2hapzhbardj4d5wtrx4lzm/node_modules/detsys-ts/dist/index.js
93424+
;// CONCATENATED MODULE: ./node_modules/.pnpm/github.com+DeterminateSystems+detsys-ts@817e4d4123b6fb4eae5aa557658f25f8539e7240_cyq6j27kjpra3jtdpg5422ffka/node_modules/detsys-ts/dist/index.js
9342593425
var __defProp = Object.defineProperty;
9342693426
var __export = (target, all) => {
9342793427
for (var name in all)
@@ -93651,16 +93651,16 @@ function stringifyError(e) {
9365193651

9365293652

9365393653

93654-
async function collectBacktraces(prefixes) {
93654+
async function collectBacktraces(prefixes, startTimestampMs) {
9365593655
if (isMacOS) {
93656-
return await collectBacktracesMacOS(prefixes);
93656+
return await collectBacktracesMacOS(prefixes, startTimestampMs);
9365793657
}
9365893658
if (isLinux) {
93659-
return await collectBacktracesSystemd(prefixes);
93659+
return await collectBacktracesSystemd(prefixes, startTimestampMs);
9366093660
}
9366193661
return /* @__PURE__ */ new Map();
9366293662
}
93663-
async function collectBacktracesMacOS(prefixes) {
93663+
async function collectBacktracesMacOS(prefixes, startTimestampMs) {
9366493664
const backtraces = /* @__PURE__ */ new Map();
9366593665
try {
9366693666
const { stdout: logJson } = await exec.getExecOutput(
@@ -93702,16 +93702,20 @@ async function collectBacktracesMacOS(prefixes) {
9370293702
for (const [source, dir] of dirs) {
9370393703
const fileNames = (await (0,promises_namespaceObject.readdir)(dir)).filter((fileName) => {
9370493704
return prefixes.some((prefix) => fileName.startsWith(prefix));
93705+
}).filter((fileName) => {
93706+
return !fileName.endsWith(".diag");
9370593707
});
9370693708
const doGzip = (0,external_node_util_.promisify)(external_node_zlib_namespaceObject.gzip);
9370793709
for (const fileName of fileNames) {
9370893710
try {
93709-
const logText = await (0,promises_namespaceObject.readFile)(`${dir}/${fileName}`);
93710-
const buf = await doGzip(logText);
93711-
backtraces.set(
93712-
`backtrace_value_${source}_${fileName}`,
93713-
buf.toString("base64")
93714-
);
93711+
if ((await (0,promises_namespaceObject.stat)(`${dir}/${fileName}`)).ctimeMs >= startTimestampMs) {
93712+
const logText = await (0,promises_namespaceObject.readFile)(`${dir}/${fileName}`);
93713+
const buf = await doGzip(logText);
93714+
backtraces.set(
93715+
`backtrace_value_${source}_${fileName}`,
93716+
buf.toString("base64")
93717+
);
93718+
}
9371593719
} catch (innerError) {
9371693720
backtraces.set(
9371793721
`backtrace_failure_${source}_${fileName}`,
@@ -93722,13 +93726,14 @@ async function collectBacktracesMacOS(prefixes) {
9372293726
}
9372393727
return backtraces;
9372493728
}
93725-
async function collectBacktracesSystemd(prefixes) {
93729+
async function collectBacktracesSystemd(prefixes, startTimestampMs) {
93730+
const sinceSeconds = Math.ceil((Date.now() - startTimestampMs) / 1e3);
9372693731
const backtraces = /* @__PURE__ */ new Map();
9372793732
const coredumps = [];
9372893733
try {
9372993734
const { stdout: coredumpjson } = await exec.getExecOutput(
9373093735
"coredumpctl",
93731-
["--json=pretty", "list", "--since", "1 hour ago"],
93736+
["--json=pretty", "list", "--since", `${sinceSeconds} seconds ago`],
9373293737
{
9373393738
silent: true
9373493739
}
@@ -94299,6 +94304,8 @@ var FACT_NIX_STORE_CHECK_ERROR = "nix_store_check_error";
9429994304
var STATE_KEY_EXECUTION_PHASE = "detsys_action_execution_phase";
9430094305
var STATE_KEY_NIX_NOT_FOUND = "detsys_action_nix_not_found";
9430194306
var STATE_NOT_FOUND = "not-found";
94307+
var STATE_KEY_CROSS_PHASE_ID = "detsys_cross_phase_id";
94308+
var STATE_BACKTRACE_START_TIMESTAMP = "detsys_backtrace_start_timestamp";
9430294309
var DIAGNOSTIC_ENDPOINT_TIMEOUT_MS = 3e4;
9430394310
var CHECK_IN_ENDPOINT_TIMEOUT_MS = 5e3;
9430494311
var DetSysAction = class {
@@ -94326,6 +94333,8 @@ var DetSysAction = class {
9432694333
this.features = {};
9432794334
this.featureEventMetadata = {};
9432894335
this.events = [];
94336+
this.getCrossPhaseId();
94337+
this.collectBacktraceSetup();
9432994338
this.facts = {
9433094339
$lib: "idslib",
9433194340
$lib_version: version,
@@ -94415,6 +94424,15 @@ var DetSysAction = class {
9441594424
getUniqueId() {
9441694425
return this.identity.run_differentiator || process.env.RUNNER_TRACKING_ID || (0,external_node_crypto_namespaceObject.randomUUID)();
9441794426
}
94427+
// This ID will be saved in the action's state, to be persisted across phase steps
94428+
getCrossPhaseId() {
94429+
let crossPhaseId = core.getState(STATE_KEY_CROSS_PHASE_ID);
94430+
if (crossPhaseId === "") {
94431+
crossPhaseId = (0,external_node_crypto_namespaceObject.randomUUID)();
94432+
core.saveState(STATE_KEY_CROSS_PHASE_ID, crossPhaseId);
94433+
}
94434+
return crossPhaseId;
94435+
}
9441894436
getCorrelationHashes() {
9441994437
return this.identity;
9442094438
}
@@ -94768,10 +94786,23 @@ var DetSysAction = class {
9476894786
process.chdir(startCwd);
9476994787
}
9477094788
}
94789+
collectBacktraceSetup() {
94790+
if (process.env.DETSYS_BACKTRACE_COLLECTOR === "") {
94791+
core.exportVariable(
94792+
"DETSYS_BACKTRACE_COLLECTOR",
94793+
this.getCrossPhaseId()
94794+
);
94795+
core.saveState(STATE_BACKTRACE_START_TIMESTAMP, Date.now());
94796+
}
94797+
}
9477194798
async collectBacktraces() {
9477294799
try {
94800+
if (process.env.DETSYS_BACKTRACE_COLLECTOR !== this.getCrossPhaseId()) {
94801+
return;
94802+
}
9477394803
const backtraces = await collectBacktraces(
94774-
this.actionOptions.binaryNamePrefixes
94804+
this.actionOptions.binaryNamePrefixes,
94805+
parseInt(core.getState(STATE_BACKTRACE_START_TIMESTAMP))
9477594806
);
9477694807
core.debug(`Backtraces identified: ${backtraces.size}`);
9477794808
if (backtraces.size > 0) {

pnpm-lock.yaml

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)