[ 
https://issues.apache.org/jira/browse/TOMEE-4485?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18011454#comment-18011454
 ] 

Richard Zowalla commented on TOMEE-4485:
----------------------------------------

Yes. The commit was reverted. Details are on the mailing list.

> Context ClassLoader becomes null for EJB timer threads in TomEE 10
> ------------------------------------------------------------------
>
>                 Key: TOMEE-4485
>                 URL: https://issues.apache.org/jira/browse/TOMEE-4485
>             Project: TomEE
>          Issue Type: Bug
>          Components: TomEE Core Server
>    Affects Versions: 10.0.1
>         Environment: TomEE 10.0.1 running on JRE 21 (Temurin 21.0.6+7) in 
> Docker container (Ubuntu based). Hibernate 6.6.13 is used instead of OpenJPA.
>            Reporter: Frédéric Hannes
>            Priority: Major
>
> We've been working on migrating our applications from Java EE to Jakarta EE. 
> The applications run without any issues on TomEE 8 with Java EE and TomEE 9 
> with Jakarta EE. But when upgrading to TomEE 10 we notice that errors start 
> occurring after a few JNDI lookups in a thread from the EjbTimerPool. Since 
> we don't experience any issues on TomEE 9, I suspect it may be a bug that was 
> introduced in TomEE 10.
> It is still unclear to us what is the underlying cause of the problem and 
> what component it pertains to, as the exception cause is in code of the 
> Tomcat server, but the thread is managed by OpenEJB. Since the error occurred 
> when upgrading to TomEE 10, I've logged it under TomEE, but please move the 
> issue if needed.
> The cause of the exception is a JNDI lookup that fails. In the 
> {{ContextBindingsisClassLoaderBound()}} method in Tomcat, the context 
> classloader of the thread is used as the key for a map. At some point the 
> classloader of these threads in the EjbTimerPool become {{null}} and as a 
> result we get back this {{NullPointerException}} when it tries to use it as 
> the key for the map.
> {code:java}
> application-1  | Caused by: java.lang.NullPointerException: Cannot invoke 
> "Object.hashCode()" because "<parameter1>" is null
> application-1  |     at 
> java.base/java.util.concurrent.ConcurrentHashMap.get(Unknown Source)
> application-1  |     at 
> java.base/java.util.concurrent.ConcurrentHashMap.containsKey(Unknown Source)
> application-1  |     at 
> org.apache.naming.ContextBindings.isClassLoaderBound(ContextBindings.java:302)
> application-1  |     at 
> org.apache.naming.SelectorContext.getBoundContext(SelectorContext.java:390)
> application-1  |     at 
> org.apache.naming.SelectorContext.lookup(SelectorContext.java:144)
> application-1  |     at 
> java.naming/javax.naming.InitialContext.lookup(Unknown Source)
> application-1  |     at com.example.c.e.lookupNamedObject(e.java:54)
> application-1  |     at com.example.a.c.a(c.java:51)
> application-1  |     ... 23 more
> {code}
> I've not been able to pinpoint what causes the classloader to be set to 
> {{null}} and I've not found anything in migration guides, release notes or 
> commits that have given me much more insight into the issue so far. I am not 
> familiar enough with the entire codebase of the TomEE ecosystem itself to 
> efficiently diagnose the issue. But I will update this ticket if I find out 
> anything more.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to