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