Merge branch 'set_text_search_config_timeout' into 'develop'
authorHaelwenn <contact+git.pleroma.social@hacktivis.me>
Sat, 28 Aug 2021 16:11:52 +0000 (16:11 +0000)
committerHaelwenn <contact+git.pleroma.social@hacktivis.me>
Sat, 28 Aug 2021 16:11:52 +0000 (16:11 +0000)
mix pleroma.database set_text_search_config now runs concurrently and infinitely

See merge request pleroma/pleroma!3514

CHANGELOG.md
README.md
docs/installation/yunohost_en.md [new file with mode: 0644]
lib/pleroma/activity/search.ex
lib/pleroma/web/activity_pub/mrf.ex
lib/pleroma/web/activity_pub/object_validator.ex
lib/pleroma/web/push/impl.ex
test/pleroma/docs/generator_test.exs
test/pleroma/web/activity_pub/object_validators/chat_validation_test.exs
test/pleroma/web/activity_pub/transmogrifier/audio_handling_test.exs
test/pleroma/web/activity_pub/transmogrifier/video_handling_test.exs

index 231cac990c0c82f38313f0c5bb56aee656472884..ae6b7506b3b322291fe6efaab51103c8ebfc3579 100644 (file)
@@ -17,6 +17,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
 ## Unreleased-patch
 - Mastodon API: Activity Search fallbacks on status fetching after a DB Timeout/Error
+- Make activity search properly use GIN indexes
 
 ## 2.4.0 - 2021-08-xx
 
index ba152208963723e5161b21c231cbed1d18cc2e78..25fde90b9400aaea888618bb1964fb128e5b13f1 100644 (file)
--- a/README.md
+++ b/README.md
@@ -30,7 +30,7 @@ If your platform is not supported, or you just want to be able to edit the sourc
 - [OpenBSD (fi)](https://docs-develop.pleroma.social/backend/installation/openbsd_fi/)
 
 ### OS/Distro packages
-Currently Pleroma is not packaged by any OS/Distros, but if you want to package it for one, we can guide you through the process on our [community channels](#community-channels). If you want to change default options in your Pleroma package, please **discuss it with us first**.
+Currently Pleroma is packaged for [YunoHost](https://yunohost.org). If you want to package Pleroma for any OS/Distros, we can guide you through the process on our [community channels](#community-channels). If you want to change default options in your Pleroma package, please **discuss it with us first**.
 
 ### Docker
 While we don’t provide docker files, other people have written very good ones. Take a look at <https://github.com/angristan/docker-pleroma> or <https://glitch.sh/sn0w/pleroma-docker>.
diff --git a/docs/installation/yunohost_en.md b/docs/installation/yunohost_en.md
new file mode 100644 (file)
index 0000000..4c34e85
--- /dev/null
@@ -0,0 +1,9 @@
+# Installing on Yunohost
+
+[YunoHost](https://yunohost.org) is a server operating system aimed at self-hosting. The YunoHost community maintains a package of Pleroma which allows you to install Pleroma on YunoHost. You can install it via the normal way through the admin web interface, or through the CLI. More information can be found at [the repo of the package](https://github.com/YunoHost-Apps/pleroma_ynh).
+
+## Questions
+
+Questions and problems related to the YunoHost parts can be done through the [regular YunoHost channels](https://yunohost.org/en/help).
+
+For questions about Pleroma, ask in [#pleroma:libera.chat](https://matrix.to/#/#pleroma:libera.chat) via Matrix or **#pleroma** on **libera.chat** via IRC.
index a5923519c3d7434534d848534093cd38144c99f1..09671f62103678237efcf4f38cc168fcf9609765 100644 (file)
@@ -65,10 +65,17 @@ defmodule Pleroma.Activity.Search do
   end
 
   defp query_with(q, :gin, search_query, :plain) do
+    %{rows: [[tsc]]} =
+      Ecto.Adapters.SQL.query!(
+        Pleroma.Repo,
+        "select current_setting('default_text_search_config')::regconfig::oid;"
+      )
+
     from([a, o] in q,
       where:
         fragment(
-          "to_tsvector(?->>'content') @@ plainto_tsquery(?)",
+          "to_tsvector(?::oid::regconfig, ?->>'content') @@ plainto_tsquery(?)",
+          ^tsc,
           o.data,
           ^search_query
         )
@@ -76,10 +83,17 @@ defmodule Pleroma.Activity.Search do
   end
 
   defp query_with(q, :gin, search_query, :websearch) do
+    %{rows: [[tsc]]} =
+      Ecto.Adapters.SQL.query!(
+        Pleroma.Repo,
+        "select current_setting('default_text_search_config')::regconfig::oid;"
+      )
+
     from([a, o] in q,
       where:
         fragment(
-          "to_tsvector(?->>'content') @@ websearch_to_tsquery(?)",
+          "to_tsvector(?::oid::regconfig, ?->>'content') @@ websearch_to_tsquery(?)",
+          ^tsc,
           o.data,
           ^search_query
         )
index 23ea039c34b24af5903c5a14d4338930887ab39c..e4ee8fe827fae7fdf827a517cb247fa708c1e054 100644 (file)
@@ -21,7 +21,7 @@ defmodule Pleroma.Web.ActivityPub.MRF do
           type: [:module, {:list, :module}],
           description:
             "A list of MRF policies enabled. Module names are shortened (removed leading `Pleroma.Web.ActivityPub.MRF.` part), but on adding custom module you need to use full name.",
-          suggestions: {:list_behaviour_implementations, Pleroma.Web.ActivityPub.MRF}
+          suggestions: {:list_behaviour_implementations, Pleroma.Web.ActivityPub.MRF.Policy}
         },
         %{
           key: :transparency,
index 6e40d8b72ce1ad854b35dab9a6a2fc2a089e213c..187cd0cfd6010145ef6c1f2ed4fedaf0082d871e 100644 (file)
@@ -213,6 +213,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do
 
   def stringify_keys(object) when is_map(object) do
     object
+    |> Enum.filter(fn {_, v} -> v != nil end)
     |> Map.new(fn {key, val} -> {to_string(key), stringify_keys(val)} end)
   end
 
index 83cbdc870bc877f9b68f65d6db472ba7a332fda0..28e13ef9c791cbfe16e4737099572cfa898cd786 100644 (file)
@@ -124,8 +124,8 @@ defmodule Pleroma.Web.Push.Impl do
 
   def format_body(activity, actor, object, mastodon_type \\ nil)
 
-  def format_body(_activity, actor, %{data: %{"type" => "ChatMessage", "content" => content}}, _) do
-    case content do
+  def format_body(_activity, actor, %{data: %{"type" => "ChatMessage"} = data}, _) do
+    case data["content"] do
       nil -> "@#{actor.nickname}: (Attachment)"
       content -> "@#{actor.nickname}: #{Utils.scrub_html_and_truncate(content, 80)}"
     end
index a9b09e5775278285bd795f6151e9d205b47deaf5..8574c1d5e7b77e92a094ea3232e6b8dafef3e697 100644 (file)
@@ -23,7 +23,7 @@ defmodule Pleroma.Docs.GeneratorTest do
           key: :filters,
           type: {:list, :module},
           description: "",
-          suggestions: {:list_behaviour_implementations, Pleroma.Web.ActivityPub.MRF}
+          suggestions: {:list_behaviour_implementations, Pleroma.Web.ActivityPub.MRF.Policy}
         },
         %{
           key: Pleroma.Upload,
index 320854187d753d57034d3e229d31f412f8be70b0..def2a10b4a2b85c25c618006fd379345e495d1a7 100644 (file)
@@ -68,7 +68,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ChatValidationTest do
     test "validates for a basic object we build", %{valid_chat_message: valid_chat_message} do
       assert {:ok, object, _meta} = ObjectValidator.validate(valid_chat_message, [])
 
-      assert Map.put(valid_chat_message, "attachment", nil) == object
+      assert valid_chat_message == object
       assert match?(%{"firefox" => _}, object["emoji"])
     end
 
index a929f828db62f81b1f965ea8c2c3f7986e2ff2a7..a0942ce8b8c6a7f49fd1385cd80448ebe803a122 100644 (file)
@@ -73,16 +73,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.AudioHandlingTest do
              %{
                "mediaType" => "audio/ogg",
                "type" => "Link",
-               "name" => nil,
-               "blurhash" => nil,
                "url" => [
                  %{
                    "href" =>
                      "https://channels.tests.funkwhale.audio/api/v1/listen/3901e5d8-0445-49d5-9711-e096cf32e515/?upload=42342395-0208-4fee-a38d-259a6dae0871&download=false",
                    "mediaType" => "audio/ogg",
-                   "type" => "Link",
-                   "width" => nil,
-                   "height" => nil
+                   "type" => "Link"
                  }
                ]
              }
index 62b4a2cb37ba2d6f9a1274472897e551e41100da..fc3ec7450f880c750259cc7972a15ee07441e250 100644 (file)
@@ -53,16 +53,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.VideoHandlingTest do
              %{
                "type" => "Link",
                "mediaType" => "video/mp4",
-               "name" => nil,
-               "blurhash" => nil,
                "url" => [
                  %{
                    "href" =>
                      "https://peertube.moe/static/webseed/df5f464b-be8d-46fb-ad81-2d4c2d1630e3-480.mp4",
                    "mediaType" => "video/mp4",
-                   "type" => "Link",
-                   "width" => nil,
-                   "height" => nil
+                   "type" => "Link"
                  }
                ]
              }
@@ -78,16 +74,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.VideoHandlingTest do
              %{
                "type" => "Link",
                "mediaType" => "video/mp4",
-               "name" => nil,
-               "blurhash" => nil,
                "url" => [
                  %{
                    "href" =>
                      "https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4",
                    "mediaType" => "video/mp4",
-                   "type" => "Link",
-                   "width" => nil,
-                   "height" => nil
+                   "type" => "Link"
                  }
                ]
              }
@@ -110,16 +102,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.VideoHandlingTest do
              %{
                "type" => "Link",
                "mediaType" => "video/mp4",
-               "name" => nil,
-               "blurhash" => nil,
                "url" => [
                  %{
                    "href" =>
                      "https://peertube.stream/static/streaming-playlists/hls/abece3c3-b9c6-47f4-8040-f3eed8c602e6/abece3c3-b9c6-47f4-8040-f3eed8c602e6-1080-fragmented.mp4",
                    "mediaType" => "video/mp4",
-                   "type" => "Link",
-                   "width" => nil,
-                   "height" => nil
+                   "type" => "Link"
                  }
                ]
              }