ArgumentError: Zona horaria inválida: US/Pacific-New causa error 500

Tengo una instalación estándar que acabo de actualizar y que falla debido a un problema de zona horaria. Creo que puede ser solo un usuario, pero aún no estoy seguro.

Era solo para un usuario. Cuando fui a su perfil, su zona horaria no estaba configurada. Cuando configuré la zona horaria, el problema desapareció.

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: ¿quizás tenía su zona horaria configurada en ese valor falso? Probé con otro usuario con una zona horaria nula y no hubo ningún error.

3 Me gusta

¿De qué versión actualizaste?

Quizás relacionado (y antiguo) FIX: removes us_pacific-new from the list of available timezones by jjaffeux · Pull Request #10514 · discourse/discourse · GitHub

5 Me gusta

Vaya. Buena observación. Necesito aprender a buscar mejor en commits antiguos cadenas de texto. ¿Lo haces a través de la interfaz de usuario de GitHub? ¿Dónde?

Fue de una versión reciente, no hace más de un mes. No tiene sentido que esto sea un problema ahora a menos que alguna biblioteca más nueva esté aplicando algo de manera diferente.

Así que tal vez sea una casualidad o tal vez ese commit debería haber eliminado la configuración del usuario con esa zona horaria ahora no válida.

1 me gusta
  1. Ve al repositorio que quieres buscar
  2. Introduce el término de búsqueda en la esquina superior izquierda

  1. Haz clic y haz clic en “en este repositorio”

2 Me gusta

¡No estoy seguro de cómo me ha llevado 6 años darme cuenta de eso!

3 Me gusta

Bueno, parece que todavía no lo he descubierto.

Pero espera. Aquí está el secreto que me ha faltado todos estos años:

y si hago clic en “issues” … … … ¡finalmente!

Muchas gracias.

1 me gusta

Bueno, mi mejor suposición es que hubo un período de tiempo en el que uno podía elegir US/Pacific-New como zona horaria, y este usuario lo hizo. Y ahora alguna biblioteca falla para los usuarios con esa zona horaria.

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

no encuentra otros usuarios con esa zona horaria, así que supongo que no volverá a suceder en este sitio.

1 me gusta