Skip to content
Snippets Groups Projects
Commit 86b69e01 authored by Cédric Moreau's avatar Cédric Moreau
Browse files

Debug why sync fails on G1-Test

parent 291593d2
No related branches found
No related tags found
No related merge requests found
...@@ -166,6 +166,9 @@ export class QuickSynchronizer { ...@@ -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) // Flush the INDEX (not bindex, which is particular)
await this.dal.mindexDAL.insertBatch(sync_mindex); await this.dal.mindexDAL.insertBatch(sync_mindex);
await this.dal.iindexDAL.insertBatch(sync_iindex); await this.dal.iindexDAL.insertBatch(sync_iindex);
......
...@@ -22,6 +22,7 @@ const _ = require('underscore'); ...@@ -22,6 +22,7 @@ const _ = require('underscore');
const moment = require('moment'); const moment = require('moment');
const multimeter = require('multimeter'); const multimeter = require('multimeter');
const makeQuerablePromise = require('querablep'); const makeQuerablePromise = require('querablep');
const directory = require('../../../lib/system/directory')
const CONST_BLOCKS_CHUNK = 250; const CONST_BLOCKS_CHUNK = 250;
const EVAL_REMAINING_INTERVAL = 1000; const EVAL_REMAINING_INTERVAL = 1000;
...@@ -610,6 +611,7 @@ class P2PDownloader { ...@@ -610,6 +611,7 @@ class P2PDownloader {
private downloads:any = {}; private downloads:any = {};
private startResolver:any private startResolver:any
private downloadStarter:Promise<any> private downloadStarter:Promise<any>
private getDAL: Promise<FileDAL>
constructor( constructor(
private currency:string, private currency:string,
...@@ -623,6 +625,11 @@ class P2PDownloader { ...@@ -623,6 +625,11 @@ class P2PDownloader {
private dal:FileDAL, private dal:FileDAL,
private slowOption:any) { 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.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.nbBlocksToDownload = Math.max(0, to - localNumber);
this.numberOfChunksToDownload = Math.ceil(this.nbBlocksToDownload / CONST_BLOCKS_CHUNK); this.numberOfChunksToDownload = Math.ceil(this.nbBlocksToDownload / CONST_BLOCKS_CHUNK);
...@@ -866,6 +873,7 @@ class P2PDownloader { ...@@ -866,6 +873,7 @@ class P2PDownloader {
*/ */
private async downloadChunk(index:number): Promise<BlockDTO[]> { private async downloadChunk(index:number): Promise<BlockDTO[]> {
// The algorithm to download a chunk // The algorithm to download a chunk
const tmpDAL = await this.getDAL
const from = this.localNumber + 1 + index * CONST_BLOCKS_CHUNK; const from = this.localNumber + 1 + index * CONST_BLOCKS_CHUNK;
let count = CONST_BLOCKS_CHUNK; let count = CONST_BLOCKS_CHUNK;
if (index == this.numberOfChunksToDownload - 1) { if (index == this.numberOfChunksToDownload - 1) {
...@@ -873,19 +881,19 @@ class P2PDownloader { ...@@ -873,19 +881,19 @@ class P2PDownloader {
} }
try { try {
const fileName = this.currency + "/chunk_" + index + "-" + CONST_BLOCKS_CHUNK + ".json"; 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] = { this.handler[index] = {
host: 'filesystem', host: 'filesystem',
port: 'blockchain', 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 { } else {
const chunk:any = await this.p2pDownload(from, count, index); const chunk:any = await this.p2pDownload(from, count, index);
// Store the file to avoid re-downloading // Store the file to avoid re-downloading
if (this.localNumber <= 0 && chunk.length === CONST_BLOCKS_CHUNK) { if (this.localNumber <= 0 && chunk.length === CONST_BLOCKS_CHUNK) {
await this.dal.confDAL.coreFS.makeTree(this.currency); await tmpDAL.confDAL.coreFS.makeTree(this.currency);
await this.dal.confDAL.coreFS.writeJSON(fileName, { blocks: chunk }); await tmpDAL.confDAL.coreFS.writeJSON(fileName, { blocks: chunk });
} }
return chunk; return chunk;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment