| 3531 | } |
| 3532 | |
| 3533 | void updateActiveReplicaMastersFromRsi(rdbSaveInfo *rsi) { |
| 3534 | if (rsi != nullptr && g_pserver->fActiveReplica) { |
| 3535 | serverLog(LL_NOTICE, "RDB contains information on %d masters", (int)rsi->numMasters()); |
| 3536 | listIter li; |
| 3537 | listNode *ln; |
| 3538 | |
| 3539 | listRewind(g_pserver->masters, &li); |
| 3540 | while ((ln = listNext(&li))) |
| 3541 | { |
| 3542 | redisMaster *mi = (redisMaster*)listNodeValue(ln); |
| 3543 | if (mi->master != nullptr) { |
| 3544 | continue; //ignore connected masters |
| 3545 | } |
| 3546 | for (size_t i = 0; i < rsi->numMasters(); i++) { |
| 3547 | if (!sdscmp(mi->masterhost, (sds)rsi->vecmastersaveinfo[i].masterhost.get()) && mi->masterport == rsi->vecmastersaveinfo[i].masterport) { |
| 3548 | memcpy(mi->master_replid, rsi->vecmastersaveinfo[i].master_replid, sizeof(mi->master_replid)); |
| 3549 | mi->master_initial_offset = rsi->vecmastersaveinfo[i].master_initial_offset; |
| 3550 | replicationCacheMasterUsingMaster(mi); |
| 3551 | serverLog(LL_NOTICE, "Cached master recovered from RDB for %s:%d", mi->masterhost, mi->masterport); |
| 3552 | break; |
| 3553 | } |
| 3554 | } |
| 3555 | } |
| 3556 | } |
| 3557 | } |
| 3558 | |
| 3559 | int rdbLoad(rdbSaveInfo *rsi, int rdbflags) |
| 3560 | { |
no test coverage detected