Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • G gitlabhq1
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 21
    • Issues 21
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 12
    • Merge requests 12
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • gpt
  • large_projects
  • gitlabhq1
  • Issues
  • #6545

Closed
Open
Created Mar 17, 2014 by Administrator@rootOwner

[6.6] Large diffs are still broken

Created by: dan-blanchard

Despite the improvements to large diff handling that are supposed to be in 6.6, we are still experiencing many problems with merge requests and commits with "large" diffs.

The problem we had before was #5239 (as far back as 6.1), where we got the error:

Started GET "/nlp/alek/merge_requests/1/diffs?_=1380646328731" for 127.0.0.1 at 2013-10-01 12:52:10 -0400
Processing by Projects::MergeRequestsController#diffs as JS
Parameters: {"_"=>"1380646328731", "project_id"=>"nlp/alek", "id"=>"1"}
Completed 500 Internal Server Error in 282ms
NoMethodError (undefined method `diff' for "--broken-diff":String):
app/models/commit.rb:25:in `block in diff_line_count'
app/models/commit.rb:25:in `each'
app/models/commit.rb:25:in `reduce'
app/models/commit.rb:25:in `diff_line_count'
app/controllers/projects/merge_requests_controller.rb:44:in `diffs'

Now when we try to download a large diff by clicking the plain diff link on the page for a particular commit, we experience a slightly different 500 error:

Completed 500 Internal Server Error in 6849ms

Grit::Git::GitTimeout (Grit::Git::GitTimeout):
  app/models/commit.rb:136:in `method_missing'
  app/controllers/projects/commit_controller.rb:42:in `block (2 levels) in show'
  app/controllers/projects/commit_controller.rb:35:in `show'
  app/controllers/application_controller.rb:57:in `set_current_user_for_thread'

That only happens when we view the individual commits and try to download their diffs. If we try to download a merge request's diff that contains a commit with a "large" diff, we get a file that contains only the string false instead of a 500 error.

Please let me know if I can provide any further information to help track down this issue, as it makes it very difficult to perform code review currently.

Assignee
Assign to
Time tracking