From f686a37aab51d7b57faa13496f2bdc946a6b4228 Mon Sep 17 00:00:00 2001 From: Martin Boehm Date: Sat, 16 Jun 2018 13:52:15 +0200 Subject: [PATCH] Resync index/mempool more often to overcome missing ZeroMQ in dogecoin --- blockbook.go | 16 ++++++++-------- build/deb/debian/blockbook-dogecoin.service | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/blockbook.go b/blockbook.go index e28f3f52..41fbfb34 100644 --- a/blockbook.go +++ b/blockbook.go @@ -26,15 +26,9 @@ import ( _ "net/http/pprof" ) -// resync index at least each resyncIndexPeriodMs (could be more often if invoked by message from ZeroMQ) -const resyncIndexPeriodMs = 935093 - // debounce too close requests for resync const debounceResyncIndexMs = 1009 -// resync mempool at least each resyncMempoolPeriodMs (could be more often if invoked by message from ZeroMQ) -const resyncMempoolPeriodMs = 60017 - // debounce too close requests for resync mempool (ZeroMQ sends message for each tx, when new block there are many transactions) const debounceResyncMempoolMs = 1009 @@ -71,6 +65,12 @@ var ( noTxCache = flag.Bool("notxcache", false, "disable tx cache") computeColumnStats = flag.Bool("computedbstats", false, "compute column stats and exit") + + // resync index at least each resyncIndexPeriodMs (could be more often if invoked by message from ZeroMQ) + resyncIndexPeriodMs = flag.Int("resyncindexperiod", 935093, "resync index period in milliseconds") + + // resync mempool at least each resyncMempoolPeriodMs (could be more often if invoked by message from ZeroMQ) + resyncMempoolPeriodMs = flag.Int("resyncmempoolperiod", 60017, "resync mempool period in milliseconds") ) var ( @@ -384,7 +384,7 @@ func syncIndexLoop() { defer close(chanSyncIndexDone) glog.Info("syncIndexLoop starting") // resync index about every 15 minutes if there are no chanSyncIndex requests, with debounce 1 second - tickAndDebounce(resyncIndexPeriodMs*time.Millisecond, debounceResyncIndexMs*time.Millisecond, chanSyncIndex, func() { + tickAndDebounce(time.Duration(*resyncIndexPeriodMs)*time.Millisecond, debounceResyncIndexMs*time.Millisecond, chanSyncIndex, func() { if err := syncWorker.ResyncIndex(onNewBlockHash); err != nil { glog.Error("syncIndexLoop ", errors.ErrorStack(err)) } @@ -402,7 +402,7 @@ func syncMempoolLoop() { defer close(chanSyncMempoolDone) glog.Info("syncMempoolLoop starting") // resync mempool about every minute if there are no chanSyncMempool requests, with debounce 1 second - tickAndDebounce(resyncMempoolPeriodMs*time.Millisecond, debounceResyncMempoolMs*time.Millisecond, chanSyncMempool, func() { + tickAndDebounce(time.Duration(*resyncMempoolPeriodMs)*time.Millisecond, debounceResyncMempoolMs*time.Millisecond, chanSyncMempool, func() { internalState.StartedMempoolSync() if count, err := chain.ResyncMempool(onNewTxAddr); err != nil { glog.Error("syncMempoolLoop ", errors.ErrorStack(err)) diff --git a/build/deb/debian/blockbook-dogecoin.service b/build/deb/debian/blockbook-dogecoin.service index 9f5bfd6a..00d2dd19 100644 --- a/build/deb/debian/blockbook-dogecoin.service +++ b/build/deb/debian/blockbook-dogecoin.service @@ -10,7 +10,7 @@ After=network.target Wants=backend-dogecoin.service [Service] -ExecStart=/opt/coins/blockbook/dogecoin/bin/blockbook -blockchaincfg=/opt/coins/blockbook/dogecoin/config/blockchaincfg.json -datadir=/opt/coins/data/dogecoin/blockbook/db -sync -httpserver=:9038 -socketio=:9138 -certfile=/opt/coins/blockbook/dogecoin/cert/blockbook -explorer=https://dogechain.info/ -log_dir=/opt/coins/blockbook/dogecoin/logs +ExecStart=/opt/coins/blockbook/dogecoin/bin/blockbook -blockchaincfg=/opt/coins/blockbook/dogecoin/config/blockchaincfg.json -datadir=/opt/coins/data/dogecoin/blockbook/db -sync -httpserver=:9038 -socketio=:9138 -certfile=/opt/coins/blockbook/dogecoin/cert/blockbook -explorer=https://dogechain.info/ -resyncindexperiod=30011 -resyncmempoolperiod=2011 -log_dir=/opt/coins/blockbook/dogecoin/logs User=blockbook-dogecoin Type=simple Restart=on-failure