Skip to content

Refactoring of observer logic to bypass not needed triggers updates.#167

Open
juacas wants to merge 2 commits intomain_oldfrom
fix-#138
Open

Refactoring of observer logic to bypass not needed triggers updates.#167
juacas wants to merge 2 commits intomain_oldfrom
fix-#138

Conversation

@juacas
Copy link
Copy Markdown
Contributor

@juacas juacas commented Apr 14, 2025

Problema: Se ha detectado alta carga acumulada en un curso sin reglas activadas. Se diagnostica que está causado por las consultas innecesarias en los observer de eventos course_viewed y module_viewed.

Solución: minimizar las atualizaciones de triggers en los observers.

En este PR propongo unos cambios para que:

  1. Se puentee el observer en caso de que el usuario ya haya sido registrado previamente. Esto implica que este código ya se ha ejecutado para él. Esta inicialización solo debe ejecutarse una vez para cada usuario y curso ¿es así?
  2. La función get_first_course_access() incluye el cacheo del timestamp. Antes no había forma de saber si el timestampt devueto era el cacheado o el de mdl_log_store. Se podía dar el caso de hacer siempre la consulta a mdl_logstore que hay que evitar a toda costa.

Suposiciones de esta lógica:
a) El código del observer solo debe ejecutarse una vez por cada userid-courseid.
b) Las demás reconfiguraciones de los triggers se realizan con las operaciones de alta, baja y modificaciones de las reglas de forma estandar desde el motor de reglas.

Por favor, revisar.

@juacas
Copy link
Copy Markdown
Contributor Author

juacas commented Apr 14, 2025

Creo que una optimización importante puede ser puentear el notificationscondition_activitystudentend_observer
si la consulta "get_conditions_by_cm($pluginname, $courseid)" no va a devolver ninguna condición.
Esta optimización impactaría en milles de consultas por minuto en un site en producción.
Si es viable sería necesario hacerlo en todos los observers.

@juacas juacas requested a review from fpano April 24, 2025 06:40
@juacas
Copy link
Copy Markdown
Contributor Author

juacas commented May 21, 2025

Hola. ¿Este PR está incluido en los cambios actuales?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant