Problema con la pagina Attiva account dopo l'aggiornamento alla 3.4.0 (pagina vuota)

Ciao Team Discourse,

Grazie per aver fornito un prodotto così fantastico! La mia community e io lo abbiamo apprezzato per anni. Recentemente, abbiamo riscontrato un problema e apprezzerei molto qualsiasi aiuto.

Dopo l’aggiornamento da Discourse 3.3.0 a 3.4.0, i nuovi utenti vedono una pagina vuota (solo intestazione e piè di pagina) quando fanno clic sul link di verifica e-mail per raggiungere la pagina “activate-account”.


(il link di test verrà fornito alla fine di questo articolo)

Passaggi intrapresi finora:

  1. Controllata la Console per Sviluppatori: L’errore indica che CSP sta bloccando script esterni.

  2. Tentativo di Modifica di CSP tramite Cloudflare:


    Abbiamo modificato la policy e cancellato la cache, ma non ha risolto il problema.

  3. Tentativo di Modifica di CSP tramite Pannello di Amministrazione di Discourse: Abbiamo aggiunto ‘self’, ‘unsafe-eval’ e tentato l’hashing SHA256. Abbiamo anche fatto riferimento a questo articolo ma non abbiamo riscontrato alcuna modifica.

  4. Messaggio di errore:


    Abbiamo provato vari input (ad es. ‘self’, ‘unsafe-eval’) e abbiamo persino impostato la policy in modalità “report only”. Ancora, nessun effetto.

  5. Cancellata la Cache: Nessuna modifica.

  6. Ricostruito l’App: Ricostruito Discourse e cancellata la cache in seguito, ma il problema persiste.

È interessante notare che questo problema non colpisce tutti i nuovi utenti. Abbiamo scoperto che circa il 90% dei nostri nuovi utenti riscontra questo problema.

Qualsiasi suggerimento o soluzione sarebbe molto apprezzato! Grazie!

Hai provato la modalità provvisoria?

@pfaffman
Ho appena provato e ho visto questo:

Un altro sito segnala errori CSP relativi al endpoint /cdn-cgi/speculation: Refused to load the script 'site.com/cdn-cgi/speculation' because it violates the following Content Security Policy directive - #2 by simon. Non sono a conoscenza di problemi simili segnalati in passato. Forse qualcosa è cambiato in Cloudflare o in Discourse 3.4.0.

Il endpoint /cdn-cgi/speculation viene aggiunto ai domini registrati su Cloudflare quando la funzionalità “Speed Brain” è abilitata. Speed Brain è inteso per velocizzare le prestazioni di un sito web consentendo a Cloudflare di precaricare i contenuti quando un utente passa il mouse su un link. Non sono sicuro che sia compatibile con Discourse.

Vedo che l’header Speculation-Rules viene restituito con la risposta quando visito https://community.lezismore.org/login. Ciò indica che la funzionalità Speed Brain è abilitata. Dalla documentazione di Cloudflare, sembra che sia abilitata per impostazione predefinita.

Puoi provare a disabilitare Speed Brain dalla scheda Speed del tuo pannello di controllo Cloudflare? Le istruzioni su come farlo sono qui: Speed Brain · Cloudflare Speed docs.

La sezione “Caveats” della documentazione che ho collegato dice:

  • Speed Brain non funzionerà con configurazioni restrittive di Content Security Policy :up_right_arrow: che utilizzano gli attributi strict-dynamic o nonce-{hash}.

Se Speed Brain è compatibile con Discourse, dovremo capire come aggiungerlo alle regole di Content Security.

3 Mi Piace

Grazie per la tua risposta.

Ho già disabilitato l’impostazione Speed Brain in Cloudflare e svuotato la cache come suggerito, ma sfortunatamente il problema persiste.

Ecco il link alla pagina di test del nuovo account attivo di oggi, per chiunque fosse interessato: https://community.lezismore.org/users/activate-account/34180b9eed9e1a1a1dbcca7eab66fb43

Riesci ad accedere al sito? Se sì, vedi messaggi di errore nella pagina dei log degli errori (https://community.lezismore.org/logs)?

1 Mi Piace

Sì, riesco ad accedere al sito web.
Ecco la pagina di log:

Job exception: can't write unknown attribute

e i dettagli sono i seguenti:

Message (23685 copies reported)

Job exception: can't write unknown attribute ``

Backtrace

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activemodel-7.1.4/lib/active_model/attribute.rb:236:in `with_value_from_database'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activemodel-7.1.4/lib/active_model/attribute_set.rb:60:in `write_from_user'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/transactions.rb:435:in `restore_transaction_record_state'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/transactions.rb:345:in `rolledback!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:200:in `block in rollback_records'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:263:in `run_action_on_records'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:199:in `rollback_records'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:527:in `block in rollback_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.4/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:520:in `rollback_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:539:in `rescue in block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:538:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.4/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:532:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:344:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/transactions.rb:361:in `with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/persistence.rb:904:in `update!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.17.0/lib/mini_scheduler/manager.rb:156:in `process_queue'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.17.0/lib/mini_scheduler/manager.rb:77:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.17.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads'

1 Mi Piace

Ci sono altri errori che non sono sicuro siano rilevanti, ma li fornisco comunque come riferimento, per ogni evenienza.

Message

Job exception: PG::SyntaxError: ERROR:  zero-length delimited identifier at or near ""
LINE 1: ...1506385, "success" = TRUE WHERE "scheduler_stats"." IS NULL
                                                             ^


Backtrace

/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:69:in `exec_params'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:69:in `exec_params'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `block (2 levels) in exec_no_cache'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:767:in `block in exec_no_cache'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_adapter.rb:752:in `block in log'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_adapter.rb:743:in `log'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:766:in `exec_no_cache'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:745:in `execute_and_clear'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql/database_statements.rb:67:in `exec_delete'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/database_statements.rb:175:in `update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:513:in `_update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:1060:in `_update_row'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/locking/optimistic.rb:93:in `_update_row'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:1082:in `_update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/attribute_methods/dirty.rb:216:in `_update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/callbacks.rb:463:in `block in _update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:99:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:929:in `_run_update_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/callbacks.rb:463:in `_update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/timestamp.rb:121:in `_update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:1069:in `create_or_update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/callbacks.rb:455:in `block in create_or_update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:99:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:929:in `_run_save_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/callbacks.rb:455:in `create_or_update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/timestamp.rb:126:in `create_or_update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:648:in `save!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/validations.rb:53:in `save!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:302:in `block in save!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/database_statements.rb:314:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:302:in `save!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/suppressor.rb:54:in `save!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:782:in `block in update!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/database_statements.rb:316:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:780:in `update!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mini_scheduler-0.16.0/lib/mini_scheduler/manager.rb:134:in `process_queue'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mini_scheduler-0.16.0/lib/mini_scheduler/manager.rb:70:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mini_scheduler-0.16.0/lib/mini_scheduler/manager.rb:59:in `block (2 levels) in ensure_worker_threads'

Un grande grazie a chiunque voglia aiutare :folded_hands:

1 Mi Piace

Guardando i dettagli che hai fornito, non mi è chiaro dove nel codice di Discourse venga attivato l’errore. Ci sono dettagli nelle schede “info” o “env” nella pagina dell’errore? C’è anche un pulsante “share” in basso a destra nella pagina che visualizzerà tutti i dettagli dell’errore.

Non sono sicuro che l’errore sia correlato al problema, ma sembra che qualcosa non funzioni con i processi in background (sidekiq) sul tuo sito.

Potrebbero esserci anche informazioni utili nella pagina /sidekiq del tuo sito. Come utente amministratore, puoi visualizzarla su https://community.lezismore.org/sidekiq

3 Mi Piace

Ho controllato il tuo sito web ed è in cinese tradizionale, forse ti imbatti nella stessa situazione in cui mi sono trovato io

3 Mi Piace

Sembra che stessimo affrontando lo stesso problema! Dopo aver aggiornato il link della pagina di attivazione nel modello di email da:

%{base_url}/user/activate-account/%{email_token}

a:

%{base_url}/u/activate-account/%{email_token}

tutto ha iniziato a funzionare correttamente. Il problema si è probabilmente verificato perché il modello di email non si è aggiornato automaticamente a causa delle mie precedenti personalizzazioni, il che ha impedito l’applicazione delle modifiche dopo la ricostruzione dell’app.

Un grande ringraziamento a @simon per l’incredibile pazienza nell’aiutarmi nel debug, e a @th21 per le informazioni!

Continuerò a monitorare le prestazioni dell’applicazione e condividerò aggiornamenti se dovessero sorgere problemi. Ancora una volta, grazie ragazzi!

3 Mi Piace

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