Errore con categorie con visibilità limitata e/o sottocategorie

Anche per me, e ho aggiornato oggi. Quindi è in Discourse?

E ora provo a scavare un po’ più a fondo.

1 Mi Piace

Hmm, il tuo è un errore lato server @Jagster, penso che sia una cosa diversa. Inoltre, questa modifica non è ancora stata unita, quindi non dovrebbe influire sui siti self-hosted.

È vero, ma ero loggato. L’errore dell’OP è per gli anon. E comunque, in entrambi i casi succede alle categorie.

Da Discourse:

HasCustomFields::NotPreloadedError (Tentativo di accedere al campo personalizzato non precaricato 'sort_topics_by_event_start_date' sulla classe 'Category'.

E

Message

HasCustomFields::NotPreloadedError (Tentativo di accedere al campo personalizzato non precaricato 'sort_topics_by_event_start_date' sulla classe 'Category'. Questo è vietato per prevenire query 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!'

Quindi… la prossima cosa che farò sarà disattivare il plugin del calendario, giusto?

edit

I link alle categorie nella barra laterale funzionano bene, ogni altro link di categoria dà errore.

Ho limitato un po’ questo errore. Si verifica solo quando una categoria ha sottocategorie. Anche /categories restituisce un errore 500.

E non sono ancora sicuro se provenga da Calender. In tal caso, è un altro caso in cui la modalità sicura è inefficace?

Ma Lockdown restituisce questo:

Messaggio

HasCustomFields::NotPreloadedError (Tentativo di accedere al campo personalizzato non precaricato 'redirect_url' sulla classe 'Category'. Questo è vietato per prevenire query 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'

Env

HTTP HOSTS: foorumi.katiska.eu

Quindi sono abbastanza sicuro che non provenga dai plugin ma da Discourse stesso, ma di nuovo, non sono uno sviluppatore.

Sono l’OP e non ho installato il plugin Calendario (sono su un livello di discourse ospitato che non ha quel plugin).

È possibile che “le sottocategorie ne siano la causa”… Non posso dirlo ora dato che le cose sono piuttosto compromesse sul mio sito. Ma ho appena creato una categoria… quindi se (non ricordo come funziona) per impostazione predefinita mette le nuove categorie sotto, ad esempio, Pubblico… allora ho appena creato la mia prima sottocategoria (accidentalmente).

L’errore sembra certamente farlo… sort_topics_by_event_start_date

Questo viene registrato qui:

e per le categorie qui:

Ho la sensazione che questa possa essere una regressione dovuta al lavoro di scalabilità delle categorie che stiamo facendo ora… daremo un’occhiata.

1 Mi Piace

Ah bello! Era già stato segnalato. Lascerò questo qui sotto in modo che la ricerca funzioni meglio.

while trying to load /categories.json)

Stiamo indagando su questo.

Questo problema è stato causato da discourse-calendar, ma la versione più recente (presto) del plugin dovrebbe risolverlo:

Questo è un problema di discourse-category-lockdown, sul quale non abbiamo alcun controllo. Posso comunque inviare una PR.

6 Mi Piace

Ulteriore monitoraggio del problema qui non preloaded custom field - Discourse Category Lockdown - Pavilion

1 Mi Piace

Causato? Quindi, entrambi i plugin hanno lo stesso bug per il motivo X, o Discourse ha cambiato qualcosa che influisce su entrambi?

Non sto incolpando nessuno, ma sto solo cercando di capire il gergo.

Un recente miglioramento delle prestazioni ha causato questo. I campi personalizzati sono un unicorno nel nostro codebase che può essere utilizzato da vari plugin per estendere la funzionalità. Tuttavia, se non utilizzati in modo errato, possono comportare un impatto sulle prestazioni. Questo miglioramento mira ad affrontare questo problema:

1 Mi Piace

Ho inviato una PR per quello qui, ma non è un repository a cui abbiamo accesso:

6 Mi Piace

L’ho visto unito, ho fatto una ricompilazione e ha risolto il problema :tada: Grazie per la correzione rapida, come sempre veloce.

1 Mi Piace

Sì. Funziona bene. Grazie mille.

La categoria Lockdown dà un giradischi di eternità, anche se (beh, quel problema potrebbe derivare anche da Firefox/iPad in modalità spy…). Ma è un problema diverso, credo.

1 Mi Piace