GitLab 7.0: commit comment emails fail due to DelayedMailer ActionView::Template::Error undefined method `blob_at' for nil:NilClass
Summary: Commit comment email notifications for participants are not working in GitLab 7.0 due to an error reported in sidekiq DelayedMailer.
Details: Since upgrading to GitLab 7.0, participants are no longer getting emails as comments occur on their commits. In GitLab 6.9 I dont think this issue occurred.
The DelayedMailer sidekiq task is continually retrying and failing.
In the sidekiq.log file we see the following:
2014-07-08T04:43:50Z 29677 TID-dkf0c Sidekiq::Extensions::DelayedMailer JID-1513e28f217e1537a2695f2a INFO: start
2014-07-08T04:43:50Z 29677 TID-dkf0c Sidekiq::Extensions::DelayedMailer JID-1513e28f217e1537a2695f2a INFO: fail: 0.041 sec
2014-07-08T04:43:50Z 29677 TID-dkf0c WARN: {"retry"=>true, "queue"=>"default", "class"=>"Sidekiq::Extensions::DelayedMailer", "args"=>["---\n- !ruby/class 'Notify'\n- :send\n- - :note_commit_email\n - 134\n - 5538\n"], "jid"=>"1513e28f217e1537a2695f2a", "enqueued_at"=>1404753444.3813212, "error_message"=>"undefined method `blob_at' for nil:NilClass", "error_class"=>"ActionView::Template::Error", "failed_at"=>"2014-07-07 17:17:29 UTC", "retry_count"=>12, "retried_at"=>2014-07-08 04:43:50 UTC}
2014-07-08T04:43:50Z 29677 TID-dkf0c WARN: undefined method `blob_at' for nil:NilClass
2014-07-08T04:43:50Z 29677 TID-dkf0c WARN: /scratch/git/gitlab/app/helpers/gitlab_markdown_helper.rb:158:in `file_exists?'
/scratch/git/gitlab/app/helpers/gitlab_markdown_helper.rb:124:in `relative_file_path'
/scratch/git/gitlab/app/helpers/gitlab_markdown_helper.rb:104:in `rebuild_path'
/scratch/git/gitlab/app/helpers/gitlab_markdown_helper.rb:66:in `block in create_relative_links'
/scratch/git/gitlab/app/helpers/gitlab_markdown_helper.rb:65:in `each'
/scratch/git/gitlab/app/helpers/gitlab_markdown_helper.rb:65:in `create_relative_links'
/scratch/git/gitlab/lib/redcarpet/render/gitlab_html.rb:48:in `postprocess'
/scratch/git/gitlab/app/helpers/gitlab_markdown_helper.rb:51:in `render'
/scratch/git/gitlab/app/helpers/gitlab_markdown_helper.rb:51:in `markdown'
/scratch/git/gitlab/app/views/notify/_note_message.html.haml:2:in `_app_views_notify__note_message_html_haml___1046994724735941555_59639240'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/template.rb:145:in `block in render'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.1/lib/active_support/notifications.rb:161:in `instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/template.rb:339:in `instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/template.rb:143:in `render'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/partial_renderer.rb:306:in `render_partial'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/partial_renderer.rb:279:in `block in render'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.1/lib/active_support/notifications.rb:161:in `instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/abstract_renderer.rb:38:in `instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/partial_renderer.rb:278:in `render'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/renderer.rb:47:in `render_partial'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/helpers/rendering_helper.rb:35:in `render'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/haml-4.0.5/lib/haml/helpers/action_view_mods.rb:10:in `block in render_with_haml'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/haml-4.0.5/lib/haml/helpers.rb:89:in `non_haml'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/haml-4.0.5/lib/haml/helpers/action_view_mods.rb:10:in `render_with_haml'
/scratch/git/gitlab/app/views/notify/note_commit_email.html.haml:1:in `_app_views_notify_note_commit_email_html_haml__1467585275151349698_55512300'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/template.rb:145:in `block in render'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.1/lib/active_support/notifications.rb:161:in `instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/template.rb:339:in `instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/template.rb:143:in `render'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/template_renderer.rb:55:in `block (2 levels) in render_template'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.1/lib/active_support/notifications.rb:161:in `instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/abstract_renderer.rb:38:in `instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/template_renderer.rb:54:in `block in render_template'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/template_renderer.rb:62:in `render_with_layout'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/template_renderer.rb:53:in `render_template'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/template_renderer.rb:17:in `render'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/renderer.rb:42:in `render_template'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/renderer/renderer.rb:23:in `render'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/rendering.rb:99:in `_render_template'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/rendering.rb:82:in `render_to_body'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.1/lib/abstract_controller/rendering.rb:25:in `render'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionmailer-4.1.1/lib/action_mailer/base.rb:847:in `block in collect_responses'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionmailer-4.1.1/lib/action_mailer/base.rb:861:in `each'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionmailer-4.1.1/lib/action_mailer/base.rb:861:in `each_template'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionmailer-4.1.1/lib/action_mailer/base.rb:843:in `collect_responses'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionmailer-4.1.1/lib/action_mailer/base.rb:774:in `mail'
/scratch/git/gitlab/app/mailers/emails/notes.rb:8:in `note_commit_email'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.1/lib/abstract_controller/base.rb:189:in `process_action'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.1/lib/abstract_controller/callbacks.rb:20:in `block in process_action'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:82:in `run_callbacks'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.1/lib/abstract_controller/callbacks.rb:19:in `process_action'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.1/lib/abstract_controller/base.rb:136:in `process'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.1/lib/action_view/rendering.rb:30:in `process'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionmailer-4.1.1/lib/action_mailer/base.rb:580:in `block in process'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.1/lib/active_support/notifications.rb:159:in `block in instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.1/lib/active_support/notifications.rb:159:in `instrument'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionmailer-4.1.1/lib/action_mailer/base.rb:577:in `process'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionmailer-4.1.1/lib/action_mailer/base.rb:568:in `initialize'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionmailer-4.1.1/lib/action_mailer/base.rb:551:in `new'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/actionmailer-4.1.1/lib/action_mailer/base.rb:551:in `method_missing'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/extensions/action_mailer.rb:17:in `perform'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/processor.rb:49:in `block (3 levels) in process'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/middleware/chain.rb:122:in `call'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/middleware/chain.rb:122:in `block in invoke'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/middleware/server/active_record.rb:6:in `call'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/middleware/chain.rb:124:in `block in invoke'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/middleware/server/retry_jobs.rb:62:in `call'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/middleware/chain.rb:124:in `block in invoke'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/middleware/server/logging.rb:11:in `block in call'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/logging.rb:22:in `with_context'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/middleware/server/logging.rb:7:in `call'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/middleware/chain.rb:124:in `block in invoke'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/middleware/chain.rb:127:in `call'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/middleware/chain.rb:127:in `invoke'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/processor.rb:48:in `block (2 levels) in process'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/processor.rb:105:in `stats'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/processor.rb:47:in `block in process'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/processor.rb:86:in `do_defer'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/sidekiq-2.17.0/lib/sidekiq/processor.rb:37:in `process'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:in `public_send'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/celluloid-0.15.2/lib/celluloid/calls.rb:25:in `dispatch'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/celluloid-0.15.2/lib/celluloid/calls.rb:122:in `dispatch'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/celluloid-0.15.2/lib/celluloid/actor.rb:322:in `block in handle_message'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/celluloid-0.15.2/lib/celluloid/actor.rb:416:in `block in task'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:55:in `block in initialize'
/scratch/git/gitlab/vendor/bundle/ruby/2.1.0/gems/celluloid-0.15.2/lib/celluloid/tasks/task_fiber.rb:13:in `block in create'
Steps to reproduce:
-
User1 and User2 are repo members and have notifications enabled
-
User1 adds commit
-
User2 commments on commit
Expected Behavior: User1 is notified via email.
Observed Behavior: User1 is not notified. Exception above is reported in sidekiq log.