From 8b08096436c38562fab287e0cd04a3e57dd92ab0 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Tue, 19 Feb 2019 21:31:27 +0000 Subject: [PATCH 1/3] logging: improve visibility into ISE errors --- lib/pleroma/web/views/error_view.ex | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/views/error_view.ex b/lib/pleroma/web/views/error_view.ex index 86a1744b7..aefc844fd 100644 --- a/lib/pleroma/web/views/error_view.ex +++ b/lib/pleroma/web/views/error_view.ex @@ -4,13 +4,16 @@ defmodule Pleroma.Web.ErrorView do use Pleroma.Web, :view + require Logger def render("404.json", _assigns) do %{errors: %{detail: "Page not found"}} end - def render("500.json", _assigns) do - %{errors: %{detail: "Internal server error"}} + def render("500.json", assigns) do + Logger.error("Internal server error: #{inspect(assigns[:reason])}") + + %{errors: %{detail: "Internal server error", reason: inspect(assigns[:reason])}} end # In case no render clause matches or no From 3ee77e95b2496b253ebd37a24dce7fdfa7a9c550 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Wed, 20 Feb 2019 17:23:05 +0000 Subject: [PATCH 2/3] tests: fix tests --- test/web/views/error_view_test.exs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/test/web/views/error_view_test.exs b/test/web/views/error_view_test.exs index 16a0c8cef..d529fd2c3 100644 --- a/test/web/views/error_view_test.exs +++ b/test/web/views/error_view_test.exs @@ -14,11 +14,16 @@ test "renders 404.json" do test "render 500.json" do assert render(Pleroma.Web.ErrorView, "500.json", []) == - %{errors: %{detail: "Internal server error"}} + %{errors: %{detail: "Internal server error", reason: "nil"}} end test "render any other" do assert render(Pleroma.Web.ErrorView, "505.json", []) == - %{errors: %{detail: "Internal server error"}} + %{errors: %{detail: "Internal server error", reason: "nil"}} + end + + test "render 500.json with reason" do + assert render(Pleroma.Web.ErrorView, "500.json", reason: "test reason") == + %{errors: %{detail: "Internal server error", reason: "\"test reason\""}} end end From 22e2ed235d9e7ebaab313462d0d0a9fa040cd44f Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Wed, 20 Feb 2019 17:36:19 +0000 Subject: [PATCH 3/3] logging: only return ISE reasons in API responses when in dev or test mode --- lib/pleroma/web/views/error_view.ex | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/views/error_view.ex b/lib/pleroma/web/views/error_view.ex index aefc844fd..f4c04131c 100644 --- a/lib/pleroma/web/views/error_view.ex +++ b/lib/pleroma/web/views/error_view.ex @@ -13,7 +13,11 @@ def render("404.json", _assigns) do def render("500.json", assigns) do Logger.error("Internal server error: #{inspect(assigns[:reason])}") - %{errors: %{detail: "Internal server error", reason: inspect(assigns[:reason])}} + if Mix.env() != :prod do + %{errors: %{detail: "Internal server error", reason: inspect(assigns[:reason])}} + else + %{errors: %{detail: "Internal server error"}} + end end # In case no render clause matches or no