aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/controllers
diff options
context:
space:
mode:
authorkumavis <aaron@kumavis.me>2018-06-13 02:51:35 +0800
committerkumavis <aaron@kumavis.me>2018-06-13 02:51:35 +0800
commit177cc3f280f26c5fb4cfc1b934e95b9d16def1a6 (patch)
tree0fa8848870d2db943f23efa21973cf30808fd33d /app/scripts/controllers
parent8f93e341750b99b8ff0e66f2a6831799c7d9ab58 (diff)
downloadtangerine-wallet-browser-177cc3f280f26c5fb4cfc1b934e95b9d16def1a6.tar
tangerine-wallet-browser-177cc3f280f26c5fb4cfc1b934e95b9d16def1a6.tar.gz
tangerine-wallet-browser-177cc3f280f26c5fb4cfc1b934e95b9d16def1a6.tar.bz2
tangerine-wallet-browser-177cc3f280f26c5fb4cfc1b934e95b9d16def1a6.tar.lz
tangerine-wallet-browser-177cc3f280f26c5fb4cfc1b934e95b9d16def1a6.tar.xz
tangerine-wallet-browser-177cc3f280f26c5fb4cfc1b934e95b9d16def1a6.tar.zst
tangerine-wallet-browser-177cc3f280f26c5fb4cfc1b934e95b9d16def1a6.zip
metamask - ensure all nonce locks are released
Diffstat (limited to 'app/scripts/controllers')
-rw-r--r--app/scripts/controllers/transactions/index.js7
-rw-r--r--app/scripts/controllers/transactions/nonce-tracker.js4
-rw-r--r--app/scripts/controllers/transactions/pending-tx-tracker.js4
3 files changed, 10 insertions, 5 deletions
diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js
index b53947e27..339052543 100644
--- a/app/scripts/controllers/transactions/index.js
+++ b/app/scripts/controllers/transactions/index.js
@@ -264,7 +264,12 @@ class TransactionController extends EventEmitter {
// must set transaction to submitted/failed before releasing lock
nonceLock.releaseLock()
} catch (err) {
- this.txStateManager.setTxStatusFailed(txId, err)
+ // this is try-catch wrapped so that we can guarantee that the nonceLock is released
+ try {
+ this.txStateManager.setTxStatusFailed(txId, err)
+ } catch (err) {
+ console.error(err)
+ }
// must set transaction to submitted/failed before releasing lock
if (nonceLock) nonceLock.releaseLock()
// continue with error chain
diff --git a/app/scripts/controllers/transactions/nonce-tracker.js b/app/scripts/controllers/transactions/nonce-tracker.js
index ca340bae4..35ca08d6c 100644
--- a/app/scripts/controllers/transactions/nonce-tracker.js
+++ b/app/scripts/controllers/transactions/nonce-tracker.js
@@ -91,8 +91,8 @@ class NonceTracker {
async _globalMutexFree () {
const globalMutex = this._lookupMutex('global')
- const release = await globalMutex.acquire()
- release()
+ const releaseLock = await globalMutex.acquire()
+ releaseLock()
}
async _takeMutex (lockId) {
diff --git a/app/scripts/controllers/transactions/pending-tx-tracker.js b/app/scripts/controllers/transactions/pending-tx-tracker.js
index 6e2fcb40b..4e41cdaf8 100644
--- a/app/scripts/controllers/transactions/pending-tx-tracker.js
+++ b/app/scripts/controllers/transactions/pending-tx-tracker.js
@@ -196,14 +196,14 @@ class PendingTransactionTracker extends EventEmitter {
async _checkPendingTxs () {
const signedTxList = this.getPendingTransactions()
// in order to keep the nonceTracker accurate we block it while updating pending transactions
- const nonceGlobalLock = await this.nonceTracker.getGlobalLock()
+ const { releaseLock } = await this.nonceTracker.getGlobalLock()
try {
await Promise.all(signedTxList.map((txMeta) => this._checkPendingTx(txMeta)))
} catch (err) {
log.error('PendingTransactionWatcher - Error updating pending transactions')
log.error(err)
}
- nonceGlobalLock.releaseLock()
+ releaseLock()
}
/**