"Something went wrong on our end. Please try again!" when viewing merge request Changes tab

Sometimes we get an error message when clicking on the Changes tab of a merge request. Most of the time it works fine. I found the following in the logs after getting the message:

Completed 500 Internal Server Error in 898ms (ActiveRecord: 11.1ms)
TypeError (no implicit conversion of nil into String):
lib/gitlab/blob_helper.rb:124:in `encode'
lib/gitlab/blob_helper.rb:124:in `block in encoded_newlines_re'
lib/gitlab/blob_helper.rb:124:in `map'
lib/gitlab/blob_helper.rb:124:in `encoded_newlines_re'
lib/gitlab/blob_helper.rb:102:in `lines'
lib/gitlab/diff/file.rb:302:in `total_blob_lines'
lib/gitlab/metrics/instrumentation.rb:161:in `block in total_blob_lines'
lib/gitlab/metrics/method_call.rb:36:in `measure'
lib/gitlab/metrics/instrumentation.rb:161:in `total_blob_lines'
lib/gitlab/diff/file.rb:290:in `diff_lines_for_serializer'
lib/gitlab/metrics/instrumentation.rb:161:in `block in diff_lines_for_serializer'
lib/gitlab/metrics/method_call.rb:36:in `measure'
lib/gitlab/metrics/instrumentation.rb:161:in `diff_lines_for_serializer'
app/serializers/diff_file_entity.rb:62:in `block in <class:DiffFileEntity>'
app/serializers/base_serializer.rb:16:in `represent'
app/controllers/projects/merge_requests/diffs_controller.rb:37:in `render_diffs'
app/controllers/projects/merge_requests/diffs_controller.rb:14:in `show'
lib/gitlab/i18n.rb:55:in `with_locale'
lib/gitlab/i18n.rb:61:in `with_user_locale'
app/controllers/application_controller.rb:420:in `set_locale'
lib/gitlab/middleware/multipart.rb:103:in `call'
lib/gitlab/request_profiler/middleware.rb:16:in `call'
lib/gitlab/middleware/go.rb:19:in `call'
lib/gitlab/etag_caching/middleware.rb:13:in `call'
lib/gitlab/middleware/correlation_id.rb:16:in `block in call'
lib/gitlab/correlation_id.rb:15:in `use_id'
lib/gitlab/middleware/correlation_id.rb:15:in `call'
lib/gitlab/middleware/rails_queue_duration.rb:24:in `call'
lib/gitlab/metrics/rack_middleware.rb:17:in `block in call'
lib/gitlab/metrics/transaction.rb:55:in `run'
lib/gitlab/metrics/rack_middleware.rb:17:in `call'
lib/gitlab/middleware/read_only/controller.rb:40:in `call'
lib/gitlab/middleware/read_only.rb:18:in `call'
lib/gitlab/middleware/basic_health_check.rb:25:in `call'
lib/gitlab/request_context.rb:20:in `call'
lib/gitlab/metrics/requests_rack_middleware.rb:29:in `call'
lib/gitlab/middleware/release_env.rb:13:in `call'

I looked at the code for blob_helper.rb, but since I’m not a Ruby guy, all I can see is that it’s using a regular expression to split a blob into separate lines. I’m guessing that one of our blobs doesn’t have a single new line character in it. I couldn’t begin to offer a fix though. :frowning: