ArgumentError: Fuso horário inválido: US/Pacific-New causa erro 500

Tenho uma instalação padrão que acabei de atualizar e que está falhando devido a um problema de fuso horário. Acho que pode ser apenas um usuário, mas ainda não tenho certeza.

Era apenas para um usuário. Quando fui ao perfil dele, o fuso horário não estava definido. Quando defini o fuso horário, o problema desapareceu.

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: talvez ele tivesse o fuso horário definido para esse valor inválido? Testei outro usuário com um fuso horário nulo e não houve erro.

3 curtidas

De qual versão você atualizou?

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

5 curtidas

Uau. Boa observação. Preciso aprender a pesquisar melhor commits antigos por strings. Você faz isso através da interface do GitHub? Onde?

Foi de uma versão recente, não mais de um mês atrás. Não faz sentido que isso seja um problema agora, a menos que alguma biblioteca mais nova esteja impondo algo de forma diferente.

Então, talvez seja um acaso ou talvez esse commit devesse ter removido as configurações do usuário com esse fuso horário agora inválido.

1 curtida
  1. Vá para o repositório que você deseja pesquisar
  2. Digite o termo de pesquisa no canto superior esquerdo

  1. Clique e clique em ‘neste repositório’

2 curtidas

Demorou 6 anos para eu descobrir isso!

3 curtidas

Bem, parece que ainda não descobri.\n\n

\n\nMas espere! Aqui está o segredo que me faltava todos esses anos:\n\n\n\ne se eu clicar em "issues"… … … finalmente!\n\n\n\nMuito obrigado.

1 curtida

Bem, minha melhor suposição é que houve um período em que se podia escolher US/Pacific-New como fuso horário, e este usuário o fez. E agora alguma biblioteca falha para usuários com esse fuso horário.

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

não encontra outros usuários com esse fuso horário, então acho que não acontecerá novamente neste site.

1 curtida