Преглед изворни кода

Use fallback values for search queries

This is to make sure the entire request doesn't return a 500 error if
user or status search times out.
tags/v1.1.4
Eugenij rinpatch пре 5 година
родитељ
комит
5184b0f41a
2 измењених фајлова са 15 додато и 4 уклоњено
  1. +1
    -0
      CHANGELOG.md
  2. +14
    -4
      lib/pleroma/web/mastodon_api/search_controller.ex

+ 1
- 0
CHANGELOG.md Прегледај датотеку

@@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

### Fixed
- Not being able to pin unlisted posts
- Mastodon API: Handling of search timeouts (`/api/v1/search` and `/api/v2/search`)

### Changed
- Configuration: Filter.AnonymizeFilename added ability to retain file extension with custom text


+ 14
- 4
lib/pleroma/web/mastodon_api/search_controller.ex Прегледај датотеку

@@ -17,8 +17,8 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do
plug(Pleroma.Plugs.RateLimiter, :search when action in [:search, :search2, :account_search])

def search2(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
accounts = User.search(query, search_options(params, user))
statuses = Activity.search(user, query)
accounts = with_fallback(fn -> User.search(query, search_options(params, user)) end, [])
statuses = with_fallback(fn -> Activity.search(user, query) end, [])
tags_path = Web.base_url() <> "/tag/"

tags =
@@ -40,8 +40,8 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do
end

def search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
accounts = User.search(query, search_options(params, user))
statuses = Activity.search(user, query)
accounts = with_fallback(fn -> User.search(query, search_options(params, user)) end, [])
statuses = with_fallback(fn -> Activity.search(user, query) end, [])

tags =
query
@@ -76,4 +76,14 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do
for_user: user
]
end

defp with_fallback(f, fallback) do
try do
f.()
rescue
error ->
Logger.error("#{__MODULE__} search error: #{inspect(error)}")
fallback
end
end
end

Loading…
Откажи
Сачувај