From b554545ce5a738fc4033e061f01a3bb826e35b28 Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Sat, 30 Jun 2018 15:57:39 +0200 Subject: [PATCH] [fix] very initial sync (after a `reset all` for example) was not taking currency parameters correctly --- app/modules/crawler/lib/sync.ts | 10 +++++++--- server.ts | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/app/modules/crawler/lib/sync.ts b/app/modules/crawler/lib/sync.ts index 77b3c5640..3bf8cc58d 100644 --- a/app/modules/crawler/lib/sync.ts +++ b/app/modules/crawler/lib/sync.ts @@ -125,6 +125,13 @@ export class Synchroniser extends stream.Duplex { } to = rCurrent.number || 0 + const rootBlock = await this.syncStrategy.getBlock(0) + if (!rootBlock) { + throw 'Could not get root block. Sync aborted.' + } + await this.BlockchainService.saveParametersForRootBlock(rootBlock) + await this.server.reloadConf() + await this.syncStrategy.initWithKnownLocalAndToAndCurrency(to, localNumber, rCurrent.currency) //============ @@ -256,9 +263,6 @@ export class Synchroniser extends stream.Duplex { clearInterval(logInterval); } - // Save currency parameters given by root block - const rootBlock = await this.server.dal.getFullBlockOf(0) - await this.BlockchainService.saveParametersForRootBlock(BlockDTO.fromJSONObject(rootBlock)) this.server.dal.blockDAL.cleanCache(); if (!cliprogram.nosbx) { diff --git a/server.ts b/server.ts index 84f7cb4a9..69cd309e7 100644 --- a/server.ts +++ b/server.ts @@ -39,6 +39,7 @@ import {ProxiesConf} from './app/lib/proxy'; import {Directory, FileSystem} from "./app/lib/system/directory" import {DataErrors} from "./app/lib/common-libs/errors" import {DBPeer} from "./app/lib/db/DBPeer" +import {Underscore} from "./app/lib/common-libs/underscore" export interface HookableServer { generatorGetJoinData: (...args:any[]) => Promise<any> @@ -158,9 +159,18 @@ export class Server extends stream.Duplex implements HookableServer { await this.dal.close() } - async loadConf(useDefaultConf:any = false) { + async reloadConf() { + await this.loadConf(false, true) + } + + async loadConf(useDefaultConf:any = false, reuseExisting = false) { logger.debug('Loading conf...'); - this.conf = await this.dal.loadConf(this.overrideConf, useDefaultConf) + const loaded = await this.dal.loadConf(this.overrideConf, useDefaultConf) + if (!reuseExisting || !this.conf) { + this.conf = loaded + } else { + Underscore.extend(this.conf, loaded) // Overwrite the current conf + } // Default values this.conf.proxiesConf = this.conf.proxiesConf === undefined ? new ProxiesConf() : this.conf.proxiesConf this.conf.remoteipv6 = this.conf.remoteipv6 === undefined ? this.conf.ipv6 : this.conf.remoteipv6 -- GitLab