Use regexes instead of tags
This commit is contained in:
parent
c2f5cb9529
commit
ad9e42db26
@ -13,24 +13,32 @@ class PoolsParser {
|
|||||||
'addresses': '[]',
|
'addresses': '[]',
|
||||||
'slug': 'unknown'
|
'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 {
|
public setMiningPools(pools): void {
|
||||||
this.miningPools = pools;
|
for (const pool of pools) {
|
||||||
for (const pool of this.miningPools) {
|
pool.regexes = pool.tags;
|
||||||
pool.regexes = JSON.stringify(pool.tags);
|
delete(pool.tags);
|
||||||
pool.addresses = JSON.stringify(pool.addresses);
|
|
||||||
delete pool.tags;
|
|
||||||
}
|
}
|
||||||
|
this.miningPools = pools;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Populate our db with updated mining pool definition
|
* Populate our db with updated mining pool definition
|
||||||
* @param pools
|
* @param pools
|
||||||
*/
|
*/
|
||||||
public async migratePoolsJson(pools: any[]): Promise<void> {
|
public async migratePoolsJson(): Promise<void> {
|
||||||
await this.$insertUnknownPool();
|
await this.$insertUnknownPool();
|
||||||
|
|
||||||
for (const pool of pools) {
|
for (const pool of this.miningPools) {
|
||||||
if (!pool.id) {
|
if (!pool.id) {
|
||||||
logger.info(`Mining pool ${pool.name} has no unique 'id' defined. Skipping.`);
|
logger.info(`Mining pool ${pool.name} has no unique 'id' defined. Skipping.`);
|
||||||
continue;
|
continue;
|
||||||
@ -56,10 +64,10 @@ class PoolsParser {
|
|||||||
await PoolsRepository.$updateMiningPoolLink(poolDB.id, pool.link);
|
await PoolsRepository.$updateMiningPoolLink(poolDB.id, pool.link);
|
||||||
}
|
}
|
||||||
if (JSON.stringify(pool.addresses) !== poolDB.addresses ||
|
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
|
// 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`);
|
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);
|
await this.$deleteBlocksForPool(poolDB);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -119,7 +127,7 @@ class PoolsParser {
|
|||||||
);
|
);
|
||||||
const oldestBlockHeight = oldestPoolBlock.length ?? 0 > 0 ? oldestPoolBlock[0].height : 130635;
|
const oldestBlockHeight = oldestPoolBlock.length ?? 0 > 0 ? oldestPoolBlock[0].height : 130635;
|
||||||
const [unknownPool] = await DB.query(`SELECT id from pools where slug = "unknown"`);
|
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(`
|
await DB.query(`
|
||||||
DELETE FROM blocks
|
DELETE FROM blocks
|
||||||
WHERE pool_id = ? AND height >= ${oldestBlockHeight}`,
|
WHERE pool_id = ? AND height >= ${oldestBlockHeight}`,
|
||||||
@ -135,7 +143,7 @@ class PoolsParser {
|
|||||||
|
|
||||||
private async $deleteUnknownBlocks(): Promise<void> {
|
private async $deleteUnknownBlocks(): Promise<void> {
|
||||||
const [unknownPool] = await DB.query(`SELECT id from pools where slug = "unknown"`);
|
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(`
|
await DB.query(`
|
||||||
DELETE FROM blocks
|
DELETE FROM blocks
|
||||||
WHERE pool_id = ? AND height >= 130635`,
|
WHERE pool_id = ? AND height >= 130635`,
|
||||||
|
@ -153,7 +153,7 @@ class PoolsRepository {
|
|||||||
await DB.query(`
|
await DB.query(`
|
||||||
INSERT INTO pools
|
INSERT INTO pools
|
||||||
SET name = ?, link = ?, addresses = ?, regexes = ?, slug = ?, unique_id = ?`,
|
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) {
|
} catch (e: any) {
|
||||||
logger.err(`Cannot insert new mining pool into db. Reason: ` + (e instanceof Error ? e.message : e));
|
logger.err(`Cannot insert new mining pool into db. Reason: ` + (e instanceof Error ? e.message : e));
|
||||||
|
@ -75,7 +75,7 @@ class PoolsUpdater {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
await DB.query('START TRANSACTION;');
|
await DB.query('START TRANSACTION;');
|
||||||
await poolsParser.migratePoolsJson(poolsJson);
|
await poolsParser.migratePoolsJson();
|
||||||
await this.updateDBSha(githubSha);
|
await this.updateDBSha(githubSha);
|
||||||
await DB.query('START TRANSACTION;');
|
await DB.query('START TRANSACTION;');
|
||||||
await DB.query('COMMIT;');
|
await DB.query('COMMIT;');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user