Run Bisq block parse in separate Worker Thread.
This commit is contained in:
		
							parent
							
								
									b360b6b57b
								
							
						
					
					
						commit
						04c4be5f4b
					
				
							
								
								
									
										5
									
								
								backend/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								backend/package-lock.json
									
									
									
										generated
									
									
									
								
							@ -881,6 +881,11 @@
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
 | 
			
		||||
      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
 | 
			
		||||
    },
 | 
			
		||||
    "node-worker-threads-pool": {
 | 
			
		||||
      "version": "1.4.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/node-worker-threads-pool/-/node-worker-threads-pool-1.4.2.tgz",
 | 
			
		||||
      "integrity": "sha512-jU4NKLJacA8nfoYz1Uey18z3gqDfR/CX3PEqlNagtbTR+08pFQiB/ZyvpdDRkvgBrYz5yFCStCQYX659YCqrkg=="
 | 
			
		||||
    },
 | 
			
		||||
    "oauth-sign": {
 | 
			
		||||
      "version": "0.9.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
 | 
			
		||||
 | 
			
		||||
@ -27,9 +27,10 @@
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "compression": "^1.7.4",
 | 
			
		||||
    "express": "^4.17.1",
 | 
			
		||||
    "mysql2": "^1.6.1",
 | 
			
		||||
    "request": "^2.88.2",
 | 
			
		||||
    "locutus": "^2.0.12",
 | 
			
		||||
    "mysql2": "^1.6.1",
 | 
			
		||||
    "node-worker-threads-pool": "^1.4.2",
 | 
			
		||||
    "request": "^2.88.2",
 | 
			
		||||
    "ws": "^7.3.1"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,9 @@ import * as request from 'request';
 | 
			
		||||
import { BisqBlocks, BisqBlock, BisqTransaction, BisqStats, BisqTrade } from './interfaces';
 | 
			
		||||
import { Common } from '../common';
 | 
			
		||||
import { Block } from '../../interfaces';
 | 
			
		||||
import { StaticPool } from 'node-worker-threads-pool';
 | 
			
		||||
import logger from '../../logger';
 | 
			
		||||
 | 
			
		||||
class Bisq {
 | 
			
		||||
  private static BLOCKS_JSON_FILE_PATH = '/all/blocks.json';
 | 
			
		||||
  private latestBlockHeight = 0;
 | 
			
		||||
@ -24,6 +26,10 @@ class Bisq {
 | 
			
		||||
  private priceUpdateCallbackFunction: ((price: number) => void) | undefined;
 | 
			
		||||
  private topDirectoryWatcher: fs.FSWatcher | undefined;
 | 
			
		||||
  private subdirectoryWatcher: fs.FSWatcher | undefined;
 | 
			
		||||
  private jsonParsePool = new StaticPool({
 | 
			
		||||
    size: 4,
 | 
			
		||||
    task: (blob: string) => JSON.parse(blob),
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  constructor() {}
 | 
			
		||||
 | 
			
		||||
@ -237,7 +243,7 @@ class Bisq {
 | 
			
		||||
    const start = new Date().getTime();
 | 
			
		||||
    if (cacheData && cacheData.length !== 0) {
 | 
			
		||||
      logger.debug('Processing Bisq data dump...');
 | 
			
		||||
      const data: BisqBlocks = JSON.parse(cacheData);
 | 
			
		||||
      const data: BisqBlocks = await this.jsonParsePool.exec(cacheData);
 | 
			
		||||
      if (data.blocks && data.blocks.length !== this.blocks.length) {
 | 
			
		||||
        this.blocks = data.blocks.filter((block) => block.txs.length > 0);
 | 
			
		||||
        this.blocks.reverse();
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user