diff options
author | Ekaterina Vaartis <vaartis@kotobank.ch> | 2022-01-22 15:23:11 +0300 |
---|---|---|
committer | Ekaterina Vaartis <vaartis@kotobank.ch> | 2022-10-10 20:19:09 +0300 |
commit | 2bc21c6f1884bae3226f760ed1da39dd9c5f2958 (patch) | |
tree | 14fa407286d0420423337124e135be6f97137033 | |
parent | 6f2f457751ea09507045e6dd5d5869a14befd3d1 (diff) | |
download | pleroma-2bc21c6f1884bae3226f760ed1da39dd9c5f2958.tar.gz pleroma-2bc21c6f1884bae3226f760ed1da39dd9c5f2958.zip |
Use oban for search indexing
-rw-r--r-- | config/config.exs | 3 | ||||
-rw-r--r-- | lib/pleroma/search.ex | 15 | ||||
-rw-r--r-- | lib/pleroma/workers/search_indexing_worker.ex | 21 |
3 files changed, 27 insertions, 12 deletions
diff --git a/config/config.exs b/config/config.exs index bcbc59b83..3e2f0da3f 100644 --- a/config/config.exs +++ b/config/config.exs @@ -571,7 +571,8 @@ config :pleroma, Oban, remote_fetcher: 2, attachments_cleanup: 1, new_users_digest: 1, - mute_expire: 5 + mute_expire: 5, + search_indexing: 1 ], plugins: [Oban.Plugins.Pruner], crontab: [ diff --git a/lib/pleroma/search.ex b/lib/pleroma/search.ex index ae0b28c54..af858fc46 100644 --- a/lib/pleroma/search.ex +++ b/lib/pleroma/search.ex @@ -1,19 +1,12 @@ defmodule Pleroma.Search do - def add_to_index(activity) do - search_module = Pleroma.Config.get([Pleroma.Search, :module]) + alias Pleroma.Workers.SearchIndexingWorker - ConcurrentLimiter.limit(Pleroma.Search, fn -> - Task.start(fn -> search_module.add_to_index(activity) end) - end) + def add_to_index(activity) do + SearchIndexingWorker.enqueue("add_to_index", %{"activity" => activity.id}) end def remove_from_index(object) do - # Also delete from search index - search_module = Pleroma.Config.get([Pleroma.Search, :module]) - - ConcurrentLimiter.limit(Pleroma.Search, fn -> - Task.start(fn -> search_module.remove_from_index(object) end) - end) + SearchIndexingWorker.enqueue("remove_from_index", %{"object" => object.id}) end def search(query, options) do diff --git a/lib/pleroma/workers/search_indexing_worker.ex b/lib/pleroma/workers/search_indexing_worker.ex new file mode 100644 index 000000000..43b7bad1e --- /dev/null +++ b/lib/pleroma/workers/search_indexing_worker.ex @@ -0,0 +1,21 @@ +defmodule Pleroma.Workers.SearchIndexingWorker do + use Pleroma.Workers.WorkerHelper, queue: "search_indexing" + + @impl Oban.Worker + + def perform(%Job{args: %{"op" => "add_to_index", "activity" => activity_id}}) do + activity = Pleroma.Activity.get_by_id_with_object(activity_id) + + search_module = Pleroma.Config.get([Pleroma.Search, :module]) + + search_module.add_to_index(activity) + end + + def perform(%Job{args: %{"op" => "remove_from_index", "object" => object_id}}) do + object = Pleroma.Object.get_by_id(object_id) + + search_module = Pleroma.Config.get([Pleroma.Search, :module]) + + search_module.remove_from_index(object) + end +end |