Segnalazione Bug di Discourse: Regressione dell’evento :post_edited in latest-release
Interessa: Branch latest-release di Discourse (release +122)
Stato: Regressione confermata - riproducibile
Data: 15 gennaio 2026
Riepilogo
L’evento DiscourseEvent :post_edited ha smesso di essere pubblicato nelle recenti build di latest-release. Le modifiche ai post vengono completate con successo e le revisioni vengono create, ma l’evento da cui dipendono i plugin non viene mai attivato. Ciò interrompe tutte le automazioni dei plugin che utilizzano il trigger post_created_edited e qualsiasi altro plugin in ascolto degli eventi :post_edited.
Riproduzione (Confermata)
Abbiamo confermato che si tratta di una regressione testando su due ambienti Azure AKS identici:
Prima dell’aggiornamento (Funzionante)
- Versione:
v2026.1.0-latest(build precedente) - Comportamento:
Gli eventi :post_editedvengono attivati correttamente - Automazione:
Funziona automaticamente
Dopo l’aggiornamento (Non funzionante)
- Versione:
latest-release +1221 ore fa, release +122 - Comportamento:
Gli eventi :post_editednon vengono mai attivati - Automazione:
Completamente interrotta
Riscontro Critico: Entrambi gli ambienti funzionavano prima dell’aggiornamento. Entrambi si sono interrotti dopo l’aggiornamento a latest-release +122. Questo dimostra in modo definitivo che è stata introdotta una regressione.
Dettagli dell’Ambiente
- Versione di Discourse:
latest-release(release +122) - Versione di Rails: 8.0.4
- Infrastruttura: Azure Kubernetes Service (AKS)
- Immagine Docker: discourse/base:2.0.20260109-0020
- Deployment: Installazione Docker standard di Discourse
Procedura di Test
Test 1: Listener di Eventi (Dimostra che l’evento non viene mai attivato)
# Nella console di Rails
File.open('/tmp/post_edited_test.log', 'w') { |f| f.write("Test iniziato alle #{Time.now}\n") }
DiscourseEvent.on(:post_edited) do |post, topic_changed, revisor|
File.open('/tmp/post_edited_test.log', 'a') do |f|
f.write("[#{Time.now}] :post_edited attivato! Post #{post.id}\n")
end
end
Quindi modifica qualsiasi post tramite l’interfaccia web e controlla:
cat /tmp/post_edited_test.log
Risultato su latest-release +122: Mostra solo “Test iniziato” - l’evento non viene mai attivato
Risultato sulla build precedente: Mostra voci di eventi con timestamp e ID di post
Test 2: Verifica della Creazione delle Revisioni
post = Post.find(POST_ID)
puts "Revisioni del post: #{post.revisions.count}"
post.revisions.last(3).each { |rev| puts " Revisione #{rev.number}: #{rev.created_at}" }
Risultato: Le revisioni VENGONO create correttamente con i timestamp appropriati
Conclusione: Le modifiche vengono elaborate correttamente, ma post_process_post non viene chiamato o l’evento non viene attivato
Test 3: Attivazione Manuale dell’Evento (Dimostra che il sistema di eventi funziona)
post = Post.find(POST_ID)
DiscourseEvent.trigger(:post_edited, post, false, PostRevisor.new(post))
Risultato: I gestori di eventi vengono eseguiti correttamente
Conclusione: Il sistema di eventi funziona, ma l’attivazione automatica durante le modifiche è interrotta
Comportamento Atteso
Quando un post viene modificato tramite l’interfaccia web:
- Salvataggio della modifica riuscito

- Creazione della revisione del post

PostRevisor#post_process_postviene chiamato
- Evento
:post_editedattivato
- I gestori di eventi vengono eseguiti

Solo i passaggi 1-2 funzionano. I passaggi 3-5 sono interrotti.
Comportamento Attuale
I log di produzione mostrano il completamento della modifica con successo:
Started PUT "/posts/3631" for 88.97.179.124 at 2026-01-15 13:06:19 +0000
Processing by PostsController#update as JSON
Completed 200 OK in 676ms
Nessun errore, nessuna eccezione, ma nessun evento :post_edited pubblicato.
L’evento dovrebbe essere attivato in /var/www/discourse/lib/post_revisor.rb riga 759:
def post_process_post
@post.invalidate_oneboxes = true
@post.trigger_post_process
DiscourseEvent.trigger(:post_edited, @post, self.topic_changed?, self)
end
Questo metodo viene chiamato dalla riga 341 ma l’evento non viene attivato.
Impatto
Funzionalità Ufficiali Interessate
- Automazione di Discourse: Il trigger
post_created_editedè completamente interrotto - Tutti i flussi di lavoro di automazione che dipendono dalle modifiche ai post falliscono silenziosamente
Plugin Interessati
Tutti i plugin in ascolto degli eventi :post_edited sono interrotti:
- discourse-automation - Trigger di automazione ufficiali
- discourse-ai - Moderazione AI sui post modificati
- discourse-doc-categories - Aggiornamenti dell’indice della documentazione
- discourse-topic-voting - Flussi di lavoro di recupero dei voti
- Qualsiasi plugin personalizzato che utilizza eventi di modifica dei post
Cronologia della Regressione
- Build precedente:
v2026.1.0-latest- gli eventi:post_editedfunzionavano
- Aggiornato a:
latest-release(release +122) - gli eventi:post_editedsono interrotti
- Confermato su: Due ambienti di produzione indipendenti (entrambi interrotti dopo l’aggiornamento)
Questo dimostra in modo definitivo che una regressione è stata introdotta nelle recenti build di latest-release.
Soluzione alternativa (Workaround)
L’attivazione manuale tramite console Rails funziona:
automation = DiscourseAutomation::Automation.find(AUTOMATION_ID)
post = Post.find(POST_ID)
automation.trigger!({"post" => post})
Ciò conferma che il sistema di automazione funziona di per sé: solo l’attivazione automatica degli eventi è interrotta.
Note di Configurazione
- Impostazioni verificate: Tutte le impostazioni relative alla modifica sono standard/predefinite
- Periodo di grazia: Testato con modifiche ben al di fuori del periodo di grazia (nessun effetto)
- Plugin: 50 plugin installati (plugin ufficiali standard)
- Nessuna modifica al core: Installazione pulita di Discourse
- Ambiente: Entrambi gli ambienti di test sono distribuzioni AKS di Azure identiche
Prova Chiave
Riscontro Più Importante:
Avevamo un ambiente DEV funzionante su una build precedente. Dopo l’aggiornamento a
latest-release +122, l’automazione ha smesso di funzionare. Questo dimostra con certezza che una regressione è stata introdotta nelle build recenti.
Entrambi gli ambienti ora mostrano un comportamento interrotto identico dopo essere stati sulla stessa versione.
Riproducibilità
Riproducibile al 100% - testato su due ambienti indipendenti:
- Installa Discourse
latest-release(release +122) - Crea un’automazione con il trigger
post_created_edited - Modifica un post
- Osserva che l’automazione non viene mai attivata
- Conferma che l’evento
:post_editednon viene mai attivato utilizzando il listener di test
Riepilogo
Si tratta di una regressione confermata in latest-release (release +122). L’evento :post_edited funzionava nelle versioni precedenti e ha smesso di funzionare dopo l’aggiornamento. Due ambienti indipendenti hanno confermato lo stesso comportamento. Ciò interrompe la funzionalità principale di Automazione di Discourse e tutti i plugin che dipendono dagli eventi di modifica dei post.

