diff --git a/app/service/BlockchainService.js b/app/service/BlockchainService.js index 31f35f5b5988db355e2bfb14575f5d8c108e3099..084626c2b07aafe4abe3c4459e96a747c5b98d54 100644 --- a/app/service/BlockchainService.js +++ b/app/service/BlockchainService.js @@ -704,7 +704,10 @@ function BlockchainService (conf, mainDAL, pair) { } nextOne(); } - ], callback); + ], (err) => { + logger.warn(err); + callback(); + }); }, next); } ], function(err) { @@ -790,6 +793,9 @@ function BlockchainService (conf, mainDAL, pair) { var gValidator = globalValidator(conf, blockchainDao(null, that.currentDal)); var identity = yield dal.getIdentityByHashOrNull(idHash); var foundCerts = []; + if (!identity) { + throw 'Identity with hash \'' + idHash + '\' not found'; + } if (!identity.leaving) { if (!current) { // Look for certifications from initial joiners @@ -1377,6 +1383,24 @@ function BlockchainService (conf, mainDAL, pair) { } return mainContext.dal.getBlocksBetween(from, from + count - 1); }); + + var cleanMemFifo = async.queue((task, callback) => task(callback), 1); + var cleanMemFifoInterval = null; + this.regularCleanMemory = function (done) { + if (cleanMemFifoInterval) + clearInterval(cleanMemFifoInterval); + cleanMemFifoInterval = setInterval(() => cleanMemFifo.push(cleanMemory), 1000 * constants.MEMORY_CLEAN_INTERVAL); + cleanMemory(done); + }; + + function cleanMemory(done) { + mainDAL.blockDAL.migrateOldBlocks() + .then(() => done()) + .catch((err) => { + logger.warn(err); + done(); + }); + } } /**