Tolerate failures in uploading debug artifacts

This commit is contained in:
Henry Mercer 2024-09-16 22:20:22 +02:00
parent d061f2cdd0
commit 80d7a6c8d4
3 changed files with 57 additions and 44 deletions

41
lib/debug-artifacts.js generated
View file

@ -87,7 +87,7 @@ function tryGetSarifResultPath(config, language, logger) {
} }
} }
catch (e) { catch (e) {
logger.warning(`Failed to find SARIF results path for ${language}. ${(0, util_1.wrapError)(e)}`); logger.warning(`Failed to find SARIF results path for ${language}. ${(0, util_1.wrapError)(e).message}`);
} }
return []; return [];
} }
@ -101,29 +101,34 @@ async function tryBundleDatabase(config, language, logger) {
} }
} }
catch (e) { catch (e) {
logger.warning(`Failed to bundle database for ${language}. ${(0, util_1.wrapError)(e)}`); logger.warning(`Failed to bundle database for ${language}. ${(0, util_1.wrapError)(e).message}`);
return []; return [];
} }
} }
async function uploadAllAvailableDebugArtifacts(config, logger) { async function uploadAllAvailableDebugArtifacts(config, logger) {
const filesToUpload = []; try {
for (const language of config.languages) { const filesToUpload = [];
filesToUpload.push(...tryGetSarifResultPath(config, language, logger)); for (const language of config.languages) {
// Add any log files filesToUpload.push(...tryGetSarifResultPath(config, language, logger));
const databaseDirectory = (0, util_1.getCodeQLDatabasePath)(config, language); // Add any log files
const logsDirectory = path.resolve(databaseDirectory, "log"); const databaseDirectory = (0, util_1.getCodeQLDatabasePath)(config, language);
if ((0, util_1.doesDirectoryExist)(logsDirectory)) { const logsDirectory = path.resolve(databaseDirectory, "log");
filesToUpload.push(...(0, util_1.listFolder)(logsDirectory)); if ((0, util_1.doesDirectoryExist)(logsDirectory)) {
filesToUpload.push(...(0, util_1.listFolder)(logsDirectory));
}
// Multilanguage tracing: there are additional logs in the root of the cluster
const multiLanguageTracingLogsDirectory = path.resolve(config.dbLocation, "log");
if ((0, util_1.doesDirectoryExist)(multiLanguageTracingLogsDirectory)) {
filesToUpload.push(...(0, util_1.listFolder)(multiLanguageTracingLogsDirectory));
}
// Add database bundle
filesToUpload.push(...(await tryBundleDatabase(config, language, logger)));
} }
// Multilanguage tracing: there are additional logs in the root of the cluster await uploadDebugArtifacts(filesToUpload, config.dbLocation, config.debugArtifactName);
const multiLanguageTracingLogsDirectory = path.resolve(config.dbLocation, "log"); }
if ((0, util_1.doesDirectoryExist)(multiLanguageTracingLogsDirectory)) { catch (e) {
filesToUpload.push(...(0, util_1.listFolder)(multiLanguageTracingLogsDirectory)); logger.warning(`Failed to upload debug artifacts: ${(0, util_1.wrapError)(e).message}`);
}
// Add database bundle
filesToUpload.push(...(await tryBundleDatabase(config, language, logger)));
} }
await uploadDebugArtifacts(filesToUpload, config.dbLocation, config.debugArtifactName);
} }
async function uploadDebugArtifacts(toUpload, rootDir, artifactName) { async function uploadDebugArtifacts(toUpload, rootDir, artifactName) {
if (toUpload.length === 0) { if (toUpload.length === 0) {

File diff suppressed because one or more lines are too long

View file

@ -94,7 +94,9 @@ function tryGetSarifResultPath(
} }
} catch (e) { } catch (e) {
logger.warning( logger.warning(
`Failed to find SARIF results path for ${language}. ${wrapError(e)}`, `Failed to find SARIF results path for ${language}. ${
wrapError(e).message
}`,
); );
} }
return []; return [];
@ -113,7 +115,7 @@ async function tryBundleDatabase(
} }
} catch (e) { } catch (e) {
logger.warning( logger.warning(
`Failed to bundle database for ${language}. ${wrapError(e)}`, `Failed to bundle database for ${language}. ${wrapError(e).message}`,
); );
return []; return [];
} }
@ -123,36 +125,42 @@ export async function uploadAllAvailableDebugArtifacts(
config: Config, config: Config,
logger: Logger, logger: Logger,
) { ) {
const filesToUpload: string[] = []; try {
const filesToUpload: string[] = [];
for (const language of config.languages) { for (const language of config.languages) {
filesToUpload.push(...tryGetSarifResultPath(config, language, logger)); filesToUpload.push(...tryGetSarifResultPath(config, language, logger));
// Add any log files // Add any log files
const databaseDirectory = getCodeQLDatabasePath(config, language); const databaseDirectory = getCodeQLDatabasePath(config, language);
const logsDirectory = path.resolve(databaseDirectory, "log"); const logsDirectory = path.resolve(databaseDirectory, "log");
if (doesDirectoryExist(logsDirectory)) { if (doesDirectoryExist(logsDirectory)) {
filesToUpload.push(...listFolder(logsDirectory)); filesToUpload.push(...listFolder(logsDirectory));
}
// Multilanguage tracing: there are additional logs in the root of the cluster
const multiLanguageTracingLogsDirectory = path.resolve(
config.dbLocation,
"log",
);
if (doesDirectoryExist(multiLanguageTracingLogsDirectory)) {
filesToUpload.push(...listFolder(multiLanguageTracingLogsDirectory));
}
// Add database bundle
filesToUpload.push(
...(await tryBundleDatabase(config, language, logger)),
);
} }
// Multilanguage tracing: there are additional logs in the root of the cluster await uploadDebugArtifacts(
const multiLanguageTracingLogsDirectory = path.resolve( filesToUpload,
config.dbLocation, config.dbLocation,
"log", config.debugArtifactName,
); );
if (doesDirectoryExist(multiLanguageTracingLogsDirectory)) { } catch (e) {
filesToUpload.push(...listFolder(multiLanguageTracingLogsDirectory)); logger.warning(`Failed to upload debug artifacts: ${wrapError(e).message}`);
}
// Add database bundle
filesToUpload.push(...(await tryBundleDatabase(config, language, logger)));
} }
await uploadDebugArtifacts(
filesToUpload,
config.dbLocation,
config.debugArtifactName,
);
} }
export async function uploadDebugArtifacts( export async function uploadDebugArtifacts(