From 9f77ff18bb6f0ace92e068bb5d4a32dc73e9a02e Mon Sep 17 00:00:00 2001 From: Henry Mercer Date: Tue, 3 Mar 2026 17:21:59 +0100 Subject: [PATCH] Make "insufficient resources" reason more specific --- lib/init-action.js | 15 ++++++++------- src/config-utils.test.ts | 16 ++++++++-------- src/config-utils.ts | 17 +++++++++-------- src/overlay/diagnostics.ts | 6 ++++-- 4 files changed, 29 insertions(+), 25 deletions(-) diff --git a/lib/init-action.js b/lib/init-action.js index 7b9939082..40276cc1b 100644 --- a/lib/init-action.js +++ b/lib/init-action.js @@ -106447,14 +106447,14 @@ async function runnerHasSufficientMemory(codeql, ramInput, logger) { ); return true; } -async function runnerSupportsOverlayAnalysis(codeql, diskUsage, ramInput, logger, useV2ResourceChecks) { +async function getResourceDisabledReason(codeql, diskUsage, ramInput, logger, useV2ResourceChecks) { if (!runnerHasSufficientDiskSpace(diskUsage, logger, useV2ResourceChecks)) { - return false; + return "insufficient-disk-space" /* InsufficientDiskSpace */; } if (!await runnerHasSufficientMemory(codeql, ramInput, logger)) { - return false; + return "insufficient-memory" /* InsufficientMemory */; } - return true; + return void 0; } async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, buildMode, ramInput, codeScanningConfig, repositoryProperties, gitVersion, logger) { let overlayDatabaseMode = "none" /* None */; @@ -106489,15 +106489,16 @@ async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, b "overlay_analysis_status_check" /* OverlayAnalysisStatusCheck */ ); const diskUsage = performResourceChecks || checkOverlayStatus ? await checkDiskUsage(logger) : void 0; - if (performResourceChecks && !await runnerSupportsOverlayAnalysis( + let resourceDisabledReason; + if (performResourceChecks && (resourceDisabledReason = await getResourceDisabledReason( codeql, diskUsage, ramInput, logger, useV2ResourceChecks - )) { + )) !== void 0) { overlayDatabaseMode = "none" /* None */; - disabledReason = "insufficient-resources" /* InsufficientResources */; + disabledReason = resourceDisabledReason; } else if (checkOverlayStatus && diskUsage === void 0) { logger.warning( `Unable to determine disk usage, therefore setting overlay database mode to ${"none" /* None */}.` diff --git a/src/config-utils.test.ts b/src/config-utils.test.ts index a0b58cad1..ac7303086 100644 --- a/src/config-utils.test.ts +++ b/src/config-utils.test.ts @@ -1234,7 +1234,7 @@ test( { overlayDatabaseMode: OverlayDatabaseMode.None, useOverlayDatabaseCaching: false, - disabledReason: OverlayDisabledReason.InsufficientResources, + disabledReason: OverlayDisabledReason.InsufficientDiskSpace, }, ); @@ -1253,7 +1253,7 @@ test( { overlayDatabaseMode: OverlayDatabaseMode.None, useOverlayDatabaseCaching: false, - disabledReason: OverlayDisabledReason.InsufficientResources, + disabledReason: OverlayDisabledReason.InsufficientDiskSpace, }, ); @@ -1298,7 +1298,7 @@ test( { overlayDatabaseMode: OverlayDatabaseMode.None, useOverlayDatabaseCaching: false, - disabledReason: OverlayDisabledReason.InsufficientResources, + disabledReason: OverlayDisabledReason.InsufficientDiskSpace, }, ); @@ -1342,7 +1342,7 @@ test( { overlayDatabaseMode: OverlayDatabaseMode.None, useOverlayDatabaseCaching: false, - disabledReason: OverlayDisabledReason.InsufficientResources, + disabledReason: OverlayDisabledReason.InsufficientDiskSpace, }, ); @@ -1361,7 +1361,7 @@ test( { overlayDatabaseMode: OverlayDatabaseMode.None, useOverlayDatabaseCaching: false, - disabledReason: OverlayDisabledReason.InsufficientResources, + disabledReason: OverlayDisabledReason.InsufficientMemory, }, ); @@ -1638,7 +1638,7 @@ test( { overlayDatabaseMode: OverlayDatabaseMode.None, useOverlayDatabaseCaching: false, - disabledReason: OverlayDisabledReason.InsufficientResources, + disabledReason: OverlayDisabledReason.InsufficientDiskSpace, }, ); @@ -1679,7 +1679,7 @@ test( { overlayDatabaseMode: OverlayDatabaseMode.None, useOverlayDatabaseCaching: false, - disabledReason: OverlayDisabledReason.InsufficientResources, + disabledReason: OverlayDisabledReason.InsufficientDiskSpace, }, ); @@ -1698,7 +1698,7 @@ test( { overlayDatabaseMode: OverlayDatabaseMode.None, useOverlayDatabaseCaching: false, - disabledReason: OverlayDisabledReason.InsufficientResources, + disabledReason: OverlayDisabledReason.InsufficientMemory, }, ); diff --git a/src/config-utils.ts b/src/config-utils.ts index 459a49485..9f3aaa9e8 100644 --- a/src/config-utils.ts +++ b/src/config-utils.ts @@ -759,20 +759,20 @@ async function runnerHasSufficientMemory( * Checks if the runner supports overlay analysis based on available disk space * and the maximum memory CodeQL will be allowed to use. */ -async function runnerSupportsOverlayAnalysis( +async function getResourceDisabledReason( codeql: CodeQL, diskUsage: DiskUsage | undefined, ramInput: string | undefined, logger: Logger, useV2ResourceChecks: boolean, -): Promise { +): Promise { if (!runnerHasSufficientDiskSpace(diskUsage, logger, useV2ResourceChecks)) { - return false; + return OverlayDisabledReason.InsufficientDiskSpace; } if (!(await runnerHasSufficientMemory(codeql, ramInput, logger))) { - return false; + return OverlayDisabledReason.InsufficientMemory; } - return true; + return undefined; } /** @@ -860,18 +860,19 @@ export async function getOverlayDatabaseMode( performResourceChecks || checkOverlayStatus ? await checkDiskUsage(logger) : undefined; + let resourceDisabledReason: OverlayDisabledReason | undefined; if ( performResourceChecks && - !(await runnerSupportsOverlayAnalysis( + (resourceDisabledReason = await getResourceDisabledReason( codeql, diskUsage, ramInput, logger, useV2ResourceChecks, - )) + )) !== undefined ) { overlayDatabaseMode = OverlayDatabaseMode.None; - disabledReason = OverlayDisabledReason.InsufficientResources; + disabledReason = resourceDisabledReason; } else if (checkOverlayStatus && diskUsage === undefined) { logger.warning( `Unable to determine disk usage, therefore setting overlay database mode to ${OverlayDatabaseMode.None}.`, diff --git a/src/overlay/diagnostics.ts b/src/overlay/diagnostics.ts index ec2fdabb0..3c20f1049 100644 --- a/src/overlay/diagnostics.ts +++ b/src/overlay/diagnostics.ts @@ -24,8 +24,10 @@ export enum OverlayDisabledReason { IncompatibleCodeQl = "incompatible-codeql", /** The Git version could not be determined or is too old. */ IncompatibleGit = "incompatible-git", - /** The runner does not have enough disk space or memory. */ - InsufficientResources = "insufficient-resources", + /** The runner does not have enough disk space to perform overlay analysis. */ + InsufficientDiskSpace = "insufficient-disk-space", + /** The runner does not have enough memory to perform overlay analysis. */ + InsufficientMemory = "insufficient-memory", /** The source root is not inside a git repository. */ NoGitRoot = "no-git-root", /** Overlay analysis was skipped because it previously failed with similar hardware resources. */