Schwierigkeiten beim Verständnis der Einstellung für das Willkommensbanner

Potenziell… aber für mich würde das nicht die seltsamen Verzögerungen erklären, die Sie zwischen den Änderungen der Einstellungen sehen. Außerdem verwenden wir den alten Website-Einstellungswert nicht nach der anfänglichen Migration, daher glaube ich nicht, dass dies Auswirkungen haben sollte.

Okay, das ist interessant… es fehlt wieder auf Foundation auf deiner Seite, Moin, obwohl es in der Admin-Oberfläche aktiviert ist. Das Leeren des Caches mit SiteSetting.clear_cache!(expire_theme_site_setting_cache: true) leert den Cache nicht. Ich erhalte hier zwei unterschiedliche Ergebnisse:

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

Und dann habe ich das direkt ausgeführt:

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

Und es hat funktioniert?? Dann habe ich deine Einstellung in Admin erneut geändert und der Cache bleibt bestehen :thinking: Ich glaube, hier passiert etwas Seltsames mit den theme_site_settings im Speicher:

Denn das gibt:

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

Während ich, wenn ich aus der Datenbank abrufe, Folgendes erhalte, was den korrekten false-Wert hat:

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

Wir fummeln hier herum:

Und hier:

Was hier aufgerufen wird:

Ich bin mir also noch nicht sicher, warum das passiert, aber es würde erklären, warum der Cache bestehen bleibt, da der Cache aus diesem Objekt im Speicher erstellt wird.

Edit: Beachte auch, dass ich dies anderswo immer noch nicht reproduzieren kann, aber auf deiner Seite kann ich es ziemlich zuverlässig reproduzieren.

3 „Gefällt mir“

Okay… ich glaube, ich kann es lokal reproduzieren, es ist ein Multi-Prozess-Bug. Im Grunde werden die In-Memory-Einstellungen vom Administrator in Prozess A geändert, aber dann trifft ein Benutzer mit einer Anfrage auf Prozess B und ist derjenige, der den neuen Cache-Wert setzt, und der Cache hat am Ende den alten Wert im Speicher.

Andere Website-Einstellungen umgehen dies, indem sie alle Einstellungen über MessageBus aktualisieren, wenn jemand etwas ändert:

Ich werde versuchen, morgen eine Lösung dafür zu finden (es ist jetzt mein Feierabend), danke für deine Geduld, Moin!

4 „Gefällt mir“

Ich habe die Korrektur jetzt zusammengeführt. Es hat etwas länger gedauert, weil ich herausfinden musste, wie ich sie testen kann:

Ich werde deine Seite bald bereitstellen, Moin.

Bearbeiten: Die Korrektur wurde bereitgestellt.

4 „Gefällt mir“

Da ich keine weiteren Probleme gehört habe, schließe ich dies. Lassen Sie mich wissen, wenn es Probleme gibt.