From 1ecde670783fa230a19264800ffaad73e2071a84 Mon Sep 17 00:00:00 2001 From: Ryo Onodera Date: Wed, 31 Mar 2021 13:10:14 +0900 Subject: [PATCH] docs: explain reasons of non-obvious disableCache (#16246) --- web3.js/src/connection.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/web3.js/src/connection.ts b/web3.js/src/connection.ts index 7ae7c90b73..8419d3f53f 100644 --- a/web3.js/src/connection.ts +++ b/web3.js/src/connection.ts @@ -2808,16 +2808,20 @@ export class Connection { throw new Error('!signature'); // should never happen } - // If the signature of this transaction has not been seen before with the - // current recentBlockhash, all done. const signature = transaction.signature.toString('base64'); if ( !this._blockhashInfo.simulatedSignatures.includes(signature) && !this._blockhashInfo.transactionSignatures.includes(signature) ) { + // The signature of this transaction has not been seen before with the + // current recentBlockhash, all done. Let's break this._blockhashInfo.simulatedSignatures.push(signature); break; } else { + // This transaction would be treated as duplicate (its derived signature + // matched to one of already recorded signatures). + // So, we must fetch a new blockhash for a different signature by disabling + // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS). disableCache = true; } } @@ -2863,13 +2867,17 @@ export class Connection { throw new Error('!signature'); // should never happen } - // If the signature of this transaction has not been seen before with the - // current recentBlockhash, all done. const signature = transaction.signature.toString('base64'); if (!this._blockhashInfo.transactionSignatures.includes(signature)) { + // The signature of this transaction has not been seen before with the + // current recentBlockhash, all done. Let's break this._blockhashInfo.transactionSignatures.push(signature); break; } else { + // This transaction would be treated as duplicate (its derived signature + // matched to one of already recorded signatures). + // So, we must fetch a new blockhash for a different signature by disabling + // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS). disableCache = true; } }