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

MavenModuleSetBuild.getResult is expensive

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      MavenModuleSetBuild.getResult looks for the worst result of any of the last builds of the component modules. If you are using Maven 2, some of these might have been run after the MavenModuleSetBuild itself completed, either because you build modules in parallel, or because you manually rebuilt one of the modules; in such cases the result of the module set can be retroactively worsened. (Although Run.setResult is only permitted while building, getResult is nonfinal, effectively a backdoor to get around that restriction.)

      Besides the logical confusion over whether a given build of a job was successful or not, this logic is very problematic for lazy-loading:

      at jenkins.model.lazy.AbstractLazyLoadRunMap.search(AbstractLazyLoadRunMap.java:496) 
      at hudson.model.AbstractProject.getNearestOldBuild(AbstractProject.java:1067) 
      at hudson.maven.MavenModuleSetBuild.getModuleLastBuilds(MavenModuleSetBuild.java:434) 
      at hudson.maven.MavenModuleSetBuild.getResult(MavenModuleSetBuild.java:189) 
      at hudson.model.PermalinkProjectAction$Permalink$3.apply(PermalinkProjectAction.java:134) 
      at jenkins.model.PeepholePermalink.resolve(PeepholePermalink.java:95) 
      at hudson.model.Job.getLastSuccessfulBuild(Job.java:802)
      

      For example, every time the Maven job is displayed in a view, getResult is called at least once for the icon color. (Probably also to verify the permalink even when the symlink such as lastSuccessfulBuild exists, which after JENKINS-16023 it should.) But this forces the most recent build of each module to be loaded, too, and if there are a lot of modules that can take significant time, either after startup or after some have been evicted from memory.

      Not clear what can be done here. Options:

      1. Delete this override and break functional compatibility. Means that jobs using parallel module building will not show meaningful status.
      2. Suppress the override in case the job is currently configured to use Maven 3, which does not support the trigger conditions to begin with. But it is not trivial to tell this; a MavenInstallation will resolve to a specific version only during a build (it might not exist at all on the master).
      3. Store the current effective result in build.xml and use some listener to update it after relevant module builds.

        Attachments

          Issue Links

            Activity

            jglick Jesse Glick created issue -
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            changelog.html
            maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
            test/src/main/java/org/jvnet/hudson/test/RunLoadCounter.java
            test/src/test/java/hudson/maven/MavenBuildSurefireFailedTest.java
            http://jenkins-ci.org/commit/jenkins/d1d524863cbb2f1f443fc4bf7c25933b7a31b85d
            Log:
            [FIXED JENKINS-18895] MavenModuleSetBuild.getResult is expensive.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: changelog.html maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java test/src/main/java/org/jvnet/hudson/test/RunLoadCounter.java test/src/test/java/hudson/maven/MavenBuildSurefireFailedTest.java http://jenkins-ci.org/commit/jenkins/d1d524863cbb2f1f443fc4bf7c25933b7a31b85d Log: [FIXED JENKINS-18895] MavenModuleSetBuild.getResult is expensive.
            scm_issue_link SCM/JIRA link daemon made changes -
            Field Original Value New Value
            Resolution Fixed [ 1 ]
            Status Open [ 1 ] Resolved [ 5 ]
            Hide
            dogfood dogfood added a comment -

            Integrated in jenkins_main_trunk #2763
            [FIXED JENKINS-18895] MavenModuleSetBuild.getResult is expensive. (Revision d1d524863cbb2f1f443fc4bf7c25933b7a31b85d)

            Result = UNSTABLE
            Jesse Glick : d1d524863cbb2f1f443fc4bf7c25933b7a31b85d
            Files :

            • test/src/test/java/hudson/maven/MavenBuildSurefireFailedTest.java
            • changelog.html
            • maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
            • test/src/main/java/org/jvnet/hudson/test/RunLoadCounter.java
            Show
            dogfood dogfood added a comment - Integrated in jenkins_main_trunk #2763 [FIXED JENKINS-18895] MavenModuleSetBuild.getResult is expensive. (Revision d1d524863cbb2f1f443fc4bf7c25933b7a31b85d) Result = UNSTABLE Jesse Glick : d1d524863cbb2f1f443fc4bf7c25933b7a31b85d Files : test/src/test/java/hudson/maven/MavenBuildSurefireFailedTest.java changelog.html maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java test/src/main/java/org/jvnet/hudson/test/RunLoadCounter.java
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
            http://jenkins-ci.org/commit/jenkins/8d46aa6d976f5b0d89a4ad4969d455cd3a4add5c
            Log:
            JENKINS-18895 Refined fix to not cache status during the build.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java http://jenkins-ci.org/commit/jenkins/8d46aa6d976f5b0d89a4ad4969d455cd3a4add5c Log: JENKINS-18895 Refined fix to not cache status during the build.
            Hide
            dogfood dogfood added a comment -

            Integrated in jenkins_main_trunk #2765

            Result = UNSTABLE

            Show
            dogfood dogfood added a comment - Integrated in jenkins_main_trunk #2765 Result = UNSTABLE
            Hide
            jglick Jesse Glick added a comment -

            Some test failures, need to diagnose.

            Show
            jglick Jesse Glick added a comment - Some test failures, need to diagnose.
            jglick Jesse Glick made changes -
            Resolution Fixed [ 1 ]
            Status Resolved [ 5 ] Reopened [ 4 ]
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java
            http://jenkins-ci.org/commit/jenkins/ec9b4f11866e80ae4a432b9127e71afddf30de86
            Log:
            [FIXED JENKINS-18895] Refined fix once again.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java http://jenkins-ci.org/commit/jenkins/ec9b4f11866e80ae4a432b9127e71afddf30de86 Log: [FIXED JENKINS-18895] Refined fix once again.
            scm_issue_link SCM/JIRA link daemon made changes -
            Resolution Fixed [ 1 ]
            Status Reopened [ 4 ] Resolved [ 5 ]
            Hide
            dogfood dogfood added a comment -

            Integrated in jenkins_main_trunk #2769

            Result = UNSTABLE

            Show
            dogfood dogfood added a comment - Integrated in jenkins_main_trunk #2769 Result = UNSTABLE
            teilo James Nord made changes -
            Labels lazy-loading performance lazy-loading lts-candidate performance
            olivergondza Oliver Gondža made changes -
            Labels lazy-loading lts-candidate performance lazy-loading lts-1.509.3-fixed performance
            olivergondza Oliver Gondža made changes -
            Labels lazy-loading lts-1.509.3-fixed performance 1.509.3-fixed lazy-loading performance
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            src/main/java/hudson/maven/MavenModuleSetBuild.java
            http://jenkins-ci.org/commit/maven-plugin/5823a8991b968ad44c57dc40faab9c6c3b0db0fb
            Log:
            [FIXED JENKINS-18895] MavenModuleSetBuild.getResult is expensive.
            Originally-Committed-As: d1d524863cbb2f1f443fc4bf7c25933b7a31b85d

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: src/main/java/hudson/maven/MavenModuleSetBuild.java http://jenkins-ci.org/commit/maven-plugin/5823a8991b968ad44c57dc40faab9c6c3b0db0fb Log: [FIXED JENKINS-18895] MavenModuleSetBuild.getResult is expensive. Originally-Committed-As: d1d524863cbb2f1f443fc4bf7c25933b7a31b85d
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            src/main/java/hudson/maven/MavenModuleSetBuild.java
            http://jenkins-ci.org/commit/maven-plugin/22a0171e4720d353be9975791c73b80306ffeefc
            Log:
            JENKINS-18895 Refined fix to not cache status during the build.
            Originally-Committed-As: 8d46aa6d976f5b0d89a4ad4969d455cd3a4add5c

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: src/main/java/hudson/maven/MavenModuleSetBuild.java http://jenkins-ci.org/commit/maven-plugin/22a0171e4720d353be9975791c73b80306ffeefc Log: JENKINS-18895 Refined fix to not cache status during the build. Originally-Committed-As: 8d46aa6d976f5b0d89a4ad4969d455cd3a4add5c
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            src/main/java/hudson/maven/MavenModuleSetBuild.java
            http://jenkins-ci.org/commit/maven-plugin/a68212f584f7eadf284d835132eebd125a9fd641
            Log:
            [FIXED JENKINS-18895] Refined fix once again.

            Originally-Committed-As: ec9b4f11866e80ae4a432b9127e71afddf30de86

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: src/main/java/hudson/maven/MavenModuleSetBuild.java http://jenkins-ci.org/commit/maven-plugin/a68212f584f7eadf284d835132eebd125a9fd641 Log: [FIXED JENKINS-18895] Refined fix once again. Originally-Committed-As: ec9b4f11866e80ae4a432b9127e71afddf30de86
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            test/src/main/java/org/jvnet/hudson/test/RunLoadCounter.java
            http://jenkins-ci.org/commit/jenkins-test-harness/c2b59479268ff3aae415453ca55256e71ae676f2
            Log:
            [FIXED JENKINS-18895] MavenModuleSetBuild.getResult is expensive.
            Originally-Committed-As: d1d524863cbb2f1f443fc4bf7c25933b7a31b85d

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: test/src/main/java/org/jvnet/hudson/test/RunLoadCounter.java http://jenkins-ci.org/commit/jenkins-test-harness/c2b59479268ff3aae415453ca55256e71ae676f2 Log: [FIXED JENKINS-18895] MavenModuleSetBuild.getResult is expensive. Originally-Committed-As: d1d524863cbb2f1f443fc4bf7c25933b7a31b85d
            jglick Jesse Glick made changes -
            Link This issue is related to JENKINS-25075 [ JENKINS-25075 ]
            rtyler R. Tyler Croy made changes -
            Workflow JNJira [ 150342 ] JNJira + In-Review [ 193477 ]

              People

              Assignee:
              Unassigned Unassigned
              Reporter:
              jglick Jesse Glick
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: