Skip to content

Commit fb5836f

Browse files
committed
fix: upgrade listr2 prevent OOM errors
1 parent 82b0e7c commit fb5836f

File tree

10 files changed

+583
-198
lines changed

10 files changed

+583
-198
lines changed

lib/batch/tasks/init-job-repo.task.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import {
55
cloneRepo,
66
pullLatest,
77
} from '../../services/git.service';
8-
import { wait } from '../../utils/wait';
98
import { Context } from '../../interface';
109
import {
1110
directoryExists,
@@ -37,7 +36,6 @@ export function initJobRepo(job: string): ListrTask {
3736
}
3837
process.chdir(repoPath);
3938
} catch (error: any) {
40-
await wait();
4139
throw error;
4240
}
4341
},

lib/batch/tasks/init-job-state.task.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import { ListrTask } from 'listr2';
22

33
import { directoryExists } from '../../services/fs.service';
44
import { Context } from '../../interface';
5-
import { wait } from '../../utils/wait';
65

76
export const initJobStateTask: ListrTask = {
87
title: 'Init job state',
98
task: async (ctx: Context, task) => {
9+
await task.task.pause(200);
1010
// reset job CTX state
1111
ctx.control = { skipEverySubsequentTask: false };
1212
ctx.results = { checks: {} };
@@ -17,8 +17,6 @@ export const initJobStateTask: ListrTask = {
1717
process.chdir('../../');
1818
}
1919

20-
await wait();
21-
2220
task.title = `${task.title} successful`;
2321
},
2422
};

lib/batch/tasks/run-job.task.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { ListrTask } from 'listr2';
22

3-
import { wait } from '../../utils/wait';
43
import { Context } from '../../interface';
54
import { writeJson } from '../../services/fs.service';
65
import { getRepoNameFromUrl } from '../../services/git.service';
@@ -14,11 +13,14 @@ import { initJobStateTask } from './init-job-state.task';
1413
import { finalizeJobTaskFactory } from './finalize-job.task';
1514
import { batchSaveProjectJsonTaskFactory } from './batch-save-project-json.task';
1615

17-
export function runJobTaskFactory(job: string): ListrTask {
16+
export function runJobTaskFactory(
17+
job: string,
18+
index: number,
19+
total: number
20+
): ListrTask {
1821
return {
19-
title: `${getRepoNameFromUrl(job)}`,
22+
title: `${index} / ${total} - ${getRepoNameFromUrl(job)}`,
2023
rollback: async (ctx: Context, task) => {
21-
await wait();
2224
// update batch state
2325
if (!ctx.options.preserveQueue) {
2426
ctx.batch.failed.push(job);

lib/batch/tasks/run-jobs.task.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ export const runJobsTask: ListrTask = {
99
skip: (ctx: Context) => ctx.control.skipEverySubsequentTask,
1010
task: async (ctx: Context, task) =>
1111
task.newListr(
12-
ctx.batch.queue.map((queuedJob) => runJobTaskFactory(queuedJob)),
12+
ctx.batch.queue.map((queuedJob, index) =>
13+
runJobTaskFactory(queuedJob, index + 1, ctx.batch.queue.length)
14+
),
1315
{
1416
exitOnError: false,
1517
exitAfterRollback: false,

lib/interface.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ export interface Context {
5353
};
5454
handledCheckFailures: Error[];
5555
batch: Batch;
56+
debug: {
57+
[key: string]: any;
58+
};
5659
}
5760

5861
export interface Batch {

lib/tasks/save-project-api.task.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { ListrTask } from 'listr2';
33
import * as api from '../services/api.service';
44
import { Context } from '../interface';
55
import { getHumanReadableFileSize } from '../services/fs.service';
6-
import { wait } from '../utils/wait';
76

87
export const saveProjectApiTask: ListrTask = {
98
title: 'Save project results (Omniboard.dev)',
@@ -19,10 +18,13 @@ export const saveProjectApiTask: ListrTask = {
1918
}
2019
},
2120
task: async (ctx, task) => {
22-
await wait();
2321
return api.uploadProject(ctx.results).then(() => {
22+
const resultsLength = Buffer.byteLength(
23+
JSON.stringify(ctx.results),
24+
'utf8'
25+
);
2426
task.title = `${task.title} successful, ${getHumanReadableFileSize(
25-
Buffer.byteLength(JSON.stringify(ctx.results), 'utf8')
27+
resultsLength
2628
)}`;
2729
});
2830
},

lib/utils/process.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,20 @@ export const runner = async (
2020
results: { checks: {} },
2121
handledCheckFailures: [],
2222
batch: { queue: [], completed: [], failed: [] },
23+
debug: {},
2324
};
2425
await new Listr(tasks, {
25-
rendererFallback: () => options.verbose,
26+
fallbackRenderer: 'verbose',
2627
rendererOptions: {
2728
collapse: false,
2829
showTimer: true,
2930
formatOutput: 'wrap',
3031
},
31-
renderer: options.silent ? 'silent' : 'default',
32+
renderer: options.silent
33+
? 'silent'
34+
: options.verbose
35+
? 'verbose'
36+
: 'default',
3237
})
3338
.run(context)
3439
.then(() => {

lib/utils/wait.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)