diff --git a/.dialyzer-ignore b/.dialyzer-ignore index 805002050d51..c977d71eb665 100644 --- a/.dialyzer-ignore +++ b/.dialyzer-ignore @@ -44,5 +44,5 @@ lib/explorer/smart_contract/reader.ex:478 lib/indexer/buffered_task.ex:402 lib/indexer/buffered_task.ex:451 -lib/indexer/memory/monitor.ex:161 +lib/indexer/memory/monitor.ex:160 lib/indexer/fetcher/internal_transaction.ex:235 diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d4c5bc319f5..4d2052d6c19b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,6 +94,7 @@ - [#4582](https://github.com/blockscout/blockscout/pull/4582) - Fix NaN input on write contract page ### Chore +- [#5369](https://github.com/blockscout/blockscout/pull/5369) - Manage indexer memory limit - [#4707](https://github.com/blockscout/blockscout/pull/4707) - Top navigation: Move Accounts tab to Tokens - [#4704](https://github.com/blockscout/blockscout/pull/4704) - Update to Erlang/OTP 24 - [#4682](https://github.com/blockscout/blockscout/pull/4682) - Update all possible outdated mix dependencies @@ -1456,4 +1457,4 @@ Reverting of synchronous block counter, implemented in #1848 ### Chore - [https://github.com/blockscout/blockscout/pull/1532](https://github.com/blockscout/blockscout/pull/1532) - Upgrade elixir to 1.8.1 - [https://github.com/blockscout/blockscout/pull/1553](https://github.com/blockscout/blockscout/pull/1553) - Dockerfile: remove 1.7.1 version pin FROM bitwalker/alpine-elixir-phoenix - - [https://github.com/blockscout/blockscout/pull/1465](https://github.com/blockscout/blockscout/pull/1465) - Resolve lodash security alert + - [https://github.com/blockscout/blockscout/pull/1465](https://github.com/blockscout/blockscout/pull/1465) - Resolve lodash security alert \ No newline at end of file diff --git a/apps/block_scout_web/config/config.exs b/apps/block_scout_web/config/config.exs index 09681e90bfd5..180b43a53683 100644 --- a/apps/block_scout_web/config/config.exs +++ b/apps/block_scout_web/config/config.exs @@ -1,9 +1,9 @@ # This file is responsible for configuring your application -# and its dependencies with the aid of the Mix.Config module. +# and its dependencies with the aid of the Config module. # # This configuration file is loaded before any dependency and # is restricted to this project. -use Mix.Config +import Config alias BlockScoutWeb.LoggerBackend @@ -166,8 +166,8 @@ config :block_scout_web, BlockScoutWeb.ApiRouter, config :block_scout_web, BlockScoutWeb.WebRouter, enabled: System.get_env("DISABLE_WEBAPP") != "true" +config :prometheus, BlockScoutWeb.Prometheus.Exporter, path: "/metrics/web" + # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. -import_config "#{Mix.env()}.exs" - -config :prometheus, BlockScoutWeb.Prometheus.Exporter, path: "/metrics/web" +import_config "#{config_env()}.exs" diff --git a/apps/block_scout_web/config/dev.exs b/apps/block_scout_web/config/dev.exs index fa09345154bd..4ef0d32f10bc 100644 --- a/apps/block_scout_web/config/dev.exs +++ b/apps/block_scout_web/config/dev.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # For development, we disable any cache and enable # debugging and code reloading. diff --git a/apps/block_scout_web/config/prod.exs b/apps/block_scout_web/config/prod.exs index 5667f1d9b372..a1666885082d 100644 --- a/apps/block_scout_web/config/prod.exs +++ b/apps/block_scout_web/config/prod.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # For production, we often load configuration from external # sources, such as your system environment. For this reason, diff --git a/apps/block_scout_web/config/test.exs b/apps/block_scout_web/config/test.exs index 8ba16ada6ee7..45c77c8d4758 100644 --- a/apps/block_scout_web/config/test.exs +++ b/apps/block_scout_web/config/test.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :block_scout_web, :sql_sandbox, true diff --git a/apps/ethereum_jsonrpc/config/config.exs b/apps/ethereum_jsonrpc/config/config.exs index e035052292ae..16fd5d26d175 100644 --- a/apps/ethereum_jsonrpc/config/config.exs +++ b/apps/ethereum_jsonrpc/config/config.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :ethereum_jsonrpc, EthereumJSONRPC.RequestCoordinator, rolling_window_opts: [ @@ -46,4 +46,4 @@ config :ethereum_jsonrpc, :internal_transaction_timeout, "900s" # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. -import_config "#{Mix.env()}.exs" +import_config "#{config_env()}.exs" diff --git a/apps/ethereum_jsonrpc/config/dev.exs b/apps/ethereum_jsonrpc/config/dev.exs index 1f81a56cb5e6..da39fcf0802c 100644 --- a/apps/ethereum_jsonrpc/config/dev.exs +++ b/apps/ethereum_jsonrpc/config/dev.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :ethereum_jsonrpc, EthereumJSONRPC.Tracer, env: "dev", disabled?: true diff --git a/apps/ethereum_jsonrpc/config/prod.exs b/apps/ethereum_jsonrpc/config/prod.exs index 4b4d80babb41..f11e4e7a728c 100644 --- a/apps/ethereum_jsonrpc/config/prod.exs +++ b/apps/ethereum_jsonrpc/config/prod.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :ethereum_jsonrpc, EthereumJSONRPC.Tracer, env: "production", disabled?: true diff --git a/apps/ethereum_jsonrpc/config/test.exs b/apps/ethereum_jsonrpc/config/test.exs index 88e4eba302a9..0ed3de28b282 100644 --- a/apps/ethereum_jsonrpc/config/test.exs +++ b/apps/ethereum_jsonrpc/config/test.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :ethereum_jsonrpc, EthereumJSONRPC.RequestCoordinator, rolling_window_opts: [ diff --git a/apps/explorer/config/config.exs b/apps/explorer/config/config.exs index 960fd1bbcd9d..bcd0d8fbcf45 100644 --- a/apps/explorer/config/config.exs +++ b/apps/explorer/config/config.exs @@ -1,9 +1,9 @@ # This file is responsible for configuring your application -# and its dependencies with the aid of the Mix.Config module. +# and its dependencies with the aid of the Config module. # # This configuration file is loaded before any dependency and # is restricted to this project. -use Mix.Config +import Config # General application configuration config :explorer, @@ -293,4 +293,4 @@ config :explorer, Explorer.ThirdPartyIntegrations.Sourcify, # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. -import_config "#{Mix.env()}.exs" +import_config "#{config_env()}.exs" diff --git a/apps/explorer/config/dev.exs b/apps/explorer/config/dev.exs index 437ac253fdc9..de1922a3bc3c 100644 --- a/apps/explorer/config/dev.exs +++ b/apps/explorer/config/dev.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config database = if System.get_env("DATABASE_URL"), do: nil, else: "explorer_dev" hostname = if System.get_env("DATABASE_URL"), do: nil, else: "localhost" diff --git a/apps/explorer/config/dev/arbitrum.exs b/apps/explorer/config/dev/arbitrum.exs index d96839da1d23..05d557c5883f 100644 --- a/apps/explorer/config/dev/arbitrum.exs +++ b/apps/explorer/config/dev/arbitrum.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/dev/besu.exs b/apps/explorer/config/dev/besu.exs index e014ac960cc6..a277e2c68e06 100644 --- a/apps/explorer/config/dev/besu.exs +++ b/apps/explorer/config/dev/besu.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/dev/ganache.exs b/apps/explorer/config/dev/ganache.exs index e6c2214601bd..dcea3bb0490e 100644 --- a/apps/explorer/config/dev/ganache.exs +++ b/apps/explorer/config/dev/ganache.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/dev/geth.exs b/apps/explorer/config/dev/geth.exs index 00f52e54e681..6397c160f88b 100644 --- a/apps/explorer/config/dev/geth.exs +++ b/apps/explorer/config/dev/geth.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/dev/parity.exs b/apps/explorer/config/dev/parity.exs index aebe0dfac123..4008d5eb6d03 100644 --- a/apps/explorer/config/dev/parity.exs +++ b/apps/explorer/config/dev/parity.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/dev/rsk.exs b/apps/explorer/config/dev/rsk.exs index 58af2ee8c0df..2e4a9da4609b 100644 --- a/apps/explorer/config/dev/rsk.exs +++ b/apps/explorer/config/dev/rsk.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/prod.exs b/apps/explorer/config/prod.exs index 7aecaa6d0551..b3d0a1766a97 100644 --- a/apps/explorer/config/prod.exs +++ b/apps/explorer/config/prod.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # Configures the database config :explorer, Explorer.Repo, diff --git a/apps/explorer/config/prod/arbitrum.exs b/apps/explorer/config/prod/arbitrum.exs index 8ef7b06dbba8..3663189d3da1 100644 --- a/apps/explorer/config/prod/arbitrum.exs +++ b/apps/explorer/config/prod/arbitrum.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/prod/besu.exs b/apps/explorer/config/prod/besu.exs index 4b69e1363ea8..8eaada397108 100644 --- a/apps/explorer/config/prod/besu.exs +++ b/apps/explorer/config/prod/besu.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/prod/ganache.exs b/apps/explorer/config/prod/ganache.exs index c0a4b98a02be..694d1ea4d9e5 100644 --- a/apps/explorer/config/prod/ganache.exs +++ b/apps/explorer/config/prod/ganache.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/prod/geth.exs b/apps/explorer/config/prod/geth.exs index 026d745e9b4a..026c06204749 100644 --- a/apps/explorer/config/prod/geth.exs +++ b/apps/explorer/config/prod/geth.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/prod/parity.exs b/apps/explorer/config/prod/parity.exs index 68c1d14fdff9..796a06643388 100644 --- a/apps/explorer/config/prod/parity.exs +++ b/apps/explorer/config/prod/parity.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/prod/rsk.exs b/apps/explorer/config/prod/rsk.exs index fc62a1c43164..316be82dbfd5 100644 --- a/apps/explorer/config/prod/rsk.exs +++ b/apps/explorer/config/prod/rsk.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/test.exs b/apps/explorer/config/test.exs index 3c9039a0ee8f..742991688d7e 100644 --- a/apps/explorer/config/test.exs +++ b/apps/explorer/config/test.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # Lower hashing rounds for faster tests config :bcrypt_elixir, log_rounds: 4 diff --git a/apps/explorer/config/test/arbitrum.exs b/apps/explorer/config/test/arbitrum.exs index 5a910d54171d..2bb92bef1248 100644 --- a/apps/explorer/config/test/arbitrum.exs +++ b/apps/explorer/config/test/arbitrum.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/test/besu.exs b/apps/explorer/config/test/besu.exs index f5c234c7e159..25b35515b4f3 100644 --- a/apps/explorer/config/test/besu.exs +++ b/apps/explorer/config/test/besu.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, transport: EthereumJSONRPC.HTTP, diff --git a/apps/explorer/config/test/ganache.exs b/apps/explorer/config/test/ganache.exs index abb61a063248..a73d451d403c 100644 --- a/apps/explorer/config/test/ganache.exs +++ b/apps/explorer/config/test/ganache.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/test/geth.exs b/apps/explorer/config/test/geth.exs index 73869e31a33b..ba6792324806 100644 --- a/apps/explorer/config/test/geth.exs +++ b/apps/explorer/config/test/geth.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, json_rpc_named_arguments: [ diff --git a/apps/explorer/config/test/parity.exs b/apps/explorer/config/test/parity.exs index 0859de439a60..c0e9464f7e04 100644 --- a/apps/explorer/config/test/parity.exs +++ b/apps/explorer/config/test/parity.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, transport: EthereumJSONRPC.HTTP, diff --git a/apps/explorer/config/test/rsk.exs b/apps/explorer/config/test/rsk.exs index 861525bb0d67..1799a52dc41c 100644 --- a/apps/explorer/config/test/rsk.exs +++ b/apps/explorer/config/test/rsk.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :explorer, transport: EthereumJSONRPC.HTTP, diff --git a/apps/indexer/config/config.exs b/apps/indexer/config/config.exs index 77c0148f2480..5cdb9a96325e 100644 --- a/apps/indexer/config/config.exs +++ b/apps/indexer/config/config.exs @@ -1,8 +1,6 @@ # This file is responsible for configuring your application -# and its dependencies with the aid of the Mix.Config module. -use Mix.Config - -import Bitwise +# and its dependencies with the aid of the Config module. +import Config alias Indexer.LoggerBackend @@ -43,8 +41,6 @@ config :indexer, ecto_repos: [Explorer.Repo], metadata_updater_seconds_interval: String.to_integer(System.get_env("TOKEN_METADATA_UPDATE_INTERVAL") || "#{10 * 60 * 60}"), - # bytes - memory_limit: 1 <<< 30, health_check_port: port || 4001, first_block: System.get_env("FIRST_BLOCK") || "", last_block: System.get_env("LAST_BLOCK") || "", @@ -98,10 +94,6 @@ config :indexer, Indexer.Block.Fetcher, enable_gold_token: true config :indexer, Indexer.Prometheus.MetricsCron, metrics_fetcher_blocks_count: 1000 config :indexer, Indexer.Prometheus.MetricsCron, metrics_cron_interval: System.get_env("METRICS_CRON_INTERVAL") || "2" -# Import environment specific config. This must remain at the bottom -# of this file so it overrides the configuration defined above. -import_config "#{Mix.env()}.exs" - config :prometheus, Indexer.Prometheus.Exporter, path: "/metrics/indexer", format: :text, @@ -121,3 +113,7 @@ config :indexer, Indexer.Fetcher.EmptyBlocksSanitizer.Supervisor, disabled?: System.get_env("INDEXER_DISABLE_EMPTY_BLOCK_SANITIZER", "false") == "true" config :indexer, Indexer.Fetcher.EmptyBlocksSanitizer, batch_size: indexer_empty_blocks_sanitizer_batch_size + +# Import environment specific config. This must remain at the bottom +# of this file so it overrides the configuration defined above. +import_config "#{config_env()}.exs" diff --git a/apps/indexer/config/dev.exs b/apps/indexer/config/dev.exs index 02061549a832..7124cbf5217c 100644 --- a/apps/indexer/config/dev.exs +++ b/apps/indexer/config/dev.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, Indexer.Tracer, env: "dev", disabled?: true diff --git a/apps/indexer/config/dev/arbitrum.exs b/apps/indexer/config/dev/arbitrum.exs index e035ab01f524..664d64cf7b79 100644 --- a/apps/indexer/config/dev/arbitrum.exs +++ b/apps/indexer/config/dev/arbitrum.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/dev/besu.exs b/apps/indexer/config/dev/besu.exs index 995adbfb716b..af23f64718c1 100644 --- a/apps/indexer/config/dev/besu.exs +++ b/apps/indexer/config/dev/besu.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/dev/ganache.exs b/apps/indexer/config/dev/ganache.exs index 229d9d36d903..ee377b5022bc 100644 --- a/apps/indexer/config/dev/ganache.exs +++ b/apps/indexer/config/dev/ganache.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/dev/geth.exs b/apps/indexer/config/dev/geth.exs index a3d39c6ea28b..4d814c24853a 100644 --- a/apps/indexer/config/dev/geth.exs +++ b/apps/indexer/config/dev/geth.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/dev/parity.exs b/apps/indexer/config/dev/parity.exs index bff27731f0e3..b3e14583d753 100644 --- a/apps/indexer/config/dev/parity.exs +++ b/apps/indexer/config/dev/parity.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/dev/rsk.exs b/apps/indexer/config/dev/rsk.exs index 28c19e6c7f89..8132cb7cd6a2 100644 --- a/apps/indexer/config/dev/rsk.exs +++ b/apps/indexer/config/dev/rsk.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/prod.exs b/apps/indexer/config/prod.exs index 76f4bcac52af..0fa704c5a64d 100644 --- a/apps/indexer/config/prod.exs +++ b/apps/indexer/config/prod.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, Indexer.Tracer, env: "production", disabled?: true diff --git a/apps/indexer/config/prod/arbitrum.exs b/apps/indexer/config/prod/arbitrum.exs index b9f23bb45dd3..2d35dd91ad42 100644 --- a/apps/indexer/config/prod/arbitrum.exs +++ b/apps/indexer/config/prod/arbitrum.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/prod/besu.exs b/apps/indexer/config/prod/besu.exs index c6393935fe12..70360adc1a81 100644 --- a/apps/indexer/config/prod/besu.exs +++ b/apps/indexer/config/prod/besu.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/prod/ganache.exs b/apps/indexer/config/prod/ganache.exs index 229d9d36d903..ee377b5022bc 100644 --- a/apps/indexer/config/prod/ganache.exs +++ b/apps/indexer/config/prod/ganache.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/prod/geth.exs b/apps/indexer/config/prod/geth.exs index 85d8563ce989..4de0919c2be4 100644 --- a/apps/indexer/config/prod/geth.exs +++ b/apps/indexer/config/prod/geth.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/prod/parity.exs b/apps/indexer/config/prod/parity.exs index 8dec2934448c..e9dde3481417 100644 --- a/apps/indexer/config/prod/parity.exs +++ b/apps/indexer/config/prod/parity.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/prod/rsk.exs b/apps/indexer/config/prod/rsk.exs index 5d52ad470d0d..daa5f224548d 100644 --- a/apps/indexer/config/prod/rsk.exs +++ b/apps/indexer/config/prod/rsk.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, block_interval: :timer.seconds(5), diff --git a/apps/indexer/config/test.exs b/apps/indexer/config/test.exs index 71dc7da36a6f..76f96d220084 100644 --- a/apps/indexer/config/test.exs +++ b/apps/indexer/config/test.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, Indexer.Tracer, disabled?: false diff --git a/apps/indexer/config/test/arbitrum.exs b/apps/indexer/config/test/arbitrum.exs index e2e51342d122..717b3f730be9 100644 --- a/apps/indexer/config/test/arbitrum.exs +++ b/apps/indexer/config/test/arbitrum.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, json_rpc_named_arguments: [ diff --git a/apps/indexer/config/test/besu.exs b/apps/indexer/config/test/besu.exs index ceaac3a9b486..2d388f17026e 100644 --- a/apps/indexer/config/test/besu.exs +++ b/apps/indexer/config/test/besu.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, json_rpc_named_arguments: [ diff --git a/apps/indexer/config/test/ganache.exs b/apps/indexer/config/test/ganache.exs index b42177915202..9fa1d7e19949 100644 --- a/apps/indexer/config/test/ganache.exs +++ b/apps/indexer/config/test/ganache.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, json_rpc_named_arguments: [ diff --git a/apps/indexer/config/test/geth.exs b/apps/indexer/config/test/geth.exs index 7c4b58b31aa8..c70674d063c2 100644 --- a/apps/indexer/config/test/geth.exs +++ b/apps/indexer/config/test/geth.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, json_rpc_named_arguments: [ diff --git a/apps/indexer/config/test/parity.exs b/apps/indexer/config/test/parity.exs index af3c396e9a90..217587522a62 100644 --- a/apps/indexer/config/test/parity.exs +++ b/apps/indexer/config/test/parity.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, json_rpc_named_arguments: [ diff --git a/apps/indexer/config/test/rsk.exs b/apps/indexer/config/test/rsk.exs index 15e2768fc7de..998275b2dfe4 100644 --- a/apps/indexer/config/test/rsk.exs +++ b/apps/indexer/config/test/rsk.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config config :indexer, json_rpc_named_arguments: [ diff --git a/apps/indexer/lib/indexer/memory/monitor.ex b/apps/indexer/lib/indexer/memory/monitor.ex index 20c8aa702ff1..c45524b9c090 100644 --- a/apps/indexer/lib/indexer/memory/monitor.ex +++ b/apps/indexer/lib/indexer/memory/monitor.ex @@ -10,12 +10,11 @@ defmodule Indexer.Memory.Monitor do require Bitwise require Logger - import Bitwise import Indexer.Logger, only: [process: 1] alias Indexer.Memory.Shrinkable - defstruct limit: 1 <<< 32, + defstruct limit: Application.get_env(:indexer, :memory_limit), timer_interval: :timer.minutes(1), timer_reference: nil, shrinkable_set: MapSet.new() diff --git a/config/config.exs b/config/config.exs index 912e7d738991..e1831647ef9f 100644 --- a/config/config.exs +++ b/config/config.exs @@ -1,13 +1,15 @@ # This file is responsible for configuring your application -# and its dependencies with the aid of the Mix.Config module. -use Mix.Config +# and its dependencies with the aid of the Config module. +import Config # By default, the umbrella project as well as each child # application will require this configuration file, ensuring # they all use the same configuration. While one could # configure all applications here, we prefer to delegate # back to each application for organization purposes. -import_config "../apps/*/config/config.exs" +for config <- "../apps/*/config/config.exs" |> Path.expand(__DIR__) |> Path.wildcard() do + import_config config +end config :phoenix, :json_library, Jason @@ -77,4 +79,4 @@ config :logger_json, :error, # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. -import_config "#{Mix.env()}.exs" +import_config "#{config_env()}.exs" diff --git a/config/dev.exs b/config/dev.exs index 7f8759b57697..21e6c9fd40f7 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # DO NOT make it `:debug` or all Ecto logs will be shown for indexer config :logger, :console, level: :info diff --git a/config/prod.exs b/config/prod.exs index 5503ebbacf83..2175810d041f 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # Do not print debug messages in production diff --git a/config/runtime.exs b/config/runtime.exs new file mode 100644 index 000000000000..7e6dbf247986 --- /dev/null +++ b/config/runtime.exs @@ -0,0 +1,15 @@ +import Config + +import Bitwise + +indexer_memory_limit = + "INDEXER_MEMORY_LIMIT" + |> System.get_env("1") + |> Integer.parse() + |> case do + {integer, ""} -> integer + _ -> 1 + end + +config :indexer, + memory_limit: indexer_memory_limit <<< 32 diff --git a/config/test.exs b/config/test.exs index f641abd24833..49a923e8fcf7 100644 --- a/config/test.exs +++ b/config/test.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # Print only warnings and errors during test diff --git a/docker/Makefile b/docker/Makefile index efba7a554799..e86b43b87d2b 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -333,6 +333,9 @@ endif ifdef DISPLAY_REWARDS BLOCKSCOUT_CONTAINER_PARAMS += -e 'DISPLAY_REWARDS=$(DISPLAY_REWARDS)' endif +ifdef INDEXER_MEMORY_LIMIT + BLOCKSCOUT_CONTAINER_PARAMS += -e 'INDEXER_MEMORY_LIMIT=$(INDEXER_MEMORY_LIMIT)' +endif BLOCKSCOUT_CONTAINNER_PARAMS += -e 'ECTO_USE_SSL=false' diff --git a/mix.exs b/mix.exs index 31f8d5244a06..d643b5a655eb 100644 --- a/mix.exs +++ b/mix.exs @@ -7,7 +7,7 @@ defmodule BlockScout.Mixfile do [ app: :block_scout, aliases: aliases(Mix.env()), - version: "2.0", + version: "4.1.2", apps_path: "apps", deps: deps(), dialyzer: dialyzer(), diff --git a/rel/config.exs b/rel/config.exs index 8227d3662136..eaaa52e36bac 100644 --- a/rel/config.exs +++ b/rel/config.exs @@ -1,3 +1,5 @@ +import Config + # Import all plugins from `rel/plugins` # They can then be used by adding `plugin MyPlugin` to # either an environment, or release definition, where @@ -33,7 +35,7 @@ use Mix.Releases.Config, # This sets the default release built by `mix release` default_release: :default, # This sets the default environment used by `mix release` - default_environment: Mix.env() + default_environment: config_env() # For a full list of config options for both releases # and environments, visit https://hexdocs.pm/distillery/config/distillery.html