Use regexes instead of tags

This commit is contained in:
nymkappa 2023-02-24 21:35:13 +09:00
parent c2f5cb9529
commit ad9e42db26
No known key found for this signature in database
GPG Key ID: E155910B16E8BD04
3 changed files with 21 additions and 13 deletions

View File

@ -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<void> {
public async migratePoolsJson(): Promise<void> {
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<void> {
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`,

View File

@ -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));

View File

@ -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;');