fix: worker

This commit is contained in:
Andras Bacsai
2022-08-25 12:49:09 +00:00
parent 6be1fbacde
commit 71c15e0ff5
4 changed files with 974 additions and 510 deletions

View File

@@ -44,6 +44,7 @@
"node-forge": "1.3.1", "node-forge": "1.3.1",
"node-os-utils": "1.3.7", "node-os-utils": "1.3.7",
"p-all": "4.0.0", "p-all": "4.0.0",
"p-throttle": "5.0.0",
"public-ip": "6.0.1", "public-ip": "6.0.1",
"ssh-config": "4.1.6", "ssh-config": "4.1.6",
"strip-ansi": "7.0.1", "strip-ansi": "7.0.1",

View File

@@ -18,10 +18,17 @@ import * as buildpacks from '../lib/buildPacks';
} }
}); });
try { try {
parentPort.postMessage({ deploying: true }); const pThrottle = await import('p-throttle')
const throttle = pThrottle.default({
limit: 1,
interval: 2000
});
const th = throttle(async () => {
const queuedBuilds = await prisma.build.findMany({ where: { status: 'queued' }, orderBy: { createdAt: 'asc' } }); const queuedBuilds = await prisma.build.findMany({ where: { status: 'queued' }, orderBy: { createdAt: 'asc' } });
const { concurrentBuilds } = await prisma.setting.findFirst({}) const { concurrentBuilds } = await prisma.setting.findFirst({})
if (queuedBuilds.length > 0) { if (queuedBuilds.length > 0) {
parentPort.postMessage({ deploying: true });
const concurrency = concurrentBuilds; const concurrency = concurrentBuilds;
const pAll = await import('p-all'); const pAll = await import('p-all');
const actions = [] const actions = []
@@ -349,9 +356,16 @@ import * as buildpacks from '../lib/buildPacks';
} }
await pAll.default(actions, { concurrency }) await pAll.default(actions, { concurrency })
} }
} catch (error) { } finally { })
await prisma.$disconnect(); while (true) {
process.exit(0); await th()
} }
} catch (error) {
} finally {
await prisma.$disconnect()
}
} else process.exit(0); } else process.exit(0);
})(); })();

View File

@@ -134,9 +134,32 @@ export const asyncExecShellStream = async ({ debug, buildId, applicationId, comm
export const asyncSleep = (delay: number): Promise<unknown> => export const asyncSleep = (delay: number): Promise<unknown> =>
new Promise((resolve) => setTimeout(resolve, delay)); new Promise((resolve) => setTimeout(resolve, delay));
export const prisma = new PrismaClient({ export const prisma = new PrismaClient({
errorFormat: 'minimal' errorFormat: 'minimal',
log: [
{
emit: 'event',
level: 'query',
},
{
emit: 'stdout',
level: 'error',
},
{
emit: 'stdout',
level: 'info',
},
{
emit: 'stdout',
level: 'warn',
},
],
}); });
// prisma.$on('query', (e) => {
// console.log('Query: ' + e.query)
// console.log('Params: ' + e.params)
// console.log('Duration: ' + e.duration + 'ms')
// })
export const base64Encode = (text: string): string => { export const base64Encode = (text: string): string => {
return Buffer.from(text).toString('base64'); return Buffer.from(text).toString('base64');
}; };

796
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff