Merge branch 'master' of gitlab.com:MrFry/mrfrys-node-server

This commit is contained in:
mrfry 2021-04-21 13:15:33 +02:00
commit 3f27788ec0
2 changed files with 21 additions and 9 deletions

View file

@ -730,14 +730,19 @@ if (!isMainThread) {
}
logger.DebugLog(`Worker new question ${workerIndex}`, 'worker update', 1)
// parentPort.postMessage({
// msg: `From thread #${workerIndex}: update done`,
// workerIndex: workerIndex,
// })
parentPort.postMessage({
msg: `From thread #${workerIndex}: update done`,
workerIndex: workerIndex,
})
// console.log(`[THREAD #${workerIndex}]: update`)
} else if (msg.type === 'newdb') {
qdbs.push(msg.newdb)
parentPort.postMessage({
msg: `From thread #${workerIndex}: new db add done`,
workerIndex: workerIndex,
})
// console.log(`[THREAD #${workerIndex}]: newdb`)
} else {
logger.Log(`Invalid msg type!`, logger.GetColor('redbg'))

View file

@ -44,13 +44,14 @@ function handleWorkerError(worker: WorkerObj, err) {
// TODO: accuire all workers here, and handle errors so they can be removed if threads exit
export function msgAllWorker(data: any): Promise<any> {
console.log('MSGING ALL WORKER')
logger.DebugLog('MSGING ALL WORKER', 'job', 1)
return new Promise((resolve) => {
const promises = []
workers.forEach((worker) => {
promises.push(doALongTask(data, worker.index))
})
Promise.all(promises).then((res) => {
logger.DebugLog('MSGING ALL WORKER DONE', 'job', 1)
resolve(res)
})
})
@ -131,8 +132,10 @@ function processJob() {
if (!isNaN(pendingJobs[jobKey].targetWorkerIndex)) {
if (workers[pendingJobs[jobKey].targetWorkerIndex].free) {
freeWorker = workers[pendingJobs[jobKey].targetWorkerIndex]
console.log(
`RESERVING WORKER ${pendingJobs[jobKey].targetWorkerIndex}`
logger.DebugLog(
`RESERVING WORKER ${pendingJobs[jobKey].targetWorkerIndex}`,
'job',
1
)
}
} else {
@ -140,14 +143,18 @@ function processJob() {
return worker.free
})
if (freeWorker) {
console.log(`RESERVING FIRST AVAILABLE WORKER ${freeWorker.index}`)
logger.DebugLog(
`RESERVING FIRST AVAILABLE WORKER ${freeWorker.index}`,
'job',
1
)
}
}
i++
}
if (!freeWorker) {
console.log('NO FREE WORKER')
logger.DebugLog('NO FREE WORKER', 'job', 1)
return
}