sync retry after RPC error

This commit is contained in:
Matias Alejo Garcia 2014-01-14 16:45:25 -03:00
parent 3da2254541
commit 1e9307f4a0
2 changed files with 39 additions and 11 deletions

3
.gitignore vendored
View File

@ -8,7 +8,7 @@ lib-cov
*.pid
*.gz
*.swp
tags
pids
logs
results
@ -23,7 +23,6 @@ node_modules
peerdb.json
npm-debug.log
node_modules
.nodemonignore
.DS_Store

View File

@ -199,19 +199,35 @@ function spec() {
};
Sync.prototype.init = function(opts) {
if (!(opts && opts.skip_db_connection)) {
mongoose.connect(config.db);
}
this.db = mongoose.connection;
this.rpc = new RpcClient(config.bitcoind);
this.db.on('error', console.error.bind(console, 'connection error:'));
if (!(opts && opts.skip_db_connection)) {
mongoose.connect(config.db, {server: {auto_reconnect: true}} );
}
this.db = mongoose.connection;
this.db.on('error', function(err) {
console.log('connection error:' + err);
moogose.disconnect();
});
this.db.on('disconnect', function(err) {
console.log('disconnect:' + err);
mongoose.connect(config.db, {server: {auto_reconnect: true}} );
});
};
Sync.prototype.import_history = function(opts, next) {
var that = this;
var retry_attemps = 100;
var retry_secs = 2;
this.db.once('open', function() {
async.series([
function(cb) {
@ -240,10 +256,23 @@ function spec() {
},
function(cb) {
function sync() {
that.syncBlocks( function(err) {
if (err && err.message.match(/ECONNREFUSED/) && retry_attemps--){
setTimeout(function() {
console.log("Retrying in %d secs ", retry_secs);
sync();
}, retry_secs * 1000);
}
else
return next(err);
});
}
if (!opts.skip_blocks) {
that.syncBlocks( cb);
} else {
cb();
sync();
}
},
/* Exploding happens on block insertion
@ -267,7 +296,7 @@ function spec() {
}
*/
], function(err) {
return next(err);
return next(err);
});
});
};