Dificultad para entender la configuración de habilitar el banner de bienvenida

Potencialmente… pero para mí eso no explicaría este extraño retraso que estás viendo entre los cambios de configuración. Además, no usamos el valor de configuración del sitio antiguo después de la migración inicial, así que no creo que deba afectar las cosas.

Esto es interesante… vuelve a faltar en Foundation en tu sitio Moin, aunque está habilitado en la interfaz de administración. Limpiar la caché con SiteSetting.clear_cache!(expire_theme_site_setting_cache: true) no limpia la caché. Obtengo dos resultados diferentes aquí:

discourse(prod)> SiteSetting.theme_site_settings_json_uncached(-1)
=> "{\"enable_welcome_banner\":true,\"search_experience\":\"search_field\"}"
discourse(prod)> SiteSetting.theme_site_settings_json(-1)
=> "{\"enable_welcome_banner\":false,\"search_experience\":\"search_field\"}"

Y luego ejecuté esto directamente:

Discourse.cache.delete(SiteSettingExtension.theme_site_settings_cache_key(-1))

¿Y funcionó? Luego volví a cambiar tu configuración en administración y la caché persiste :thinking: Creo que está sucediendo algo extraño con theme_site_settings en memoria aquí:

Porque eso está dando:

 -2=>{:enable_welcome_banner=>false, :search_experience=>"search_field"},
 -1=>{:enable_welcome_banner=>true, :search_experience=>"search_field"}}

Mientras que si obtengo los datos de la base de datos, obtengo esto, que tiene el valor false correcto:

ThemeSiteSetting.where(theme_id: -1)
=>
[#<ThemeSiteSetting:0x00007f9164acb2d0 id: 3, theme_id: -1, name: "enable_welcome_banner", data_type: 5, value: "f", created_at: "2025-07-16 07:04:11.117747000 +0000", updated_at: "2025-08-11 06:35:07.606301000 +0000">,
 #<ThemeSiteSetting:0x00007f9164acb190 id: 13, theme_id: -1, name: "search_experience", data_type: 7, value: "search_field", created_at: "2025-07-16 07:04:11.117747000 +0000", updated_at: "2025-07-20 20:56:49.405228000 +0000">]
discourse(prod)> Theme.find(-1).themeable_site_settings
=>
[{:setting=>:enable_welcome_banner, :default=>true, :description=>"Display a banner on your main topic list pages to welcome members and allow them to search site content", :humanized_name=>"Enable welcome banner", :type=>"bool", :value=>false},
 {:setting=>:search_experience,
  :default=>"search_icon",
  :description=>"The default position and appearance of search on desktop devices",
  :humanized_name=>"Search experience",
  :type=>"enum",
  :valid_values=>[{:name=>"search.experience.search_field", :value=>"search_field"}, {:name=>"search.experience.search_icon", :value=>"search_icon"}],
  :translate_names=>true,
  :value=>"search_field"}]

Jugamos con esto aquí:

Y aquí:

Lo cual se llama aquí:

Así que no estoy seguro de por qué está sucediendo esto todavía, pero explicaría por qué la caché se mantiene, porque la caché se construye a partir de este objeto en memoria.

Editar: También ten en cuenta que todavía no puedo reproducir esto en otros lugares, pero puedo reproducirlo de manera bastante confiable en tu sitio.

3 Me gusta

Okay… creo que lo estoy reproduciendo localmente, es un error multiproceso. Básicamente, la versión en memoria de la configuración es modificada por el administrador en el proceso A, pero luego un usuario llega al proceso B con una solicitud y termina siendo quien establece el nuevo valor de caché, y la caché termina con el valor antiguo en memoria.

Otras configuraciones del sitio evitan esto actualizando todas las configuraciones a través de MessageBus cada vez que alguien las modifica:

Intentaré tener una solución para esto mañana (ya es mi fin de jornada), ¡gracias por tu paciencia Moin!

4 Me gusta

Ya fusioné la corrección, tomó un poco más de tiempo porque tuve que averiguar cómo probarla:

Pronto implementaré tu sitio, Moin.

Editar: La corrección ha sido implementada.

4 Me gusta

Cerrando ya que no he tenido noticias sobre más problemas, no dudes en informarme si hay algún problema.