@@ -54,6 +54,7 @@ class ScanCodeProcessor extends AbstractProcessor {
5454 maxBuffer : 5 * 1024 * 1024
5555 } )
5656 } catch ( error ) {
57+ this . logger . error ( error , request . meta )
5758 // TODO see if the new version of ScanCode has a better way of differentiating errors
5859 if ( this . _isRealError ( error ) || this . _hasRealErrors ( file . name ) ) {
5960 request . markDead ( 'Error' , error ? error . message : 'ScanCode run failed' )
@@ -91,19 +92,26 @@ class ScanCodeProcessor extends AbstractProcessor {
9192 // Scan the results file for any errors that are not just timeouts or other known errors
9293 // TODO do we need to do this anymore
9394 _hasRealErrors ( resultFile ) {
94- const results = JSON . parse ( fs . readFileSync ( resultFile ) )
95- return results . files . some (
96- file =>
97- file . scan_errors &&
98- file . scan_errors . some ( error => {
99- return ! (
100- error . includes ( 'ERROR: Processing interrupted: timeout after' ) ||
101- error . includes ( 'ValueError:' ) ||
102- error . includes ( 'package.json' ) ||
103- error . includes ( 'UnicodeDecodeError' )
104- )
105- } )
106- )
95+ try {
96+ const results = JSON . parse ( fs . readFileSync ( resultFile ) )
97+ return results . files . some (
98+ file =>
99+ file . scan_errors &&
100+ file . scan_errors . some ( error => {
101+ return ! (
102+ error . includes ( 'ERROR: Processing interrupted: timeout after' ) ||
103+ error . includes ( 'ValueError:' ) ||
104+ error . includes ( 'package.json' ) ||
105+ error . includes ( 'UnicodeDecodeError' )
106+ )
107+ } )
108+ )
109+ } catch ( e ) {
110+ // This might happen if the results file is >512mb, but regardless our error handling should not fail.
111+ this . logger . error ( `Could not parse ScanCode results file ${ resultFile } : ${ e . message } ` )
112+ // Assume it's broken if we could not parse it
113+ return true
114+ }
107115 }
108116
109117 _detectVersion ( ) {
0 commit comments