mix pleroma.database set_text_search_config now runs concurrently and infinitely
authorsomeone <nobody@nowhere>
Sun, 15 Aug 2021 17:49:12 +0000 (13:49 -0400)
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Sat, 28 Aug 2021 16:29:43 +0000 (18:29 +0200)
Backport of: https://git.pleroma.social/pleroma/pleroma/-/merge_requests/3514

CHANGELOG.md
docs/configuration/howto_search_cjk.md
lib/mix/tasks/pleroma/database.ex

index c54fa94984c4b47e040b259fe3964d9e7d710c86..dfb83abbd634dcfa57061b424f57d6fbc8fff55f 100644 (file)
@@ -16,6 +16,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
 ## 2.4.1
 
+### Changed
+- Make `mix pleroma.database set_text_search_config` run concurrently and indefinitely
+
 ### Added
 - AdminAPI: Missing configuration description for StealEmojiPolicy
 
index d3ce280777ea551a8d9ba2b49a2fbca9f39f3ba4..a73b10db3c552cc0681794aa1e280d6ca6331022 100644 (file)
@@ -5,7 +5,7 @@ Pleroma's full text search feature is powered by PostgreSQL's native [text searc
 
 ## Setup and test the new search config
 
-In most cases, you would need an extension installed to support parsing CJK text. Here are a few extension you may choose from, or you are more than welcome to share additional ones you found working for you with the rest of Pleroma community.
+In most cases, you would need an extension installed to support parsing CJK text. Here are a few extensions you may choose from, or you are more than welcome to share additional ones you found working for you with the rest of Pleroma community.
 
  * [a generic n-gram parser](https://github.com/huangjimmy/pg_cjk_parser) supports Simplifed/Traditional Chinese, Japanese, and Korean
  * [a Korean parser](https://github.com/i0seph/textsearch_ko) based on mecab
@@ -34,7 +34,7 @@ Check output of the query, and see if it matches your expectation.
     mix pleroma.database set_text_search_config YOUR.CONFIG
     ```
 
-Note: index update may take a while.
+Note: index update may take a while, and it can be done while the instance is up and running, so you may restart db connection as soon as you see `Recreate index` in task output.
 
 ## Restart database connection
 Since some changes above will only apply with a new database connection, you will have to restart either Pleroma or PostgreSQL process, or use `pg_terminate_backend` SQL command without restarting either. 
index 57f73d12baa0bc70e6a11e243358a9c66aeec14e..a973beaa907740badee669c05f18456642db6081 100644 (file)
@@ -209,7 +209,9 @@ defmodule Mix.Tasks.Pleroma.Database do
           new.fts_content := to_tsvector(new.data->>'content');
           RETURN new;
           END
-          $$ LANGUAGE plpgsql"
+          $$ LANGUAGE plpgsql",
+          [],
+          timeout: :infinity
         )
 
         shell_info("Refresh RUM index")
@@ -219,7 +221,9 @@ defmodule Mix.Tasks.Pleroma.Database do
 
         Ecto.Adapters.SQL.query!(
           Pleroma.Repo,
-          "CREATE INDEX objects_fts ON objects USING gin(to_tsvector('#{tsconfig}', data->>'content')); "
+          "CREATE INDEX CONCURRENTLY objects_fts ON objects USING gin(to_tsvector('#{tsconfig}', data->>'content')); ",
+          [],
+          timeout: :infinity
         )
       end