Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.       let sendChunk = () => {
  2.         const thread = spawn(async function(input, done) {
  3.           try {
  4.             const path = require('path');
  5.             const _ = require('lodash');
  6.             const ReportLoader = require(path.resolve('./app/controllers/report-loader'));
  7.             const Reports = new ReportLoader();
  8.             const ImpalaQueryRunner = require(path.resolve('./app/controllers/impala-query-runner.js'));
  9.  
  10.             const reportMetadata = Reports.getReportMetadata(input.report);
  11.             const queryRunner = new ImpalaQueryRunner(reportMetadata, input.loader.params);
  12.             const modifiedParams = _.merge({}, input.loader.params, {startDate: input.loader.params.cacheStartDate || input.loader.params.startDate});
  13.             const result = (input.loader.reportInfo.reportMode === 'RAW')
  14.               ? input.chunk
  15.               : await queryRunner.preRenderData(modifiedParams, input.chunk);
  16.  
  17.             done(result);
  18.           } catch (e) {
  19.             console.error(e);
  20.           }
  21.         });
  22.  
  23.         const chunk = {
  24.           rows: _.map(buf, MemSqlClient.processRow),
  25.           columns: tableCols,
  26.         };
  27.  
  28.         return new Promise((resolve, reject) => {
  29.           console.time('thread');
  30.           thread
  31.             .send({chunk, loader, report: req.query.report})
  32.             .on('message', (response) => {
  33.               // TODO: find out why response comes twice
  34.               if (_.isEmpty(response)) return;
  35.  
  36.               console.timeEnd('thread');
  37.               console.log('responded', response);
  38.               ws.send(JSON.stringify({type: 'data', content: response}), (err) => {
  39.                 console.log('------------- socket send');
  40.                 thread.kill();
  41.                 resolve();
  42.               });
  43.             })
  44.             .on('error', (error) => {
  45.               console.error('Worker errored:', error);
  46.               reject(error);
  47.             })
  48.             .on('exit', () => {
  49.               console.log('Worker has been terminated.');
  50.             });
  51.         });
  52.       };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement