mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Merge pull request #1971 from MetaMask/SetMaxRetryLimit
Set max retry limit
This commit is contained in:
commit
799c4cb690
@ -3,6 +3,7 @@
|
|||||||
## Current Master
|
## Current Master
|
||||||
|
|
||||||
- Fix nonce calculation bug that would sometimes generate very wrong nonces.
|
- Fix nonce calculation bug that would sometimes generate very wrong nonces.
|
||||||
|
- Give up resubmitting a transaction after 3500 blocks.
|
||||||
|
|
||||||
## 3.9.10 2017-8-23
|
## 3.9.10 2017-8-23
|
||||||
|
|
||||||
|
@ -40,6 +40,10 @@ module.exports = class TransactionController extends EventEmitter {
|
|||||||
err: undefined,
|
err: undefined,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
giveUpOnTransaction: (txId) => {
|
||||||
|
const msg = `Gave up submitting after 3500 blocks un-mined.`
|
||||||
|
this.setTxStatusFailed(txId, msg)
|
||||||
|
},
|
||||||
})
|
})
|
||||||
this.query = new EthQuery(this.provider)
|
this.query = new EthQuery(this.provider)
|
||||||
this.txProviderUtil = new TxProviderUtil(this.provider)
|
this.txProviderUtil = new TxProviderUtil(this.provider)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
const EventEmitter = require('events')
|
const EventEmitter = require('events')
|
||||||
const EthQuery = require('ethjs-query')
|
const EthQuery = require('ethjs-query')
|
||||||
const sufficientBalance = require('./util').sufficientBalance
|
const sufficientBalance = require('./util').sufficientBalance
|
||||||
|
const RETRY_LIMIT = 3500 // Retry 3500 blocks, or about 1 day.
|
||||||
/*
|
/*
|
||||||
|
|
||||||
Utility class for tracking the transactions as they
|
Utility class for tracking the transactions as they
|
||||||
@ -28,6 +29,7 @@ module.exports = class PendingTransactionTracker extends EventEmitter {
|
|||||||
this.getBalance = config.getBalance
|
this.getBalance = config.getBalance
|
||||||
this.getPendingTransactions = config.getPendingTransactions
|
this.getPendingTransactions = config.getPendingTransactions
|
||||||
this.publishTransaction = config.publishTransaction
|
this.publishTransaction = config.publishTransaction
|
||||||
|
this.giveUpOnTransaction = config.giveUpOnTransaction
|
||||||
}
|
}
|
||||||
|
|
||||||
// checks if a signed tx is in a block and
|
// checks if a signed tx is in a block and
|
||||||
@ -100,6 +102,10 @@ module.exports = class PendingTransactionTracker extends EventEmitter {
|
|||||||
if (balance === undefined) return
|
if (balance === undefined) return
|
||||||
if (!('retryCount' in txMeta)) txMeta.retryCount = 0
|
if (!('retryCount' in txMeta)) txMeta.retryCount = 0
|
||||||
|
|
||||||
|
if (txMeta.retryCount > RETRY_LIMIT) {
|
||||||
|
return this.giveUpOnTransaction(txMeta.id)
|
||||||
|
}
|
||||||
|
|
||||||
// if the value of the transaction is greater then the balance, fail.
|
// if the value of the transaction is greater then the balance, fail.
|
||||||
if (!sufficientBalance(txMeta.txParams, balance)) {
|
if (!sufficientBalance(txMeta.txParams, balance)) {
|
||||||
const insufficientFundsError = new Error('Insufficient balance during rebroadcast.')
|
const insufficientFundsError = new Error('Insufficient balance during rebroadcast.')
|
||||||
|
Loading…
Reference in New Issue
Block a user