-
Notifications
You must be signed in to change notification settings - Fork 2
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 - Tareas programadas - Comportamiento errático de la tarea "Removal of Documents from Filesystem" #41
base: develop
Are you sure you want to change the base?
Conversation
Actions executed at: 2024-10-28 16:59:47. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Buenas, entiendo que el objetivo de la función removeDocumentsFromFS() es:
- Eliminar los ficheros de documentos y revisiones eliminadas lógicamente y que se almacenan en la carpeta upload/deleted
- Eliminar los registros de la tabla cron_remove_documents después de haber eliminado sus referencias en el sistema de ficheros o comprobar que ya no existen.
Siendo así, no acabo de entender:
-
¿Por que comprobamos si bean->id ha sido encontrado en la tabla de documents? Más bien habría que mirar si existe en el sistema de ficheros, no?. Este código serían las líneas 460 a 465
-
No entiendo el else de la línea 500 donde se actualiza la fecha de modificación del registro en la tabla cron_remove_documents. ¿Para qué sirve actualizar la fecha de modificación?
-
La línea 459 dará error siempre ya que la tabla cron_remove_documents no tiene la columna deleted.
En consecuencia, creo que habría que rehacer la función adaptándola a un objetivo concreto ya que, por lo que he visto, aparenta tener un código desactualizado cuya función no funciona y no parece clara.
Ainara, si quieres podemos comentarlo y así, en caso de que no haya contemplado algo, me das un poco más de contexto :)
modules/Schedulers/_AddJobsHere.php
Outdated
if ($empty) { | ||
rmdir($path); | ||
// Check if the directory exists and is truly empty (excluding '.' and '..') | ||
if (is_dir($path) && !count(scandir($path, -1, SCANDIR_SORT_NONE))) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Al realizar las pruebas observo que la sentencia scandir($path, -1, SCANDIR_SORT_NONE)
siempre devuelve null y que al aplicar el !count()
se convierte en TRUE ya que count(null) es 0.
Revisar este comportamiento
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Corregido!!
Desarrollo del issue
Al lanzar la tarea "Removal of Documents from Filesystem" no elimina los archivos que estaban eliminados previamente, ni elimina la carpeta deleted.
Solución implementada:
Se ha reestructurado la tarea programada haciendo que elimine por completo la carpeta "deleted" con los propios archivos eliminados.
Pruebas