From 0484a0917201dd03106ea7bd89497c45cf816de4 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 6 Jul 2023 15:43:35 +0800 Subject: [PATCH] 1 --- .../web3dbspider/services/dbevent_process.js | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/server/web3dbspider/services/dbevent_process.js b/server/web3dbspider/services/dbevent_process.js index 91fc3e8..306d5f8 100644 --- a/server/web3dbspider/services/dbevent_process.js +++ b/server/web3dbspider/services/dbevent_process.js @@ -49,7 +49,7 @@ class DbEventProcess extends BaseService { this.progInfo = this.event['progressInfo']; this.contractAddress = this.net.getContractAddressByName(this.getContractName()); this.lastIdx = await this.getLastIdx(); - this.progInfo['lastIdx'] = this.lastIdx.toString(); + this.progInfo['proclastIdx'] = this.lastIdx.toString(); await this.start(); } @@ -61,7 +61,46 @@ class DbEventProcess extends BaseService { } async pullEvent() { - const logHead = this.getInstanceName() + ' pullEvent: '; + const logHead = this.getInstanceName() + ' pullDbEvent: '; + const tableName = this.getTableName(); + try { + const startIdx = this.getStartIdx(); + const endIdx = this.getEndIdx(); + ++this.progInfo['procPullCount']; + if (startIdx >= endIdx) { + return; + } + const {err, rows} = await this.conn.execQuery( + 'SELECT * FROM ${tableName} WHERE `idx` > ? AND `idx` <= ? ' + + 'AND net_id = ? AND event_name = ? AND contract_address = ? ' + + 'LIMIT ' + LIMIT_COUNT, + [ + startIdx.toString(), + endIdx.toString(), + this.getNetId(), + this.getEventName(), + this.getContractAddress() + ]); + if (err) { + throw err; + } + if (rows.length > 0) { + await utils.serial( + rows, + async (row) => { + await this.saveToDb(row); + } + ); + this.progInfo['procEventCount'] += rows.length; + } else { + this.lastIdx = endIdx; + } + this.progInfo['procLastIdx'] = this.lastIdx.toString(); + await this.saveLastIdx(this.lastIdx); + } catch (err) { + log.error(logHead + err); + await utils.sleep(5000 + utils.randRange(1000, 3000)); + } } getStartIdx() {