Browse Source

better error handling and feedback when node is unavailable

fix-133-memory-crash
Dan Janosik 7 years ago
parent
commit
80500d2e8a
  1. 45
      app/rpcApi.js
  2. 21
      routes/baseActionsRouter.js
  3. 3
      views/blocks.pug
  4. 14
      views/index.pug

45
app/rpcApi.js

@ -39,7 +39,11 @@ function getInfo() {
return new Promise(function(resolve, reject) {
client.cmd('getinfo', function(err, result, resHeaders) {
if (err) {
return console.log("Error 3207fh0f: " + err);
console.log("Error 3207fh0f: " + err);
reject(err);
return;
}
resolve(result);
@ -51,7 +55,11 @@ function getMempoolInfo() {
return new Promise(function(resolve, reject) {
client.cmd('getmempoolinfo', function(err, result, resHeaders) {
if (err) {
return console.log("Error 23407rhwe07fg: " + err);
console.log("Error 23407rhwe07fg: " + err);
reject(err);
return;
}
resolve(result);
@ -63,10 +71,12 @@ function getMempoolStats() {
return new Promise(function(resolve, reject) {
client.cmd('getrawmempool', true, function(err, result, resHeaders) {
if (err) {
return console.log("Error 428thwre0ufg: " + err);
}
console.log("Error 428thwre0ufg: " + err);
console.log("abc: " + JSON.stringify(result).substring(0, 100));
reject(err);
return;
}
var compiledResult = {};
compiledResult.count = 0;
@ -128,12 +138,20 @@ function getBlockByHeight(blockHeight) {
client.cmd('getblockhash', blockHeight, function(err, result, resHeaders) {
if (err) {
return console.log("Error 0928317yr3w: " + err);
console.log("Error 0928317yr3w: " + err);
reject(err);
return;
}
client.cmd('getblock', result, function(err2, result2, resHeaders2) {
if (err2) {
return console.log("Error 320fh7e0hg: " + err2);
console.log("Error 320fh7e0hg: " + err2);
reject(err2);
return;
}
resolve({ success:true, getblockhash:result, getblock:result2 });
@ -192,6 +210,10 @@ function getBlockByHash(blockHash) {
client.cmd('getblock', blockHash, function(err, result, resHeaders) {
if (err) {
console.log("Error 0u2fgewue: " + err);
reject(err);
return;
}
resolve(result);
@ -232,6 +254,10 @@ function getRawTransaction(txid) {
client.cmd('getrawtransaction', txid, 1, function(err, result, resHeaders) {
if (err) {
console.log("Error 329813yre823: " + err);
reject(err);
return;
}
resolve(result);
@ -256,6 +282,11 @@ function getRawTransactions(txids) {
result.confirmations = blockZeroResult.getblock.confirmations;
resolve([result]);
}).catch(function(err) {
reject(err);
return;
});
return;

21
routes/baseActionsRouter.js

@ -44,6 +44,10 @@ router.get("/", function(req, res) {
res.render("index");
});
}).catch(function(err) {
res.locals.userMessage = "Unable to connect to Bitcoin Node at " + env.bitcoind.host + ":" + env.bitcoind.port;
res.render("index");
});
});
@ -53,6 +57,11 @@ router.get("/node-info", function(req, res) {
rpcApi.getInfo().then(function(getinfo) {
res.locals.getinfo = getinfo;
res.render("node-info");
}).catch(function(err) {
res.locals.userMessage = "Unable to connect to Bitcoin Node at " + env.bitcoind.host + ":" + env.bitcoind.port;
res.render("node-info");
});
});
@ -68,6 +77,10 @@ router.get("/mempool", function(req, res) {
res.render("mempool");
});
}).catch(function(err) {
res.locals.userMessage = "Unable to connect to Bitcoin Node at " + env.bitcoind.host + ":" + env.bitcoind.port;
res.render("mempool");
});
});
@ -145,6 +158,10 @@ router.get("/blocks", function(req, res) {
res.render("blocks");
});
}).catch(function(err) {
res.locals.userMessage = "Unable to connect to Bitcoin Node at " + env.bitcoind.host + ":" + env.bitcoind.port;
res.render("blocks");
});
});
@ -193,6 +210,10 @@ router.post("/search", function(req, res) {
res.redirect("/");
});
});
}).catch(function(err) {
res.locals.userMessage = "Unable to connect to Bitcoin Node at " + env.bitcoind.host + ":" + env.bitcoind.port;
res.render("index");
});
});

3
views/blocks.pug

@ -4,6 +4,7 @@ block content
h1(class="h2") Blocks
hr
if (blocks)
nav(aria-label="Page navigation")
ul(class="pagination justify-content-center")
li(class="page-item", class=(sort == "asc" ? "active" : false))
@ -30,3 +31,5 @@ block content
hr
include includes/pagination.pug
else
p No blocks found

14
views/index.pug

@ -11,7 +11,7 @@ block content
**BTC Explorer** is [open-source](https://github.com/janoside/btc-rpc-explorer). If you run your own [Bitcoin Full Node](https://bitcoin.org/en/full-node), **BTC Explorer** can easily run alongside it, communicating via RPC calls. See the project [ReadMe](https://github.com/janoside/btc-rpc-explorer) for a list of features and instructions for running.
if (latestBlocks)
h3 Latest Blocks
- var blocks = latestBlocks;
@ -21,3 +21,15 @@ block content
hr
a(href="/blocks", class="btn btn-primary btn-block") See more
hr
div(class="text-center")
:markdown-it
Public instance maintained at [https://btc-explorer.com](https://btc-explorer.com)
Donate bitcoin: [3NPGpNyLLmVKCEcuipBs7G4KpQJoJXjDGe](bitcoin:3NPGpNyLLmVKCEcuipBs7G4KpQJoJXjDGe) / zCash: [t1bEGh8eABmZu8Ned3awCgBdkAhz2mKzJxP](zcash:t1bEGh8eABmZu8Ned3awCgBdkAhz2mKzJxP)
Source code available on github: [https://github.com/janoside/btc-rpc-explorer](https://github.com/janoside/btc-rpc-explorer)
© 2017 Dan Janosik
Loading…
Cancel
Save