Difficulté à comprendre le paramètre d'activation de la bannière de bienvenue

Potentiellement… mais pour moi, cela n’expliquerait pas ce décalage étrange que vous observez entre les changements de paramètres. De plus, nous n’utilisons pas l’ancienne valeur de paramètre du site après la migration initiale, donc je ne pense pas que cela devrait affecter les choses.

C’est intéressant… il manque à nouveau sur Foundation sur votre site, Moin, même s’il est activé dans l’interface d’administration. Vider le cache avec SiteSetting.clear_cache!(expire_theme_site_setting_cache: true) ne vide pas le cache. J’obtiens deux résultats différents ici :

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\"}"

Et puis j’ai exécuté ceci directement :

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

Et ça a fonctionné ?? Ensuite, j’ai à nouveau modifié votre paramètre dans l’administration et le cache persiste :thinking: Je pense que quelque chose d’étrange se passe avec les theme_site_settings en mémoire ici :

Parce que cela donne :

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

Alors que si je récupère depuis la base de données, j’obtiens ceci, qui a la bonne valeur false :

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"}]

Nous jouons avec ça ici :

Et ici :

Ce qui est appelé ici :

Donc, je ne suis pas sûr de la raison pour laquelle cela se produit pour le moment, mais cela expliquerait pourquoi le cache persiste, car le cache est construit à partir de cet objet en mémoire.

Edit : Notez également que je ne peux toujours pas reproduire cela ailleurs, mais je peux le reproduire de manière assez fiable sur votre site.

3 « J'aime »

Ok… Je pense avoir réussi à le reproduire localement, c’est un bug multi-processus. En gros, la version en mémoire des paramètres est modifiée par l’administrateur dans le processus A, mais ensuite un utilisateur accède au processus B avec une requête et finit par être celui qui définit la nouvelle valeur du cache, et le cache se retrouve avec l’ancienne valeur en mémoire.

D’autres paramètres du site contournent cela en actualisant tous les paramètres via MessageBus chaque fois que quelqu’un modifie :

J’essaierai d’avoir un correctif pour cela demain (c’est la fin de ma journée), merci pour votre patience Moin !

4 « J'aime »

Fusionné la correction maintenant, cela a pris un peu plus de temps car j’ai dû comprendre comment la tester :

Je déploierai votre site bientôt Moin.

Edit : La correction a été déployée

4 « J'aime »

Clôture car je n’ai pas eu d’autres problèmes, n’hésitez pas à me faire savoir s’il y en a.