diff --git a/src/data_sources/events/web3.ts b/src/data_sources/events/web3.ts index 330f65fa..7412f51f 100644 --- a/src/data_sources/events/web3.ts +++ b/src/data_sources/events/web3.ts @@ -175,7 +175,7 @@ export class Web3Source { } return block; } catch (err) { - return Promise.reject(new Error(`Encountered error while fetching block ${blockNumber}: ${err}`)); + throw new Error(`Encountered error while fetching block ${blockNumber}: ${err}`); } } diff --git a/src/scripts/pull_and_save_tokens_from_transfers.ts b/src/scripts/pull_and_save_tokens_from_transfers.ts index ab3fff82..5989a3a7 100644 --- a/src/scripts/pull_and_save_tokens_from_transfers.ts +++ b/src/scripts/pull_and_save_tokens_from_transfers.ts @@ -43,8 +43,13 @@ export class TokensFromTransfersScraper { const endBlockNumber = Math.min(currentBlock.number!, startBlockNumber + (MAX_BLOCKS_TO_SEARCH - 1)); logger.info(`Searching for ${eventName} between blocks ${startBlockNumber} and ${endBlockNumber}`); - const endBlockHash = (await web3Source.getBlockInfoAsync(endBlockNumber)).hash; - + let endBlockHash = null; + try { + endBlockHash = (await web3Source.getBlockInfoAsync(endBlockNumber)).hash; + } catch (err) { + logger.error(`${err}, trying next time`); + return; + } if (endBlockHash === null) { logger.error(`Unstable last block for ${eventName}, trying next time`); return; diff --git a/src/scripts/utils/event_abi_utils.ts b/src/scripts/utils/event_abi_utils.ts index e3c93f1a..7a3773f1 100644 --- a/src/scripts/utils/event_abi_utils.ts +++ b/src/scripts/utils/event_abi_utils.ts @@ -45,24 +45,36 @@ export class PullAndSaveEventsByTopic { deleteOptions: DeleteOptions, tokenMetadataMap: TokenMetadataMap = null, ): Promise { - const { startBlockNumber, hasLatestBlockChanged } = await getStartBlockAsync( - eventName, - connection, - web3Source, - currentBlock, - startSearchBlock, - ); - + let startBlockResponse; + try { + startBlockResponse = await getStartBlockAsync( + eventName, + connection, + web3Source, + currentBlock, + startSearchBlock, + ); + } catch (err) { + logger.error(`${err}, trying next time`); + return []; + } + const { startBlockNumber, hasLatestBlockChanged } = startBlockResponse; if (!hasLatestBlockChanged) { logger.debug(`No new blocks to scan for ${eventName}, skipping`); return []; } const endBlockNumber = Math.min(currentBlock.number!, startBlockNumber + (MAX_BLOCKS_TO_SEARCH - 1)); - const endBlockHash = - endBlockNumber === currentBlock.number - ? currentBlock.hash - : (await web3Source.getBlockInfoAsync(endBlockNumber)).hash; + let endBlockHash: string | null = ''; + try { + endBlockHash = + endBlockNumber === currentBlock.number + ? currentBlock.hash + : (await web3Source.getBlockInfoAsync(endBlockNumber)).hash; + } catch (err) { + logger.error(`${err}, trying next time`); + return []; + } return ( await this._getParseSaveEventsByTopic( @@ -108,7 +120,14 @@ export class PullAndSaveEventsByTopic { currentBlock.number! - MAX_BLOCKS_REORG, startBlockNumber + (MAX_BLOCKS_TO_SEARCH - 1), ); - const endBlockHash = (await web3Source.getBlockInfoAsync(endBlockNumber)).hash; + + let endBlockHash = null; + try { + endBlockHash = (await web3Source.getBlockInfoAsync(endBlockNumber)).hash; + } catch (err) { + logger.error(`${err}, trying next time`); + return { transactionHashes: [], startBlockNumber: null, endBlockNumber: null }; + } return this._getParseSaveEventsByTopic( connection, diff --git a/src/scripts/utils/event_utils.ts b/src/scripts/utils/event_utils.ts index 6727db2c..5fd2fd18 100644 --- a/src/scripts/utils/event_utils.ts +++ b/src/scripts/utils/event_utils.ts @@ -40,8 +40,13 @@ export class PullAndSaveEvents { logger.info(`Searching for ${eventName} between blocks ${startBlockNumber} and ${endBlock}`); - const endBlockHash = (await web3Source.getBlockInfoAsync(endBlock)).hash; - + let endBlockHash = null; + try { + endBlockHash = (await web3Source.getBlockInfoAsync(endBlock)).hash; + } catch (err) { + logger.error(`${err}, trying next time`); + return; + } if (endBlockHash === null) { logger.error(`Unstable last block for ${eventName}, trying next time`); return;