PERF: avoid filtering shared drafts when not used

PERF: avoid filtering shared drafts when not used

In some very specific cases (large sites) shared drafts can introduce a performance hit due to the mechanism used to filter out topics

This avoids the entire process when shared drafts are not enabled

diff --git a/lib/topic_query.rb b/lib/topic_query.rb
index cbb7644..51d60f5 100644
--- a/lib/topic_query.rb
+++ b/lib/topic_query.rb
@@ -591,6 +591,11 @@ class TopicQuery
   end
 
   def apply_shared_drafts(result, category_id, options)
+
+    # PERF: avoid any penalty if there are no shared drafts enabled
+    # on some sites the cost can be high eg: gearbox
+    return result if SiteSetting.shared_drafts_category == ""
+
     drafts_category_id = SiteSetting.shared_drafts_category.to_i
     viewing_shared = category_id && category_id == drafts_category_id
     can_create_shared = guardian.can_create_shared_draft?

GitHub sha: 0d5d4781

1 Like