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

Saving SecretBuildWrapper for the first time fails due to duplicated credentialsId field unless git also installed

    XMLWordPrintable

Details

    Description

      NPE when using secret files without git plugin installed

      javax.servlet.ServletException: java.lang.Error: Failed to instantiate class org.jenkinsci.plugins.credentialsbinding.impl.FileBinding from {"variable":"BINDING_VARIABLE","credentialsId":["6a26f748-94d4-4dcc-9ec5-8a8a78ccdc58",""],"stapler-class<span class="code-quote">":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding","$class<span class="code-quote">":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding"}
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      	at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
      	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:790)
      	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
      	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:80)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	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:171)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
      	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
      	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
      	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
      	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
      	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
      	at org.eclipse.jetty.server.Server.handle(Server.java:499)
      	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
      	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
      	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
      	at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: java.lang.Error: Failed to instantiate class org.jenkinsci.plugins.credentialsbinding.impl.FileBinding from {"variable":"BINDING_VARIABLE","credentialsId":["6a26f748-94d4-4dcc-9ec5-8a8a78ccdc58",""],"stapler-class<span class="code-quote">":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding","$class<span class="code-quote">":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding"}
      	at hudson.model.Descriptor.newInstance(Descriptor.java:598)
      	at hudson.model.Descriptor$NewInstanceBindInterceptor.instantiate(Descriptor.java:641)
      	at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:749)
      	at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
      	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
      	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:712)
      	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
      	at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:771)
      	at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
      	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
      	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
      	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
      	at hudson.model.Descriptor.newInstance(Descriptor.java:590)
      	at hudson.util.DescribableList.rebuild(DescribableList.java:177)
      	at hudson.model.Project.submit(Project.java:234)
      	at hudson.model.Job.doConfigSubmit(Job.java:1221)
      	at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:795)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)
      	at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:52)
      	at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
      	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
      	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
      	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      	... 58 more
      Caused by: java.lang.NullPointerException
      	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:719)
      	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
      	at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:771)
      	at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
      	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
      	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
      	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
      	at hudson.model.Descriptor.newInstance(Descriptor.java:590)
      	... 86 more
      
      • Start a new jenkins instance from the 2.7.2 war file and in the setup wizard choose the plugins to install
      • Deselect all plugins but {credentials-binding}

        and continue with the installation

      • Go to [BASE_JENKINS_URL]/credentials/store/system/domain//newCredentials_ and add a new credential of type secret file and use the previously attached file as value, name it secretFile and save it
      • Create a new project of type FreeStyleProject and check the Use secret text(s) or file(s) box
      • Add a new binding of type Secret File with any variable name and using the previously created secretFile credential
      • Try to save the job, a NPE occurs

      Attachments

        Issue Links

          Activity

            rarabaolaza Raul Arabaolaza created issue -
            rarabaolaza Raul Arabaolaza made changes -
            Field Original Value New Value
            Description NPE when using secret files without {{git plugin}} installed

            {code}
            javax.servlet.ServletException: java.lang.Error: Failed to instantiate class org.jenkinsci.plugins.credentialsbinding.impl.FileBinding from {"variable":"BINDING_VARIABLE","credentialsId":["6a26f748-94d4-4dcc-9ec5-8a8a78ccdc58",""],"stapler-class":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding","$class":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding"}
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
            at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)
            at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
            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:790)
            at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
            at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:80)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            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:171)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
            at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
            at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
            at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
            at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
            at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
            at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
            at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
            at org.eclipse.jetty.server.Server.handle(Server.java:499)
            at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
            at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
            at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
            at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            at java.lang.Thread.run(Thread.java:745)
            Caused by: java.lang.Error: Failed to instantiate class org.jenkinsci.plugins.credentialsbinding.impl.FileBinding from {"variable":"BINDING_VARIABLE","credentialsId":["6a26f748-94d4-4dcc-9ec5-8a8a78ccdc58",""],"stapler-class":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding","$class":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding"}
            at hudson.model.Descriptor.newInstance(Descriptor.java:598)
            at hudson.model.Descriptor$NewInstanceBindInterceptor.instantiate(Descriptor.java:641)
            at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:749)
            at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
            at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
            at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:712)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
            at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:771)
            at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
            at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
            at hudson.model.Descriptor.newInstance(Descriptor.java:590)
            at hudson.util.DescribableList.rebuild(DescribableList.java:177)
            at hudson.model.Project.submit(Project.java:234)
            at hudson.model.Job.doConfigSubmit(Job.java:1221)
            at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:795)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)
            at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:52)
            at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
            at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
            at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
            at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
            at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
            ... 58 more
            Caused by: java.lang.NullPointerException
            at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:719)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
            at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:771)
            at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
            at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
            at hudson.model.Descriptor.newInstance(Descriptor.java:590)
            ... 86 more
            {code}

            * Start a new jenkins instance from the 2.7.2 war file and in the setup wizard choose the plugins to install
            * Deselect all plugins but `credentials-binding` and continue with the installation
            * Go to _[BASE_JENKINS_URL]/credentials/store/system/domain/_/newCredentials_ and add a new credential of type _secret file_ and use the previously attached file as value, name it _secretFile_ and save it
            * Create a new project of type _FreeStyleProject_ and check the _Use secret text(s) or file(s)_ box
            * Add a new binding of type _Secret File_ with any variable name and using the previously created _secretFile_ credential
            * Try to save the job, a NPE occurs
            NPE when using secret files without {{git plugin}} installed

            {code}
            javax.servlet.ServletException: java.lang.Error: Failed to instantiate class org.jenkinsci.plugins.credentialsbinding.impl.FileBinding from {"variable":"BINDING_VARIABLE","credentialsId":["6a26f748-94d4-4dcc-9ec5-8a8a78ccdc58",""],"stapler-class":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding","$class":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding"}
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
            at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)
            at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
            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:790)
            at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
            at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:80)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            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:171)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
            at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
            at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
            at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
            at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
            at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
            at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
            at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
            at org.eclipse.jetty.server.Server.handle(Server.java:499)
            at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
            at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
            at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
            at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            at java.lang.Thread.run(Thread.java:745)
            Caused by: java.lang.Error: Failed to instantiate class org.jenkinsci.plugins.credentialsbinding.impl.FileBinding from {"variable":"BINDING_VARIABLE","credentialsId":["6a26f748-94d4-4dcc-9ec5-8a8a78ccdc58",""],"stapler-class":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding","$class":"org.jenkinsci.plugins.credentialsbinding.impl.FileBinding"}
            at hudson.model.Descriptor.newInstance(Descriptor.java:598)
            at hudson.model.Descriptor$NewInstanceBindInterceptor.instantiate(Descriptor.java:641)
            at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:749)
            at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
            at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
            at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:712)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
            at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:771)
            at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
            at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
            at hudson.model.Descriptor.newInstance(Descriptor.java:590)
            at hudson.util.DescribableList.rebuild(DescribableList.java:177)
            at hudson.model.Project.submit(Project.java:234)
            at hudson.model.Job.doConfigSubmit(Job.java:1221)
            at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:795)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)
            at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:52)
            at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
            at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
            at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
            at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
            at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
            ... 58 more
            Caused by: java.lang.NullPointerException
            at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:719)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
            at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:771)
            at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
            at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
            at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
            at hudson.model.Descriptor.newInstance(Descriptor.java:590)
            ... 86 more
            {code}

            * Start a new jenkins instance from the 2.7.2 war file and in the setup wizard choose the plugins to install
            * Deselect all plugins but {credentials-binding} and continue with the installation
            * Go to _[BASE_JENKINS_URL]/credentials/store/system/domain/_/newCredentials_ and add a new credential of type _secret file_ and use the previously attached file as value, name it _secretFile_ and save it
            * Create a new project of type _FreeStyleProject_ and check the _Use secret text(s) or file(s)_ box
            * Add a new binding of type _Secret File_ with any variable name and using the previously created _secretFile_ credential
            * Try to save the job, a NPE occurs
            rarabaolaza Raul Arabaolaza made changes -
            Link This issue is related to JENKINS-27387 [ JENKINS-27387 ]
            rarabaolaza Raul Arabaolaza made changes -
            Attachment secretFile [ 33732 ]
            jglick Jesse Glick added a comment -

            The exception reminds me of this bug in git, though it is very odd that it would reproducible when git is not installed.

            jglick Jesse Glick added a comment - The exception reminds me of this bug in git , though it is very odd that it would reproducible when git is not installed.
            jglick Jesse Glick made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            jglick Jesse Glick added a comment -

            Reproduced using provided instructions, investigating.

            jglick Jesse Glick added a comment - Reproduced using provided instructions, investigating.
            jglick Jesse Glick added a comment -

            I suspect a regression from the fix of JENKINS-35490.

            jglick Jesse Glick added a comment - I suspect a regression from the fix of JENKINS-35490 .
            jglick Jesse Glick made changes -
            Link This issue blocks JENKINS-35490 [ JENKINS-35490 ]
            jglick Jesse Glick added a comment -

            Happens with username/password bindings as well—not specific to file bindings.

            jglick Jesse Glick added a comment - Happens with username/password bindings as well—not specific to file bindings.
            jglick Jesse Glick added a comment -

            Reproducible even in 1.596.1 with credentials 1.23.

            jglick Jesse Glick added a comment - Reproducible even in 1.596.1 with credentials 1.23.
            jglick Jesse Glick added a comment -

            I think git is a red herring; AFAICT it is reproducible when ssh-credentials (a dependency of git) is not installed

            jglick Jesse Glick added a comment - I think git is a red herring; AFAICT it is reproducible when ssh-credentials (a dependency of git ) is not installed
            jglick Jesse Glick added a comment -

            Wrong, the presence of git itself does seem to trigger the difference.

            Tried comparing HTML in the form, but the number of generated strings is making this seem hopeless.

            jglick Jesse Glick added a comment - Wrong, the presence of git itself does seem to trigger the difference. Tried comparing HTML in the form, but the number of generated strings is making this seem hopeless.
            jglick Jesse Glick added a comment -

            Reproducible even when backing out both PR 15 & PR 17.

            jglick Jesse Glick added a comment - Reproducible even when backing out both PR 15 & PR 17 .
            jglick Jesse Glick added a comment -

            Only reproduce when configuring the build wrapper for the first time, not when reconfiguring a project that already had it.

            jglick Jesse Glick added a comment - Only reproduce when configuring the build wrapper for the first time, not when reconfiguring a project that already had it.
            jglick Jesse Glick added a comment -

            No evident JavaScript errors in console.

            jglick Jesse Glick added a comment - No evident JavaScript errors in console.
            jglick Jesse Glick made changes -
            Status In Progress [ 3 ] Open [ 1 ]
            jglick Jesse Glick made changes -
            Assignee Jesse Glick [ jglick ]
            jglick Jesse Glick made changes -
            Summary NPE when using credentials-binding without git pluign Saving SecretBuildWrapper for the first time fails due to duplicated credentialsId field unless git also installed
            jglick Jesse Glick made changes -
            Priority Minor [ 4 ] Critical [ 2 ]
            jglick Jesse Glick added a comment -

            If no fix is forthcoming, I would recommend just disabling the credentials parameter support for now. It is probably rarely used, and certainly a lower priority than having basic fixed credentials working in freestyle projects. (Pipeline projects can use credentials parameters without the JavaScript hacks.)

            jglick Jesse Glick added a comment - If no fix is forthcoming, I would recommend just disabling the credentials parameter support for now. It is probably rarely used, and certainly a lower priority than having basic fixed credentials working in freestyle projects. (Pipeline projects can use credentials parameters without the JavaScript hacks.)

            I think I've understood what the issue is. I've opened a PR for the credentials-plugin, because the issue seems to be in the JS library of the /lib/credentials:select Jelly tag.
            https://github.com/jenkinsci/credentials-plugin/pull/67

            tom_gl Thomas de Grenier de Latour added a comment - I think I've understood what the issue is. I've opened a PR for the credentials-plugin, because the issue seems to be in the JS library of the /lib/credentials:select Jelly tag. https://github.com/jenkinsci/credentials-plugin/pull/67
            tom_gl Thomas de Grenier de Latour made changes -
            Component/s credentials-plugin [ 16523 ]
            tom_gl Thomas de Grenier de Latour made changes -
            Remote Link This issue links to "credentials-plugin:PR-67 (Web Link)" [ 14821 ]
            tom_gl Thomas de Grenier de Latour made changes -
            Link This issue is related to JENKINS-26578 [ JENKINS-26578 ]

            Code changed in jenkins
            User: Thomas de Grenier de Latour
            Path:
            src/main/resources/lib/credentials/select/select.js
            http://jenkins-ci.org/commit/credentials-plugin/c2840775a4a6b80a7bc2be5599cbff3967c1b421
            Log:
            JENKINS-37707 fix missing Behaviour in /lib/credentials:select

            When a credentials selector is dynamicaly added to the DOM and
            no Behaviour was specified yet (for instance, in JENKINS-37707,
            when adding a first Credentials Binding wrapper, and we don't
            have an other plugin, like Git, to ensure the credentials JS lib
            is already loaded in the page), then some new Behaviours are
            specified, and retro-applied to existing DOM elements (with
            Behaviour.applySubtree in a timeout function). It's a hack,
            which almost works, but there was an issue with elements with
            class 'credentials-select-control': there is a Behaviour specified
            for them, but Behaviours are only applied to their children, not
            themselves. That's what this (rather obvious) patch fixes.
            It seems to be enough to fix the error reported in JENKINS-37707.

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Thomas de Grenier de Latour Path: src/main/resources/lib/credentials/select/select.js http://jenkins-ci.org/commit/credentials-plugin/c2840775a4a6b80a7bc2be5599cbff3967c1b421 Log: JENKINS-37707 fix missing Behaviour in /lib/credentials:select When a credentials selector is dynamicaly added to the DOM and no Behaviour was specified yet (for instance, in JENKINS-37707 , when adding a first Credentials Binding wrapper, and we don't have an other plugin, like Git, to ensure the credentials JS lib is already loaded in the page), then some new Behaviours are specified, and retro-applied to existing DOM elements (with Behaviour.applySubtree in a timeout function). It's a hack, which almost works, but there was an issue with elements with class 'credentials-select-control': there is a Behaviour specified for them, but Behaviours are only applied to their children, not themselves. That's what this (rather obvious) patch fixes. It seems to be enough to fix the error reported in JENKINS-37707 .

            Code changed in jenkins
            User: Stephen Connolly
            Path:
            src/main/resources/lib/credentials/select/select.js
            http://jenkins-ci.org/commit/credentials-plugin/219ea3243a187bed78545fc215aa282fabe25a31
            Log:
            Merge pull request #67 from thomasgl-orange/JENKINS-37707

            JENKINS-37707 fix missing Behaviour in /lib/credentials:select

            Compare: https://github.com/jenkinsci/credentials-plugin/compare/e0d05e2103b9...219ea3243a18

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Stephen Connolly Path: src/main/resources/lib/credentials/select/select.js http://jenkins-ci.org/commit/credentials-plugin/219ea3243a187bed78545fc215aa282fabe25a31 Log: Merge pull request #67 from thomasgl-orange/ JENKINS-37707 JENKINS-37707 fix missing Behaviour in /lib/credentials:select Compare: https://github.com/jenkinsci/credentials-plugin/compare/e0d05e2103b9...219ea3243a18
            stephenconnolly Stephen Connolly made changes -
            Assignee Thomas de Grenier de Latour [ tom_gl ]
            stephenconnolly Stephen Connolly made changes -
            Resolution Fixed [ 1 ]
            Status Open [ 1 ] Resolved [ 5 ]
            jglick Jesse Glick made changes -
            Link This issue is duplicated by JENKINS-29581 [ JENKINS-29581 ]
            cloudbees CloudBees Inc. made changes -
            Remote Link This issue links to "CloudBees Internal OSS-1369 (Web Link)" [ 18726 ]

            People

              tom_gl Thomas de Grenier de Latour
              rarabaolaza Raul Arabaolaza
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: