Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hotfix - General - Evitar la regeneración innecesaria de ficheros de idioma #405

Merged
merged 4 commits into from
Nov 20, 2024

Conversation

enricsinergia
Copy link
Collaborator

@enricsinergia enricsinergia commented Sep 26, 2024

Descripción

En el análisis que llevó a la apertura de los issues #392 y #393, se observó también que los ficheors de idioma eran regenerados con excesiva frecuencia sin que hubiera un motivo aparente.

Después de investigar el tema y múltiples pruebas, se han observado 2 causas posibles:
1.- Si hay algún módulo activo que no contiene literales (por ejemplo ResourceCalendar está activo en algunas instancias), no genera información en caché. Al hacer login e intentar recuperar los literales de todos los módulos no se encuentra la información de estos módulos y se fuerza la regeneración de los ficheros de idiomas (que tampoco generará información en caché) con lo que el siguiente login provocará una nueva regeneración.
2.- Los formularios, en la clase WebFormDataController, dentro de la función loadLanguage está ejecutando la sentencia $this->mod_strings[$this->defaultModule] = return_module_language($this->lang, $this->defaultModule, true); // Load the module labels by default, la cual provoca que se regeren siempre los ficheros de idioma.

Solución aplicada

1.- Para el caso (1) se ha aplicado un cambio para que siempre se genere información en caché aunque sea vacía
2.- Para el caso (2) se han modificado las llamadas a return_module_language para que no fuerzen el refresco de los ficheros de idiomas.

Pruebas

No regenera con módulo vacío

1.- Habilitar algún módulo sin literales (por ejemplo ResourceCalendar)
2.- Realizar un nuevo login
3.- Comprobar la fecha de modificación de los ficheros de idioma
ls -la /web/custom/application/Ext/Language/
4.- Cerrar sesión y volver a iniciar sesión pasado un minuto
5.- Comprovar que no se han regenerado los ficheros de idioma

No regenera con formulario

1.- Crear un formulario (con documento) que ataque la instancia de prueba
2.- Comprobar la fecha de modificación de los ficheros de idioma
ls -la /web/custom/application/Ext/Language/
3.- Rellenar y lanzar el formulario
4.- Comprovar que no se han regenerado los ficheros de idioma
5.- Comprobar la descripción del documento adjunto en la persona para ver que se incluyen correctamente (WebFormDataBO)
6.- Modificar el formulario para provocar un error de parámetros (por ejemplo indicar un assigned_user_id incorrecto)
7.- Rellenar de nuevo el formulario
8.- Comprobar que los literales del e-mail recibido son correctos (WebFormDataController)

Información adicional

Realizando búsuqeda con el patrón return_module_language\([^)]*,\s*[^)]*,\s*true\) se detecta quehay más usos dentro de SuiteCRM de la llamada a return_module_language con el refresh a true. No se abordan en este PR por el posible impacto que pueden tener.

@enricsinergia enricsinergia self-assigned this Sep 26, 2024
@enricsinergia enricsinergia changed the title Hotfix - General - Evitar la regenración innecesria de ficheros de idioma Hotfix - General - Evitar la regeneración innecesria de ficheros de idioma Sep 26, 2024
@enricsinergia enricsinergia marked this pull request as ready for review September 26, 2024 10:57
@enricsinergia enricsinergia changed the title Hotfix - General - Evitar la regeneración innecesria de ficheros de idioma Hotfix - General - Evitar la regeneración innecesaria de ficheros de idioma Sep 26, 2024
@AlbertoSTIC AlbertoSTIC removed their request for review September 30, 2024 14:16
Copy link
Collaborator

@jordiSTIC jordiSTIC left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Realizadas las pruebas.

Login con módulo sin literales
Ok, funciona correctamente

Formulario con fichero adjunto
Se han regenerado los literales (ca_ES y en_us): Al recibir el formulario, se han regenerado (instancia en local)

@jordiSTIC jordiSTIC self-requested a review October 14, 2024 14:27
jordiSTIC
jordiSTIC previously approved these changes Oct 14, 2024
Copy link
Collaborator

@jordiSTIC jordiSTIC left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se han realizado más pruebas:

  • Al iniciar sesión habilitando el módulo de ResourceCalendar, únicamente regenera el fichero de idioma al hacer login cambiando el idioma. No se regeneran los ficheros en cada login
  • Al recibir el resultado de un formulario, regenera el idioma la primera vez. Al enviar múltiples veces el formulario, no se regeneran los idiomas cada vez que se recibe.

Revisado el código.
Apruebo ya que se consigue que no se regeneren de forma masiva los ficheros de idioma

@AlbertoSTIC AlbertoSTIC requested review from ManuSinergiaCRM and removed request for juanSTIC November 15, 2024 11:31
Copy link
Collaborator

@ManuSinergiaCRM ManuSinergiaCRM left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Funcionalidad probada 👍

Solo veo una cosilla a nivel de código y es que hay que eliminar o modificar el log de la línea 132 de include/SugarObjects/LanguageManager.php

Y además, habría que meter el PR en core modification ya que se toca el fichero anterior

Copy link

github-actions bot commented Nov 20, 2024

Actions executed at: 2024-11-20 10:02:05.

Copy link
Collaborator

@ManuSinergiaCRM ManuSinergiaCRM left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(A)probado

Copy link
Collaborator

@jordiSTIC jordiSTIC left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(A)Probado

@AlbertoSTIC AlbertoSTIC merged commit b6ec9ba into develop Nov 20, 2024
1 check passed
@AlbertoSTIC AlbertoSTIC deleted the bug/unnecessaryLanguageRegeneration branch November 20, 2024 10:01
@enricsinergia enricsinergia restored the bug/unnecessaryLanguageRegeneration branch November 20, 2024 10:32
@enricsinergia enricsinergia deleted the bug/unnecessaryLanguageRegeneration branch November 20, 2024 10:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants