Erro com categorias com visibilidade limitada e/ou subcategorias

O mesmo para mim, e eu atualizei hoje. Então, está no Discourse?

E agora vou tentar investigar um pouco mais.

1 curtida

Hmm, o seu é um erro do lado do servidor @Jagster, acho que isso é uma coisa diferente. Além disso, essa alteração ainda não foi mesclada, então não deve afetar sites auto-hospedados.

Isso é verdade, mas eu estava logado. O erro do OP é para anônimos. E de qualquer forma, em ambos os casos acontece com categorias.

Do Discourse:

HasCustomFields::NotPreloadedError (Tentativa de acessar o campo personalizado não pré-carregado 'sort_topics_by_event_start_date' na classe 'Category'.)

E

Message

HasCustomFields::NotPreloadedError (Tentativa de acessar o campo personalizado não pré-carregado 'sort_topics_by_event_start_date' na classe 'Category'. Isso é proibido para evitar 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/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'

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!'

Então… a seguir vou desativar o plugin de calendário, certo?

edit

Links para categorias na barra lateral funcionam bem, todos os outros links de categoria dão erro.

Limetei este erro um pouco. Ele ocorre apenas quando uma categoria tem subcategorias. E /categories também retorna erro 500.

E ainda não tenho certeza se vem do Calender. Se sim, é outro caso em que o modo de segurança é inútil?

Mas o Lockdown retorna isto:

Mensagem

HasCustomFields::NotPreloadedError (Tentativa de acessar o campo personalizado não pré-carregado 'redirect_url' na classe 'Category'. Isso é proibido 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'

Backtrace

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'

Ambiente

HTTP HOSTS: foorumi.katiska.eu

Então tenho quase certeza que isso não vem de plugins, mas do próprio Discourse, mas, novamente, não sou um desenvolvedor.

Eu sou o OP e não tenho o plugin Calendário instalado (estou em um nível de discourse hospedado que não tem esse plugin.)

É possível que “subcategorias causem isso” seja o caso… Não consigo dizer agora, pois as coisas estão bem quebradas no meu site. Mas eu acabei de criar uma categoria… então, se (eu não me lembro como funciona) ele define por padrão para colocar novas categorias em, por exemplo, Público… então eu acabei de criar minha primeira subcategoria (acidentalmente).

O erro certamente parece ser… sort_topics_by_event_start_date

Isso está sendo registrado aqui:

e para categorias aqui:

Tenho a sensação de que isso pode ser uma regressão devido ao trabalho de escalabilidade de categorias que estamos fazendo agora… vamos dar uma olhada.

1 curtida

Ah, legal! Já foi reportado. Vou deixar isso abaixo para que a busca funcione melhor.

while trying to load /categories.json)

Estamos investigando isso.

Este problema foi causado pelo discourse-calendar, mas a versão mais recente (em breve) do plugin deve corrigi-lo:

Este é um problema do discourse-category-lockdown, sobre o qual não temos controle. Posso enviar um PR para ele, no entanto.

6 curtidas

Acompanhamento adicional do problema aqui non preloaded custom field - Discourse Category Lockdown - Pavilion

1 curtida

Causado? Então, ambos os plugins tiveram o mesmo bug pelo motivo X, ou o Discourse mudou algo que afeta ambos?

Não estou culpando ninguém, mas estou apenas tentando entender a terminologia.

Uma melhoria de desempenho recente causou isso. Campos personalizados são um unicórnio em nossa base de código que podem ser usados por vários plugins para estender a funcionalidade. No entanto, se usados incorretamente, podem ter um impacto no desempenho. Esta melhoria visa abordar isso:

1 curtida

Enviei um PR para este, mas não é um repositório ao qual temos acesso:

6 curtidas

Eu vi que foi mesclado, fiz uma reconstrução e isso corrigiu o problema :tada: Obrigado pela correção rápida, como sempre rápido.

1 curtida

Sim. Funciona bem. Muito obrigado.

A categoria Lockdown dá o spinner da eternidade, embora (bem, esse problema pode vir do Firefox/iPad no modo de espionagem também). Mas é um problema diferente, eu acho.

1 curtida