Skip to content

Commit

Permalink
persist: basic test ok.
Browse files Browse the repository at this point in the history
  • Loading branch information
patpatbear committed May 7, 2023
1 parent 6e897f5 commit c4decbf
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 4 deletions.
2 changes: 1 addition & 1 deletion redis.conf
Original file line number Diff line number Diff line change
Expand Up @@ -2115,7 +2115,7 @@ swap-mode disk
#
# Modified keys are persisted ASAP when swap-persist-enabled. Note that it's
# best effort persist, last modified keys may not persist in time.
# swap-persist-enabled
# swap-persist-enabled no

############################### ROCKSDB ##################################
# block cache capacity.
Expand Down
1 change: 1 addition & 0 deletions src/ctrip_swap.h
Original file line number Diff line number Diff line change
Expand Up @@ -1643,6 +1643,7 @@ void closeSwapChildErrPipe(void);
void sendSwapChildErr(swapRdbSaveErrType err_type, int dbid, sds key);
void receiveSwapChildErrs(void);
void swapLoadCommand(client *c);
int tryLoadKey(redisDb *db, robj *key, int oom_sensitive);

/* result that decoded from current rocksIter value */
typedef struct decodedResult {
Expand Down
12 changes: 10 additions & 2 deletions src/ctrip_swap_persist.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ sds genSwapPersistInfoString(sds info) {
}

/* scan meta cf to rebuild cold_keys/cold_filter & fix keys */
int tryLoadKey(redisDb *db, robj *key, int oom_sensitive);
void loadDataFromRocksdb() {
struct rocks *rocks = server.rocks;
rocksdb_iterator_t *meta_iter = rocksdb_create_iterator_cf(
Expand All @@ -156,6 +155,7 @@ void loadDataFromRocksdb() {
sds meta_start_key = rocksEncodeDbRangeStartKey(db->id);
sds meta_end_key = rocksEncodeDbRangeEndKey(db->id);

long long start_time = ustime();
rocksdb_iter_seek(meta_iter,meta_start_key,sdslen(meta_start_key));

while (rocksdb_iter_valid(meta_iter)) {
Expand All @@ -167,13 +167,14 @@ void loadDataFromRocksdb() {
rawkey = rocksdb_iter_key(meta_iter,&rklen);

minlen = rklen < sdslen(meta_end_key) ? rklen : sdslen(meta_end_key);
if (memcmp(meta_end_key,rawkey,minlen) > 0) break; /* dbid switched */
if (memcmp(rawkey,meta_end_key,minlen) >= 0) break; /* dbid switched */

rocksDecodeMetaKey(rawkey,rklen,&dbid,&key,&klen);

keyobj = createStringObject(key,klen);

tryLoadKey(db,keyobj,0);

db->cold_keys++;
coldFilterAddKey(db->cold_filter,keyobj->ptr);

Expand All @@ -182,6 +183,13 @@ void loadDataFromRocksdb() {

sdsfree(meta_start_key);
sdsfree(meta_end_key);

if (db->cold_keys) {
double elapsed = (double)(ustime() - start_time)/1000000;
serverLog(LL_NOTICE,
"[persist] db-%d loaded %lld keys from rocksdb in %.2f seconds.",
i,db->cold_keys,elapsed);
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/server.c
Original file line number Diff line number Diff line change
Expand Up @@ -6767,7 +6767,7 @@ int main(int argc, char **argv) {
moduleLoadFromQueue();
ACLLoadUsersAtStartup();
InitServerLast();
loadDataFromDisk();
ctripLoadDataFromDisk();
if (server.cluster_enabled) {
if (verifyClusterConfigWithData() == C_ERR) {
serverLog(LL_WARNING,
Expand Down

0 comments on commit c4decbf

Please sign in to comment.