Unione utenti fallita, voci di database corrotte a causa di un plugin di terze parti

OK, sto recuperando… Ho problemi di connettività. Controllerò con la modalità sicura per vedere se funziona.
La modalità sicura non aiuta…

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

Vedo già che posso aggiornare l’URL per gli ultimi due. (ma la ricostruzione può avvenire solo stasera, verso mezzanotte UTC)
Forse è meglio contattare @angus o @merefield per gli eventi e le località.

Potrebbe essere il plugin discourse-assign, poiché sembra essere l’unico nella tua lista che modifica la classe TopicQuery. E sospetto che sia lì che si verifica l’errore.

Puoi verificare il mio sospetto disabilitando il plugin e controllando se la categoria funziona? Puoi riattivarlo in seguito. Inoltre, sarebbe interessante sapere se uno dei campi personalizzati dell’argomento fa riferimento all’utente unito in qualche modo. Puoi controllare anche questo, per favore?

./launcher enter app
rails c

id_of_problematic_topic = 123
Topic.find(id_of_problematic_topic).custom_fields

Dopo aver disabilitato discourse-assign:

  • l’ultima versione funziona
  • la versione top non funziona
  • /t/951 continua a non funzionare

Eseguo la query… Ah! Ci sei riuscito!

 {"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]}

A quanto pare il plugin degli eventi viene saltato durante l’unione. Ma potrebbe essere anche perché stiamo eseguendo una versione più vecchia. Fammi sapere se posso aiutarti a testare questo caso.

Grazie per aver risolto il problema, @gerhard!

Puoi aggiornare il campo personalizzato di quel argomento e rimuovere l’ID inesistente. @angus potrebbe voler aggiungere il supporto per l’unione degli utenti al suo plugin.

Per la cronaca:

tcf = TopicCustomField.where(topic_id: problematic_topic_id)
c = tcf.last # nel mio caso, YMMV
c.value = "[295,50]"
c.save

Per la posterità, nel caso in cui quell’argomento abbia più campi personalizzati, dovresti usare:

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

@hellekin ti consiglio di migrare a Creating and managing events.

In effetti, forse potresti lavorare con @fzngagan su uno script di migrazione da Events a Discourse Events? Sarebbe utile avere un caso reale su cui lavorare. Faiz, dovremmo dare priorità a questo; vorrei deprecare formalmente Events.

@angus, @fzngagan: pensi che possa modificare la riga del plugin nella configurazione del container, ricostruire e poi occuparmi dell’esecuzione dello script? Dato che devo anche cambiare i repository git per “who’s who” e “wizards”, potrei farlo tutto insieme. D’altra parte, siamo nel mezzo di un hackathon e se il problema è risolto, posso anche aspettare una settimana.

@hellekin
Ho recentemente risolto un problema simile in cui l’eliminazione di un utente causava problemi.

Mi piace l’idea di migrare a Creating and managing events. La domanda è: desideri mantenere gli eventi scaduti e quanti eventi imminenti hai?

@fzngagan @hellekin Puoi spostare la conversazione qui per definire i dettagli: Pavilion

Mi offro volontario per lavorare su uno script di migrazione.

Sono un utente frequente degli Eventi. Il mio Plugin per scuole con bambini che presentano difficoltà comportamentali genera 7 argomenti al giorno per oltre 10 bambini in più sedi ed è attivo da oltre due anni. Ogni argomento rappresenta un periodo della giornata scolastica e ho bisogno di poter interrogare i dati in base alla data dell’evento dell’argomento, quindi spero che gli Eventi di Discourse memorizzino i dati in una posizione comoda.

Mi unirò alla discussione che hai menzionato qui sotto.

È fantastico vedere questa splendida collaborazione. Amo Discourse per questo! Grazie a tutti per i vostri sforzi e il vostro impegno :heart:

Sì, vorremmo mantenere gli eventi passati poiché sono collegati ai topic, in particolare quelli attuali relativi alla conferenza ActivityPub 2020 (ancora in corso) — questa settimana c’è l’hackathon.
Oltre a questi, non abbiamo molti eventi, ma leggeremo sulla migrazione — probabilmente la prossima settimana, dato che questa settimana è già più che piena. Saluti! E come ha detto @aschrijver: la community di Discourse è fantastica!