]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6584 WS api/resources/index limit number of measures and components
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Tue, 2 Feb 2016 13:27:48 +0000 (14:27 +0100)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Wed, 3 Feb 2016 10:20:40 +0000 (11:20 +0100)
server/sonar-server/src/main/java/org/sonar/server/component/ws/ResourcesWs.java
server/sonar-web/src/main/webapp/WEB-INF/app/controllers/api/resources_controller.rb

index 618cc39a5265fe039e3b759a8761704b8fffa8ea..ed2151a4070d777fbe034c507c7339dd2de00ce4 100644 (file)
@@ -44,11 +44,14 @@ public class ResourcesWs implements WebService {
       .setDescription("Gets a list of components. Requires Browse permission on resource.<br>" +
         "The web service is deprecated and you're invited to use the alternatives: " +
         "<ul>" +
-        "<li>if you need components only: api/components/tree</li>" +
-        "<li>if you need components with measures: api/measures/component_tree</li>" +
+        "<li>if you need one component without measures: api/components/show</li>" +
+        "<li>if you need one component with measures: api/measures/component</li>" +
+        "<li>if you need several components without measures: api/components/tree</li>" +
+        "<li>if you need several components with measures: api/measures/component_tree</li>" +
         "</ul>" +
-        "When you provide one metric, the number of results is limited to 500. When several metrics are provided, the number of results is not limited. " +
-        "This is a known limitation and it won't be fixed.")
+        "When you provide one metric, the number of results is limited to 500. When several metrics are provided, the number of measures is limited to 10000. " +
+        "The number of components is limited to 500." +
+        "This is a known limitation and it won't be fixed. You're invited to use the alternatives suggested above.")
       .setSince("2.10")
       .setDeprecatedSince("5.4")
       .setHandler(RailsHandler.INSTANCE)
index 64da4002f0ca52fe684ffdeebf713c6ec31a8310..45b650b7eaea0c22410a2ce2599e3a1f4410d1b5 100644 (file)
@@ -123,7 +123,8 @@ class Api::ResourcesController < Api::ApiController
       measures_conditions=[]
       measures_values={}
       measures_order = nil
-      measures_limit = nil
+      # SONAR-6584 avoid OOM errors
+      measures_limit = 10000
       measures_by_sid={}
       measures=nil
       rules_by_id=nil
@@ -225,7 +226,11 @@ class Api::ResourcesController < Api::ApiController
         snapshots_conditions << 'projects.qualifier in (:qualifiers)'
       end
 
-      snapshots_including_resource=Snapshot.all(:conditions => [snapshots_conditions.join(' AND '), snapshots_values], :include => 'project')
+      snapshots_including_resource=Snapshot.all(
+        :conditions => [snapshots_conditions.join(' AND '), snapshots_values],
+        :include => 'project',
+        # SONAR-6584 avoid OOM errors
+        :limit => 500)
 
       # ---------- APPLY SECURITY - remove unauthorized resources - only if no selected resource
       if @resource.nil?