Merge pull request #2121 from MetaMask/i2115-DoNotFailOnRetries

Do not mark a retry tx failed that has been broadcast successfully
feature/default_network_editable
Frankie 7 years ago committed by GitHub
commit 7094d96529
  1. 2
      CHANGELOG.md
  2. 12
      app/scripts/lib/pending-tx-tracker.js

@ -2,6 +2,8 @@
## Current Master ## Current Master
- Fix bug that would sometimes display transactions as failed that could be successfully mined.
## 3.10.1 2017-9-18 ## 3.10.1 2017-9-18
- Add ability to export private keys as a file. - Add ability to export private keys as a file.

@ -76,6 +76,9 @@ module.exports = class PendingTransactionTracker extends EventEmitter {
Dont marked as failed if the error is a "known" transaction warning Dont marked as failed if the error is a "known" transaction warning
"there is already a transaction with the same sender-nonce "there is already a transaction with the same sender-nonce
but higher/same gas price" but higher/same gas price"
Also don't mark as failed if it has ever been broadcast successfully.
A successful broadcast means it may still be mined.
*/ */
const errorMessage = err.message.toLowerCase() const errorMessage = err.message.toLowerCase()
const isKnownTx = ( const isKnownTx = (
@ -88,6 +91,7 @@ module.exports = class PendingTransactionTracker extends EventEmitter {
// other // other
|| errorMessage.includes('gateway timeout') || errorMessage.includes('gateway timeout')
|| errorMessage.includes('nonce too low') || errorMessage.includes('nonce too low')
|| txMeta.retryCount > 1
) )
// ignore resubmit warnings, return early // ignore resubmit warnings, return early
if (isKnownTx) return if (isKnownTx) return
@ -117,10 +121,12 @@ module.exports = class PendingTransactionTracker extends EventEmitter {
// Only auto-submit already-signed txs: // Only auto-submit already-signed txs:
if (!('rawTx' in txMeta)) return if (!('rawTx' in txMeta)) return
// Increment a try counter.
txMeta.retryCount++
const rawTx = txMeta.rawTx const rawTx = txMeta.rawTx
return await this.publishTransaction(rawTx) const txHash = await this.publishTransaction(rawTx)
// Increment successful tries:
txMeta.retryCount++
return txHash
} }
async _checkPendingTx (txMeta) { async _checkPendingTx (txMeta) {

Loading…
Cancel
Save