Kenneth W DeLong created GROOVY-11126:
-----------------------------------------

             Summary: Null-safe Dereference fails after time
                 Key: GROOVY-11126
                 URL: https://issues.apache.org/jira/browse/GROOVY-11126
             Project: Groovy
          Issue Type: Bug
          Components: bytecode
    Affects Versions: 4.0.12, 4.0.11
         Environment: Zulu Java 17.0.7, Amazon Linux 2023, Spring Boot 3.1.1
            Reporter: Kenneth W DeLong


I have a server-side app that works perfectly for a long time (18-24h) then 
suddenly starts throwing "impossible" errors.
{code:java}
Caused by: java.lang.NullPointerException: Cannot invoke 
"java.lang.CharSequence.length()" because "self" is null       at 
org.codehaus.groovy.runtime.StringGroovyMethods.size(StringGroovyMethods.java:2693)
  at org.codehaus.groovy.runtime.dgm$1323.doMethodInvoke(Unknown Source)  at 
com.hatchbaby.model.ColorParser.isOneByteFormat(ColorParser.groovy:74)       at 
com.hatchbaby.model.ColorParser.getRed(ColorParser.groovy:13)        at 
com.hatchbaby.domain.Content.getRed(Content.groovy:173)
 {code}
The line of code at ColorParser:74 is:
{code:java}
int size = color?.size() ?: 0 {code}
The variable `color` is a String. The null-safe dereference operator has ceased 
to short-circuit.

This code is years old and has run flawlessly. Since the upgrade from Spring 
Boot 2.7.4 to Boot 3.1.1, it runs fine for 18-24h, then it starts throwing 
NullPointerExceptions.  This is happening at a couple of other places in the 
code, all on null-safe dereferences that don't short-circuit. The above code is 
hit 9,000+ times/day. We have a cluster of servers and they seem to develop the 
problem within a couple hours of each other.

The server is running with Spring Boot 3.1.1 (hence Groovy 4.0.12) running on 
Java 17.0.7 (Azul Zulu) on Amazon Linux 2023. 

I have tried to reproduce the error by running a tiny program that mimics the 
error, but so far after running 1.4 million invocations over 24h with no errors 
(as you might expect).



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

Reply via email to