Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-26690

Build stats throws illegal argument exception on dashboard view

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • core

      Dear all,

      on jenkins 1.597 (and also 1.598) the build stats on Dashboard view (version 2.9.4) doesn't work because of:

      Caught exception evaluating: it.getBuildStat(jobs) in /ci/. Reason: java.lang.IllegalArgumentException: fromKey > toKey
      java.lang.IllegalArgumentException: fromKey > toKey
      	at java.util.TreeMap$NavigableSubMap.<init>(TreeMap.java:1261)
      	at java.util.TreeMap$AscendingSubMap.<init>(TreeMap.java:1699)
      	at java.util.TreeMap.subMap(TreeMap.java:877)
      	at java.util.TreeMap.subMap(TreeMap.java:918)
      	at jenkins.model.lazy.AbstractLazyLoadRunMap.subMap(AbstractLazyLoadRunMap.java:250)
      	at jenkins.model.lazy.AbstractLazyLoadRunMap.headMap(AbstractLazyLoadRunMap.java:254)
      	at jenkins.model.lazy.AbstractLazyLoadRunMap.headMap(AbstractLazyLoadRunMap.java:88)
      	at java.util.Collections$UnmodifiableSortedMap.headMap(Collections.java:1543)
      	at hudson.plugins.view.dashboard.stats.StatBuilds.getBuildStat(StatBuilds.java:48)
      

      etc.

      Please let me know if you need more info.

      Regards

      Davide

          [JENKINS-26690] Build stats throws illegal argument exception on dashboard view

          Davide Bolognini created issue -

          This problem exists in version 1.599 as well.

          Jason Spotswood added a comment - This problem exists in version 1.599 as well.

          Daniel Beck added a comment -

          Tentatively assigning to jglick as he wrote the new build number based code.

          Current hypothesis is that AbstractLazyLoadRunMap.headMap(Integer) cannot handle negative arguments (as passed by Dashboard View Plugin's Build Statistics Widget when there are fewer builds/lower numbered builds than the limit of 10) since AbstractLazyLoadRunMap.COMPARATOR overflows when given o1=Integer.MAX, o2=-5.

          While there's a trivial workaround (remove that widget from dashboards), I'll leave the priority due to possible severity of the core bug.

          Daniel Beck added a comment - Tentatively assigning to jglick as he wrote the new build number based code. Current hypothesis is that AbstractLazyLoadRunMap.headMap(Integer) cannot handle negative arguments (as passed by Dashboard View Plugin's Build Statistics Widget when there are fewer builds/lower numbered builds than the limit of 10) since AbstractLazyLoadRunMap.COMPARATOR overflows when given o1=Integer.MAX, o2=-5. While there's a trivial workaround (remove that widget from dashboards), I'll leave the priority due to possible severity of the core bug.
          Daniel Beck made changes -
          Component/s New: core [ 15593 ]
          Assignee Original: Peter Hayes [ petehayes ] New: Jesse Glick [ jglick ]

          I have the same problem with Jenkins 1.599 on OS X 10.9 Server.

          Francis Labrie added a comment - I have the same problem with Jenkins 1.599 on OS X 10.9 Server.

          Looks like a pretty nasty issue...

          Goffredo Marocchi added a comment - Looks like a pretty nasty issue...

          Jesse Glick added a comment -

          SortedMap.headMap is documented to allow the implementation to throw IllegalArgumentException

          if this map itself has a restricted range, and toKey lies outside the bounds of the range

          and passing a negative argument is clearly “outside the bounds of the range” when the range is Jenkins build numbers, whether or not earlier versions of Jenkins happened to enforce that.

          However it looks like I wrote this call to headMap so I am on the hook to fix either the caller or the implementor.

          Jesse Glick added a comment - SortedMap.headMap is documented to allow the implementation to throw IllegalArgumentException if this map itself has a restricted range, and toKey lies outside the bounds of the range and passing a negative argument is clearly “outside the bounds of the range” when the range is Jenkins build numbers, whether or not earlier versions of Jenkins happened to enforce that. However it looks like I wrote this call to headMap so I am on the hook to fix either the caller or the implementor.
          Jesse Glick made changes -
          Description Original: Dear all,

          on jenkins 1.597 (and also 1.598) the build stats on Dashboard view (version 2.9.4) doesn't work because of:

          Caught exception evaluating: it.getBuildStat(jobs) in /ci/. Reason: java.lang.IllegalArgumentException: fromKey > toKey
          java.lang.IllegalArgumentException: fromKey > toKey
          at java.util.TreeMap$NavigableSubMap.<init>(TreeMap.java:1261)
          at java.util.TreeMap$AscendingSubMap.<init>(TreeMap.java:1699)
          at java.util.TreeMap.subMap(TreeMap.java:877)
          at java.util.TreeMap.subMap(TreeMap.java:918)
          at jenkins.model.lazy.AbstractLazyLoadRunMap.subMap(AbstractLazyLoadRunMap.java:250)
          at jenkins.model.lazy.AbstractLazyLoadRunMap.headMap(AbstractLazyLoadRunMap.java:254)
          at jenkins.model.lazy.AbstractLazyLoadRunMap.headMap(AbstractLazyLoadRunMap.java:88)
          at java.util.Collections$UnmodifiableSortedMap.headMap(Collections.java:1543)
          at hudson.plugins.view.dashboard.stats.StatBuilds.getBuildStat(StatBuilds.java:48)
          etc.

          Please let me know if you need more info.

          Regards

          Davide



          New: Dear all,

          on jenkins 1.597 (and also 1.598) the build stats on Dashboard view (version 2.9.4) doesn't work because of:

          {code:none}
          Caught exception evaluating: it.getBuildStat(jobs) in /ci/. Reason: java.lang.IllegalArgumentException: fromKey > toKey
          java.lang.IllegalArgumentException: fromKey > toKey
          at java.util.TreeMap$NavigableSubMap.<init>(TreeMap.java:1261)
          at java.util.TreeMap$AscendingSubMap.<init>(TreeMap.java:1699)
          at java.util.TreeMap.subMap(TreeMap.java:877)
          at java.util.TreeMap.subMap(TreeMap.java:918)
          at jenkins.model.lazy.AbstractLazyLoadRunMap.subMap(AbstractLazyLoadRunMap.java:250)
          at jenkins.model.lazy.AbstractLazyLoadRunMap.headMap(AbstractLazyLoadRunMap.java:254)
          at jenkins.model.lazy.AbstractLazyLoadRunMap.headMap(AbstractLazyLoadRunMap.java:88)
          at java.util.Collections$UnmodifiableSortedMap.headMap(Collections.java:1543)
          at hudson.plugins.view.dashboard.stats.StatBuilds.getBuildStat(StatBuilds.java:48)
          {code}
          etc.

          Please let me know if you need more info.

          Regards

          Davide
          Jesse Glick made changes -
          Component/s Original: dashboard-view-plugin [ 15679 ]
          Labels New: regression

          Jesse Glick added a comment - - edited

          danielbeck’s hypothesis is correct, this was a regression in the fix of JENKINS-24380.

          Jesse Glick added a comment - - edited danielbeck ’s hypothesis is correct, this was a regression in the fix of JENKINS-24380 .
          Jesse Glick made changes -
          Link New: This issue is blocking JENKINS-24380 [ JENKINS-24380 ]

            jglick Jesse Glick
            dbolognini Davide Bolognini
            Votes:
            3 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved: