From 34624da8abc16dbfb40cd4685d9025bb776048f4 Mon Sep 17 00:00:00 2001 From: Ryan Brandenburg Date: Fri, 19 Dec 2025 11:13:54 -0800 Subject: [PATCH 1/2] Handle large json failures --- providers/process/scancode.js | 36 ++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/providers/process/scancode.js b/providers/process/scancode.js index c32e0440..76c1fdbb 100644 --- a/providers/process/scancode.js +++ b/providers/process/scancode.js @@ -59,6 +59,10 @@ class ScanCodeProcessor extends AbstractProcessor { request.markDead('Error', error ? error.message : 'ScanCode run failed') throw error } + else { + this.logger.error(error, request.meta) + request.markRequeue('ScanCode Error', error.message) + } } } @@ -91,19 +95,25 @@ class ScanCodeProcessor extends AbstractProcessor { // Scan the results file for any errors that are not just timeouts or other known errors // TODO do we need to do this anymore _hasRealErrors(resultFile) { - const results = JSON.parse(fs.readFileSync(resultFile)) - return results.files.some( - file => - file.scan_errors && - file.scan_errors.some(error => { - return !( - error.includes('ERROR: Processing interrupted: timeout after') || - error.includes('ValueError:') || - error.includes('package.json') || - error.includes('UnicodeDecodeError') - ) - }) - ) + try{ + const results = JSON.parse(fs.readFileSync(resultFile)) + return results.files.some( + file => + file.scan_errors && + file.scan_errors.some(error => { + return !( + error.includes('ERROR: Processing interrupted: timeout after') || + error.includes('ValueError:') || + error.includes('package.json') || + error.includes('UnicodeDecodeError') + ) + }) + ) + } catch (e) { + // This might happen if the results file is >512mb, but regardless our error handling should not fail. + this.logger.error(`Could not parse ScanCode results file ${resultFile}: ${e.message}`) + return true + } } _detectVersion() { From 8125198840277655645ef41c9b7b2f6b69f27140 Mon Sep 17 00:00:00 2001 From: Ryan Brandenburg Date: Fri, 19 Dec 2025 11:24:28 -0800 Subject: [PATCH 2/2] Cleanup --- providers/process/scancode.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/providers/process/scancode.js b/providers/process/scancode.js index 76c1fdbb..7bc84ba2 100644 --- a/providers/process/scancode.js +++ b/providers/process/scancode.js @@ -54,15 +54,12 @@ class ScanCodeProcessor extends AbstractProcessor { maxBuffer: 5 * 1024 * 1024 }) } catch (error) { + this.logger.error(error, request.meta) // TODO see if the new version of ScanCode has a better way of differentiating errors if (this._isRealError(error) || this._hasRealErrors(file.name)) { request.markDead('Error', error ? error.message : 'ScanCode run failed') throw error } - else { - this.logger.error(error, request.meta) - request.markRequeue('ScanCode Error', error.message) - } } } @@ -112,6 +109,7 @@ class ScanCodeProcessor extends AbstractProcessor { } catch (e) { // This might happen if the results file is >512mb, but regardless our error handling should not fail. this.logger.error(`Could not parse ScanCode results file ${resultFile}: ${e.message}`) + // Assume it's broken if we could not parse it return true } }