Si no se agrega un tema, se evita permanentemente que ese tema se agregue

Acabo de encontrarme con esto en un nuevo foro. Intenté agregar un tema, lo que falló debido a una de las extensiones de archivo. Luego permití * temporalmente solo para intentar solucionar el problema, y luego comencé a recibir errores 500 al intentar agregar el tema.

Mensaje

Failed to process hijacked response correctly : ActiveRecord::RecordNotUnique : PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_child_themes_on_parent_theme_id_and_child_theme_id"
DETAIL:  Key (parent_theme_id, child_theme_id)=(50, 35) already exists.

Backtrace

rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:69:in `exec_params'
rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:69:in `exec_params'
activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `block (2 levels) in exec_no_cache'
activesupport-7.0.8/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport-7.0.8/lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:767:in `block in exec_no_cache'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `synchronize'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

oh extraño, supongo que no estamos limpiando correctamente en caso de error.

¿Es esto reproducible?

Lo comprobaré, pero los pasos de reproducción deberían ser:

  1. Encuentra un tema con algún archivo que no esté permitido por defecto (o elimina todo de la lista de extensiones permitidas del tema o similar)
  2. Intenta importar el tema
  3. Observa que falla debido a la extensión
  4. Permite las extensiones relevantes (o simplemente *)
  5. Sigue intentando e importando el tema.

El tema también podría necesitar algunos componentes de tema adjuntos, no estoy seguro.

Originalmente causé esto usando mi propio tema, pero AFAIK la mayoría de los temas deberían poder causar esto teóricamente.

Editar:
Correcto, la única condición realmente obligatoria aquí parece ser el archivo bloqueado, por lo que un tema con una fuente personalizada, un logo, etc. puede activarlo si prohíbes esa extensión de archivo. (Además, las cargas del personal aparentemente anulan las cargas del tema, así que asegúrate de que no esté permitido en ninguna de las configuraciones).

Hola :wave:

Revisé tu tema, parece que el problema está en tu about.json.

Hay una duplicación en los componentes.

Línea 29 con 38 :arrow_down_small:


Sin embargo, instalas bastantes componentes al mismo tiempo con el tema. ¿Son todos necesarios? :slightly_smiling_face:

2 Me gusta

¡Ah, vaya! Eso es culpa mía, lo siento.

Realmente nunca tuve la intención de que nadie más usara el tema, simplemente está muy ajustado a mi gusto y tiene los componentes temáticos que me gusta tener disponibles.