testcontainers / testcontainers/testcontainers-java
[Bug]: Underlying NullPointerException in ContainerLessJdbcDelegate when using ScriptUtils
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Java
- Estrellas
- 8.7k
- Forks
- 1.9k
- Merge medio
- 2 d 17 h
- PR fusionados (30 d)
- 9
Descripción
Module
Core
Testcontainers version
1.21.4
Using the latest Testcontainers version?
Yes
Host OS
Windows
Host Arch
x64
Docker version
Client:
Version: 29.0.2-rd
API version: 1.51 (downgraded from 1.52)
Go version: go1.25.4
Git commit: 5a2d7eb
Built: Tue Nov 18 23:34:16 2025
OS/Arch: windows/amd64
Context: default
Server:
Engine:
Version: 28.3.3
API version: 1.51 (minimum version 1.24)
Go version: go1.24.8
Git commit: bea959c7b793b32a893820b97c4eadc7c87fabb0
Built: Sun Oct 12 08:01:14 2025
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v2.1.5
GitCommit: fcd43222d6b07379a4be9786bda52438f0dd16a1
runc:
Version: 1.3.3
GitCommit: d842d7719497cc3b774fd71620278ac9e17710e0
docker-init:
Version: 0.19.0
GitCommit:
What happened?
Hi,
When running a script with ScriptUtils on ContainerLessJdbcDelegate an underlying NullPointerException occurs.
ScriptUtils.runInitScript( new ContainerLessJdbcDelegate( connection ), initScript );
Reason is the code in org.testcontainers.jdbc.JdbcDatabaseDelegate#closeConnectionQuietly. It closes the connection which is null, as the ContainerLessJdbcDelegate has an own connection field. This could probably be solved by implementing closeConnectionQuietly in ContainerLessJdbcDelegate and closing the own field instead of the one on the super class.
Thank you and best regards
Nils
Relevant log output
2026-03-12 08:28:11 ERROR [main ] o.t.j.JdbcDatabaseDelegate - Could not close JDBC connection
java.lang.NullPointerException: Cannot invoke "java.sql.Connection.close()" because "this.connection" is null
at org.testcontainers.jdbc.JdbcDatabaseDelegate.closeConnectionQuietly(JdbcDatabaseDelegate.java:72)
at org.testcontainers.jdbc.JdbcDatabaseDelegate.closeConnectionQuietly(JdbcDatabaseDelegate.java:16)
at org.testcontainers.delegate.AbstractDatabaseDelegate.close(AbstractDatabaseDelegate.java:45)
at org.testcontainers.ext.ScriptUtils.executeDatabaseScript(ScriptUtils.java:308)
at org.testcontainers.ext.ScriptUtils.executeDatabaseScript(ScriptUtils.java:225)
at org.testcontainers.ext.ScriptUtils.runInitScript(ScriptUtils.java:213)
Additional Information
No response
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con org.testcontainers.jdbc.JdbcDatabaseDelegate#closeConnectionQuietly e inspecciona el campo de conexión de ContainerLessJdbcDelegate; después, sigue la llamada a ScriptUtils.runInitScript mostrada en el informe. Añade cobertura de regresión para ejecutar un script con ContainerLessJdbcDelegate y verifica que se complete sin una NullPointerException y que se cierre la conexión correcta.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- database, testing
- Tipo de issue
- Error
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 52/100