Monday, 9 September 2019

Threads module giving error of channel closed

I am using the npm threads module to read a large excel file.

This works fine for the first time but if I simultaneously upload another large file then I get an error

Error: channel closed
    at ChildProcess.target.send (internal/child_process.js:554:16)
    at Worker.send (/app/node_modules/threads/lib/worker.node/worker.js:108:16)...

This is maybe due to the previous threads are still processing /have not been killed hence when a new pool is made for another request the previous threads are still busy processing.

How to solve this? Do I have to manually terminate the threads in the below piece of code? If so then how?

//FROM WHERE IT IS CALLED

// const excelParserScript = __dirname + '/../lib/parserScripts/readExcel';
// const worksheetIndex = 3;
// const params = {
//     path,
//     worksheetIndex
// }


const Threads = require('threads');
const Pool = Threads.Pool; 
const workerPool = new Pool();

module.exports = class JobManager {
    static bufferedJob(pathToScript, params, callback){
        workerPool
        .run(pathToScript)
        .send(params)
        .on('done', (result, input) => {
            console.log(`Worker Job done: ${pathToScript} `);
            callback(null, result);
        })
        .on('error', (job, error) => {
            console.log(`Error in executing Worker Job: ${pathToScript}`);
            callback(job || error);
        })
    }
}



from Threads module giving error of channel closed

No comments:

Post a Comment