diff options
| author | Yorick Peterse <yorickpeterse@gmail.com> | 2017-01-30 14:43:59 +0000 |
|---|---|---|
| committer | DJ Mountney <david@twkie.net> | 2017-01-31 12:32:47 -0800 |
| commit | 061a0703116747552282f2f1e6160f42116a9f34 (patch) | |
| tree | 067bf35ac9634be26c85cc39ba48ff4ab5ed75f1 /lib | |
| parent | 2ef2d97a8581ab5e13b0e61f3055f98895d6089b (diff) | |
| download | gitlab-ce-061a0703116747552282f2f1e6160f42116a9f34.tar.gz | |
Merge branch 'zj-slow-service-fetch' into 'master'
Improve performance of triggered chat commands
See merge request !8876
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/api/services.rb | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/api/services.rb b/lib/api/services.rb index 3a9dfbb237c..aaf4b4c0fbb 100644 --- a/lib/api/services.rb +++ b/lib/api/services.rb @@ -619,6 +619,14 @@ module API end trigger_services.each do |service_slug, settings| + helpers do + def chat_command_service(project, service_slug, params) + project.services.active.where(template: false).find do |service| + service.try(:token) == params[:token] && service.to_param == service_slug.underscore + end + end + end + params do requires :id, type: String, desc: 'The ID of a project' end @@ -637,9 +645,8 @@ module API # This is not accurate, but done to prevent leakage of the project names not_found!('Service') unless project - service = project.find_or_initialize_service(service_slug.underscore) - - result = service.try(:active?) && service.try(:trigger, params) + service = chat_command_service(project, service_slug, params) + result = service.try(:trigger, params) if result status result[:status] || 200 |
