Merge branch 'master' into mononaut/debug-main-loop-stall
This commit is contained in:
		
						commit
						ac240398ef
					
				@ -61,7 +61,8 @@
 | 
			
		||||
    "SOCKET": "/var/run/mysql/mysql.sock",
 | 
			
		||||
    "DATABASE": "mempool",
 | 
			
		||||
    "USERNAME": "mempool",
 | 
			
		||||
    "PASSWORD": "mempool"
 | 
			
		||||
    "PASSWORD": "mempool",
 | 
			
		||||
    "TIMEOUT": 180000
 | 
			
		||||
  },
 | 
			
		||||
  "SYSLOG": {
 | 
			
		||||
    "ENABLED": true,
 | 
			
		||||
 | 
			
		||||
@ -62,7 +62,8 @@
 | 
			
		||||
    "PORT": 18,
 | 
			
		||||
    "DATABASE": "__DATABASE_DATABASE__",
 | 
			
		||||
    "USERNAME": "__DATABASE_USERNAME__",
 | 
			
		||||
    "PASSWORD": "__DATABASE_PASSWORD__"
 | 
			
		||||
    "PASSWORD": "__DATABASE_PASSWORD__",
 | 
			
		||||
    "TIMEOUT": "__DATABASE_TIMEOUT__"
 | 
			
		||||
  },
 | 
			
		||||
  "SYSLOG": {
 | 
			
		||||
    "ENABLED": false,
 | 
			
		||||
 | 
			
		||||
@ -72,7 +72,8 @@ describe('Mempool Backend Config', () => {
 | 
			
		||||
        PORT: 3306,
 | 
			
		||||
        DATABASE: 'mempool',
 | 
			
		||||
        USERNAME: 'mempool',
 | 
			
		||||
        PASSWORD: 'mempool'
 | 
			
		||||
        PASSWORD: 'mempool',
 | 
			
		||||
        TIMEOUT: 180000,
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      expect(config.SYSLOG).toStrictEqual({
 | 
			
		||||
 | 
			
		||||
@ -86,6 +86,7 @@ interface IConfig {
 | 
			
		||||
    DATABASE: string;
 | 
			
		||||
    USERNAME: string;
 | 
			
		||||
    PASSWORD: string;
 | 
			
		||||
    TIMEOUT: number;
 | 
			
		||||
  };
 | 
			
		||||
  SYSLOG: {
 | 
			
		||||
    ENABLED: boolean;
 | 
			
		||||
@ -194,7 +195,8 @@ const defaults: IConfig = {
 | 
			
		||||
    'PORT': 3306,
 | 
			
		||||
    'DATABASE': 'mempool',
 | 
			
		||||
    'USERNAME': 'mempool',
 | 
			
		||||
    'PASSWORD': 'mempool'
 | 
			
		||||
    'PASSWORD': 'mempool',
 | 
			
		||||
    'TIMEOUT': 180000,
 | 
			
		||||
  },
 | 
			
		||||
  'SYSLOG': {
 | 
			
		||||
    'ENABLED': true,
 | 
			
		||||
 | 
			
		||||
@ -33,9 +33,33 @@ import { FieldPacket, OkPacket, PoolOptions, ResultSetHeader, RowDataPacket } fr
 | 
			
		||||
    OkPacket[] | ResultSetHeader>(query, params?): Promise<[T, FieldPacket[]]>
 | 
			
		||||
  {
 | 
			
		||||
    this.checkDBFlag();
 | 
			
		||||
    let hardTimeout;
 | 
			
		||||
    if (query?.timeout != null) {
 | 
			
		||||
      hardTimeout = Math.floor(query.timeout * 1.1);
 | 
			
		||||
    } else {
 | 
			
		||||
      hardTimeout = config.DATABASE.TIMEOUT;
 | 
			
		||||
    }
 | 
			
		||||
    if (hardTimeout > 0) {
 | 
			
		||||
      return new Promise((resolve, reject) => {
 | 
			
		||||
        const timer = setTimeout(() => {
 | 
			
		||||
          reject(new Error(`DB query failed to return, reject or time out within ${hardTimeout / 1000}s - ${query?.sql?.slice(0, 160) || (typeof(query) === 'string' || query instanceof String ? query?.slice(0, 160) : 'unknown query')}`));
 | 
			
		||||
        }, hardTimeout);
 | 
			
		||||
 | 
			
		||||
        this.getPool().then(pool => {
 | 
			
		||||
          return pool.query(query, params) as Promise<[T, FieldPacket[]]>;
 | 
			
		||||
        }).then(result => {
 | 
			
		||||
          resolve(result);
 | 
			
		||||
        }).catch(error => {
 | 
			
		||||
          reject(error);
 | 
			
		||||
        }).finally(() => {
 | 
			
		||||
          clearTimeout(timer);
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    } else {
 | 
			
		||||
      const pool = await this.getPool();
 | 
			
		||||
      return pool.query(query, params);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async checkDbConnection() {
 | 
			
		||||
    this.checkDBFlag();
 | 
			
		||||
 | 
			
		||||
@ -269,6 +269,7 @@ Corresponding `docker-compose.yml` overrides:
 | 
			
		||||
      DATABASE_DATABASE: ""
 | 
			
		||||
      DATABASE_USERNAME: ""
 | 
			
		||||
      DATABASE_PASSWORD: ""
 | 
			
		||||
      DATABASE_TIMEOUT: ""
 | 
			
		||||
      ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -60,7 +60,8 @@
 | 
			
		||||
    "PORT": __DATABASE_PORT__,
 | 
			
		||||
    "DATABASE": "__DATABASE_DATABASE__",
 | 
			
		||||
    "USERNAME": "__DATABASE_USERNAME__",
 | 
			
		||||
    "PASSWORD": "__DATABASE_PASSWORD__"
 | 
			
		||||
    "PASSWORD": "__DATABASE_PASSWORD__",
 | 
			
		||||
    "TIMEOUT": "__DATABASE_TIMEOUT__"
 | 
			
		||||
  },
 | 
			
		||||
  "SYSLOG": {
 | 
			
		||||
    "ENABLED": __SYSLOG_ENABLED__,
 | 
			
		||||
 | 
			
		||||
@ -64,6 +64,7 @@ __DATABASE_PORT__=${DATABASE_PORT:=3306}
 | 
			
		||||
__DATABASE_DATABASE__=${DATABASE_DATABASE:=mempool}
 | 
			
		||||
__DATABASE_USERNAME__=${DATABASE_USERNAME:=mempool}
 | 
			
		||||
__DATABASE_PASSWORD__=${DATABASE_PASSWORD:=mempool}
 | 
			
		||||
__DATABASE_TIMEOUT__=${DATABASE_TIMEOUT:=180000}
 | 
			
		||||
 | 
			
		||||
# SYSLOG
 | 
			
		||||
__SYSLOG_ENABLED__=${SYSLOG_ENABLED:=false}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user