In #42413 , la logica di invalidazione della cache per i topic è stata ridisegnata.
Tuttavia, Discourse.cache.keys("page_not_found_topics:*").each { |key| Discourse.cache.redis.del(key) } attraverserà tutte le chiavi di redis, causando problemi di prestazioni e potrebbe andare in timeout se ci sono molte chiavi.
In questa circostanza, gli utenti potrebbero incontrare un errore 500, se spostano un topic in una categoria ristretta.
Questo commit limita l’ambito di attraversamento a Discourse.cache.normalize_key("page_not_found_topics:#{locale}"), che è molto più piccolo rispetto all’intero redis, e aggiunge anche un test per evitare l’esecuzione di scan_each. In #42413 , la logica di invalidazione della cache per i topic è stata ridisegnata.