timja / jenkins-gh-issues-poc-06-20

0 stars 0 forks source link

[JENKINS-5061] Cannot create a new View #366

Closed timja closed 14 years ago

timja commented 14 years ago

I'm using version 1.336

Got the following exception:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: java.lang.NullPointerException
org.kohsuke.stapler.Stapler.invoke(Stapler.java:527)
org.kohsuke.stapler.Stapler.invoke(Stapler.java:408)
org.kohsuke.stapler.Stapler.service(Stapler.java:117)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:94)
net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:304)
org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:31)
hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:97)
hudson.plugins.audit_trail.AuditTrailFilter.doFilter(AuditTrailFilter.java:64)
hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:97)
hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:86)
hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:66)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
root cause
java.lang.NullPointerException
hudson.model.Descriptor.newInstance(Descriptor.java:351)
hudson.model.ListView.initColumns(ListView.java:138)
hudson.model.ListView.(ListView.java:98)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:67)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:521)
org.kohsuke.stapler.RequestImpl.invokeConstructor(RequestImpl.java:391)
org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:344)
hudson.model.Descriptor.newInstance(Descriptor.java:351)
hudson.model.View.create(View.java:604)
hudson.model.Hudson.doCreateView(Hudson.java:2589)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:615)
org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:185)
org.kohsuke.stapler.Function.bindAndInvoke(Function.java:101)
org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:54)
org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:74)
org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
org.kohsuke.stapler.Stapler.invoke(Stapler.java:492)
org.kohsuke.stapler.Stapler.invoke(Stapler.java:408)
org.kohsuke.stapler.Stapler.service(Stapler.java:117)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:94)
net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:304)
org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:31)
hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:97)
hudson.plugins.audit_trail.AuditTrailFilter.doFilter(AuditTrailFilter.java:64)
hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:97)
hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:86)
hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:66)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.


Originally reported by cpatrick_netflix, imported from: Cannot create a new View
  • status: Closed
  • priority: Major
  • resolution: Fixed
  • resolved: 2010-01-15T07:05:26+00:00
  • imported: 2022-06-20
timja commented 14 years ago

rdesgroppes:

I was about to submit the same issue with Hudson ver. 1.337:

Status Code: 500
Exception:
Stacktrace:

java.lang.NullPointerException
at hudson.model.Descriptor.newInstance(Descriptor.java:351)
at hudson.model.ListView.initColumns(ListView.java:138)
at hudson.model.ListView.(ListView.java:98)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.kohsuke.stapler.RequestImpl.invokeConstructor(RequestImpl.java:391)
at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:344)
at hudson.model.Descriptor.newInstance(Descriptor.java:351)
at hudson.model.View.create(View.java:683)
at hudson.model.Hudson.doCreateView(Hudson.java:2599)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:185)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:101)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:54)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:74)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:492)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:408)
at org.kohsuke.stapler.Stapler.service(Stapler.java:117)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
at winstone.ServletConfiguration.execute(ServletConfiguration.java:249)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:335)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:378)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:94)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:86)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244)
at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
at java.lang.Thread.run(Thread.java:619)

Generated by Winstone Servlet Engine v0.9.10 at Mon Dec 14 15:50:20 CET 2009

Régis

timja commented 14 years ago

cbos:

We have the same issue.
This is blocking in creating new views and changing views.

timja commented 14 years ago

tbingaman:

This is affecting the Sectioned View Plugin as well (when it contains one or more List View Sections).

I believe this is occurring because of the way List Views initialize the default columns. There is no StaplerRequest object available at the time of instantiation so they are calling d.newInstance(null,null) on the column Descriptor objects. The javadoc for this method states that StaplerRequest must always be non-null (yet the code is passing in null).

The default columns bundled in Hudson get around this by overriding this method:

@Override
public ListViewColumn newInstance(StaplerRequest req, JSONObject formData) throws FormException {
    // This will be called with req == null also the Descriptor's doc tells you not. so the default impl fails
    return new LastDurationColumn();
}

My assumption is that one of the additional columns provided by a plugin does not do this and that everyone seeing this issue has a plugin installed that provides an additional list view column. This is just speculation though as I haven't been able to duplicate the issue locally yet.

It would help a lot if people seeing the issue could provide a list of plugins they have installed.

timja commented 14 years ago

tbingaman:

Ok, finally duplicated this after installing the Claim plugin.

Looks like someone has already fixed it, but no new release has been made since 1.6

timja commented 14 years ago

cbos:

We have the Claim plugin installed as well (version 1.6). And we have this issue as well.

timja commented 14 years ago

scm_issue_link:

Code changed in hudson
User: : kohsuke
Path:
trunk/hudson/main/core/src/main/java/hudson/model/Descriptor.java
trunk/hudson/main/core/src/main/java/hudson/views/BuildButtonColumn.java
trunk/hudson/main/core/src/main/java/hudson/views/JobColumn.java
trunk/hudson/main/core/src/main/java/hudson/views/LastDurationColumn.java
trunk/hudson/main/core/src/main/java/hudson/views/LastFailureColumn.java
trunk/hudson/main/core/src/main/java/hudson/views/LastStableColumn.java
trunk/hudson/main/core/src/main/java/hudson/views/LastSuccessColumn.java
trunk/hudson/main/core/src/main/java/hudson/views/ListViewColumn.java
trunk/hudson/main/core/src/main/java/hudson/views/StatusColumn.java
trunk/hudson/main/core/src/main/java/hudson/views/WeatherColumn.java
trunk/www/changelog.html
http://fisheye4.cenqua.com/changelog/hudson/?cs=25857
Log:
[FIXED JENKINS-5061] in 1.342. Avoids NPE even without having a help from a plugin. Also added a note about this contract violation of the newInstance method.

timja commented 14 years ago

tbingaman:

Sweet, thanks Kohsuke, that's a better fix

Looks like the Claim plugin can be left as-is. When Hudson 1.342 is released it should start working again. Until then, temporarily disabling the Claim plugin should allow List Views to be created and Sectioned Views containing List View Sections to be saved.

timja commented 14 years ago

rdesgroppes:

(no more work to be done)

timja commented 2 years ago

[Originally duplicated by: JENKINS-5108]

timja commented 2 years ago

[Originally duplicated by: JENKINS-5291]