From 731b6be9c929d9117c322c605a7f53a8319751cd Mon Sep 17 00:00:00 2001 From: randx Date: Sat, 11 Aug 2012 15:59:36 +0300 Subject: [PATCH] Handle app crash on huge commits --- app/contexts/commit_load.rb | 11 +++++++++-- app/controllers/commits_controller.rb | 5 +++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/contexts/commit_load.rb b/app/contexts/commit_load.rb index f57c4969..81fb4925 100644 --- a/app/contexts/commit_load.rb +++ b/app/contexts/commit_load.rb @@ -5,7 +5,8 @@ class CommitLoad < BaseContext suppress_diff: false, line_notes: [], notes_count: 0, - note: nil + note: nil, + status: :ok } commit = project.commit(params[:id]) @@ -14,11 +15,17 @@ class CommitLoad < BaseContext commit = CommitDecorator.decorate(commit) line_notes = project.commit_line_notes(commit) - result[:suppress_diff] = true if commit.diffs.size > 200 && !params[:force_show_diff] result[:commit] = commit result[:note] = project.build_commit_note(commit) result[:line_notes] = line_notes result[:notes_count] = line_notes.count + project.commit_notes(commit).count + + begin + result[:suppress_diff] = true if commit.diffs.size > 200 && !params[:force_show_diff] + rescue Grit::Git::GitTimeout + result[:suppress_diff] = true + result[:status] = :huge_commit + end end result diff --git a/app/controllers/commits_controller.rb b/app/controllers/commits_controller.rb index 861fc324..717912d9 100644 --- a/app/controllers/commits_controller.rb +++ b/app/controllers/commits_controller.rb @@ -41,8 +41,9 @@ class CommitsController < ApplicationController return git_not_found! end - rescue Grit::Git::GitTimeout - render "huge_commit" + if result[:status] == :huge_commit + render "huge_commit" and return + end end def compare