Redis: Risolto crash durante il caricamento dei dati e prefetch di memoria
Scritto da Alessio il 10/03/2024
Problema
Durante una sincronizzazione completa della replica, una chiamata a prefetchCommands() poteva causare un crash del server. Il codice presumeva erroneamente che la prima hash table fosse sempre valida, anche mentre veniva svuotata durante il caricamento dei dati.
Soluzione
Ho aggiunto un controllo per saltare il prefetch della memoria se server.loading è vero, poiché durante il caricamento di un file RDB il dizionario principale è in fase di ricostruzione e il prefetch delle chiavi non ha senso. Ho anche aggiunto un'asserzione difensiva per prevenire problemi futuri.
Risultato
Redis non va più in crash durante il caricamento dei dati della replica, migliorando la stabilità complessiva nei sistemi ad alto carico.
Commit: redis/redis@1abd489