Fallo en la fusión de usuarios, entradas de base de datos corruptas debido a un plugin de terceros

OK, obteniendo eso… Tengo problemas de conectividad. Verificaré con safe_mode para ver si funciona.
El modo seguro no ayuda…

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-bbb.git
          - git clone https://github.com/discourse/discourse-calendar.git
          - git clone https://github.com/discourse/discourse-canned-replies.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-code-review.git
          - git clone https://github.com/discourse/discourse-footnote.git
          - git clone https://github.com/discourse/discourse-github.git
          - git clone https://github.com/discourse/discourse-graphviz.git
          - git clone https://github.com/discourse/discourse-math.git
          - git clone https://github.com/discourse/discourse-policy.git
          - git clone https://github.com/discourse/discourse-prometheus.git
          - git clone https://github.com/discourse/discourse-prometheus-alert-receiver.git
          - git clone https://github.com/discourse/discourse-push-notifications.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-yearly-review.git
          - git clone https://github.com/angusmcleod/discourse-events.git
          - git clone https://github.com/angusmcleod/discourse-locations.git
          - git clone https://github.com/davidtaylorhq/discourse-whos-online.git

Ya veo que puedo actualizar la URL de los últimos plugins. (pero la reconstrucción solo puede ocurrir esta noche UTC, como a medianoche)
Quizás debería contactar a @angus o a @merefield para los plugins de eventos y ubicaciones.

Podría ser el plugin discourse-assign, ya que parece ser el único en tu lista que modifica la clase TopicQuery. Y sospecho que ahí es donde ocurre el error.

¿Podrías verificar mi sospecha desactivando el plugin y comprobando si la categoría funciona? Puedes volver a activarlo después. Además, sería interesante saber si alguno de los campos personalizados del tema hace referencia al usuario fusionado de alguna manera. ¿Podrías verificarlo también, por favor?

./launcher enter app
rails c

id_of_problematic_topic = 123
Topic.find(id_of_problematic_topic).custom_fields
3 Me gusta

Después de desactivar discourse-assign:

  • lo más reciente funciona
  • lo principal falla
  • /t/951 sigue fallando

Ejecutando la consulta… ¡Ah! ¡Lo has dado en el clavo!

{"event_start"=>1601748000, "event_end"=>1601749800, "event_all_day"=>false, "event_timezone"=>"Etc/UTC", "event_rsvp"=>true, "event_going_max"=>100, "event_version"=>1, "event_going"=>[36, 50]}

Parece que el plugin de eventos se omite durante la fusión. Pero eso también podría ser porque estamos ejecutando una versión más antigua. Dime si puedo ayudarte a probar este caso.

Gracias por resolver esto @gerhard!

1 me gusta

Puedes actualizar el campo personalizado de ese tema y eliminar el ID que no existe. @angus quizás quiera añadir soporte para la fusión de usuarios a su plugin.

2 Me gusta

Para el registro:

tcf = TopicCustomField.where(topic_id: problematic_topic_id)
c = tcf.last # en mi caso, YMMV
c.value = "[295,50]"
c.save
3 Me gusta

Para el registro, en caso de que ese tema tenga varios campos personalizados, deberías usar:

tcf = TopicCustomField.where(plugin_name: 'discourse-events', topic_id: problematic_topic_id)
c = tcf.first
c.value = "[295,50]"
c.save

@hellekin, te sugiero migrar a Creating and managing events.

De hecho, quizás podrías trabajar con @fzngagan en un script de migración de Events a Discourse Events. Sería bueno tener un caso real para trabajar allí. Faiz, deberíamos priorizar esto; me gustaría dar de baja oficialmente Events.

3 Me gusta

@angus, @fzngagan: ¿Crees que puedo cambiar la línea del plugin en la configuración del contenedor, reconstruir y luego encargarme de ejecutar el script? Como también necesito cambiar los repositorios de Git de “Who’s Who” y “Wizards”, podría hacerlo todo de una vez. Por otro lado, estamos en medio de un hackathon y, si el problema se resuelve, también puedo esperar una semana.

1 me gusta

@hellekin
Recientemente solucioné un problema similar en el que eliminar un usuario causaba problemas.

Me encanta la idea de migrar a Creating and managing events. La pregunta entonces es: ¿deseas conservar los eventos caducados y cuántos eventos próximos tienes?

@fzngagan @hellekin Puedes mover la conversación aquí para definir los detalles: Pavilion

2 Me gusta

Me apunto a la tarea de trabajar en un script de migración.

Soy un usuario intensivo de Eventos. Mi Plugin para escuelas con niños que tienen dificultades de comportamiento genera 7 temas al día para más de 10 niños en múltiples sedes y lleva funcionando más de dos años. Cada tema representa un periodo de la jornada escolar y necesito poder consultar por fecha del evento del tema, así que espero que Discourse Events almacene sus datos en un lugar adecuado.

Me uniré a la discusión que mencionaste más abajo.

1 me gusta

¡Qué bueno ver esta maravillosa colaboración! ¡Me encanta Discourse por eso! Gracias a todos por sus esfuerzos y participación :heart:

2 Me gusta

Sí, nos gustaría mantener los eventos pasados ya que están relacionados con los temas, especialmente los actuales vinculados a la conferencia ActivityPub 2020 (que aún está en curso) — esta semana es el hackathon.
Aparte de esos, no tenemos muchos eventos, pero leeremos sobre la migración; probablemente la próxima semana, ya que esta semana ya está más que llena. ¡Saludos! Y como dijo @aschrijver: ¡la comunidad de Discourse es increíble!

2 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.