summaryrefslogtreecommitdiff
path: root/app/controllers/concerns/issuable_actions.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/concerns/issuable_actions.rb')
-rw-r--r--app/controllers/concerns/issuable_actions.rb16
1 files changed, 15 insertions, 1 deletions
diff --git a/app/controllers/concerns/issuable_actions.rb b/app/controllers/concerns/issuable_actions.rb
index a5e49b1b16a..f1d80e37674 100644
--- a/app/controllers/concerns/issuable_actions.rb
+++ b/app/controllers/concerns/issuable_actions.rb
@@ -171,7 +171,7 @@ module IssuableActions
discussions = Discussion.build_collection(notes, issuable)
if issuable.is_a?(MergeRequest)
- render_cached(discussions, with: discussion_serializer, cache_context: -> (_) { discussion_cache_context }, context: self)
+ render_mr_discussions(discussions, discussion_serializer, discussion_cache_context)
elsif issuable.is_a?(Issue)
render json: discussion_serializer.represent(discussions, context: self) if stale?(etag: [discussion_cache_context, discussions])
else
@@ -182,6 +182,20 @@ module IssuableActions
private
+ def render_mr_discussions(discussions, serializer, cache_context)
+ return unless stale?(etag: [cache_context, discussions])
+
+ if Feature.enabled?(:disabled_mr_discussions_redis_cache, project)
+ render json: serializer.represent(discussions, context: self)
+ else
+ render_cached_discussions(discussions, serializer, cache_context)
+ end
+ end
+
+ def render_cached_discussions(discussions, serializer, cache_context)
+ render_cached(discussions, with: serializer, cache_context: -> (_) { cache_context }, context: self)
+ end
+
def paginated_discussions
return if params[:per_page].blank?
return if issuable.instance_of?(MergeRequest) && Feature.disabled?(:paginated_mr_discussions, project)