Commit b3d648b4e882c41e0bb7bd72dc8815f6a7321fc4

Authored by Dmitriy Zaporozhets
1 parent 3c5954b8

Prevent duplicate merge events

app/models/merge_request.rb
@@ -177,15 +177,8 @@ class MergeRequest < ActiveRecord::Base @@ -177,15 +177,8 @@ class MergeRequest < ActiveRecord::Base
177 end 177 end
178 178
179 def merge!(user_id) 179 def merge!(user_id)
  180 + self.author_id_of_changes = user_id
180 self.merge 181 self.merge
181 -  
182 - Event.create(  
183 - project: self.project,  
184 - action: Event::MERGED,  
185 - target_id: self.id,  
186 - target_type: "MergeRequest",  
187 - author_id: user_id  
188 - )  
189 end 182 end
190 183
191 def automerge!(current_user) 184 def automerge!(current_user)
app/observers/activity_observer.rb
@@ -39,4 +39,18 @@ class ActivityObserver < ActiveRecord::Observer @@ -39,4 +39,18 @@ class ActivityObserver < ActiveRecord::Observer
39 author_id: record.author_id_of_changes 39 author_id: record.author_id_of_changes
40 ) 40 )
41 end 41 end
  42 +
  43 + def after_merge(record, transition)
  44 + # Since MR can be merged via sidekiq
  45 + # to prevent event duplication do this check
  46 + return true if record.merge_event
  47 +
  48 + Event.create(
  49 + project: record.project,
  50 + target_id: record.id,
  51 + target_type: record.class.name,
  52 + action: Event::MERGED,
  53 + author_id: record.author_id_of_changes
  54 + )
  55 + end
42 end 56 end