diff --git a/lib/analyze-action.js b/lib/analyze-action.js index a2fe4e0b0..389d3e56e 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -88525,7 +88525,7 @@ function checkOverlayBaseDatabase(config, logger, warningPrefix) { } return true; } -async function uploadOverlayBaseDatabaseToCache(codeql, config, logger) { +async function cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger) { const overlayDatabaseMode = config.overlayDatabaseMode; if (overlayDatabaseMode !== "overlay-base" /* OverlayBase */) { logger.debug( @@ -91672,7 +91672,7 @@ async function warnIfGoInstalledAfterInit(config, logger) { // src/database-upload.ts var fs13 = __toESM(require("fs")); -async function uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger) { +async function cleanupAndUploadDatabases(repositoryNwo, codeql, config, apiDetails, logger) { if (getRequiredInput("upload-database") !== "true") { logger.debug("Database upload disabled in workflow. Skipping upload."); return; @@ -94053,8 +94053,14 @@ async function run() { } else { logger.info("Not uploading results"); } - await uploadOverlayBaseDatabaseToCache(codeql, config, logger); - await uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger); + await cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger); + await cleanupAndUploadDatabases( + repositoryNwo, + codeql, + config, + apiDetails, + logger + ); const trapCacheUploadStartTime = import_perf_hooks3.performance.now(); didUploadTrapCaches = await uploadTrapCaches(codeql, config, logger); trapCacheUploadTime = import_perf_hooks3.performance.now() - trapCacheUploadStartTime; diff --git a/src/analyze-action.ts b/src/analyze-action.ts index 3ab1dd132..a101a0187 100644 --- a/src/analyze-action.ts +++ b/src/analyze-action.ts @@ -25,7 +25,7 @@ import { isCodeQualityEnabled, isCodeScanningEnabled, } from "./config-utils"; -import { uploadDatabases } from "./database-upload"; +import { cleanupAndUploadDatabases } from "./database-upload"; import { DependencyCacheUploadStatusReport, uploadDependencyCaches, @@ -35,7 +35,7 @@ import { EnvVar } from "./environment"; import { Feature, Features } from "./feature-flags"; import { KnownLanguage } from "./languages"; import { getActionsLogger, Logger } from "./logging"; -import { uploadOverlayBaseDatabaseToCache } from "./overlay-database-utils"; +import { cleanupAndUploadOverlayBaseDatabaseToCache } from "./overlay-database-utils"; import { getRepositoryNwo } from "./repository"; import * as statusReport from "./status-report"; import { @@ -417,12 +417,20 @@ async function run() { } // Possibly upload the overlay-base database to actions cache. - // If databases are to be uploaded, they will first be cleaned up at the overlay level. - await uploadOverlayBaseDatabaseToCache(codeql, config, logger); + // Note: Take care with the ordering of this call since databases may be cleaned up + // at the `overlay` level. + await cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger); // Possibly upload the database bundles for remote queries. - // If databases are to be uploaded, they will first be cleaned up at the clear level. - await uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger); + // Note: Take care with the ordering of this call since databases may be cleaned up + // at the `overlay` or `clear` level. + await cleanupAndUploadDatabases( + repositoryNwo, + codeql, + config, + apiDetails, + logger, + ); // Possibly upload the TRAP caches for later re-use const trapCacheUploadStartTime = performance.now(); diff --git a/src/database-upload.test.ts b/src/database-upload.test.ts index 6c986fb7f..92f3d75b5 100644 --- a/src/database-upload.test.ts +++ b/src/database-upload.test.ts @@ -10,7 +10,7 @@ import { GitHubApiDetails } from "./api-client"; import * as apiClient from "./api-client"; import { createStubCodeQL } from "./codeql"; import { Config } from "./config-utils"; -import { uploadDatabases } from "./database-upload"; +import { cleanupAndUploadDatabases } from "./database-upload"; import * as gitUtils from "./git-utils"; import { KnownLanguage } from "./languages"; import { RepositoryNwo } from "./repository"; @@ -91,7 +91,7 @@ test("Abort database upload if 'upload-database' input set to false", async (t) sinon.stub(gitUtils, "isAnalyzingDefaultBranch").resolves(true); const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), @@ -121,7 +121,7 @@ test("Abort database upload if 'analysis-kinds: code-scanning' is not enabled", await mockHttpRequests(201); const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), { @@ -155,7 +155,7 @@ test("Abort database upload if running against GHES", async (t) => { config.gitHubVersion = { type: GitHubVariant.GHES, version: "3.0" }; const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), config, @@ -183,7 +183,7 @@ test("Abort database upload if not analyzing default branch", async (t) => { sinon.stub(gitUtils, "isAnalyzingDefaultBranch").resolves(false); const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), @@ -212,7 +212,7 @@ test("Don't crash if uploading a database fails", async (t) => { await mockHttpRequests(500); const loggedMessages = [] as LoggedMessage[]; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), @@ -243,7 +243,7 @@ test("Successfully uploading a database to github.com", async (t) => { await mockHttpRequests(201); const loggedMessages = [] as LoggedMessage[]; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), @@ -272,7 +272,7 @@ test("Successfully uploading a database to GHEC-DR", async (t) => { const databaseUploadSpy = await mockHttpRequests(201); const loggedMessages = [] as LoggedMessage[]; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), diff --git a/src/database-upload.ts b/src/database-upload.ts index 69175178c..7a147fbc7 100644 --- a/src/database-upload.ts +++ b/src/database-upload.ts @@ -11,7 +11,7 @@ import { RepositoryNwo } from "./repository"; import * as util from "./util"; import { bundleDb, parseGitHubUrl } from "./util"; -export async function uploadDatabases( +export async function cleanupAndUploadDatabases( repositoryNwo: RepositoryNwo, codeql: CodeQL, config: Config, diff --git a/src/overlay-database-utils.ts b/src/overlay-database-utils.ts index ebb020ba8..5b0b4643d 100644 --- a/src/overlay-database-utils.ts +++ b/src/overlay-database-utils.ts @@ -204,7 +204,7 @@ export function checkOverlayBaseDatabase( * @returns A promise that resolves to true if the upload was performed and * successfully completed, or false otherwise */ -export async function uploadOverlayBaseDatabaseToCache( +export async function cleanupAndUploadOverlayBaseDatabaseToCache( codeql: CodeQL, config: Config, logger: Logger,