diff --git a/backend/src/api/pools-parser.ts b/backend/src/api/pools-parser.ts index f322578cb..4e67ce98b 100644 --- a/backend/src/api/pools-parser.ts +++ b/backend/src/api/pools-parser.ts @@ -13,24 +13,32 @@ class PoolsParser { 'addresses': '[]', 'slug': 'unknown' }; + private uniqueLogs: string[] = []; + + private uniqueLog(loggerFunction: any, msg: string): void { + if (this.uniqueLogs.includes(msg)) { + return; + } + this.uniqueLogs.push(msg); + loggerFunction(msg); + } public setMiningPools(pools): void { - this.miningPools = pools; - for (const pool of this.miningPools) { - pool.regexes = JSON.stringify(pool.tags); - pool.addresses = JSON.stringify(pool.addresses); - delete pool.tags; + for (const pool of pools) { + pool.regexes = pool.tags; + delete(pool.tags); } + this.miningPools = pools; } /** * Populate our db with updated mining pool definition * @param pools */ - public async migratePoolsJson(pools: any[]): Promise { + public async migratePoolsJson(): Promise { await this.$insertUnknownPool(); - for (const pool of pools) { + for (const pool of this.miningPools) { if (!pool.id) { logger.info(`Mining pool ${pool.name} has no unique 'id' defined. Skipping.`); continue; @@ -56,10 +64,10 @@ class PoolsParser { await PoolsRepository.$updateMiningPoolLink(poolDB.id, pool.link); } if (JSON.stringify(pool.addresses) !== poolDB.addresses || - JSON.stringify(pool.tags) !== poolDB.regexes) { + JSON.stringify(pool.regexes) !== poolDB.regexes) { // Pool addresses changed or coinbase tags changed logger.notice(`Updating addresses and/or coinbase tags for ${pool.name} mining pool. If 'AUTOMATIC_BLOCK_REINDEXING' is enabled, we will re-index its blocks and 'unknown' blocks`); - await PoolsRepository.$updateMiningPoolTags(poolDB.id, pool.addresses, pool.tags); + await PoolsRepository.$updateMiningPoolTags(poolDB.id, pool.addresses, pool.regexes); await this.$deleteBlocksForPool(poolDB); } } @@ -119,7 +127,7 @@ class PoolsParser { ); const oldestBlockHeight = oldestPoolBlock.length ?? 0 > 0 ? oldestPoolBlock[0].height : 130635; const [unknownPool] = await DB.query(`SELECT id from pools where slug = "unknown"`); - logger.notice(`Deleting blocks with unknown mining pool from height ${oldestBlockHeight} for re-indexing`); + this.uniqueLog(logger.notice, `Deleting blocks with unknown mining pool from height ${oldestBlockHeight} for re-indexing`); await DB.query(` DELETE FROM blocks WHERE pool_id = ? AND height >= ${oldestBlockHeight}`, @@ -135,7 +143,7 @@ class PoolsParser { private async $deleteUnknownBlocks(): Promise { const [unknownPool] = await DB.query(`SELECT id from pools where slug = "unknown"`); - logger.notice(`Deleting blocks with unknown mining pool from height 130635 for re-indexing`); + this.uniqueLog(logger.notice, `Deleting blocks with unknown mining pool from height 130635 for re-indexing`); await DB.query(` DELETE FROM blocks WHERE pool_id = ? AND height >= 130635`, diff --git a/backend/src/repositories/PoolsRepository.ts b/backend/src/repositories/PoolsRepository.ts index 35319157e..63bddd497 100644 --- a/backend/src/repositories/PoolsRepository.ts +++ b/backend/src/repositories/PoolsRepository.ts @@ -153,7 +153,7 @@ class PoolsRepository { await DB.query(` INSERT INTO pools SET name = ?, link = ?, addresses = ?, regexes = ?, slug = ?, unique_id = ?`, - [pool.name, pool.link, JSON.stringify(pool.addresses), JSON.stringify(pool.tags), slug, pool.id] + [pool.name, pool.link, JSON.stringify(pool.addresses), JSON.stringify(pool.regexes), slug, pool.id] ); } catch (e: any) { logger.err(`Cannot insert new mining pool into db. Reason: ` + (e instanceof Error ? e.message : e)); diff --git a/backend/src/tasks/pools-updater.ts b/backend/src/tasks/pools-updater.ts index cbe137163..6d5a86559 100644 --- a/backend/src/tasks/pools-updater.ts +++ b/backend/src/tasks/pools-updater.ts @@ -75,7 +75,7 @@ class PoolsUpdater { try { await DB.query('START TRANSACTION;'); - await poolsParser.migratePoolsJson(poolsJson); + await poolsParser.migratePoolsJson(); await this.updateDBSha(githubSha); await DB.query('START TRANSACTION;'); await DB.query('COMMIT;');