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

Duplicate symbols break declarative pipeline engine

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Blocker
    • Resolution: Fixed
    • Component/s: warnings-ng-plugin
    • Labels:
      None
    • Environment:
      JENKINS 2.156
      Arch Linux

      Relevant installed plugins:

      warnings-ng 1.0.1
      pmd 4.0.0
      android-lint 2.6
      checkstyle 4.0.0
      workflow-cps 2.61.1
    • Similar Issues:
    • Released As:
      3.0.1

      Description

      If two plugins define symbols with the same name then the declarative pipeline engine can't invoke a job anymore.

      Example: warnings-ng plugin and androidLint define the same symbol androidLint (one is for a step in the androidLint plugin, one is for the selected tool in warnings-ng). 

      This is a much bigger problem as in JENKINS-55328 for scripted pipelines. Here one simply can use the additional symbol (androidLintParser) to make the old and new plugin happy. This does not work for declarative pipelines.

      Example (usage of OLD plugins):

      pmd         canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', healthy: '', pattern: "$reports/pmd.xml",        unHealthy: '', unstableTotalAll: '0'
      checkstyle  canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', healthy: '', pattern: "$reports/checkstyle.xml", unHealthy: '', unstableTotalAll: '0'
      androidLint canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', healthy: '', pattern: "$reports/lint*.xml",      unHealthy: '', unstableTotalAll: '0'
      

      If the new warnings-ng plugin is installed (but not used) I get the following error:

      org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
      WorkflowScript: 67: Invalid parameter "canComputeNew", did you mean "name"? @ line 67, column 33.
                             pmd         canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', healthy: '', pattern: "$reports/pmd.xml",        unHealthy: '', unstableTotalAll: '0'
                                         ^
      
      WorkflowScript: 67: Invalid parameter "canRunOnFailed", did you mean "name"? @ line 67, column 55.
                 canComputeNew: false, canRunOnFa
                                       ^
      
      WorkflowScript: 67: Invalid parameter "defaultEncoding", did you mean "reportEncoding"? @ line 67, column 77.
          false, canRunOnFailed: true, defaultEnc
                                       ^
      
      WorkflowScript: 67: Invalid parameter "healthy", did you mean "name"? @ line 67, column 98.
         d: true, defaultEncoding: '', healthy: '
                                       ^
      
      WorkflowScript: 67: Invalid parameter "unHealthy", did you mean "name"? @ line 67, column 147.
         n: "$reports/pmd.xml",        unHealthy:
                                       ^
      
      WorkflowScript: 67: Invalid parameter "unstableTotalAll", did you mean "name"? @ line 67, column 162.
         d.xml",        unHealthy: '', unstableTo
                                       ^
      
      WorkflowScript: 69: Invalid parameter "canComputeNew", did you mean "name"? @ line 69, column 33.
                             androidLint canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', healthy: '', pattern: "$reports/lint*.xml",      unHealthy: '', unstableTotalAll: '0'
                                         ^
      
      WorkflowScript: 69: Invalid parameter "canRunOnFailed", did you mean "name"? @ line 69, column 55.
         oidLint canComputeNew: false, canRunOnFa
                                       ^
      
      WorkflowScript: 69: Invalid parameter "defaultEncoding", did you mean "reportEncoding"? @ line 69, column 77.
          false, canRunOnFailed: true, defaultEnc
                                       ^
      
      WorkflowScript: 69: Invalid parameter "healthy", did you mean "name"? @ line 69, column 98.
         d: true, defaultEncoding: '', healthy: '
                                       ^
      
      10 errors
      
      	at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
      	at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085)
      	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
      	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
      	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
      	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
      	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
      	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
      	at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
      	at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:131)
      	at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:125)
      	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:560)
      	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:521)
      	at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:320)
      	at hudson.model.ResourceController.execute(ResourceController.java:97)
      	at hudson.model.Executor.run(Executor.java:429)
      Finished: FAILURE
      

      I do not have these issues if I uninstall the warnings-ng plugin.

        Attachments

          Issue Links

            Activity

            Hide
            drulli Ulli Hafner added a comment -

            Ok, I can confirm the bug. This definitely is a problem of declarative pipelines only:

            Started by user 
            [Ulli Hafner|http://localhost:8080/user/hafner]
            Replayed 
            [#38|http://localhost:8080/job/New%20-%20Pipeline%20Declarative%20-%20Model/38/]
            Running in Durability level: MAX_SURVIVABILITY
            org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
            WorkflowScript: 26: Invalid parameter "canComputeNew", did you mean "name"? @ line 26, column 25.
                           androidLint canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', healthy: '', pattern: "**/lint*.xml",      unHealthy: '', unstableTotalAll: '0'
                                       ^
            
            WorkflowScript: 26: Invalid parameter "canRunOnFailed", did you mean "name"? @ line 26, column 47.
               oidLint canComputeNew: false, canRunOnFa
                                             ^
            
            WorkflowScript: 26: Invalid parameter "defaultEncoding", did you mean "reportEncoding"? @ line 26, column 69.
                false, canRunOnFailed: true, defaultEnc
                                             ^
            
            WorkflowScript: 26: Invalid parameter "healthy", did you mean "name"? @ line 26, column 90.
               d: true, defaultEncoding: '', healthy: '
                                             ^
            
            WorkflowScript: 26: Invalid parameter "unHealthy", did you mean "name"? @ line 26, column 133.
               pattern: "**/lint*.xml",      unHealthy:
                                             ^
            
            WorkflowScript: 26: Invalid parameter "unstableTotalAll", did you mean "name"? @ line 26, column 148.
               nt*.xml",      unHealthy: '', unstableTo
                                             ^
            
            6 errors
            
            	at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
            	at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085)
            	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
            	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
            	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
            	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
            	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
            	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
            	at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
            	at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:131)
            	at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:125)
            	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:560)
            	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:521)
            	at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:320)
            	at hudson.model.ResourceController.execute(ResourceController.java:97)
            	at hudson.model.Executor.run(Executor.java:429)
            Finished: FAILURE
            
            Show
            drulli Ulli Hafner added a comment - Ok, I can confirm the bug. This definitely is a problem of declarative pipelines only: Started by user [Ulli Hafner|http://localhost:8080/user/hafner] Replayed [#38|http://localhost:8080/job/New%20-%20Pipeline%20Declarative%20-%20Model/38/] Running in Durability level: MAX_SURVIVABILITY org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: WorkflowScript: 26: Invalid parameter "canComputeNew", did you mean "name"? @ line 26, column 25. androidLint canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', healthy: '', pattern: "**/lint*.xml", unHealthy: '', unstableTotalAll: '0' ^ WorkflowScript: 26: Invalid parameter "canRunOnFailed", did you mean "name"? @ line 26, column 47. oidLint canComputeNew: false, canRunOnFa ^ WorkflowScript: 26: Invalid parameter "defaultEncoding", did you mean "reportEncoding"? @ line 26, column 69. false, canRunOnFailed: true, defaultEnc ^ WorkflowScript: 26: Invalid parameter "healthy", did you mean "name"? @ line 26, column 90. d: true, defaultEncoding: '', healthy: ' ^ WorkflowScript: 26: Invalid parameter "unHealthy", did you mean "name"? @ line 26, column 133. pattern: "**/lint*.xml", unHealthy: ^ WorkflowScript: 26: Invalid parameter "unstableTotalAll", did you mean "name"? @ line 26, column 148. nt*.xml", unHealthy: '', unstableTo ^ 6 errors at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310) at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268) at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688) at groovy.lang.GroovyShell.parse(GroovyShell.java:700) at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:131) at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:125) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:560) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:521) at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:320) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Finished: FAILURE
            Hide
            drulli Ulli Hafner added a comment -

            Andrew Bayer: is there a way to prevent such errors in declarative pipelines? I think we need to add a duplicate-symbol checker in our build infrastructure, otherwise we will fall into this trap very often! 

            Show
            drulli Ulli Hafner added a comment - Andrew Bayer : is there a way to prevent such errors in declarative pipelines? I think we need to add a duplicate-symbol checker in our build infrastructure, otherwise we will fall into this trap very often! 
            Show
            drulli Ulli Hafner added a comment - See: https://issues.jenkins-ci.org/browse/INFRA-2012
            Hide
            mfuchs Matthias Fuchs added a comment -

            Is the issue fixed? Or does it mean that I have to live with the incompatibility?

            Show
            mfuchs Matthias Fuchs added a comment - Is the issue fixed? Or does it mean that I have to live with the incompatibility?
            Hide
            drulli Ulli Hafner added a comment -

            Should be fixed in 3.0.1

            Show
            drulli Ulli Hafner added a comment - Should be fixed in 3.0.1

              People

              • Assignee:
                drulli Ulli Hafner
                Reporter:
                mfuchs Matthias Fuchs
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: