fix(ngcc): provide a unique exit code for timeouts (#36838)
When ngcc fails due to a timeout waiting for another process to complete, it was not failing with a unique exit code, so that it was not possible to know if the process can be restarted; compared to ngcc failing for some more fatal reason. Now if ngcc exits because of a timeout, the exit code will be 177. PR Close #36838
This commit is contained in:
parent
ee435761fd
commit
d805526659
|
@ -24,7 +24,7 @@ if (require.main === module) {
|
|||
process.exitCode = 0;
|
||||
} catch (e) {
|
||||
console.error(e.stack || e.message);
|
||||
process.exit(1);
|
||||
process.exit(typeof e.code === 'number' ? e.code : 1);
|
||||
}
|
||||
})();
|
||||
}
|
||||
|
|
|
@ -7,3 +7,4 @@
|
|||
*/
|
||||
|
||||
export const IMPORT_PREFIX = 'ɵngcc';
|
||||
export const NGCC_TIMED_OUT_EXIT_CODE = 177;
|
||||
|
|
|
@ -5,9 +5,15 @@
|
|||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
import {NGCC_TIMED_OUT_EXIT_CODE} from '../constants';
|
||||
import {Logger} from '../logging/logger';
|
||||
|
||||
import {LockFile} from './lock_file';
|
||||
|
||||
class TimeoutError extends Error {
|
||||
code = NGCC_TIMED_OUT_EXIT_CODE;
|
||||
}
|
||||
|
||||
/**
|
||||
* AsyncLocker is used to prevent more than one instance of ngcc executing at the same time,
|
||||
* when being called in an asynchronous context.
|
||||
|
@ -61,7 +67,7 @@ export class AsyncLocker {
|
|||
}
|
||||
}
|
||||
// If we fall out of the loop then we ran out of rety attempts
|
||||
throw new Error(
|
||||
throw new TimeoutError(
|
||||
`Timed out waiting ${
|
||||
this.retryAttempts * this.retryDelay /
|
||||
1000}s for another ngcc process, with id ${pid}, to complete.\n` +
|
||||
|
|
Loading…
Reference in New Issue