deprecation warnings

This commit is contained in:
Alexander Strizhakov 2020-09-07 19:04:16 +03:00
parent 696bf09433
commit 18d21aed00
No known key found for this signature in database
GPG key ID: 022896A53AEF1381
2 changed files with 96 additions and 6 deletions

View file

@ -56,6 +56,7 @@ def warn do
check_old_mrf_config() check_old_mrf_config()
check_media_proxy_whitelist_config() check_media_proxy_whitelist_config()
check_welcome_message_config() check_welcome_message_config()
check_gun_pool_options()
end end
def check_welcome_message_config do def check_welcome_message_config do
@ -115,4 +116,46 @@ def check_media_proxy_whitelist_config do
""") """)
end end
end end
def check_gun_pool_options do
pool_config = Config.get(:connections_pool)
if timeout = pool_config[:await_up_timeout] do
Logger.warn("""
!!!DEPRECATION WARNING!!!
Your config is using old setting name `await_up_timeout` instead of `connect_timeout`. Setting should work for now, but you are advised to change format to scheme with port to prevent possible issues later.
""")
Config.put(:connections_pool, Keyword.put_new(pool_config, :connect_timeout, timeout))
end
pools_configs = Config.get(:pools)
warning_preface = """
!!!DEPRECATION WARNING!!!
Your config is using old setting name `timeout` instead of `recv_timeout` in pool settings. Setting should work for now, but you are advised to change format to scheme with port to prevent possible issues later.
"""
updated_config =
Enum.reduce(pools_configs, [], fn {pool_name, config}, acc ->
if timeout = config[:timeout] do
Keyword.put(acc, pool_name, Keyword.put_new(config, :recv_timeout, timeout))
else
acc
end
end)
if updated_config != [] do
pool_warnings =
updated_config
|> Keyword.keys()
|> Enum.map(fn pool_name ->
"\n* `:timeout` options in #{pool_name} pool is now `:recv_timeout`"
end)
Logger.warn(Enum.join([warning_preface | pool_warnings]))
Config.put(:pools, updated_config)
end
end
end end

View file

@ -4,12 +4,15 @@ defmodule Pleroma.Config.DeprecationWarningsTest do
import ExUnit.CaptureLog import ExUnit.CaptureLog
alias Pleroma.Config
alias Pleroma.Config.DeprecationWarnings
test "check_old_mrf_config/0" do test "check_old_mrf_config/0" do
clear_config([:instance, :rewrite_policy], Pleroma.Web.ActivityPub.MRF.NoOpPolicy) clear_config([:instance, :rewrite_policy], Pleroma.Web.ActivityPub.MRF.NoOpPolicy)
clear_config([:instance, :mrf_transparency], true) clear_config([:instance, :mrf_transparency], true)
clear_config([:instance, :mrf_transparency_exclusions], []) clear_config([:instance, :mrf_transparency_exclusions], [])
assert capture_log(fn -> Pleroma.Config.DeprecationWarnings.check_old_mrf_config() end) =~ assert capture_log(fn -> DeprecationWarnings.check_old_mrf_config() end) =~
""" """
!!!DEPRECATION WARNING!!! !!!DEPRECATION WARNING!!!
Your config is using old namespaces for MRF configuration. They should work for now, but you are advised to change to new namespaces to prevent possible issues later: Your config is using old namespaces for MRF configuration. They should work for now, but you are advised to change to new namespaces to prevent possible issues later:
@ -44,22 +47,66 @@ test "move_namespace_and_warn/2" do
] ]
assert capture_log(fn -> assert capture_log(fn ->
Pleroma.Config.DeprecationWarnings.move_namespace_and_warn( DeprecationWarnings.move_namespace_and_warn(
config_map, config_map,
"Warning preface" "Warning preface"
) )
end) =~ "Warning preface\n error :key\n error :key2\n error :key3" end) =~ "Warning preface\n error :key\n error :key2\n error :key3"
assert Pleroma.Config.get(new_group1) == 1 assert Config.get(new_group1) == 1
assert Pleroma.Config.get(new_group2) == 2 assert Config.get(new_group2) == 2
assert Pleroma.Config.get(new_group3) == 3 assert Config.get(new_group3) == 3
end end
test "check_media_proxy_whitelist_config/0" do test "check_media_proxy_whitelist_config/0" do
clear_config([:media_proxy, :whitelist], ["https://example.com", "example2.com"]) clear_config([:media_proxy, :whitelist], ["https://example.com", "example2.com"])
assert capture_log(fn -> assert capture_log(fn ->
Pleroma.Config.DeprecationWarnings.check_media_proxy_whitelist_config() DeprecationWarnings.check_media_proxy_whitelist_config()
end) =~ "Your config is using old format (only domain) for MediaProxy whitelist option" end) =~ "Your config is using old format (only domain) for MediaProxy whitelist option"
end end
describe "check_gun_pool_options/0" do
test "await_up_timeout" do
config = Config.get(:connections_pool)
clear_config(:connections_pool, Keyword.put(config, :await_up_timeout, 5_000))
assert capture_log(fn ->
DeprecationWarnings.check_gun_pool_options()
end) =~
"Your config is using old setting name `await_up_timeout` instead of `connect_timeout`"
end
test "pool timeout" do
old_config = [
federation: [
size: 50,
max_waiting: 10,
timeout: 10_000
],
media: [
size: 50,
max_waiting: 10,
timeout: 10_000
],
upload: [
size: 25,
max_waiting: 5,
timeout: 15_000
],
default: [
size: 10,
max_waiting: 2,
timeout: 5_000
]
]
clear_config(:pools, old_config)
assert capture_log(fn ->
DeprecationWarnings.check_gun_pool_options()
end) =~
"Your config is using old setting name `timeout` instead of `recv_timeout` in pool settings"
end
end
end end