fix stale balance bug

This commit is contained in:
Josh Harvey 2016-05-29 19:28:00 +03:00
parent 4eff3eb9d2
commit 6c30c5e35e
2 changed files with 14 additions and 19 deletions

View file

@ -376,7 +376,8 @@ exports.fiatBalance = function fiatBalance (cryptoCode) {
if (!deviceRate) return null if (!deviceRate) return null
var rawRate = deviceRate.rates.ask var rawRate = deviceRate.rates.ask
var commission = cachedConfig.exchanges.settings.commission var commission = cachedConfig.exchanges.settings.commission
var lastBalance = lastBalances[cryptoCode] var lastBalanceRec = lastBalances[cryptoCode]
var lastBalance = lastBalanceRec.balance
if (!rawRate || !lastBalance) return null if (!rawRate || !lastBalance) return null
@ -390,7 +391,7 @@ exports.fiatBalance = function fiatBalance (cryptoCode) {
var unitScale = new BigNumber(10).pow(coins[cryptoCode].unitScale) var unitScale = new BigNumber(10).pow(coins[cryptoCode].unitScale)
var fiatTransferBalance = lastBalance.div(unitScale).times(rate).div(lowBalanceMargin) var fiatTransferBalance = lastBalance.div(unitScale).times(rate).div(lowBalanceMargin)
return fiatTransferBalance.round(3).toNumber() return {timestamp: lastBalanceRec.timestamp, balance: fiatTransferBalance.round(3).toNumber()}
} }
function processTxStatus (tx) { function processTxStatus (tx) {
@ -508,8 +509,7 @@ function pollBalance (cryptoCode, cb) {
} }
logger.debug('[%s] Balance update: %j', cryptoCode, balance) logger.debug('[%s] Balance update: %j', cryptoCode, balance)
balance.timestamp = Date.now() lastBalances[cryptoCode] = {timestamp: Date.now(), balance: new BigNumber(balance[cryptoCode])}
lastBalances[cryptoCode] = new BigNumber(balance[cryptoCode])
return cb && cb(null, lastBalances) return cb && cb(null, lastBalances)
}) })
@ -557,12 +557,6 @@ exports.getDeviceRate = function getDeviceRate (cryptoCode) {
return lastRate[deviceCurrency] return lastRate[deviceCurrency]
} }
exports.getBalance = function getBalance (cryptoCode) {
var lastBalance = lastBalances[cryptoCode]
return lastBalance
}
/* /*
* Trader functions * Trader functions
*/ */
@ -709,9 +703,10 @@ function checkBalances () {
var balances = [] var balances = []
cryptoCodes.forEach(function (cryptoCode) { cryptoCodes.forEach(function (cryptoCode) {
var balance = exports.fiatBalance(cryptoCode) var balanceRec = exports.fiatBalance(cryptoCode)
if (!balance) return if (!balanceRec) return
var rec = {fiatBalance: balance, cryptoCode: cryptoCode, fiatCode: deviceCurrency} var rec = {fiatBalance: balanceRec.balance, cryptoCode: cryptoCode,
fiatCode: deviceCurrency}
balances.push(rec) balances.push(rec)
}) })

View file

@ -13,8 +13,8 @@ module.exports = {
getFingerprint: getFingerprint getFingerprint: getFingerprint
} }
var STALE_TICKER = 10 * 60 * 1000 var STALE_TICKER = 3 * 60 * 1000
var STALE_BALANCE = 10 * 60 * 1000 var STALE_BALANCE = 3 * 60 * 1000
var pids = {} var pids = {}
var reboots = {} var reboots = {}
@ -47,10 +47,10 @@ function buildBalances () {
var _balances = {} var _balances = {}
cryptoCodes.forEach(function (cryptoCode) { cryptoCodes.forEach(function (cryptoCode) {
var balance = plugins.fiatBalance(cryptoCode) var balanceRec = plugins.fiatBalance(cryptoCode)
if (!balance) return logger.warn('No balance for ' + cryptoCode + ' yet') if (!balanceRec) return logger.warn('No balance for ' + cryptoCode + ' yet')
if (Date.now() - balance.timestamp > STALE_BALANCE) return logger.warn('Stale balance for ' + cryptoCode) if (Date.now() - balanceRec.timestamp > STALE_BALANCE) return logger.warn('Stale balance for ' + cryptoCode)
_balances[cryptoCode] = balance _balances[cryptoCode] = balanceRec.balance
}) })
return _balances return _balances