Browse Source

don't cache unconfirmed txs

fix-133-memory-crash
Dan Janosik 7 years ago
parent
commit
4c2a2f1534
  1. 30
      app/api/coreApi.js

30
app/api/coreApi.js

@ -25,8 +25,13 @@ function getGenesisCoinbaseTransactionId() {
function tryCacheThenRpcApi(cache, cacheKey, cacheMaxAge, rpcApiFunction) { function tryCacheThenRpcApi(cache, cacheKey, cacheMaxAge, rpcApiFunction, cacheConditionFunction) {
//console.log("tryCache: " + cacheKey + ", " + cacheMaxAge); //console.log("tryCache: " + cacheKey + ", " + cacheMaxAge);
if (cacheConditionFunction == null) {
cacheConditionFunction = function(obj) {
return true;
};
}
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
var result = cache.get(cacheKey); var result = cache.get(cacheKey);
@ -35,19 +40,20 @@ function tryCacheThenRpcApi(cache, cacheKey, cacheMaxAge, rpcApiFunction) {
} else { } else {
rpcApiFunction().then(function(result) { rpcApiFunction().then(function(result) {
if (result) { if (result != null && cacheConditionFunction(result)) {
cache.set(cacheKey, result, cacheMaxAge); cache.set(cacheKey, result, cacheMaxAge);
resolve(result);
} else {
resolve(result);
} }
resolve(result);
}); });
} }
}); });
} }
function shouldCacheTransaction(tx) {
return (tx.confirmations > 0);
}
function getBlockchainInfo() { function getBlockchainInfo() {
@ -490,9 +496,11 @@ function getBlocksByHash(blockHashes) {
} }
function getRawTransaction(txid) { function getRawTransaction(txid) {
return tryCacheThenRpcApi(txCache, "getRawTransaction-" + txid, 3600000, function() { var rpcApiFunction = function() {
return rpcApi.getRawTransaction(txid); return rpcApi.getRawTransaction(txid);
}); };
return tryCacheThenRpcApi(txCache, "getRawTransaction-" + txid, 3600000, rpcApiFunction, shouldCacheTransaction);
} }
function getAddress(address) { function getAddress(address) {
@ -529,7 +537,9 @@ function getRawTransactions(txids) {
if (queriedTx != null) { if (queriedTx != null) {
combinedTxs.push(queriedTx); combinedTxs.push(queriedTx);
txCache.set("getRawTransaction-" + queriedTx.txid, queriedTx, 3600000); if (shouldCacheTransaction(queriedTx)) {
txCache.set("getRawTransaction-" + queriedTx.txid, queriedTx, 3600000);
}
} }
queriedTxsCurrentIndex++; queriedTxsCurrentIndex++;

Loading…
Cancel
Save