Overlay: Fall back to full analysis if memory flag is low

This commit is contained in:
Kasper Svendsen
2025-11-27 08:57:21 +01:00
parent bd30e753a6
commit bd8d26b618
4 changed files with 77 additions and 15 deletions
+12
View File
@@ -44,6 +44,7 @@ import {
cloneObject,
isDefined,
checkDiskUsage,
getMemoryFlagValue,
} from "./util";
export * from "./config/db-config";
@@ -393,6 +394,7 @@ export interface InitConfigInputs {
dbLocation: string | undefined;
configInput: string | undefined;
buildModeInput: string | undefined;
ramInput: string | undefined;
trapCachingEnabled: boolean;
dependencyCachingEnabled: string | undefined;
debugMode: boolean;
@@ -661,6 +663,7 @@ export async function getOverlayDatabaseMode(
languages: Language[],
sourceRoot: string,
buildMode: BuildMode | undefined,
ramInput: string | undefined,
codeScanningConfig: UserConfig,
logger: Logger,
): Promise<{
@@ -692,6 +695,7 @@ export async function getOverlayDatabaseMode(
)
) {
const diskUsage = await checkDiskUsage(logger);
const memoryFlagValue = getMemoryFlagValue(ramInput, logger);
if (
diskUsage === undefined ||
diskUsage.numAvailableBytes < OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES
@@ -706,6 +710,13 @@ export async function getOverlayDatabaseMode(
`Setting overlay database mode to ${overlayDatabaseMode} ` +
`due to insufficient disk space (${diskSpaceMb} MB).`,
);
} else if (memoryFlagValue < 5 * 1024) {
overlayDatabaseMode = OverlayDatabaseMode.None;
useOverlayDatabaseCaching = false;
logger.info(
`Setting overlay database mode to ${overlayDatabaseMode} ` +
`due to insufficient memory for CodeQL analysis (${memoryFlagValue} MB).`,
);
} else if (isAnalyzingPullRequest()) {
overlayDatabaseMode = OverlayDatabaseMode.Overlay;
useOverlayDatabaseCaching = true;
@@ -873,6 +884,7 @@ export async function initConfig(
config.languages,
inputs.sourceRoot,
config.buildMode,
inputs.ramInput,
config.computedConfig,
logger,
);