From a5514525da6a56e487e6ac1508563d6a4a40b041 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 12 Jul 2023 10:17:14 +0800 Subject: [PATCH] 1 --- server/web3bcspider/services/pull_bcevent.js | 26 ++++++++++++++++++-- third_party/j7 | 2 +- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/server/web3bcspider/services/pull_bcevent.js b/server/web3bcspider/services/pull_bcevent.js index b645eda..e9cf3dc 100644 --- a/server/web3bcspider/services/pull_bcevent.js +++ b/server/web3bcspider/services/pull_bcevent.js @@ -5,11 +5,31 @@ const log = require('j7/log'); const constant = require('common/constant'); const BaseService = require('./baseservice'); +let g_bcevent_conn = null; +let lock_times = 0; +async function getGBcEventConn() { + if (!g_bcevent_conn) { + ++lock_times; + try { + while (lock_times > 1) { + await utils.sleep(1); + } + const {err, conn} = await app.getDbConn(constant.BCEVENTDB_NAME); + if (err) { + throw new Error('getGBcEventConn error:' + err); + } + g_bcevent_conn = conn; + } finally { + --lock_times; + } + } + return g_bcevent_conn; +} + class PullBcEvent extends BaseService { async init(bc, net, event) { - const {err, conn} = await app.getDbConn(constant.BCEVENTDB_NAME); - this.conn = conn; + this.conn = await getGBcEventConn(); this.lastBlockNumber = 0; this.bc = bc; this.net = net; @@ -74,6 +94,7 @@ class PullBcEvent extends BaseService { await this.saveToDb(event); return; } catch (err) { + utils.safeDumpErrStack(err); log.error(err); } await utils.sleep(8000 + utils.randRange(500, 1500)); @@ -107,6 +128,7 @@ class PullBcEvent extends BaseService { } continue; } catch (err) { + utils.safeDumpErrStack(err); log.error(err); } await utils.sleep(5000 + utils.randRange(500, 1500)); diff --git a/third_party/j7 b/third_party/j7 index ce576bd..579d7de 160000 --- a/third_party/j7 +++ b/third_party/j7 @@ -1 +1 @@ -Subproject commit ce576bd6ff46b5ce4836d786a7670f545916665f +Subproject commit 579d7de1c260822edef5aff0a6e64f9a2228ef6f