summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2022-01-24 16:48:37 -0600
committerAlex Gleason <alex@alexgleason.me>2022-01-24 16:48:37 -0600
commit1cb8326cfb306b54b36427207ec1372e5593d14e (patch)
treea7a74ea4b093763f576ff5e1f4f4f05a824200b7
parent0571f8f553c27243c8cc22f16caf4ea6074c6366 (diff)
parent19d557c870c3ec43dd3b0ee7ea85259a89bd9a80 (diff)
Merge remote-tracking branch 'origin/develop' into quote-post
-rw-r--r--config/config.exs9
-rw-r--r--lib/pleroma/telemetry/logger.ex70
-rw-r--r--lib/pleroma/user.ex1
-rw-r--r--test/pleroma/user_test.exs11
4 files changed, 14 insertions, 77 deletions
diff --git a/config/config.exs b/config/config.exs
index 99085230a..f80674b04 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -149,8 +149,6 @@ config :pleroma, Pleroma.Web.Endpoint,
]
# Configures Elixir's Logger
-config :logger, truncate: 65536
-
config :logger, :console,
level: :debug,
format: "\n$time $metadata[$level] $message\n",
@@ -859,13 +857,6 @@ config :pleroma, ConcurrentLimiter, [
{Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy, [max_running: 5, max_waiting: 5]}
]
-config :pleroma, :telemetry,
- slow_queries_logging: [
- enabled: false,
- min_duration: 500_000,
- exclude_sources: [nil, "oban_jobs"]
- ]
-
# 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"
diff --git a/lib/pleroma/telemetry/logger.ex b/lib/pleroma/telemetry/logger.ex
index 35e245237..10165c1b2 100644
--- a/lib/pleroma/telemetry/logger.ex
+++ b/lib/pleroma/telemetry/logger.ex
@@ -12,16 +12,10 @@ defmodule Pleroma.Telemetry.Logger do
[:pleroma, :connection_pool, :reclaim, :stop],
[:pleroma, :connection_pool, :provision_failure],
[:pleroma, :connection_pool, :client, :dead],
- [:pleroma, :connection_pool, :client, :add],
- [:pleroma, :repo, :query]
+ [:pleroma, :connection_pool, :client, :add]
]
def attach do
- :telemetry.attach_many(
- "pleroma-logger",
- @events,
- &Pleroma.Telemetry.Logger.handle_event/4,
- []
- )
+ :telemetry.attach_many("pleroma-logger", @events, &handle_event/4, [])
end
# Passing anonymous functions instead of strings to logger is intentional,
@@ -93,64 +87,4 @@ defmodule Pleroma.Telemetry.Logger do
end
def handle_event([:pleroma, :connection_pool, :client, :add], _, _, _), do: :ok
-
- def handle_event(
- [:pleroma, :repo, :query] = _name,
- %{query_time: query_time} = measurements,
- %{source: source} = metadata,
- config
- ) do
- logging_config = Pleroma.Config.get([:telemetry, :slow_queries_logging], [])
-
- if logging_config[:enabled] &&
- logging_config[:min_duration] &&
- query_time > logging_config[:min_duration] and
- (is_nil(logging_config[:exclude_sources]) or
- source not in logging_config[:exclude_sources]) do
- log_slow_query(measurements, metadata, config)
- else
- :ok
- end
- end
-
- defp log_slow_query(
- %{query_time: query_time} = _measurements,
- %{source: _source, query: query, params: query_params, repo: repo} = _metadata,
- _config
- ) do
- sql_explain =
- with {:ok, %{rows: explain_result_rows}} <-
- repo.query("EXPLAIN " <> query, query_params, log: false) do
- Enum.map_join(explain_result_rows, "\n", & &1)
- end
-
- {:current_stacktrace, stacktrace} = Process.info(self(), :current_stacktrace)
-
- pleroma_stacktrace =
- Enum.filter(stacktrace, fn
- {__MODULE__, _, _, _} ->
- false
-
- {mod, _, _, _} ->
- mod
- |> to_string()
- |> String.starts_with?("Elixir.Pleroma.")
- end)
-
- Logger.warn(fn ->
- """
- Slow query!
-
- Total time: #{round(query_time / 1_000)} ms
-
- #{query}
-
- #{inspect(query_params, limit: :infinity)}
-
- #{sql_explain}
-
- #{Exception.format_stacktrace(pleroma_stacktrace)}
- """
- end)
- end
end
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index bf5b6508b..ef5a02249 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -2279,6 +2279,7 @@ defmodule Pleroma.User do
def get_ap_ids_by_nicknames(nicknames) do
from(u in User,
where: u.nickname in ^nicknames,
+ order_by: fragment("array_position(?, ?)", ^nicknames, u.nickname),
select: u.ap_id
)
|> Repo.all()
diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs
index 0345a9290..a5a9021f6 100644
--- a/test/pleroma/user_test.exs
+++ b/test/pleroma/user_test.exs
@@ -2084,6 +2084,17 @@ defmodule Pleroma.UserTest do
assert user.ap_id in ap_ids
assert user_two.ap_id in ap_ids
end
+
+ test "it returns a list of AP ids in the same order" do
+ user = insert(:user)
+ user_two = insert(:user)
+ user_three = insert(:user)
+
+ ap_ids =
+ User.get_ap_ids_by_nicknames([user.nickname, user_three.nickname, user_two.nickname])
+
+ assert [user.ap_id, user_three.ap_id, user_two.ap_id] == ap_ids
+ end
end
describe "sync followers count" do