Details
-
Bug
-
Resolution: Fixed
-
Low
-
None
-
None
Description
Crowd's TokenReaper background job is failing every time it runs (once an hour), with a stacktrace:
2009-03-10 18:00:00,075 DefaultQuartzScheduler_Worker-4 ERROR [org.quartz.core.JobRunShell] Job DEFAULT.TokenReaperJob threw an unhandled Exception:
java.lang.NullPointerException
at com.atlassian.crowd.model.token.Token.hashCode(Token.java:207)
at java.util.HashMap.put(HashMap.java:418)
at java.util.HashSet.add(HashSet.java:194)
at org.apache.commons.lang.builder.ToStringStyle.register(ToStringStyle.java:151)
at org.apache.commons.lang.builder.ToStringStyle.appendClassName(ToStringStyle.java:1403)
at org.apache.commons.lang.builder.ToStringStyle.appendStart(ToStringStyle.java:328)
at org.apache.commons.lang.builder.ToStringBuilder.<init>(ToStringBuilder.java:255)
at org.apache.commons.lang.builder.ToStringBuilder.<init>(ToStringBuilder.java:212)
at com.atlassian.crowd.model.token.Token.toString(Token.java:216)
at java.lang.String.valueOf(String.java:2615)
at java.lang.StringBuilder.append(StringBuilder.java:116)
at com.atlassian.crowd.model.token.TokenDAOHibernate.remove(TokenDAOHibernate.java:70)
at com.atlassian.crowd.model.token.TokenDAOProxy.remove(TokenDAOProxy.java:125)
at com.atlassian.crowd.manager.directory.DirectoryManagerGeneric.removeToken(DirectoryManagerGeneric.java:1031)
at com.atlassian.crowd.manager.directory.DirectoryManagerGeneric.removeExpiredTokens(DirectoryManagerGeneric.java:1014)
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:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at com.atlassian.spring.interceptors.SpringProfilingInterceptor.invoke(SpringProfilingInterceptor.java:20)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy8.removeExpiredTokens(Unknown Source)
at com.atlassian.crowd.authentication.tokenreaper.TokenReaper.executeInternal(TokenReaper.java:34)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:195)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
That stacktrace is from Crowd 1.6.1 (Studio 1.6.1.0-RC2-20090310-01). In Crowd 1.6 (Studio 1.6.0.1) the error is the same but does not contain a stracktrace:
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.NullPointerException]
at org.quartz.core.JobRunShell.run(JobRunShell.java:206)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
- Nested Exception (Underlying Cause) ---------------
java.lang.NullPointerException
2009-03-08 14:00:01,470 DefaultQuartzScheduler_Worker-5 ERROR [org.quartz.core.JobRunShell] Job DEFAULT.TokenReaperJob threw an unhandled Exception:
java.lang.NullPointerException
2009-03-08 14:00:01,470 DefaultQuartzScheduler_Worker-5 ERROR [org.quartz.core.ErrorLogger] Job (DEFAULT.TokenReaperJob threw an exception.