Commit 924643198c924c19d0b468b27ee92077cefe7424
Exists in
master
and in
4 other branches
Merge pull request #3252 from hiroponz/fix-timeout-large-repository
Fix timeout error while showing the network graph.
Showing
4 changed files
with
46 additions
and
22 deletions
Show diff stats
app/models/network/graph.rb
@@ -25,15 +25,7 @@ module Network | @@ -25,15 +25,7 @@ module Network | ||
25 | def collect_commits | 25 | def collect_commits |
26 | refs_cache = build_refs_cache | 26 | refs_cache = build_refs_cache |
27 | 27 | ||
28 | - Grit::Commit.find_all( | ||
29 | - @repo, | ||
30 | - nil, | ||
31 | - { | ||
32 | - date_order: true, | ||
33 | - max_count: self.class.max_count, | ||
34 | - skip: count_to_display_commit_in_center | ||
35 | - } | ||
36 | - ) | 28 | + find_commits(count_to_display_commit_in_center) |
37 | .map do |commit| | 29 | .map do |commit| |
38 | # Decorate with app/model/network/commit.rb | 30 | # Decorate with app/model/network/commit.rb |
39 | Network::Commit.new(commit, refs_cache[commit.id]) | 31 | Network::Commit.new(commit, refs_cache[commit.id]) |
@@ -74,18 +66,47 @@ module Network | @@ -74,18 +66,47 @@ module Network | ||
74 | 66 | ||
75 | # Skip count that the target commit is displayed in center. | 67 | # Skip count that the target commit is displayed in center. |
76 | def count_to_display_commit_in_center | 68 | def count_to_display_commit_in_center |
77 | - commit_index = Grit::Commit.find_all(@repo, nil, {date_order: true}).index do |c| | ||
78 | - c.id == @commit.id | 69 | + offset = -1 |
70 | + skip = 0 | ||
71 | + while offset == -1 | ||
72 | + tmp_commits = find_commits(skip) | ||
73 | + if tmp_commits.size > 0 | ||
74 | + index = tmp_commits.index do |c| | ||
75 | + c.id == @commit.id | ||
76 | + end | ||
77 | + | ||
78 | + if index | ||
79 | + # Find the target commit | ||
80 | + offset = index + skip | ||
81 | + else | ||
82 | + skip += self.class.max_count | ||
83 | + end | ||
84 | + else | ||
85 | + # Cant't find the target commit in the repo. | ||
86 | + offset = 0 | ||
87 | + end | ||
79 | end | 88 | end |
80 | 89 | ||
81 | - if commit_index && (self.class.max_count / 2 < commit_index) then | 90 | + if self.class.max_count / 2 < offset then |
82 | # get max index that commit is displayed in the center. | 91 | # get max index that commit is displayed in the center. |
83 | - commit_index - self.class.max_count / 2 | 92 | + offset - self.class.max_count / 2 |
84 | else | 93 | else |
85 | 0 | 94 | 0 |
86 | end | 95 | end |
87 | end | 96 | end |
88 | 97 | ||
98 | + def find_commits(skip = 0) | ||
99 | + Grit::Commit.find_all( | ||
100 | + @repo, | ||
101 | + nil, | ||
102 | + { | ||
103 | + date_order: true, | ||
104 | + max_count: self.class.max_count, | ||
105 | + skip: skip | ||
106 | + } | ||
107 | + ) | ||
108 | + end | ||
109 | + | ||
89 | def commits_sort_by_ref | 110 | def commits_sort_by_ref |
90 | @commits.sort do |a,b| | 111 | @commits.sort do |a,b| |
91 | if include_ref?(a) | 112 | if include_ref?(a) |
features/support/env.rb
@@ -28,8 +28,8 @@ require 'capybara/poltergeist' | @@ -28,8 +28,8 @@ require 'capybara/poltergeist' | ||
28 | Capybara.javascript_driver = :poltergeist | 28 | Capybara.javascript_driver = :poltergeist |
29 | Spinach.hooks.on_tag("javascript") do | 29 | Spinach.hooks.on_tag("javascript") do |
30 | ::Capybara.current_driver = ::Capybara.javascript_driver | 30 | ::Capybara.current_driver = ::Capybara.javascript_driver |
31 | - ::Capybara.default_wait_time = 5 | ||
32 | end | 31 | end |
32 | +Capybara.default_wait_time = 10 | ||
33 | 33 | ||
34 | 34 | ||
35 | DatabaseCleaner.strategy = :truncation | 35 | DatabaseCleaner.strategy = :truncation |
spec/features/projects_spec.rb
@@ -11,7 +11,7 @@ describe "Projects" do | @@ -11,7 +11,7 @@ describe "Projects" do | ||
11 | end | 11 | end |
12 | 12 | ||
13 | it "should be correct path" do | 13 | it "should be correct path" do |
14 | - expect { click_link "Remove" }.to change {Project.count}.by(-1) | 14 | + expect { click_link "Remove project" }.to change {Project.count}.by(-1) |
15 | end | 15 | end |
16 | end | 16 | end |
17 | end | 17 | end |
spec/features/security/project_access_spec.rb
@@ -230,14 +230,17 @@ describe "Application access" do | @@ -230,14 +230,17 @@ describe "Application access" do | ||
230 | end | 230 | end |
231 | 231 | ||
232 | describe "GET /project_code/files" do | 232 | describe "GET /project_code/files" do |
233 | - subject { files_project_path(project) } | 233 | + pending("ProjectsController#files have been deleted.") do |
234 | 234 | ||
235 | - it { should be_allowed_for master } | ||
236 | - it { should be_allowed_for reporter } | ||
237 | - it { should be_denied_for :admin } | ||
238 | - it { should be_denied_for guest } | ||
239 | - it { should be_denied_for :user } | ||
240 | - it { should be_denied_for :visitor } | 235 | + subject { files_project_path(project) } |
236 | + | ||
237 | + it { should be_allowed_for master } | ||
238 | + it { should be_allowed_for reporter } | ||
239 | + it { should be_denied_for :admin } | ||
240 | + it { should be_denied_for guest } | ||
241 | + it { should be_denied_for :user } | ||
242 | + it { should be_denied_for :visitor } | ||
243 | + end | ||
241 | end | 244 | end |
242 | end | 245 | end |
243 | end | 246 | end |