When master and slave both come down then slave start again. the slave never connect master success and server.repl_down_since is 0. genRedisInfoString repl_down_since send to sentinel is server.unixtime actual. So sentinel consinder the slave link down to master too long and don't promoted it.
if (server.repl_state != REPL_STATE_CONNECTED) {
info = sdscatprintf(info,
"master_link_down_since_seconds:%jd\r\n",
(intmax_t)(server.unixtime-server.repl_down_since));
}
Comment From: z00526391
It should be designed in this way. When slave restarted it never connected to master, can't tell how much difference with master, and don't promoted it to master.