summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEkaterina Vaartis <vaartis@kotobank.ch>2022-01-22 15:23:11 +0300
committerEkaterina Vaartis <vaartis@kotobank.ch>2022-10-10 20:19:09 +0300
commit2bc21c6f1884bae3226f760ed1da39dd9c5f2958 (patch)
tree14fa407286d0420423337124e135be6f97137033
parent6f2f457751ea09507045e6dd5d5869a14befd3d1 (diff)
downloadpleroma-2bc21c6f1884bae3226f760ed1da39dd9c5f2958.tar.gz
pleroma-2bc21c6f1884bae3226f760ed1da39dd9c5f2958.zip
Use oban for search indexing
-rw-r--r--config/config.exs3
-rw-r--r--lib/pleroma/search.ex15
-rw-r--r--lib/pleroma/workers/search_indexing_worker.ex21
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