Grails 7 Holders.config.merge() issue in tomcat when multiple Grails 7.1.0 Apps are deployed in apache-tomcat-10.1.50
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 42/100
Línea de trabajo
Comienza con la lógica de recarga reportada alrededor de Holders.config.clear(), Holders.config.merge(initialConfig) y PropertySourcesConfig, comparando el comportamiento entre una y varias aplicaciones Grails en Tomcat 10.1.50. Reprodúcelo con Grails 7.1.0 y JDK 17 o posterior; se considera terminado cuando la configuración original de application.groovy, application.yml, archivos externos y otras fuentes de inicio se restaura para cada aplicación desplegada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Expected Behavior
We are encountering an issue with Holders.config.merge() in Grails 7.1.0 when multiple Grails applications are deployed on the same Apache Tomcat 10.1.50 instance.
The problem does not occur when only a single Grails application is deployed. The same code has been working reliably in Grails 6.x without any issues.
Environment
Use Case
Our application has a scheduled CRON job that periodically reloads application-specific configuration values from a database.
The reload process is designed to preserve the original application configuration and then merge it back after refreshing dynamic configuration values.
The workflow is:
- Back up the original configuration (initialConfig) that contains values loaded from:
- application.groovy / application.yml
- External filesystem configuration
- Other startup configuration sources
- Clear the current configuration using:
- Holders.config.clear()
3.Restore the original configuration using:
Holders.config.merge(initialConfig)
Expected Behavior:
After calling: Holders.config.merge(initialConfig) all configuration entries stored in initialConfig should be restored into Holders.config.
This behavior works correctly: in In Grails 6.x, whereas in Grails 7.1.0 it works when only a single application is deployed in Tomcat
if we deploy more than one Grails 7.1.0 Holders.config.merge does not correctly restore the configuration.
Instead, the application configuration appears to be lost or emptied, leaving Holders.config in an invalid state. As a result, application functionality dependent on configuration values ant it stops working
Configuration Reload Logic
static PropertySourcesConfig initialConfig = new PropertySourcesConfig()
backupInitialConfiguration()
Holders.config.clear()
// In Grails 7.1.0, when multiple applications are deployed in the same
// Tomcat instance, this call does not restore the configuration correctly.
Holders.config.merge(initialConfig)
//Backup Logic
public void backupInitialConfiguration() {
if (initialConfig?.size() == 0) {
Config config = Holders.config
Map<Object, Object> configMap = [:]
for (def entry : config) {
configMap.put(entry.key, config.get(entry.key))
}
initialConfig = new PropertySourcesConfig(configMap)
}
}
Actual Behaviour
Mentioned in above section
Steps To Reproduce
It's mentioned in "Expected Behavior" Section
Environment Information
Grails Version: 7.1.0
Tomcat Version: 10.1.50
Deployment Model: Multiple Grails applications deployed in the same Tomcat instance
Java Version: JDK 17 and Above
Example Application
No response
Version
7.1.0
- Lenguaje dominante
- Groovy
- Estrellas
- 2.9k
- Forks
- 980
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 130
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la 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.
Más de apache/grails-core
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
apache/grails-core#16874 ·
Los mantenedores suelen responder en 1 día
-
Hibernate 7: a sort by an alias that the query does not define throws a NullPointerExceptionAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
apache/grails-core#16858 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/grails-core#16289 · 5 comentarios ·
Los mantenedores suelen responder en 1 día
-
Update documentation for Java 25Posiblemente ocupada @ruthst00 la tomó hace 32 días. Abiertorelates-to: documentation weekly-action-item
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
apache/grails-core#15725 ·
Los mantenedores suelen responder en 1 día
-
Hibernate 7: do repeated blocks of one association share a join, or does each block get its own?Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
apache/grails-core#16889 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de apache/grails-core
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 2 días
-
desktop v3 windows
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
esengine/DeepSeek-Reasonix#15016 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[yugabyted] xcluster set_up and add_to_replication fail for database names containing - . or (Abiertokind/bug priority/medium qa_automation
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
yugabyte/yugabyte-db#37324 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
balovess/aria2_rust#88 ·
-
good first issue
Dificultad 1/5 Menos de una hora Aptitud para principiantes 87/100
btclib-org/btclib-node#2260 ·
Los mantenedores suelen responder en 1 día