From b0e9c6e127a9df4ba652d0752391db71def2a804 Mon Sep 17 00:00:00 2001
From: Joffrey JAFFEUX <j.jaffeux@gmail.com>
Date: Wed, 5 May 2021 12:18:25 +0200
Subject: [PATCH] FIX: limit visible revisions history to last 100  (#12946)

This is done to prevent spike memory usage when the number of revisions is very large (thousands) and the post has a significant length.
---
 app/serializers/post_revision_serializer.rb | 7 ++++++-
 config/locales/client.en.yml                | 2 +-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/app/serializers/post_revision_serializer.rb b/app/serializers/post_revision_serializer.rb
index 415999e8e95..1791c38304f 100644
--- a/app/serializers/post_revision_serializer.rb
+++ b/app/serializers/post_revision_serializer.rb
@@ -190,7 +190,12 @@ class PostRevisionSerializer < ApplicationSerializer
   def all_revisions
     return @all_revisions if @all_revisions
 
-    post_revisions = PostRevision.where(post_id: object.post_id).order(:number).to_a
+    post_revisions = PostRevision
+      .where(post_id: object.post_id)
+      .order(number: :desc)
+      .limit(99)
+      .to_a
+      .reverse
 
     latest_modifications = {
       "raw" => [post.raw],
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index 0485093fae3..280f26797ad 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -3374,7 +3374,7 @@ en:
       one: "user"
       other: "users"
     category_title: "Category"
-    history: "History"
+    history: "History, last 100 revisions"
     changed_by: "by %{author}"
 
     raw_email: