Merge pull request #87 from Snapchat/fix_ftracking_bug
Check tracking on every db in rdbLoadRio
This commit is contained in:
commit
23f92fa94c
11
src/rdb.cpp
11
src/rdb.cpp
@ -3115,14 +3115,13 @@ int rdbLoadRio(rio *rdb, int rdbflags, rdbSaveInfo *rsi) {
|
|||||||
std::unique_ptr<rdbInsertJob> spjob;
|
std::unique_ptr<rdbInsertJob> spjob;
|
||||||
|
|
||||||
// If we're tracking changes we need to reset this
|
// If we're tracking changes we need to reset this
|
||||||
bool fTracking = g_pserver->db[0]->FTrackingChanges();
|
std::vector<bool> fTracking(cserver.dbnum);
|
||||||
if (fTracking) {
|
|
||||||
// We don't want to track here because processChangesAsync is outside the normal scope handling
|
// We don't want to track here because processChangesAsync is outside the normal scope handling
|
||||||
for (int idb = 0; idb < cserver.dbnum; ++idb) {
|
for (int idb = 0; idb < cserver.dbnum; ++idb) {
|
||||||
|
if ((fTracking[idb] = g_pserver->db[idb]->FTrackingChanges()))
|
||||||
if (g_pserver->db[idb]->processChanges(false))
|
if (g_pserver->db[idb]->processChanges(false))
|
||||||
g_pserver->db[idb]->commitChanges();
|
g_pserver->db[idb]->commitChanges();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
rdb->update_cksum = rdbLoadProgressCallback;
|
rdb->update_cksum = rdbLoadProgressCallback;
|
||||||
rdb->chksum_arg = &wqueue;
|
rdb->chksum_arg = &wqueue;
|
||||||
@ -3489,12 +3488,11 @@ int rdbLoadRio(rio *rdb, int rdbflags, rdbSaveInfo *rsi) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
wqueue.endWork();
|
wqueue.endWork();
|
||||||
if (fTracking) {
|
|
||||||
// Reset track changes
|
// Reset track changes
|
||||||
for (int idb = 0; idb < cserver.dbnum; ++idb) {
|
for (int idb = 0; idb < cserver.dbnum; ++idb) {
|
||||||
|
if (fTracking[idb])
|
||||||
g_pserver->db[idb]->trackChanges(false);
|
g_pserver->db[idb]->trackChanges(false);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (empty_keys_skipped) {
|
if (empty_keys_skipped) {
|
||||||
serverLog(LL_WARNING,
|
serverLog(LL_WARNING,
|
||||||
"Done loading RDB, keys loaded: %lld, keys expired: %lld, empty keys skipped: %lld.",
|
"Done loading RDB, keys loaded: %lld, keys expired: %lld, empty keys skipped: %lld.",
|
||||||
@ -3511,12 +3509,11 @@ int rdbLoadRio(rio *rdb, int rdbflags, rdbSaveInfo *rsi) {
|
|||||||
* the RDB file from a socket during initial SYNC (diskless replica mode),
|
* the RDB file from a socket during initial SYNC (diskless replica mode),
|
||||||
* we'll report the error to the caller, so that we can retry. */
|
* we'll report the error to the caller, so that we can retry. */
|
||||||
eoferr:
|
eoferr:
|
||||||
if (fTracking) {
|
|
||||||
// Reset track changes
|
// Reset track changes
|
||||||
for (int idb = 0; idb < cserver.dbnum; ++idb) {
|
for (int idb = 0; idb < cserver.dbnum; ++idb) {
|
||||||
|
if (fTracking[idb])
|
||||||
g_pserver->db[idb]->trackChanges(false);
|
g_pserver->db[idb]->trackChanges(false);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
wqueue.endWork();
|
wqueue.endWork();
|
||||||
if (key != nullptr)
|
if (key != nullptr)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user