Dificuldade em entender a configuração de habilitar banner de boas-vindas

Potencialmente… mas para mim isso não explicaria esse lag estranho que você está vendo entre as mudanças das configurações. Além disso, não usamos o valor de configuração do site antigo após a migração inicial, então não acho que deva afetar as coisas.

Ok, isso é interessante… está faltando no Foundation do seu site novamente, Moin, mesmo que esteja habilitado na interface de administração. Limpar o cache com SiteSetting.clear_cache!(expire_theme_site_setting_cache: true) não está limpando o cache. Eu obtenho dois resultados diferentes aqui:

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

E então eu executei isso diretamente:

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

E funcionou?? Então eu mudei sua configuração novamente no admin e o cache está persistindo :thinking: Acho que algo estranho está acontecendo com os theme_site_settings na memória aqui:

Porque isso está dando:

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

Enquanto se eu buscar no banco de dados, eu obtenho isso, que tem o valor false correto:

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

Nós mexemos nisso aqui:

E aqui:

O que é chamado aqui:

Então, eu não tenho certeza do porquê isso está acontecendo ainda, mas explicaria por que o cache está segurando, porque o cache é construído a partir deste objeto na memória.

Editar: Também note, eu ainda não consigo reproduzir isso em outros lugares, mas consigo reproduzir de forma bastante confiável no seu site.

3 curtidas

Ok… acho que consegui reproduzir localmente, é um bug multi-processo. Basicamente, a versão na memória das configurações é alterada pelo administrador no processo A, mas então um usuário atinge o processo B com uma solicitação e acaba sendo o responsável por definir o novo valor do cache, e o cache acaba com o valor antigo na memória.

Outras configurações do site contornam isso atualizando todas as configurações via MessageBus sempre que alguém altera:

Tentarei ter uma correção para isso amanhã (já é o fim do meu expediente), obrigado pela sua paciência aqui, Moin!

4 curtidas

Mesclei o conserto agora, demorou um pouco mais porque precisei descobrir como testá-lo:

Vou implantar seu site em breve, Moin.

Editar: O conserto foi implantado

4 curtidas

Fechando, pois não tive mais problemas, sinta-se à vontade para me informar se houver problemas.