diff --git a/app/modules/crawler/lib/sync.ts b/app/modules/crawler/lib/sync.ts index 77b3c5640495e98260aba7dde1fd2fd069bc9688..3bf8cc58d9d40700ae55402dadb2926fa7a2a062 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 84f7cb4a95f3ae3722f9a43f30a465949d48978a..69cd309e78a2e32d7c796381e02357fbb8201272 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