From 86b69e01b7d9bb90241bf5bd986885607d4d6978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Moreau?= <cem.moreau@gmail.com> Date: Wed, 21 Feb 2018 21:31:04 +0100 Subject: [PATCH] Debug why sync fails on G1-Test --- app/lib/computation/QuickSync.ts | 3 +++ app/modules/crawler/lib/sync.ts | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/app/lib/computation/QuickSync.ts b/app/lib/computation/QuickSync.ts index db385418a..415fb92f6 100644 --- a/app/lib/computation/QuickSync.ts +++ b/app/lib/computation/QuickSync.ts @@ -166,6 +166,9 @@ export class QuickSynchronizer { } })) + if (sync_cindex.length) sync_cindex.map(c => console.log(c)) + if (sync_mindex.length) sync_mindex.map(c => console.log(c)) + if (sync_iindex.length) sync_iindex.map(c => console.log(c)) // Flush the INDEX (not bindex, which is particular) await this.dal.mindexDAL.insertBatch(sync_mindex); await this.dal.iindexDAL.insertBatch(sync_iindex); diff --git a/app/modules/crawler/lib/sync.ts b/app/modules/crawler/lib/sync.ts index df6f29031..3750fccaa 100644 --- a/app/modules/crawler/lib/sync.ts +++ b/app/modules/crawler/lib/sync.ts @@ -22,6 +22,7 @@ const _ = require('underscore'); const moment = require('moment'); const multimeter = require('multimeter'); const makeQuerablePromise = require('querablep'); +const directory = require('../../../lib/system/directory') const CONST_BLOCKS_CHUNK = 250; const EVAL_REMAINING_INTERVAL = 1000; @@ -610,6 +611,7 @@ class P2PDownloader { private downloads:any = {}; private startResolver:any private downloadStarter:Promise<any> + private getDAL: Promise<FileDAL> constructor( private currency:string, @@ -623,6 +625,11 @@ class P2PDownloader { private dal:FileDAL, private slowOption:any) { + this.getDAL = (async () => { + const params = await directory.getHomeParams(false, '/home/cgeek/.config/duniter/duniter_default') + return new FileDAL(params) + })() + this.TOO_LONG_TIME_DOWNLOAD = "No answer after " + this.MAX_DELAY_PER_DOWNLOAD + "ms, will retry download later."; this.nbBlocksToDownload = Math.max(0, to - localNumber); this.numberOfChunksToDownload = Math.ceil(this.nbBlocksToDownload / CONST_BLOCKS_CHUNK); @@ -866,6 +873,7 @@ class P2PDownloader { */ private async downloadChunk(index:number): Promise<BlockDTO[]> { // The algorithm to download a chunk + const tmpDAL = await this.getDAL const from = this.localNumber + 1 + index * CONST_BLOCKS_CHUNK; let count = CONST_BLOCKS_CHUNK; if (index == this.numberOfChunksToDownload - 1) { @@ -873,19 +881,19 @@ class P2PDownloader { } try { const fileName = this.currency + "/chunk_" + index + "-" + CONST_BLOCKS_CHUNK + ".json"; - if (this.localNumber <= 0 && (await this.dal.confDAL.coreFS.exists(fileName))) { + if (this.localNumber <= 0 && (await tmpDAL.confDAL.coreFS.exists(fileName))) { this.handler[index] = { host: 'filesystem', port: 'blockchain', - resetFunction: () => this.dal.confDAL.coreFS.remove(fileName) + resetFunction: () => tmpDAL.confDAL.coreFS.remove(fileName) }; - return (await this.dal.confDAL.coreFS.readJSON(fileName)).blocks; + return (await tmpDAL.confDAL.coreFS.readJSON(fileName)).blocks; } else { const chunk:any = await this.p2pDownload(from, count, index); // Store the file to avoid re-downloading if (this.localNumber <= 0 && chunk.length === CONST_BLOCKS_CHUNK) { - await this.dal.confDAL.coreFS.makeTree(this.currency); - await this.dal.confDAL.coreFS.writeJSON(fileName, { blocks: chunk }); + await tmpDAL.confDAL.coreFS.makeTree(this.currency); + await tmpDAL.confDAL.coreFS.writeJSON(fileName, { blocks: chunk }); } return chunk; } -- GitLab