From 6f8a738735e98efa17d31214d5bb7b263bb2fef1 Mon Sep 17 00:00:00 2001 From: Ayrat Badykov Date: Mon, 2 Dec 2019 10:36:38 +0300 Subject: [PATCH] fix address sum cache on the first call address sum cache starts task to fetch a value from the DB and return nil --- .../api/rpc/stats_controller_test.exs | 2 ++ .../lib/explorer/chain/cache/address_sum.ex | 28 +++---------------- .../runner/address/token_balances_test.exs | 2 +- 3 files changed, 7 insertions(+), 25 deletions(-) diff --git a/apps/block_scout_web/test/block_scout_web/controllers/api/rpc/stats_controller_test.exs b/apps/block_scout_web/test/block_scout_web/controllers/api/rpc/stats_controller_test.exs index a57db2221b..5025f5db9e 100644 --- a/apps/block_scout_web/test/block_scout_web/controllers/api/rpc/stats_controller_test.exs +++ b/apps/block_scout_web/test/block_scout_web/controllers/api/rpc/stats_controller_test.exs @@ -106,6 +106,8 @@ defmodule BlockScoutWeb.API.RPC.StatsControllerTest do describe "ethsupply" do test "returns total supply from DB", %{conn: conn} do + insert(:address, fetched_coin_balance: 6) + params = %{ "module" => "stats", "action" => "ethsupply" diff --git a/apps/explorer/lib/explorer/chain/cache/address_sum.ex b/apps/explorer/lib/explorer/chain/cache/address_sum.ex index b0d3326312..dcf162cb21 100644 --- a/apps/explorer/lib/explorer/chain/cache/address_sum.ex +++ b/apps/explorer/lib/explorer/chain/cache/address_sum.ex @@ -16,33 +16,13 @@ defmodule Explorer.Chain.Cache.AddressSum do alias Explorer.Chain defp handle_fallback(:sum) do - # This will get the task PID if one exists and launch a new task if not - # See next `handle_fallback` definition - get_async_task() + result = fetch_from_db() - {:return, nil} + {:update, result} end - defp handle_fallback(:async_task) do - # If this gets called it means an async task was requested, but none exists - # so a new one needs to be launched - {:ok, task} = - Task.start(fn -> - try do - result = Chain.fetch_sum_coin_total_supply() - - set_sum(result) - rescue - e -> - Logger.debug([ - "Coudn't update address sum test #{inspect(e)}" - ]) - end - - set_async_task(nil) - end) - - {:update, task} + defp fetch_from_db do + Chain.fetch_sum_coin_total_supply() end # By setting this as a `callback` an async task will be started each time the diff --git a/apps/explorer/test/explorer/chain/import/runner/address/token_balances_test.exs b/apps/explorer/test/explorer/chain/import/runner/address/token_balances_test.exs index a40cd8599e..a35fbcc578 100644 --- a/apps/explorer/test/explorer/chain/import/runner/address/token_balances_test.exs +++ b/apps/explorer/test/explorer/chain/import/runner/address/token_balances_test.exs @@ -93,7 +93,7 @@ defmodule Explorer.Chain.Import.Runner.Address.TokenBalancesTest do value_fetched_at: DateTime.utc_now() } - run_changes(new_changes, options) |> IO.inspect() + run_changes(new_changes, options) end end