|
|
@ -92,66 +92,67 @@ defmodule Indexer.Supervisor do |
|
|
|
|
|
|
|
|
|
|
|
realtime_subscribe_named_arguments = realtime_overrides[:subscribe_named_arguments] || subscribe_named_arguments |
|
|
|
realtime_subscribe_named_arguments = realtime_overrides[:subscribe_named_arguments] || subscribe_named_arguments |
|
|
|
|
|
|
|
|
|
|
|
realtime_fetcher = |
|
|
|
basic_fetchers = |
|
|
|
if Application.get_env(:indexer, Realtime.Supervisor)[:enabled] do |
|
|
|
|
|
|
|
[ |
|
|
|
|
|
|
|
{Realtime.Supervisor, |
|
|
|
|
|
|
|
[ |
|
|
|
|
|
|
|
%{block_fetcher: realtime_block_fetcher, subscribe_named_arguments: realtime_subscribe_named_arguments}, |
|
|
|
|
|
|
|
[name: Realtime.Supervisor] |
|
|
|
|
|
|
|
]} |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
[] |
|
|
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
basic_fetchers = [ |
|
|
|
|
|
|
|
# Root fetchers |
|
|
|
|
|
|
|
{Catchup.Supervisor, |
|
|
|
|
|
|
|
[ |
|
|
|
|
|
|
|
%{block_fetcher: block_fetcher, block_interval: block_interval, memory_monitor: memory_monitor}, |
|
|
|
|
|
|
|
[name: Catchup.Supervisor] |
|
|
|
|
|
|
|
]}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Async catchup fetchers |
|
|
|
|
|
|
|
{UncleBlock.Supervisor, [[block_fetcher: block_fetcher, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{BlockReward.Supervisor, [[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{InternalTransaction.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{CoinBalance.Supervisor, [[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{Token.Supervisor, [[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{TokenInstance.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{ContractCode.Supervisor, [[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{TokenBalance.Supervisor, [[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{TokenUpdater.Supervisor, [[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{ReplacedTransaction.Supervisor, [[memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Out-of-band fetchers |
|
|
|
|
|
|
|
{CoinBalanceOnDemand.Supervisor, [json_rpc_named_arguments]}, |
|
|
|
|
|
|
|
{EmptyBlocksSanitizer.Supervisor, [[json_rpc_named_arguments: json_rpc_named_arguments]]}, |
|
|
|
|
|
|
|
{TokenTotalSupplyOnDemand.Supervisor, [json_rpc_named_arguments]}, |
|
|
|
|
|
|
|
{PendingTransactionsSanitizer, [[json_rpc_named_arguments: json_rpc_named_arguments]]}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Temporary workers |
|
|
|
|
|
|
|
{UncatalogedTokenTransfers.Supervisor, [[]]}, |
|
|
|
|
|
|
|
{UnclesWithoutIndex.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{BlocksTransactionsMismatch.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{PendingOpsCleaner, [[], []]} |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
all_fetchers = |
|
|
|
|
|
|
|
[ |
|
|
|
[ |
|
|
|
{PendingTransaction.Supervisor, [[json_rpc_named_arguments: json_rpc_named_arguments]]} |
|
|
|
# Root fetchers |
|
|
|
] ++ |
|
|
|
{PendingTransaction.Supervisor, [[json_rpc_named_arguments: json_rpc_named_arguments]]}, |
|
|
|
realtime_fetcher ++ |
|
|
|
configure(Realtime.Supervisor, [ |
|
|
|
basic_fetchers |
|
|
|
%{block_fetcher: realtime_block_fetcher, subscribe_named_arguments: realtime_subscribe_named_arguments}, |
|
|
|
|
|
|
|
[name: Realtime.Supervisor] |
|
|
|
|
|
|
|
]), |
|
|
|
|
|
|
|
{Catchup.Supervisor, |
|
|
|
|
|
|
|
[ |
|
|
|
|
|
|
|
%{block_fetcher: block_fetcher, block_interval: block_interval, memory_monitor: memory_monitor}, |
|
|
|
|
|
|
|
[name: Catchup.Supervisor] |
|
|
|
|
|
|
|
]}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Async catchup fetchers |
|
|
|
|
|
|
|
{UncleBlock.Supervisor, [[block_fetcher: block_fetcher, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{BlockReward.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{InternalTransaction.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{CoinBalance.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{Token.Supervisor, [[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
configure(TokenInstance.Supervisor, [ |
|
|
|
|
|
|
|
[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor] |
|
|
|
|
|
|
|
]), |
|
|
|
|
|
|
|
{ContractCode.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{TokenBalance.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{TokenUpdater.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{ReplacedTransaction.Supervisor, [[memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Out-of-band fetchers |
|
|
|
|
|
|
|
{CoinBalanceOnDemand.Supervisor, [json_rpc_named_arguments]}, |
|
|
|
|
|
|
|
{EmptyBlocksSanitizer.Supervisor, [[json_rpc_named_arguments: json_rpc_named_arguments]]}, |
|
|
|
|
|
|
|
{TokenTotalSupplyOnDemand.Supervisor, [json_rpc_named_arguments]}, |
|
|
|
|
|
|
|
{PendingTransactionsSanitizer, [[json_rpc_named_arguments: json_rpc_named_arguments]]}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Temporary workers |
|
|
|
|
|
|
|
{UncatalogedTokenTransfers.Supervisor, [[]]}, |
|
|
|
|
|
|
|
{UnclesWithoutIndex.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{BlocksTransactionsMismatch.Supervisor, |
|
|
|
|
|
|
|
[[json_rpc_named_arguments: json_rpc_named_arguments, memory_monitor: memory_monitor]]}, |
|
|
|
|
|
|
|
{PendingOpsCleaner, [[], []]} |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
|> List.flatten() |
|
|
|
|
|
|
|
|
|
|
|
Supervisor.init( |
|
|
|
Supervisor.init( |
|
|
|
all_fetchers, |
|
|
|
basic_fetchers, |
|
|
|
strategy: :one_for_one |
|
|
|
strategy: :one_for_one |
|
|
|
) |
|
|
|
) |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
defp configure(process, opts \\ []) do |
|
|
|
|
|
|
|
if Application.get_env(:indexer, process)[:enabled] do |
|
|
|
|
|
|
|
[{process, opts}] |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
[] |
|
|
|
|
|
|
|
end |
|
|
|
|
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|