Errore 500 Inbox Messaggi Utente

Ciao,

stiamo riscontrando un comportamento davvero strano, ma al momento solo da un singolo utente, quando si apre la casella di posta dei messaggi.

Eseguiamo Discourse in Docker su Apache con ProxyPass. Discourse 2.6.0.beta3

L’utente in questione non riesce ad espandere il pannello dei messaggi; appare la nota “No Content” o come si dice in inglese originale al posto di “Keine Inhalte” – noi usiamo l’italiano de.DE :wink:

E quando clicca di nuovo sull’icona dei messaggi, diciamo, quando l’utente tenta di aprire la casella di posta dei messaggi, otteniamo un errore 500.

La pagina riporta: "error on loading: [/topics/private-messages/firstname.name.json].

Questo accade solo per un determinato utente. Gli altri non hanno questo problema.

Se l’utente prova https://domain.de/u/firstname.name/messages/sent o https://domain.de/u/firstname.name/messages/group/any, tutto funziona correttamente.

Ma https://domain.de/u/firstname.name/messages/ o https://domain.de/u/firstname.name/messages/inbox restituiscono errore 500.

Abbiamo provato a cambiare i ruoli di questo utente, abbiamo eseguito aggiornamenti e ricompilato l’app tramite il launcher. Purtroppo, l’errore 500 persiste quando si apre la casella di posta.

Qualcuno ha mai riscontrato un comportamento simile? Cosa possiamo fare? Esiste un modo per ricostruire i messaggi? O dobbiamo eliminarli?

Vi preghiamo di dare qualche consiglio, al momento siamo senza idee.

Grazie in anticipo!

Qualche giorno fa ho notato qualcosa di simile con un nome di gruppo in /topics/private-messages-group. Si è scoperto che c’era una ricerca sensibile alle maiuscole e il nome del gruppo nell’URL era tutto in minuscolo.

Puoi verificare se il comportamento cambia modificando la maiuscole/minuscole nell’URL per corrispondere a quelle del nome utente? (quindi qualcosa come https://domain.de/u/Firstname.Name/messages)

5 Mi Piace

Ciao Richard,

grazie per la rapida risposta!

Ho provato a cambiare il caso, come hai suggerito

  • …Firstname.Name…

Ho anche provato diverse combinazioni di maiuscole e minuscole

  • …firstname.Name…
  • …Firstname.name…
  • …FIRSTNAME.NAME…

Ma l’errore è sempre lo stesso.

Ho provato https://domain.de/u/Firstname.Name/messages/sent e altri percorsi, che funzionano perfettamente, come prima.

Hai qualche suggerimento al riguardo?

Sarei molto grato per un aiuto.

Era già un po’ azzardato, quindi temo di non essere nemmeno in grado di darti qualche indizio a riguardo.

2 Mi Piace

Nessun problema, non si sa mai, vero? Sono felice di qualsiasi aiuto.

Forse qualcun altro può aggiungere qualcosa?
Grazie!

Ehi,

Spero davvero che qualcuno possa aiutarmi con il nostro problema. Come suggerito da @RGJ, abbiamo scoperto che la questione sembra essere più profonda, ma non siamo ancora riusciti a risolvere il problema delle caselle di posta inaccessibili di un singolo utente. Purtroppo utilizziamo molto i messaggi. Siamo organizzati in piccoli gruppi che spesso devono comunicare in modo non pubblico. Pertanto, i messaggi sono la soluzione ideale.

Se avete bisogno di ulteriori informazioni, fatemelo sapere, oppure se servono dei log, ditemi quali e li incollerò qui.

Grazie a tutti per i suggerimenti e per aver letto fin qui :wink:

Hai controllato i log degli errori tramite il browser web quando hai effettuato l’accesso come amministratore?

@codinghorror Grazie mille per l’ulteriore assistenza.

In realtà, c’è un output di errore piuttosto lungo relativo a questa richiesta. Ma non riesco a risolverlo.

Provo a inserire qui le informazioni di registrazione

Messaggio (21 copie riportate)

NoMethodError (metodo 'downcase' non definito per nil:NilClass)
app/models/global_setting.rb:107:in `s3_bucket_name'
app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'
lib/url_helper.rb:90:in `cook_url'
app/models/topic.rb:126:in `image_url'
app/serializers/listable_topic_serializer.rb:34:in `image_url'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/application_controller.rb:451:in `serialize_data'
app/controllers/application_controller.rb:460:in `render_serialized'
lib/topic_list_responder.rb:16:in `block (2 levels) in respond_with_list'
lib/topic_list_responder.rb:9:in `respond_with_list'
app/controllers/list_controller.rb:177:in `message_route'
app/controllers/list_controller.rb:164:in `block in generate_message_route'
app/controllers/application_controller.rb:351:in `block in with_resolved_locale'
app/controllers/application_controller.rb:351:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:336:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'

Backtrace

app/models/global_setting.rb:107:in `s3_bucket_name'
app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'
lib/url_helper.rb:90:in `cook_url'
app/models/topic.rb:126:in `image_url'
app/serializers/listable_topic_serializer.rb:34:in `image_url'
(eval):10:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:124:in `block in serialize'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `map'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `serialize'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:368:in `block in include_associations!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:367:in `each_key'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:367:in `include_associations!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:362:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:343:in `as_json'
app/controllers/application_controller.rb:451:in `serialize_data'
app/controllers/application_controller.rb:460:in `render_serialized'
lib/topic_list_responder.rb:16:in `block (2 levels) in respond_with_list'
actionpack (6.0.3.3) lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
lib/topic_list_responder.rb:9:in `respond_with_list'
app/controllers/list_controller.rb:177:in `message_route'
app/controllers/list_controller.rb:164:in `block in generate_message_route'
actionpack (6.0.3.3) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.0.3.3) lib/abstract_controller/base.rb:195:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:112:in `block in run_callbacks'
app/controllers/application_controller.rb:351:in `block in with_resolved_locale'
i18n (1.8.5) lib/i18n.rb:313:in `with_locale'
app/controllers/application_controller.rb:351:in `with_resolved_locale'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:139:in `run_callbacks'
actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `block in instrument'
activesupport (6.0.3.3) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `instrument'
actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:32:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord (6.0.3.3) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (6.0.3.3) lib/abstract_controller/base.rb:136:in `process'
actionview (6.0.3.3) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (2.1.0) lib/mini_profiler/profiling_methods.rb:78:in `block in profile_method'
actionpack (6.0.3.3) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (6.0.3.3) lib/action_controller/metal.rb:254:in `dispatch'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:49:in `block in serve'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:834:in `call'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.3) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.3) lib/rack/head.rb:12:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:336:in `call'
rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/cookies.rb:648:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster (2.9.4) lib/logster/middleware/reporter.rb:43:in `call'
railties (6.0.3.3) lib/rails/rack/logger.rb:37:in `call_app'
railties (6.0.3.3) lib/rails/rack/logger.rb:28:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/request_id.rb:27:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
rack (2.2.3) lib/rack/method_override.rb:24:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/host_authorization.rb:76:in `call'
rack-mini-profiler (2.1.0) lib/mini_profiler/profiler.rb:235:in `call'
message_bus (3.3.2) lib/message_bus/rack/middleware.rb:61:in `call'
lib/middleware/request_tracker.rb:176:in `call'
railties (6.0.3.3) lib/rails/engine.rb:527:in `call'
railties (6.0.3.3) lib/rails/railtie.rb:190:in `public_send'
railties (6.0.3.3) lib/rails/railtie.rb:190:in `method_missing'
rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.3) lib/rack/urlmap.rb:58:in `each'
rack (2.2.3) lib/rack/urlmap.rb:58:in `call'
unicorn (5.7.0) lib/unicorn/http_server.rb:632:in `process_client'
unicorn (5.7.0) lib/unicorn/http_server.rb:728:in `worker_loop'
unicorn (5.7.0) lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
unicorn (5.7.0) lib/unicorn/http_server.rb:144:in `start'
unicorn (5.7.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'

ENV

hostname config-app
process_id 273
application_version 891987a2843de3ebeed412e01fd6b8064dac3917
HTTP_HOST sub.domain..de
REQUEST_URI /topics/private-messages/firstname.name.json
REQUEST_METHOD GET
HTTP_USER_AGENT Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:81.0) Gecko/20100101 Firefox/81.0
HTTP_ACCEPT application/json, text/javascript, /; q=0.01
HTTP_REFERER https://sub.domain.de/u/firstname.name/messages
HTTP_X_FORWARDED_FOR 2003:d6:9720:2500:c4b4:5a78:fb34:fbe8, unix:
HTTP_X_REAL_IP unix:
username firstname.name
time 20:38

Beh, è una quantità enorme e non ho idea di dove guardare. Spero che questo possa fare un po’ di luce sul nostro problema. Se hai bisogno di ulteriori informazioni, fammelo sapere.

Grazie mille per aver dato un’occhiata!
GRAZIE

1 Mi Piace

Il tuo s3_bucket_name è non valido?

Grazie per la risposta,

risposta breve: non lo so, non credo di sì.

Il nome del bucket S3 sembra essere qualcosa legato ai sistemi di archiviazione S3 di Amazon, giusto? E in tal caso, probabilmente non può essere invalido. Non ne abbiamo mai configurato uno. Stiamo eseguendo Discourse in Docker dietro un proxy inverso Apache con un dominio.

E se il bucket S3 fosse invalido, non dovrebbe causare molti più crash, non solo su una singola rotta di un singolo utente?

Per favore, non fraintendimi. Potrei essere completamente sulla strada sbagliata. Come ho detto, non sono così sicuro di cosa sia questo s3_bucket_name o, se ho capito bene, del motivo per cui dovrebbe essere configurato.

Posso cercarlo nel pannello di amministrazione o devo controllare docker-compose?

Scusa il ritardo… fusi orari diversi e orari di lavoro… sai com’è.

Ma grazie mille per averci dato un’occhiata!

Dato che ho controllato le impostazioni, ogni opzione S3 è vuota. È corretto? Non usiamo i bucket SE, giusto? O ho frainteso qualcosa?

Hai abilitato l’impostazione del sito secure media?

No, non proprio, per quanto io comprenda l’impostazione. Abbiamo attivato l’opzione per le email sui media sicuri.

Poiché non abbiamo riscontrato questo errore dall’inizio, potrebbe essere causato da un’immagine incorporata inviata via email?

Dovrei provare a disattivare questa opzione?

Ma come ho detto

Quindi i media sicuri non dovrebbero funzionare senza alcuna credenziale S3 impostata, giusto?

2 Mi Piace

C’è ancora qualcuno qui che abbia un’idea di cosa potremmo provare?

Il fatto è che abbiamo questo problema con uno dei nostri amministratori, e rende molto difficile comunicare avendo un amministratore che non riesce a rispondere ai messaggi né a visualizzarli.

Per il momento, una soluzione sarebbe rendere di nuovo accessibile la casella di posta dei messaggi. Quindi esiste qualche trucco o possibilità di ricreare un singolo account utente o di – non lo so – eliminare tutti i messaggi di un singolo utente? In modo da poter ricominciare da capo con questo account?

Inoltre, stavo anche pensando di eliminare questo account, ma per quanto ho capito, la cancellazione degli utenti non è possibile. Cosa altro potremmo provare per creare un nuovo account per questo utente, in modo che la partecipazione sia di nuovo possibile?

Fatemmi sapere quali idee avete, sono in difficoltà qui.

Grazie in anticipo.

Scusa, devo chiedere di nuovo. Finché abbiamo ancora questo problema.

Intendevi chiedere se abilitiamo secure media come parte del problema o della soluzione?

Non abbiamo questa opzione attivata. Dovremmo attivarla?

O dovremmo lasciarla così com’è e sperare in altri suggerimenti per risolverla?

1 Mi Piace

Ciao,
sembra che anche io stia riscontrando un problema simile. Per quanto ne sappiamo, i messaggi per un singolo utente non funzionano.
Hai altre idee su cosa possiamo controllare??

1 Mi Piace

Secondo Jay:

Proverei a sostituire la condizione where("user_id > 0") con qualcosa come where("user_id = l-id-del-tuo-utente")

Per quanto riguarda il motivo per cui questo accade, la mia ipotesi è che sia qualcosa di localizzato. Anch’io a volte ho problemi con le virgolette, gli accenti, ecc… :wink:

1 Mi Piace

Mmh, sembra una buona idea provare.

Riflettendo sulla localizzazione, mi chiedevo se il comportamento dovrebbe cambiare modificando le impostazioni dell’interfaccia utente. Cosa ne pensi?

Proverò la soluzione di cancellazione nei prossimi giorni.

Grazie per il tuo aiuto.

Nel frattempo ci siamo ragionati un po’. Forse qualcun altro ha qualche contributo da condividere.

Un’altra cosa strana è che, nell’area del pannello dei messaggi, cliccando sull’icona dell’utente e poi sulla busta, dovrebbero essere visualizzati tutti i messaggi recenti, giusto? Nel caso dei nostri utenti che non riescono ad aprire la casella di posta, non c’è proprio nulla?

Forse qualcuno ha qualche idea al riguardo. Possiamo dire con certezza che dovrebbero essere elencate delle voci.

Forse questo darà qualche spunto in una direzione o nell’altra?

E anche un altro approccio di ragionamento. Abbiamo ancora un tipo di errore SSL sul nostro sito. Come ho detto, stiamo eseguendo Discourse con Docker dietro un proxy inverso su Apache. Ma il dominio ha il suo certificato SSL funzionante rilasciato da Let’s Encrypt.

Tuttavia, abbiamo ancora alcuni avvisi di contenuto misto sul sito. In ogni caso, i loghi standard e i favicon vengono serviti tramite HTTP. Abbiamo rimosso i branding personalizzati nel tentativo di eliminare gli errori di contenuto misto.

Quindi, c’è la possibilità che questo possa causare il problema?

Quando abbiamo recentemente chiamato il percorso JSON https://sub.domain.de/topics/private-messages/firstnamename.json

Il risultato JSON è:

{
	"status":500,
	"error":"Internal Server Error"
}

Un’analisi più attenta dei log ha mostrato quanto segue:

NoMethodError (undefined method `downcase' for nil:NilClass)
app/models/global_setting.rb:107:in `s3_bucket_name'
app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'
lib/url_helper.rb:90:in `cook_url'
app/models/topic.rb:126:in `image_url'
app/serializers/listable_topic_serializer.rb:34:in `image_url'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/application_controller.rb:454:in `serialize_data'
app/controllers/application_controller.rb:463:in `render_serialized'
lib/topic_list_responder.rb:16:in `block (2 levels) in respond_with_list'
lib/topic_list_responder.rb:9:in `respond_with_list'
app/controllers/list_controller.rb:177:in `message_route'
app/controllers/list_controller.rb:164:in `block in generate_message_route'
app/controllers/application_controller.rb:354:in `block in with_resolved_locale'
app/controllers/application_controller.rb:354:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:354:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'

Dato che non stiamo utilizzando media sicuri né S3, continuo a imbattermi in queste voci:

app/models/site_setting.rb:157:in `absolute_base_url'
app/models/upload.rb:184:in `secure_media_url_from_upload_url'
lib/url_helper.rb:60:in `secure_proxy_without_cdn'

Quindi, c’è la possibilità che questo possa essere causato da un errore di contenuto misto sottostante?

Grazie per essere ancora qui a supportarci.

1 Mi Piace