Persistencia inconsistente de imágenes en Revisiones de publicaciones: ¿por qué algunas imágenes eliminadas se rompen mientras que otras permanecen indefinidamente?

Hola al equipo y a la comunidad de Discourse,

He observado un comportamiento interesante relacionado con la gestión de imágenes en las revisiones de publicaciones en mi instancia autogestionada de Discourse, y me gustaría entender el mecanismo subyacente.

Contexto:

  • Las cargas de imágenes de mi sitio se redirigen a Cloudflare R2 (almacenamiento compatible con S3).

  • En los últimos meses, he realizado varias ediciones en publicaciones que implicaban reemplazar o eliminar imágenes antiguas por otras nuevas.

  • Todas las cargas de imágenes originales residen en R2.

La observación: Cuando reviso el historial de revisiones de la publicación de estas publicaciones antiguas:

  1. En la mayoría de las revisiones en las que se reemplazó o eliminó una imagen hace meses, el enlace a la imagen en la revisión sigue siendo totalmente accesible y se carga correctamente.

  2. En algunas revisiones específicas, la imagen está completamente rota o le falta su archivo físico subyacente, dejando solo un marcador de posición.

Mi pregunta:

  • ¿Cómo diferencian la tarea en segundo plano CleanUpUploads de Discourse y la tarea de eliminación de archivos huérfanos entre estas revisiones?

  • ¿Por qué persisten indefinidamente algunas imágenes de revisiones históricas en R2 (o en caché) incluso después de haber sido eliminadas del cuerpo de la publicación más reciente, mientras que otras se purgan a fondo o pierden sus variantes optimizadas?

¡Agradecería mucho cualquier aporte sobre la base de código o la lógica de la base de datos (upload_references / OptimizedImage) respecto a las revisiones!

Leo