From 6cc4ce5d0662bf3d553ac149749e216bf29426a4 Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Wed, 28 Mar 2018 22:07:56 +0200 Subject: [PATCH] [fix] #1300 Leave membership is stucking the whole blockchain --- app/lib/dal/fileDAL.ts | 16 +++++++++++++--- app/modules/prover/lib/blockGenerator.ts | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/lib/dal/fileDAL.ts b/app/lib/dal/fileDAL.ts index 5d5ca4367..2cbd5d102 100644 --- a/app/lib/dal/fileDAL.ts +++ b/app/lib/dal/fileDAL.ts @@ -519,9 +519,19 @@ export class FileDAL { .value() } - async findLeavers() { - const mss = await this.msDAL.getPendingOUT(); - return _.chain(mss).sortBy((ms:any) => -ms.sigDate).value(); + async findLeavers(blockMedianTime = 0) { + const pending = await this.msDAL.getPendingOUT(); + const mss = await Promise.all(pending.map(async (p:any) => { + const reduced = await this.mindexDAL.getReducedMS(p.issuer) + if (!reduced || !reduced.chainable_on || blockMedianTime >= reduced.chainable_on || blockMedianTime < constants.TIME_TO_TURN_ON_BRG_107) { + return p + } + return null + })) + return _.chain(mss) + .filter((ms:any) => ms) + .sortBy((ms:any) => -ms.sigDate) + .value(); } existsNonReplayableLink(from:string, to:string) { diff --git a/app/modules/prover/lib/blockGenerator.ts b/app/modules/prover/lib/blockGenerator.ts index 48ab6db8e..0608a1b02 100644 --- a/app/modules/prover/lib/blockGenerator.ts +++ b/app/modules/prover/lib/blockGenerator.ts @@ -151,7 +151,7 @@ export class BlockGenerator { private async findLeavers(current:DBBlock) { const leaveData: { [pub:string]: any } = {}; - const memberships = await this.dal.findLeavers(); + const memberships = await this.dal.findLeavers(current && current.medianTime); const leavers:string[] = []; memberships.forEach((ms:any) => leavers.push(ms.issuer)); for (const ms of memberships) { -- GitLab