diff --git a/CHANGELOG.md b/CHANGELOG.md index 06169b9e..46ff1884 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -93,7 +93,6 @@ - [#1632](https://github.com/gakonst/ethers-rs/pull/1632) Re-export `H32` from `ethabi`. - [#1634](https://github.com/gakonst/ethers-rs/pull/1634) Derive missing `Clone`, `Copy` and `Debug` impls in ethers-etherscan. - Bytes debug format now displays hex literals [#1658](https://github.com/gakonst/ethers-rs/pull/1658) -- Fix `get_logs_paginated` trying to fetch beyond the latest block ## ethers-contract-abigen diff --git a/ethers-providers/src/log_query.rs b/ethers-providers/src/log_query.rs index ea8c145a..43cf7086 100644 --- a/ethers-providers/src/log_query.rs +++ b/ethers-providers/src/log_query.rs @@ -93,7 +93,7 @@ where // this is okay because we will only enter this state when the filter is // paginatable i.e. from block is set let from_block = self.filter.get_from_block().unwrap(); - let to_block = std::cmp::min(from_block + self.page_size, last_block); + let to_block = from_block + self.page_size; self.from_block = Some(to_block + 1); let filter = self.filter.clone().from_block(from_block).to_block(to_block); @@ -122,7 +122,7 @@ where // load new logs if there are still more pages to go through // can safely assume this will always be set in this state let from_block = self.from_block.unwrap(); - let to_block = std::cmp::min(from_block + self.page_size, self.last_block.unwrap()); + let to_block = from_block + self.page_size; // no more pages to load, and everything is consumed // can safely assume this will always be set in this state diff --git a/ethers-providers/tests/log_query.rs b/ethers-providers/tests/log_query.rs deleted file mode 100644 index 641272c6..00000000 --- a/ethers-providers/tests/log_query.rs +++ /dev/null @@ -1,21 +0,0 @@ -#![cfg(not(target_arch = "wasm32"))] -use ethers_core::{ - types::{Filter, BlockNumber}, - utils::Anvil, -}; -use ethers_providers::{Http, Middleware, Provider, StreamExt}; -use std::convert::TryFrom; - -#[tokio::test] -async fn get_logs_paginated() { - let geth = Anvil::new().block_time(20u64).spawn(); - let provider = Provider::::try_from(geth.endpoint()).unwrap(); - - let filter = Filter::new().from_block(BlockNumber::Latest); - // try to get beyond the number of blocks available - let mut stream = provider.get_logs_paginated(&filter, 10); - let res = stream.next().await; - assert!(res.is_some()); - let log = res.unwrap(); - assert!(log.is_ok()); -}