-
Bug
-
Resolution: Fixed
-
Blocker
-
Jenkins 2.32.2
P4 Plugin 1.5.1
P4 Server Version: P4D/NTX64/2016.2/1487173
Windows 10
-
Powered by SuggestiMate
I am getting an NPE on exit that is causing my build to fail. I am hoping it is misconfiguration, so the resolution will be simple. I am running the build via "Build Now".
F:\Jenkins\jobs\Omniwar\workspace>exit 0
FATAL: null
java.lang.NullPointerException
at org.jenkinsci.plugins.p4.client.ConnectionHelper.getSwarm(ConnectionHelper.java:544)
at org.jenkinsci.plugins.p4.PerforceScm.guessBrowser(PerforceScm.java:225)
at hudson.scm.SCM.getEffectiveBrowser(SCM.java:146)
at hudson.scm.ChangeLogParser.parse(ChangeLogParser.java:57)
at hudson.model.AbstractBuild.calcChangeSet(AbstractBuild.java:911)
at hudson.model.AbstractBuild.getChangeSet(AbstractBuild.java:879)
at hudson.model.AbstractBuild.getCulprits(AbstractBuild.java:349)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:669)
at hudson.model.Run.execute(Run.java:1753)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:404)
Finished: FAILURE
It looks like it is looking for a browser and decides that that browser should be Swarm. I do not have any repo browser installed (i.e. I'm not using Swarm, P4Web, etc.) and the "Repository browser" setting is set to Auto.
Full configuration can be found below.
[JENKINS-43069] NPE on exit - getEffectiveBrowser/getSwarm
Looking at the code it seems the connection object is null, perhaps your Perforce Credentials are invalid or the server is offline?
The server is not offline, the pull works fine and my build runs to completion and then errors out at the very end.
p4 property -l -n P4.Swarm.URL
returns P4.Swarm.URL - no such property
Choosing any browser besides Auto gives me a stack trace when I click save.
java.net.MalformedURLException: no protocol: at java.net.URL.<init>(Unknown Source) at java.net.URL.<init>(Unknown Source) at java.net.URL.<init>(Unknown Source) at org.kohsuke.stapler.Stapler$4.convert(Stapler.java:1083) Caused: org.apache.commons.beanutils.ConversionException: no protocol: at org.kohsuke.stapler.Stapler$4.convert(Stapler.java:1085) at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:739) at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478) at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:777) at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83) at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:678) at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478) at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:777) at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83) at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:678) 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:591) Caused: java.lang.Error: Failed to instantiate class org.jenkinsci.plugins.p4.PerforceScm from {"value":"4","stapler-class":"org.jenkinsci.plugins.p4.PerforceScm","$class":"org.jenkinsci.plugins.p4.PerforceScm","credential":"b2fbcadd-6321-4721-a658-902865f2a3fe","":["0","1","3"],"workspace":{"charset":"none","name":"jenkins-${NODE_NAME}-${JOB_NAME}","pinHost":false,"spec":{"allwrite":false,"clobber":true,"compress":false,"locked":false,"modtime":false,"rmdir":false,"streamName":"","line":"LOCAL","view":"//depot/... //jenkins-${NODE_NAME}-${JOB_NAME}/..."},"stapler-class<span class="code-quote">":"org.jenkinsci.plugins.p4.workspace.ManualWorkspaceImpl","$class<span class="code-quote">":"org.jenkinsci.plugins.p4.workspace.ManualWorkspaceImpl"},"populate":{"have":false,"quiet":true,"pin":"","parallel":{"enable":false,"path":"/usr/local/bin/p4","threads":"4","minfiles":"1","minbytes":"1024"},"stapler-class<span class="code-quote">":"org.jenkinsci.plugins.p4.populate.ForceCleanImpl","$class<span class="code-quote">":"org.jenkinsci.plugins.p4.populate.ForceCleanImpl"},"browser":{"url":"","stapler-class<span class="code-quote">":"org.jenkinsci.plugins.p4.browsers.SwarmBrowser","$class<span class="code-quote">":"org.jenkinsci.plugins.p4.browsers.SwarmBrowser"}} at hudson.model.Descriptor.newInstance(Descriptor.java:599) at org.jenkinsci.plugins.p4.PerforceScm$DescriptorImpl.newInstance(PerforceScm.java:776) at org.jenkinsci.plugins.p4.PerforceScm$DescriptorImpl.newInstance(PerforceScm.java:700) at hudson.DescriptorExtensionList.newInstanceFromRadioList(DescriptorExtensionList.java:141) at hudson.scm.SCMS.parseSCM(SCMS.java:59) at hudson.model.AbstractProject.submit(AbstractProject.java:1881) at hudson.model.Project.submit(Project.java:230) at hudson.model.Job.doConfigSubmit(Job.java:1245) at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:797) at java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source) at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:343) 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:184) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:117) at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:129) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715) Caused: javax.servlet.ServletException at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:765) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845) at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:248) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845) 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:49) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) 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(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
Update Browser's Jelly code to use String and not URI: https://swarm.workshop.perforce.com/changes/21990
Change is now branched to Main and GitHub and will go out in the next release (end of this week).
This still errors out with NPE in the latest version (1.7.0). It is intermittent (but it always has been).
And I still can't set the browser to anything except "auto" without it causing the same error on save previously mentioned above.
Relevant trace from latest run
F:\Jenkins\jobs\Omniwar\workspace>exit 0
FATAL: null
java.lang.NullPointerException
at org.jenkinsci.plugins.p4.client.ConnectionHelper.getSwarm(ConnectionHelper.java:583)
at org.jenkinsci.plugins.p4.PerforceScm.guessBrowser(PerforceScm.java:248)
at hudson.scm.SCM.getEffectiveBrowser(SCM.java:147)
at hudson.scm.ChangeLogParser.parse(ChangeLogParser.java:57)
at hudson.model.AbstractBuild.calcChangeSet(AbstractBuild.java:910)
at hudson.model.AbstractBuild.getChangeSet(AbstractBuild.java:878)
at hudson.model.AbstractBuild.getCulprits(AbstractBuild.java:349)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:669)
at hudson.model.Run.execute(Run.java:1753)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:405)
Finished: FAILURE
Code changed in jenkins
User: Paul Allen
Path:
src/main/java/org/jenkinsci/plugins/p4/PerforceScm.java
src/main/java/org/jenkinsci/plugins/p4/browsers/FishEyeBrowser.java
src/main/java/org/jenkinsci/plugins/p4/browsers/OpenGrokBrowser.java
src/main/java/org/jenkinsci/plugins/p4/browsers/P4Browser.java
src/main/java/org/jenkinsci/plugins/p4/browsers/P4WebBrowser.java
src/main/java/org/jenkinsci/plugins/p4/browsers/SwarmBrowser.java
src/main/resources/org/jenkinsci/plugins/p4/browsers/FishEyeBrowser/config.jelly
src/main/resources/org/jenkinsci/plugins/p4/browsers/OpenGrokBrowser/config.jelly
src/main/resources/org/jenkinsci/plugins/p4/browsers/P4WebBrowser/config.jelly
src/main/resources/org/jenkinsci/plugins/p4/browsers/SwarmBrowser/config.jelly
src/main/resources/org/jenkinsci/plugins/p4/changes/P4ChangeSet/index.jelly
http://jenkins-ci.org/commit/p4-plugin/dc460806d1b78d5766aefb2b7514f981c0a43a03
Log:
Update Repository Browser for use with Pipeline.
May fix the following: JENKINS-43069 JENKINS-37094
The 'Repository Browser' setting is set to '(Auto)' by default. The plugin looks at the server's settings and looks for a Property `P4.Swarm.URL` if this is set then it assumes Swarm is installed. Perhaps check to see if the property is set:
As a workaround try choosing a browser and leaving the fields empty.