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 - Tareas programadas - Comportamiento errático de la tarea "Removal of Documents from Filesystem" #41

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from

Conversation

ainaraRT
Copy link
Collaborator

@ainaraRT ainaraRT commented Jan 8, 2024

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

  1. Subir un documento.
  2. Eliminar dicho documento.
  3. Comprobar que se ha creado dentro de la carpeta upload una nueva carpeta llamada deleted y dentro están los archivos eliminados.
  4. Lanzar la tarea programada de "Removal of Documents from Filesystem". Para que la tarea se pueda lanzar, debe de estar "activo" y que la frecuencia de ejecución está en "tan a menudo como sea posible" que normalmente es indicando "*" en las opciones avanzadas de la frecuencia.
  5. Comprobar que se ha eliminado la carpeta.

@ainaraRT ainaraRT added bug Something isn't working General Tareas programadas labels Jan 8, 2024
@ainaraRT ainaraRT self-assigned this Jan 8, 2024
Copy link

github-actions bot commented Jan 8, 2024

Actions executed at: 2024-10-28 16:59:47.

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.

Buenas, entiendo que el objetivo de la función removeDocumentsFromFS() es:

  1. Eliminar los ficheros de documentos y revisiones eliminadas lógicamente y que se almacenan en la carpeta upload/deleted
  2. 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:

  1. ¿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

  2. 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?

  3. 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 :)

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))) {
Copy link
Collaborator

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

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Corregido!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
4 participants