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

"List Files Now" in a configuration page cause an error since 1.3.0

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      I installed version 1.3.0 of this plugin and try to use the File Choice Parameter as shown in the example for it on the plugin's description page using the same settings with the addition of the new Empty Choice field. Pressing the List Files Now button results in a null pointer exception. I've duplicated this behavior in two different OS's. Reverting the plugin to version 1.2.2 solves the issue. WARNING: using the File Choice Parameter of the 1.3.0 version of this plugin in a Master/Slave Jenkins environment can result in crashing your Master Jenkins Itself. (it is the issue of the frontend web server in the reporter's environment, not the issue of the plugin or Jenkins)

      List Files Now
      ERROR
      A problem occurred while processing the request. Please check our bug tracker to see if a similar problem has already been reported. If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem. If you think this is a new issue, please file a new issue. When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins. The users list might be also useful in understanding what has happened.

      Stack trace

      java.lang.NullPointerException
      at org.kohsuke.stapler.Stapler$6.convert(Stapler.java:1151)
      at org.kohsuke.stapler.AnnotationHandler.convert(AnnotationHandler.java:66)
      at org.kohsuke.stapler.QueryParameter$HandlerImpl.parse(QueryParameter.java:74)
      at org.kohsuke.stapler.QueryParameter$HandlerImpl.parse(QueryParameter.java:62)
      at org.kohsuke.stapler.AnnotationHandler.handle(AnnotationHandler.java:91)
      at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:153)
      at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
      at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
      at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
      at hudson.plugins.scm_sync_configuration.extensions.ScmSyncConfigurationFilter$1.call(ScmSyncConfigurationFilter.java:46)
      at hudson.plugins.scm_sync_configuration.ScmSyncConfigurationDataProvider.provideRequestDuring(ScmSyncConfigurationDataProvider.java:103)
      at hudson.plugins.scm_sync_configuration.extensions.ScmSyncConfigurationFilter.doFilter(ScmSyncConfigurationFilter.java:42)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
      at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:198)
      at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:176)
      at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:85)
      at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:99)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
      at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
      at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
      at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
      at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
      at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
      at org.eclipse.jetty.server.Server.handle(Server.java:370)
      at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
      at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
      at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
      at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
      at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
      at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
      at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
      at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
      at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)

        Attachments

          Activity

          Hide
          ikedam ikedam added a comment -

          I tested the reproduction of the issue in my envoronment, but it causes only an error in configuration pages and doesn't cause crash Jenkins.

          Steps to reprodcue the problem (tested with windows 8.1/64bit, Java 1.7):

          1. Install Jenkins 1.596.2
          2. Go to Manage Jenkins > Manage Nodes and add a new node "slave1"
            • Tested with "Launch slave agents via Java Web Start"
          3. Launch slave1
          4. Go to Manage Jenkins > Manage Plugins and install extensible-choice-parameter 1.3.0.
          5. Create a new freestyle project "test"
          6. Check "This build is parameterized"
          7. Add "Extensible Choide"
          8. Select File Choice Parameter and configure
            • Base Directory: .
            • File Name Patter: *
          9. Click "List Files Now"

          Result

          • An error occurrs as your screenshot.
          • Jenkins doesn't crash.

          Jenkins should not crash for errors in plugins. It may be a bug of Jenkins to be fixed.
          Please report more details about the crash of Jenkins (e.g. attaching crash dump of JVM).

          Show
          ikedam ikedam added a comment - I tested the reproduction of the issue in my envoronment, but it causes only an error in configuration pages and doesn't cause crash Jenkins. Steps to reprodcue the problem (tested with windows 8.1/64bit, Java 1.7): Install Jenkins 1.596.2 Go to Manage Jenkins > Manage Nodes and add a new node "slave1" Tested with "Launch slave agents via Java Web Start" Launch slave1 Go to Manage Jenkins > Manage Plugins and install extensible-choice-parameter 1.3.0. Create a new freestyle project "test" Check "This build is parameterized" Add "Extensible Choide" Select File Choice Parameter and configure Base Directory: . File Name Patter: * Click "List Files Now" Result An error occurrs as your screenshot. Jenkins doesn't crash. Jenkins should not crash for errors in plugins. It may be a bug of Jenkins to be fixed. Please report more details about the crash of Jenkins (e.g. attaching crash dump of JVM).
          Hide
          ikedam ikedam added a comment -

          stapler is 1.234 for Jenkins 1.596.2

          Show
          ikedam ikedam added a comment - stapler is 1.234 for Jenkins 1.596.2
          Hide
          ikedam ikedam added a comment -

          extensible-choice-parameter fails to pass the emptyChoiceType to the validating button.
          It causes NPE here: https://github.com/stapler/stapler/blob/stapler-parent-1.234/core/src/main/java/org/kohsuke/stapler/Stapler.java#L1151

          Show
          ikedam ikedam added a comment - extensible-choice-parameter fails to pass the emptyChoiceType to the validating button. It causes NPE here: https://github.com/stapler/stapler/blob/stapler-parent-1.234/core/src/main/java/org/kohsuke/stapler/Stapler.java#L1151
          Show
          ikedam ikedam added a comment - https://github.com/jenkinsci/extensible-choice-parameter-plugin/pull/14
          Hide
          jwpattr Jim Patterson added a comment -

          After looking at your comments, I talked to our dev-ops team for more information on what actually happened to our Jenkins Master when it "crashed". First let me add more detailed information to our particular Jenkins Master/Slave environment. We are running about 20 slaves, 1500 jobs and our Jenkins Master is using a dedicated Apache server to serve the Jenkins Web application on Centos 6. We are also running the Enterprise edition of Jenkins from Cloudbees. I thought we were running the latest LTS version at the time but I was off on the actual release number of our Master Jenkins server: (Jenkins ver. 1.580.2.1 (Jenkins Enterprise by CloudBees 14.11)) I did use the OSS version 1.596.2 to induce the NPE and stack trace I listed above. Basically when I attempted to configure a new job using this plugin against a slave in the pool, it caused the Appache instance to gobble up a large amount of memory on the Jenkins Master, leaving it in a state where it could no longer serve web pages from Jenkins. My Dev ops team team told me I had "crashed" the Jenkins master. They were not happy with me

          Show
          jwpattr Jim Patterson added a comment - After looking at your comments, I talked to our dev-ops team for more information on what actually happened to our Jenkins Master when it "crashed". First let me add more detailed information to our particular Jenkins Master/Slave environment. We are running about 20 slaves, 1500 jobs and our Jenkins Master is using a dedicated Apache server to serve the Jenkins Web application on Centos 6. We are also running the Enterprise edition of Jenkins from Cloudbees. I thought we were running the latest LTS version at the time but I was off on the actual release number of our Master Jenkins server: (Jenkins ver. 1.580.2.1 (Jenkins Enterprise by CloudBees 14.11)) I did use the OSS version 1.596.2 to induce the NPE and stack trace I listed above. Basically when I attempted to configure a new job using this plugin against a slave in the pool, it caused the Appache instance to gobble up a large amount of memory on the Jenkins Master, leaving it in a state where it could no longer serve web pages from Jenkins. My Dev ops team team told me I had "crashed" the Jenkins master. They were not happy with me
          Hide
          ikedam ikedam added a comment -

          Your report is obscure and I don't think I get the exact situation.
          Your dev-ops team may report details.

          Anyway, the crash sounds the issue of the configuration of your frontend Apache.

          Show
          ikedam ikedam added a comment - Your report is obscure and I don't think I get the exact situation. Your dev-ops team may report details. Anyway, the crash sounds the issue of the configuration of your frontend Apache.
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: ikedam
          Path:
          src/main/resources/jp/ikedam/jenkins/plugins/extensible_choice_parameter/FilenameChoiceListProvider/config.jelly
          http://jenkins-ci.org/commit/extensible-choice-parameter-plugin/0d8c00580f6feb4f68d5cd1806d77192ae07a9d3
          Log:
          [FIXED JENKINS-28841] Absence of emptyFileType in the validate button of FilenameChoiceListProvider causes NPE.

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: ikedam Path: src/main/resources/jp/ikedam/jenkins/plugins/extensible_choice_parameter/FilenameChoiceListProvider/config.jelly http://jenkins-ci.org/commit/extensible-choice-parameter-plugin/0d8c00580f6feb4f68d5cd1806d77192ae07a9d3 Log: [FIXED JENKINS-28841] Absence of emptyFileType in the validate button of FilenameChoiceListProvider causes NPE.
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: ikedam
          Path:
          src/test/java/jp/ikedam/jenkins/plugins/extensible_choice_parameter/FilenameChoiceListProviderJenkinsTest.java
          http://jenkins-ci.org/commit/extensible-choice-parameter-plugin/dad7f37e18695b8ddf59e129463d3c2ce4ed1929
          Log:
          JENKINS-28841 Added a test to reproduce JENKINS-28841, errors caused by validateButton.

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: ikedam Path: src/test/java/jp/ikedam/jenkins/plugins/extensible_choice_parameter/FilenameChoiceListProviderJenkinsTest.java http://jenkins-ci.org/commit/extensible-choice-parameter-plugin/dad7f37e18695b8ddf59e129463d3c2ce4ed1929 Log: JENKINS-28841 Added a test to reproduce JENKINS-28841 , errors caused by validateButton.
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: ikedam
          Path:
          src/test/java/jp/ikedam/jenkins/plugins/extensible_choice_parameter/FilenameChoiceListProviderJenkinsTest.java
          http://jenkins-ci.org/commit/extensible-choice-parameter-plugin/553735e11d339b86cd51853ed52781129572ad86
          Log:
          Merge pull request #29 from ikedam/feature/JENKINS-28841_ReproduceDoTestError

          JENKINS-28841 Added a test to reproduce JENKINS-28841

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: ikedam Path: src/test/java/jp/ikedam/jenkins/plugins/extensible_choice_parameter/FilenameChoiceListProviderJenkinsTest.java http://jenkins-ci.org/commit/extensible-choice-parameter-plugin/553735e11d339b86cd51853ed52781129572ad86 Log: Merge pull request #29 from ikedam/feature/ JENKINS-28841 _ReproduceDoTestError JENKINS-28841 Added a test to reproduce JENKINS-28841
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: ikedam
          Path:
          src/main/resources/jp/ikedam/jenkins/plugins/extensible_choice_parameter/FilenameChoiceListProvider/config.jelly
          src/test/java/jp/ikedam/jenkins/plugins/extensible_choice_parameter/FilenameChoiceListProviderJenkinsTest.java
          http://jenkins-ci.org/commit/extensible-choice-parameter-plugin/acde8e872d9a7f7dcc0570a3537efe1cda4a8d04
          Log:
          Merge pull request #14 from ikedam/feature/JENKINS-28841_NpeForValidateButtonOfFileChoice

          JENKINS-28841 Absence of emptyFileType in the validate buttun causes NPE.

          Compare: https://github.com/jenkinsci/extensible-choice-parameter-plugin/compare/ddb0d2c54c79...acde8e872d9a

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: ikedam Path: src/main/resources/jp/ikedam/jenkins/plugins/extensible_choice_parameter/FilenameChoiceListProvider/config.jelly src/test/java/jp/ikedam/jenkins/plugins/extensible_choice_parameter/FilenameChoiceListProviderJenkinsTest.java http://jenkins-ci.org/commit/extensible-choice-parameter-plugin/acde8e872d9a7f7dcc0570a3537efe1cda4a8d04 Log: Merge pull request #14 from ikedam/feature/ JENKINS-28841 _NpeForValidateButtonOfFileChoice JENKINS-28841 Absence of emptyFileType in the validate buttun causes NPE. Compare: https://github.com/jenkinsci/extensible-choice-parameter-plugin/compare/ddb0d2c54c79...acde8e872d9a
          Hide
          ikedam ikedam added a comment -

          Fixed in 1.3.1 which will be available in a day.
          Please try that.

          Show
          ikedam ikedam added a comment - Fixed in 1.3.1 which will be available in a day. Please try that.

            People

            • Assignee:
              ikedam ikedam
              Reporter:
              jwpattr Jim Patterson
            • Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: