Merge pull request #4079 from mempool/simon/mempool-break-poll-limit
Base mempool break limit of current poll rate
This commit is contained in:
		
						commit
						a0bf4eb947
					
				@ -182,7 +182,7 @@ class Mempool {
 | 
			
		||||
    return txTimes;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async $updateMempool(transactions: string[]): Promise<void> {
 | 
			
		||||
  public async $updateMempool(transactions: string[], pollRate: number): Promise<void> {
 | 
			
		||||
    logger.debug(`Updating mempool...`);
 | 
			
		||||
 | 
			
		||||
    // warn if this run stalls the main loop for more than 2 minutes
 | 
			
		||||
@ -258,7 +258,7 @@ class Mempool {
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (Date.now() - intervalTimer > 5_000) {
 | 
			
		||||
        if (Date.now() - intervalTimer > Math.max(pollRate * 2, 5_000)) {
 | 
			
		||||
          if (this.inSync) {
 | 
			
		||||
            // Break and restart mempool loop if we spend too much time processing
 | 
			
		||||
            // new transactions that may lead to falling behind on block height
 | 
			
		||||
@ -270,7 +270,7 @@ class Mempool {
 | 
			
		||||
            if (Math.floor(progress) < 100) {
 | 
			
		||||
              loadingIndicators.setProgress('mempool', progress);
 | 
			
		||||
            }
 | 
			
		||||
            intervalTimer = Date.now()
 | 
			
		||||
            intervalTimer = Date.now();
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
@ -188,14 +188,14 @@ class Server {
 | 
			
		||||
      }
 | 
			
		||||
      const newMempool = await bitcoinApi.$getRawMempool();
 | 
			
		||||
      const numHandledBlocks = await blocks.$updateBlocks();
 | 
			
		||||
      const pollRate = config.MEMPOOL.POLL_RATE_MS * (indexer.indexerRunning ? 10 : 1);
 | 
			
		||||
      if (numHandledBlocks === 0) {
 | 
			
		||||
        await memPool.$updateMempool(newMempool);
 | 
			
		||||
        await memPool.$updateMempool(newMempool, pollRate);
 | 
			
		||||
      }
 | 
			
		||||
      indexer.$run();
 | 
			
		||||
 | 
			
		||||
      // rerun immediately if we skipped the mempool update, otherwise wait POLL_RATE_MS
 | 
			
		||||
      const elapsed = Date.now() - start;
 | 
			
		||||
      const pollRate = config.MEMPOOL.POLL_RATE_MS * (indexer.indexerRunning ? 10 : 1);
 | 
			
		||||
      const remainingTime = Math.max(0, pollRate - elapsed);
 | 
			
		||||
      setTimeout(this.runMainUpdateLoop.bind(this), numHandledBlocks > 0 ? 0 : remainingTime);
 | 
			
		||||
      this.backendRetryCount = 0;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user