Error con categorías con visibilidad limitada y/o subcategorías

A mí me pasa lo mismo, y actualicé hoy. ¿Entonces está en Discourse?

Y ahora intento profundizar un poco más.

1 me gusta

Hmm, el tuyo es un error del lado del servidor @Jagster, creo que eso es algo diferente. Además, este cambio aún no se ha fusionado, por lo que no debería afectar a los sitios autoalojados.

Es cierto, pero yo había iniciado sesión. El error del OP es para los anónimos. Y de todos modos, en ambos casos ocurre con las categorías.

De Discourse:

HasCustomFields::NotPreloadedError (Se intentó acceder al campo personalizado no precargado 'sort_topics_by_event_start_date' en la clase 'Category'.

Y

Message

HasCustomFields::NotPreloadedError (Se intentó acceder al campo personalizado no precargado 'sort_topics_by_event_start_date' en la clase 'Category'. Esto está prohibido para prevenir consultas N+1.)
app/models/concerns/has_custom_fields.rb:203:in `[]'
(eval):47:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/application_controller.rb:531:in `serialize_data'
app/controllers/application_controller.rb:540:in `render_serialized'
app/controllers/categories_controller.rb:408:in `categories_and_topics'
app/controllers/categories_controller.rb:99:in `categories_and_latest'
app/controllers/application_controller.rb:422:in `block in with_resolved_locale'
app/controllers/application_controller.rb:422:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/middleware/csp_middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:389:in `call'
lib/middleware/gtm_script_nonce_injector.rb:10: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:233:in `call'

Backtrace

app/models/concerns/has_custom_fields.rb:203:in `[]'
plugins/discourse-calendar/plugin.rb:88:in `block (2 levels) in activate!'
(eval):47:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:456: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!'

Entonces… ¿próximo mataré el plugin de calendario, verdad?

editar

Los enlaces a las categorías en la barra lateral funcionan bien, todos los demás enlaces de categoría dan error.

He limitado este error un poco. Ocurre solo cuando una categoría tiene subcategorías. Y /categories también da error 500.

Y todavía no estoy seguro de si proviene de Calender. Si es así, ¿es otro caso en el que el modo seguro es inútil?

Pero Lockdown da esto:

Mensaje

HasCustomFields::NotPreloadedError (Se intentó acceder al campo personalizado no precargado 'redirect_url' en la clase 'Category'. Esto está prohibido para prevenir consultas N+1.)
app/models/concerns/has_custom_fields.rb:203:in `[]'
(eval):49:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/application_controller.rb:531:in `serialize_data'
app/controllers/application_controller.rb:540:in `render_serialized'
app/controllers/categories_controller.rb:408:in `categories_and_topics'
app/controllers/categories_controller.rb:99:in `categories_and_latest'
app/controllers/application_controller.rb:422:in `block in with_resolved_locale'
app/controllers/application_controller.rb:422:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:389:in `call'
lib/middleware/gtm_script_nonce_injector.rb:10: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:233:in `call'

Rastreo

app/models/concerns/has_custom_fields.rb:203:in `[]'
plugins/discourse-category-lockdown/plugin.rb:18:in `block (2 levels) in activate!'
(eval):49: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'

Entorno

HTTP HOSTS: foorumi.katiska.eu

Así que estoy bastante seguro de que esto no proviene de los plugins, sino de Discourse en sí, pero de nuevo, no soy un desarrollador.

Soy el OP y no tengo instalado el plugin de Calendario (estoy en un nivel de Discourse alojado que no tiene ese plugin).

Es posible que “las subcategorías lo causan” sea el caso… No puedo decirlo ahora ya que las cosas están bastante rotas en mi sitio. Pero acabo de crear una categoría… así que si (no recuerdo cómo funciona) se configura por defecto para poner nuevas categorías debajo, por ejemplo, de Pública… entonces acabo de crear mi primera subcategoría (accidentalmente).

El error ciertamente parece que sí… sort_topics_by_event_start_date

Esto se está registrando aquí:

y para las categorías aquí:

Tengo la sensación de que esto podría ser una regresión debido al trabajo de escalabilidad de categorías que estamos haciendo ahora… echaremos un vistazo.

1 me gusta

¡Ah, genial! Ya se había informado. Dejaré esto a continuación para que la búsqueda funcione mejor.

al intentar cargar /categories.json)

Estamos investigando esto.

Este problema fue causado por discourse-calendar, pero la última versión (pronto) del plugin debería solucionarlo:

Este es un problema de discourse-category-lockdown, sobre el cual no tenemos ningún control. Sin embargo, puedo enviar una PR al respecto.

6 Me gusta

Seguimiento adicional del problema aquí non preloaded custom field - Discourse Category Lockdown - Pavilion

1 me gusta

¿Causado? Entonces, ¿ambos plugins tienen el mismo error por la razón X, o Discourse ha cambiado algo que afecta a ambos?

No estoy culpando a nadie, solo estoy tratando de entender la jerga.

Una mejora de rendimiento reciente causó esto. Los campos personalizados son un unicornio en nuestra base de código que varios complementos pueden usar para extender la funcionalidad. Sin embargo, si se usan incorrectamente, pueden tener un impacto en el rendimiento. Esta mejora busca abordar eso:

1 me gusta

He enviado una PR para ese aquí, pero no es un repositorio al que tengamos acceso:

6 Me gusta

Lo vi fusionado, hice una reconstrucción y se solucionó el problema :tada: Gracias por la rápida solución, como siempre rápido.

1 me gusta

Sí. Funciona muy bien. Muchas gracias.

Category Lockdown da spinner of eternity, sin embargo (bueno, ese problema puede provenir de Firefox/iPad en modo incógnito también). Pero es un problema diferente, creo.

1 me gusta