Bug 408377 - java.lang.ClassCastException: hudson.scm.NullSCM cannot be cast to hudson.plugins.git.GitSCM
Summary: java.lang.ClassCastException: hudson.scm.NullSCM cannot be cast to hudson.plu...
Status: ASSIGNED
Alias: None
Product: Hudson
Classification: Technology
Component: Plugins (show other bugs)
Version: 3.0.1   Edit
Hardware: All All
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Winston Prakash CLA
QA Contact: Geoff Waymark CLA
URL: http://ci.hudson-ci.org/view/All/people/
Whiteboard: candidate-3.3.0
Keywords:
Depends on:
Blocks:
 
Reported: 2013-05-17 19:54 EDT by Roy Varghese CLA
Modified: 2015-05-29 13:52 EDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Roy Varghese CLA 2013-05-17 19:54:10 EDT
The page at http://ci.hudson-ci.org/view/All/people/ does not display.

Following stack is printed:
root cause

java.lang.ClassCastException: hudson.scm.NullSCM cannot be cast to hudson.plugins.git.GitSCM
	hudson.plugins.git.GitChangeSet.isCreateAccountBaseOnCommitterEmail(GitChangeSet.java:296)
	hudson.plugins.git.GitChangeSet.getAuthor(GitChangeSet.java:256)
	hudson.model.View$People.getUserInfo(View.java:505)
	hudson.model.View$People.<init>(View.java:486)
	hudson.model.View.getPeople(View.java:457)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:601)
	org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:274)
	org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:187)
	org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:45)
	org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:565)
	org.kohsuke.stapler.Stapler.invoke(Stapler.java:650)
	org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:225)
	org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:45)
	org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:565)
	org.kohsuke.stapler.Stapler.invoke(Stapler.java:650)
	org.kohsuke.stapler.Stapler.invoke(Stapler.java:481)
	org.kohsuke.stapler.Stapler.service(Stapler.java:152)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Comment 1 Winston Prakash CLA 2015-05-29 13:51:45 EDT
Similar exception is thrown from Mailer (reported by viraj.purang)

ERROR: Publisher hudson.tasks.Mailer aborted due to exception
java.lang.ClassCastException: hudson.scm.NullSCM cannot be cast to hudson.plugins.git.GitSCM
	at hudson.plugins.git.GitChangeSet.isCreateAccountBaseOnCommitterEmail(GitChangeSet.java:296)
	at hudson.plugins.git.GitChangeSet.getAuthor(GitChangeSet.java:256)
	at hudson.model.AbstractBuild.hasParticipant(AbstractBuild.java:409)
	at hudson.model.AbstractProject.hasParticipant(AbstractProject.java:1709)
	at hudson.model.User.getProjects(User.java:384)
	at hudson.scm.MailAddressResolverImpl.findMailAddressFor(MailAddressResolverImpl.java:43)
	at hudson.tasks.MailAddressResolver.resolve(MailAddressResolver.java:88)
	at hudson.tasks.Mailer$UserProperty.getAddress(Mailer.java:542)
	at hudson.tasks.mail.impl.BaseBuildResultMail.buildCulpritList(BaseBuildResultMail.java:245)
	at hudson.tasks.mail.impl.BaseBuildResultMail.createEmptyMail(BaseBuildResultMail.java:155)
	at hudson.tasks.mail.impl.FailureBuildMail.getMail(FailureBuildMail.java:51)
	at hudson.tasks.MailSender.getMail(MailSender.java:128)
	at hudson.tasks.MailSender.execute(MailSender.java:74)
	at hudson.tasks.Mailer.perform(Mailer.java:112)
	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:34)
	at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:736)
	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:714)
	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:690)
	at hudson.model.Build$RunnerImpl.post2(Build.java:163)
	at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:652)
	at hudson.model.Run.run(Run.java:1517)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44)
	at hudson.model.ResourceController.execute(ResourceController.java:82)
	at hudson.model.Executor.run(Executor.java:137)
Comment 2 Winston Prakash CLA 2015-05-29 13:52:39 EDT
Some of the jobs had git SCM and later on removed (or vice versa). Not necessarily the job which is failing. Hudson has a weird way of finding "people". That means Hudson looks through jobs and finds committer in changeset of builds and add it to "people".

In order to send mail to committers,  it search through "people" to find e-mail address. Weirdly it searches every job and every build the user might be involved (by way of being a committer). If SCM info was changed in a job between builds, then gets incorrectly cast.

at hudson.model.AbstractBuild.hasParticipant(AbstractBuild.java:409)
	at hudson.model.AbstractProject.hasParticipant(AbstractProject.java:1709)
	at hudson.model.User.getProjects(User.java:384)

        at hudson.scm.MailAddressResolverImpl.findMailAddressFor(MailAddressResolverImpl.java:43)




The quick solution is to fix git plugin and make sure the type is checked first.