Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let sendChunk = () => {
- const thread = spawn(async function(input, done) {
- try {
- const path = require('path');
- const _ = require('lodash');
- const ReportLoader = require(path.resolve('./app/controllers/report-loader'));
- const Reports = new ReportLoader();
- const ImpalaQueryRunner = require(path.resolve('./app/controllers/impala-query-runner.js'));
- const reportMetadata = Reports.getReportMetadata(input.report);
- const queryRunner = new ImpalaQueryRunner(reportMetadata, input.loader.params);
- const modifiedParams = _.merge({}, input.loader.params, {startDate: input.loader.params.cacheStartDate || input.loader.params.startDate});
- const result = (input.loader.reportInfo.reportMode === 'RAW')
- ? input.chunk
- : await queryRunner.preRenderData(modifiedParams, input.chunk);
- done(result);
- } catch (e) {
- console.error(e);
- }
- });
- const chunk = {
- rows: _.map(buf, MemSqlClient.processRow),
- columns: tableCols,
- };
- return new Promise((resolve, reject) => {
- console.time('thread');
- thread
- .send({chunk, loader, report: req.query.report})
- .on('message', (response) => {
- // TODO: find out why response comes twice
- if (_.isEmpty(response)) return;
- console.timeEnd('thread');
- console.log('responded', response);
- ws.send(JSON.stringify({type: 'data', content: response}), (err) => {
- console.log('------------- socket send');
- thread.kill();
- resolve();
- });
- })
- .on('error', (error) => {
- console.error('Worker errored:', error);
- reject(error);
- })
- .on('exit', () => {
- console.log('Worker has been terminated.');
- });
- });
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement