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