ArgumentError: Fuso orario non valido: US/Pacific-New causa errore 500

Ho un’installazione standard che ho appena aggiornato e che sta fallendo a causa di un problema di fuso orario. Penso che possa riguardare solo un utente, ma non ne sono ancora del tutto sicuro.

Riguardava solo un utente. Quando sono andato sul suo profilo, il suo fuso orario non era impostato. Quando ho impostato il fuso orario, il problema è scomparso.

Started GET "/t/37040.json?track_visit=true&forceLoad=true" for 204.98.75.5 at 2023-03-23 21:36:37 +0000
Processing by TopicsController#show as JSON
  Parameters: {"track_visit"=>"true", "forceLoad"=>"true", "id"=>"37040"}
Completed 500 Internal Server Error in 48ms (ActiveRecord: 0.0ms | Allocations: 8345)
ArgumentError (Invalid Timezone: US/Pacific-New)
(eval):82:in `_fast_attributes'
app/serializers/post_stream_serializer_mixin.rb:54:in `block in posts'
app/serializers/post_stream_serializer_mixin.rb:47:in `map'
app/serializers/post_stream_serializer_mixin.rb:47:in `posts'
app/serializers/post_stream_serializer_mixin.rb:18:in `post_stream'
(eval):3:in `_fast_attributes'
app/controllers/application_controller.rb:545:in `render_json_dump'
app/controllers/topics_controller.rb:1242:in `block (2 levels) in perform_show_response'
app/controllers/topics_controller.rb:1232:in `perform_show_response'
app/controllers/topics_controller.rb:187:in `show'
app/controllers/application_controller.rb:414:in `block in with_resolved_locale'
app/controllers/application_controller.rb:414:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:369:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'
Failed to handle exception in exception app middleware : ArgumentError : Invalid Timezone: US/Pacific-New
  Rendered text template (Duration: 0.0ms | Allocations: 1)
Started GET "/latest.json" for 172.220.127.141 at 2023-03-23 21:37:00 +0000
Processing by ListController#latest as JSON

EDIT: forse aveva impostato il suo fuso orario su quel valore fasullo? Ho provato con un altro utente con un fuso orario nullo e non ci sono stati errori.

3 Mi Piace

Da quale versione hai effettuato l’aggiornamento?

Forse correlato (e vecchio) FIX: removes us_pacific-new from the list of available timezones by jjaffeux · Pull Request #10514 · discourse/discourse · GitHub

5 Mi Piace

Wow. Buona osservazione. Devo imparare a cercare meglio le stringhe nei vecchi commit. Lo fai tramite l’interfaccia utente di GitHub? Dove?

Era di una versione recente, non più di un mese fa. Non ha senso che questo sia un problema ora, a meno che una libreria più recente non stia imponendo qualcosa in modo diverso.

Quindi forse è un caso isolato o forse quel commit avrebbe dovuto rimuovere le impostazioni utente con quel fuso orario ora non valido.

1 Mi Piace
  1. Vai al repository che vuoi cercare
  2. Inserisci il termine di ricerca in alto a sinistra

  1. Clicca, e clicca su “in questo repository”

2 Mi Piace

Non so come ci sia voluto 6 anni per scoprirlo!

3 Mi Piace

Beh, sembra che non l’abbia ancora capito.

Ma aspetta! Ecco il segreto che mi è sfuggito per tutti questi anni:

e se clicco su “issues”… … … finalmente!

Grazie mille.

1 Mi Piace

Beh, la mia migliore ipotesi è che ci sia stata una finestra temporale in cui si poteva scegliere US/Pacific-New come fuso orario, e questo utente lo ha fatto. E ora qualche libreria fallisce per gli utenti con quel fuso orario.

UserOption.where("timezone like '%Pacific-New%'")

non trova altri utenti con quel fuso orario, quindi immagino che non accadrà più su questo sito.

1 Mi Piace