Threads store their own qdb. It gets updated when new questions are added to reduce message sizes between threads

This commit is contained in:
mrfry 2020-12-19 11:31:12 +01:00
parent 906ab8ee62
commit 68dcbff846
5 changed files with 56 additions and 141 deletions

View file

@ -22,7 +22,7 @@ const dataLockFile = './data/lockData'
import logger from '../utils/logger'
import { createQuestion } from '../utils/classes'
import { doALongTask } from './workerPool'
import { doALongTask } from './workerPool'
import idStats from '../utils/ids'
import utils from '../utils/utils'
import { SearchResult, addQuestion, getSubjNameWithoutYear } from './classes'
@ -170,6 +170,7 @@ function processIncomingRequestUsingDb(
doALongTask({
type: 'work',
data: {
searchIn: [qdb.index],
qdb: qdb.data,
question: currentQuestion,
subjName: recievedData.subj,
@ -201,6 +202,8 @@ function processIncomingRequestUsingDb(
)
logger.DebugLog(currentQuestion, 'actions', 3)
addQuestion(qdb.data, sName, currentQuestion)
// TODO: check if it really adds it, not only just some clone (questionDbs in api.ts
// modifies too)
})
currWrites++
@ -261,7 +264,7 @@ function processIncomingRequestUsingDb(
}
export function loadJSON(dataFiles: Array<DataFile>): Array<QuestionDb> {
return dataFiles.reduce((acc, dataFile) => {
return dataFiles.reduce((acc, dataFile, index) => {
if (!utils.FileExists(dataFile.path)) {
utils.WriteFile(JSON.stringify([]), dataFile.path)
}
@ -269,6 +272,7 @@ export function loadJSON(dataFiles: Array<DataFile>): Array<QuestionDb> {
try {
acc.push({
...dataFile,
index: index,
data: JSON.parse(utils.ReadFile(dataFile.path)),
})
} catch (err) {
@ -302,3 +306,12 @@ export function backupData(questionDbs: Array<QuestionDb>): void {
}
})
}
export function getQuestionDbsWithoutFunct(
questionDbs: Array<QuestionDb> // FIXME: type for dis
): Array<any> {
return questionDbs.map((qdb) => {
const { shouldSave, ...res } = qdb // eslint-disable-line
return res
})
}