diff --git a/app/models/project.rb b/app/models/project.rb index b505ffb58cf00fb89c633b5c6671f27fa8123d41..6c4f3075e1c0cff2473feb852ee224c1316044e1 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -423,6 +423,7 @@ class Project < ActiveRecord::Base gitlab_shell.rm_satellites(old_path_with_namespace) ensure_satellite_exists send_move_instructions + reset_events_cache rescue # Returning false does not rollback after_* transaction but gives # us information about failing some of tasks @@ -434,4 +435,19 @@ class Project < ActiveRecord::Base raise Exception.new('repository cannot be renamed') end end + + # Reset events cache related to this project + # + # Since we do cache @event we need to reset cache in special cases: + # * when project was moved + # * when project was renamed + # Events cache stored like events/23-20130109142513. + # The cache key includes updated_at timestamp. + # Thus it will automatically generate a new fragment + # when the event is updated because the key changes. + def reset_events_cache + Event.where(project_id: self.id). + order('id DESC').limit(100). + update_all(updated_at: Time.now) + end end diff --git a/app/services/project_transfer_service.rb b/app/services/project_transfer_service.rb index 8fbf92ff20a68b0618e16e3e1bf4335299e110cc..7150c1c78c0c213b8a27ebc248f125dd032fa1f4 100644 --- a/app/services/project_transfer_service.rb +++ b/app/services/project_transfer_service.rb @@ -32,6 +32,9 @@ class ProjectTransferService # create satellite repo project.ensure_satellite_exists + # clear project cached events + project.reset_events_cache + true end end