Gracefully attempt to reconnect to cln upon error
This commit is contained in:
		
							parent
							
								
									faa59f59bd
								
							
						
					
					
						commit
						f6d6ea5d31
					
				@ -157,8 +157,18 @@ export default class CLightningClient extends EventEmitter implements AbstractLi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const _self = this;
 | 
					    const _self = this;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.client = createConnection(rpcPath);
 | 
					    this.client = createConnection(rpcPath).on(
 | 
				
			||||||
    this.rl = createInterface({ input: this.client })
 | 
					      'error', () => {
 | 
				
			||||||
 | 
					        _self.increaseWaitTime();
 | 
				
			||||||
 | 
					        _self.reconnect();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    this.rl = createInterface({ input: this.client }).on(
 | 
				
			||||||
 | 
					      'error', () => {
 | 
				
			||||||
 | 
					        _self.increaseWaitTime();
 | 
				
			||||||
 | 
					        _self.reconnect();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.clientConnectionPromise = new Promise<void>(resolve => {
 | 
					    this.clientConnectionPromise = new Promise<void>(resolve => {
 | 
				
			||||||
      _self.client.on('connect', () => {
 | 
					      _self.client.on('connect', () => {
 | 
				
			||||||
@ -175,7 +185,6 @@ export default class CLightningClient extends EventEmitter implements AbstractLi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      _self.client.on('error', error => {
 | 
					      _self.client.on('error', error => {
 | 
				
			||||||
        logger.err(`[CLightningClient] Lightning client connection error: ${error}`);
 | 
					        logger.err(`[CLightningClient] Lightning client connection error: ${error}`);
 | 
				
			||||||
        _self.emit('error', error);
 | 
					 | 
				
			||||||
        _self.increaseWaitTime();
 | 
					        _self.increaseWaitTime();
 | 
				
			||||||
        _self.reconnect();
 | 
					        _self.reconnect();
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
 | 
				
			|||||||
@ -9,6 +9,7 @@ import { ILightningApi } from '../../api/lightning/lightning-api.interface';
 | 
				
			|||||||
import { $lookupNodeLocation } from './sync-tasks/node-locations';
 | 
					import { $lookupNodeLocation } from './sync-tasks/node-locations';
 | 
				
			||||||
import lightningApi from '../../api/lightning/lightning-api-factory';
 | 
					import lightningApi from '../../api/lightning/lightning-api-factory';
 | 
				
			||||||
import { convertChannelId } from '../../api/lightning/clightning/clightning-convert';
 | 
					import { convertChannelId } from '../../api/lightning/clightning/clightning-convert';
 | 
				
			||||||
 | 
					import { Common } from '../../api/common';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class NetworkSyncService {
 | 
					class NetworkSyncService {
 | 
				
			||||||
  constructor() {}
 | 
					  constructor() {}
 | 
				
			||||||
@ -23,14 +24,15 @@ class NetworkSyncService {
 | 
				
			|||||||
    }, 1000 * 60 * 60);
 | 
					    }, 1000 * 60 * 60);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private async $runUpdater() {
 | 
					  private async $runUpdater(): Promise<void> {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      logger.info(`Updating nodes and channels...`);
 | 
					      logger.info(`Updating nodes and channels...`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      const networkGraph = await lightningApi.$getNetworkGraph();
 | 
					      const networkGraph = await lightningApi.$getNetworkGraph();
 | 
				
			||||||
      if (networkGraph.nodes.length === 0 || networkGraph.edges.length === 0) {
 | 
					      if (networkGraph.nodes.length === 0 || networkGraph.edges.length === 0) {
 | 
				
			||||||
        logger.info(`LN Network graph is empty, retrying in 10 seconds`);
 | 
					        logger.info(`LN Network graph is empty, retrying in 10 seconds`);
 | 
				
			||||||
        setTimeout(this.$runUpdater, 10000);
 | 
					        await Common.sleep$(10000);
 | 
				
			||||||
 | 
					        this.$runUpdater();
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user