Add random suffix when writing diagnostics to avoid filename collisions

This commit is contained in:
Henry Mercer
2026-04-28 11:29:32 +01:00
parent 19b3a84f58
commit cdb655d6d4
7 changed files with 19 additions and 7 deletions
+7 -1
View File
@@ -167,10 +167,16 @@ function writeDiagnostic(
// Create the directory if it doesn't exist yet.
mkdirSync(diagnosticsPath, { recursive: true });
// Include a random suffix to avoid filename collisions between diagnostics
// produced within the same millisecond. This doesn't need to be
// cryptographically secure, so `Math.random` is fine.
const uniqueSuffix = Math.floor(Math.random() * 0x100000000)
.toString(16)
.padStart(8, "0");
const jsonPath = path.resolve(
diagnosticsPath,
// Remove colons from the timestamp as these are not allowed in Windows filenames.
`codeql-action-${diagnostic.timestamp.replaceAll(":", "")}.json`,
`codeql-action-${diagnostic.timestamp.replaceAll(":", "")}-${uniqueSuffix}.json`,
);
writeFileSync(jsonPath, JSON.stringify(diagnostic));