• WuYunlong's avatar
    Fix master replica inconsistency for upgrading scenario. · f6029fb9
    WuYunlong authored
    Before this commit, when upgrading a replica, expired keys will not
    be loaded, thus causing replica having less keys in db. To this point,
    master and replica's keys is logically consistent. However, before
    the keys in master and replica are physically consistent, that is,
    they have the same dbsize, if master got a problem and the replica
    got promoted and becomes new master of that partition, and master
    updates a key which does not exist on master, but physically exists
    on the old master(new replica), the old master would refuse to update
    the key, thus causing master and replica data inconsistent.
    
    How could this happen?
    That's all because of the wrong judgement of roles while starting up
    the server. We can not use server.masterhost to judge if the server
    is master or replica, since it fails in cluster mode.
    
    When we start the server, we load rdb and do want to load expired keys,
    and do not want to have the ability to active expire keys, if it is
    a replica.
    f6029fb9
server.h 108 KB