diff --git a/CHANGELOG.md b/CHANGELOG.md index da3e1fb897..4403c81c37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - [#1654](https://github.com/poanetwork/blockscout/pull/1654) - add decompiled code tab - [#1661](https://github.com/poanetwork/blockscout/pull/1661) - try to compile smart contract with the latest evm version - [#1665](https://github.com/poanetwork/blockscout/pull/1665) - Add contract verification RPC endpoint. + - [#1706](https://github.com/poanetwork/blockscout/pull/1706) - allow setting update interval for addresses with b ### Fixes @@ -16,9 +17,12 @@ - [#1684](https://github.com/poanetwork/blockscout/pull/1684) - Discard child block with parent_hash not matching hash of imported block - [#1699](https://github.com/poanetwork/blockscout/pull/1699) - use seconds as transaction cache period measure - [#1697](https://github.com/poanetwork/blockscout/pull/1697) - fix failing in rpc if balance is empty - + - [#1711](https://github.com/poanetwork/blockscout/pull/1711) - rescue failing repo in block number cache update + ### Chore + - [#1693](https://github.com/poanetwork/blockscout/pull/1693) - Add a checklist to the PR template + ## 1.3.8-beta diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index 03444118b9..3ac2a5a1d1 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -18,3 +18,20 @@ ## Upgrading *If you have any Incompatible Changes in the above Changelog, outline how users of prior versions can upgrade once this PR lands or when reviewers are testing locally. A common upgrading step is "Database reset and re-index required".* + +## Checklist for your PR + + + + - [ ] I added an entry to `CHANGELOG.md` with this PR + - [ ] If I added new functionality, I added tests covering it. + - [ ] If I fixed a bug, I added a regression test to prevent the bug from silently reappearing again. + - [ ] I checked whether I should update the docs and did so if necessary diff --git a/apps/explorer/config/config.exs b/apps/explorer/config/config.exs index 2bf03ccd6b..dea1be2b46 100644 --- a/apps/explorer/config/config.exs +++ b/apps/explorer/config/config.exs @@ -13,7 +13,18 @@ config :explorer, config :explorer, Explorer.Counters.AverageBlockTime, enabled: true -config :explorer, Explorer.Counters.AddressesWithBalanceCounter, enabled: true, enable_consolidation: true +balances_update_interval = + if System.get_env("ADDRESS_WITH_BALANCES_UPDATE_INTERVAL") do + case Integer.parse(System.get_env("ADDRESS_WITH_BALANCES_UPDATE_INTERVAL")) do + {integer, ""} -> integer + _ -> nil + end + end + +config :explorer, Explorer.Counters.AddressesWithBalanceCounter, + enabled: true, + enable_consolidation: true, + update_interval_in_seconds: balances_update_interval || 30 * 60 config :explorer, Explorer.ExchangeRates, enabled: true, store: :ets diff --git a/apps/explorer/lib/explorer/chain/block_number_cache.ex b/apps/explorer/lib/explorer/chain/block_number_cache.ex index e4e6219ebf..28d8d83e9c 100644 --- a/apps/explorer/lib/explorer/chain/block_number_cache.ex +++ b/apps/explorer/lib/explorer/chain/block_number_cache.ex @@ -61,7 +61,7 @@ defmodule Explorer.Chain.BlockNumberCache do defp update_cache do current_time = current_time() - {min, max} = Chain.fetch_min_and_max_block_numbers() + {min, max} = min_and_max_from_db() tuple = {min, max, current_time} :ets.insert(@tab, {@key, tuple}) @@ -85,6 +85,13 @@ defmodule Explorer.Chain.BlockNumberCache do cache_period end + defp min_and_max_from_db do + Chain.fetch_min_and_max_block_numbers() + rescue + _e -> + {0, 0} + end + defp current_time do utc_now = DateTime.utc_now() diff --git a/apps/explorer/lib/explorer/counters/addresses_with_balance_counter.ex b/apps/explorer/lib/explorer/counters/addresses_with_balance_counter.ex index adbeb6e6f2..3a03a7bcd5 100644 --- a/apps/explorer/lib/explorer/counters/addresses_with_balance_counter.ex +++ b/apps/explorer/lib/explorer/counters/addresses_with_balance_counter.ex @@ -29,6 +29,8 @@ defmodule Explorer.Counters.AddressesWithBalanceCounter do config = Application.get_env(:explorer, Explorer.Counters.AddressesWithBalanceCounter) @enable_consolidation Keyword.get(config, :enable_consolidation) + @update_interval_in_seconds Keyword.get(config, :update_interval_in_seconds) + @doc """ Starts a process to periodically update the counter of the token holders. """ @@ -62,7 +64,7 @@ defmodule Explorer.Counters.AddressesWithBalanceCounter do defp schedule_next_consolidation do if enable_consolidation?() do - Process.send_after(self(), :consolidate, :timer.minutes(30)) + Process.send_after(self(), :consolidate, :timer.seconds(@update_interval_in_seconds)) end end diff --git a/apps/indexer/lib/indexer/address_extraction.ex b/apps/indexer/lib/indexer/address_extraction.ex index 0a4046a714..5fba0da10c 100644 --- a/apps/indexer/lib/indexer/address_extraction.ex +++ b/apps/indexer/lib/indexer/address_extraction.ex @@ -86,8 +86,7 @@ defmodule Indexer.AddressExtraction do transactions: [ [ %{from: :block_number, to: :fetched_coin_balance_block_number}, - %{from: :created_contract_address_hash, to: :hash}, - %{from: :input, to: :contract_code} + %{from: :created_contract_address_hash, to: :hash} ], [ %{from: :block_number, to: :fetched_coin_balance_block_number},