Skip to content

Commit

Permalink
change flushall and flushdb command (#65)
Browse files Browse the repository at this point in the history
  • Loading branch information
qiongtubao authored Jul 3, 2020
1 parent 80d2d73 commit 16aefa7
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 26 deletions.
48 changes: 23 additions & 25 deletions src/db.c
Original file line number Diff line number Diff line change
Expand Up @@ -400,40 +400,38 @@ int getFlushCommandFlags(client *c, int *flags) {
*
* Flushes the currently SELECTed Redis DB. */
void flushdbCommand(client *c) {
// int flags;
int flags;

// if (getFlushCommandFlags(c,&flags) == C_ERR) return;
// signalFlushedDb(c->db->id);
// server.dirty += emptyDb(c->db->id,flags,NULL);
// addReply(c,shared.ok);
if (getFlushCommandFlags(c,&flags) == C_ERR) return;
signalFlushedDb(c->db->id);
server.dirty += emptyDb(c->db->id,flags,NULL);
addReply(c,shared.ok);
}

/* FLUSHALL [ASYNC]
*
* Flushes the whole server data set. */
void flushallCommand(client *c) {
// int flags;

// if (getFlushCommandFlags(c,&flags) == C_ERR) return;
// signalFlushedDb(-1);
// server.dirty += emptyDb(-1,flags,NULL);
// addReply(c,shared.ok);
// if (server.rdb_child_pid != -1) {
// kill(server.rdb_child_pid,SIGUSR1);
// rdbRemoveTempFile(server.rdb_child_pid);
// }
// if (server.saveparamslen > 0) {
// /* Normally rdbSave() will reset dirty, but we don't want this here
// * as otherwise FLUSHALL will not be replicated nor put into the AOF. */
// int saved_dirty = server.dirty;
// rdbSaveInfo rsi, *rsiptr;
// rsiptr = rdbPopulateSaveInfo(&rsi);
// rdbSave(server.rdb_filename,rsiptr);
// server.dirty = saved_dirty;
// }
// server.dirty++;
int flags;

if (getFlushCommandFlags(c,&flags) == C_ERR) return;
signalFlushedDb(-1);
server.dirty += emptyDb(-1,flags,NULL);
addReply(c,shared.ok);
if (server.rdb_child_pid != -1) {
kill(server.rdb_child_pid,SIGUSR1);
rdbRemoveTempFile(server.rdb_child_pid);
}
if (server.saveparamslen > 0) {
/* Normally rdbSave() will reset dirty, but we don't want this here
* as otherwise FLUSHALL will not be replicated nor put into the AOF. */
int saved_dirty = server.dirty;
rdbSaveInfo rsi, *rsiptr;
rsiptr = rdbPopulateSaveInfo(&rsi);
rdbSave(server.rdb_filename,rsiptr);
server.dirty = saved_dirty;
}
server.dirty++;
}

/* This command implements DEL and LAZYDEL. */
Expand Down
1 change: 1 addition & 0 deletions src/server.c
Original file line number Diff line number Diff line change
Expand Up @@ -1652,6 +1652,7 @@ void initServerConfig(struct redisServer *srv) {
srv->repl_diskless_sync_delay = CONFIG_DEFAULT_REPL_DISKLESS_SYNC_DELAY;
srv->repl_ping_slave_period = CONFIG_DEFAULT_REPL_PING_SLAVE_PERIOD;
srv->repl_timeout = CONFIG_DEFAULT_REPL_TIMEOUT;
srv->repl_backlog_size = CRDT_CONFIG_DEFAULT_REPL_BACKLOG_SIZE;
}
}

Expand Down
1 change: 1 addition & 0 deletions src/server.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ typedef long long mstime_t; /* millisecond time type. */
#define CONFIG_RUN_ID_SIZE 40
#define RDB_EOF_MARK_SIZE 40
#define CONFIG_DEFAULT_REPL_BACKLOG_SIZE (1024*1024) /* 1mb */
#define CRDT_CONFIG_DEFAULT_REPL_BACKLOG_SIZE (1024*1024*128) /* 128mb */
#define CONFIG_DEFAULT_REPL_BACKLOG_TIME_LIMIT (60*60) /* 1 hour */
#define CONFIG_REPL_BACKLOG_MIN_SIZE (1024*16) /* 16k */
#define CONFIG_BGSAVE_RETRY_DELAY 5 /* Wait a few secs before trying again. */
Expand Down
2 changes: 1 addition & 1 deletion tests/ctrip/integration/master-master/replication.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ start_server {tags {"repl"} config {crdt.conf} overrides {crdt-gid 1} module {cr

# Start the replication process...
$slave peerof $master_gid $master_host $master_port

$master crdt.info replication
test {Slave enters handshake} {
wait_for_condition 50 1000 {
[string match *handshake* [$slave crdt.role slave $master_gid]]
Expand Down
17 changes: 17 additions & 0 deletions tests/ctrip/integration/master-slave/replication.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,23 @@ start_server {tags {"repl"} overrides {crdt-gid 1} module {crdt.so} } {
fail "SET on master did not propagated on slave"
}
}
test {FLUSHALL should replicate} {
r -1 flushall
if {$::valgrind} {after 2000}
list [r -1 dbsize] [r 0 dbsize]
} {0 0}

test {FLUSHDB} {
set aux {}
r -1 set k v
lappend aux [r -1 dbsize]
after 1000
lappend aux [r dbsize]
r -1 flushdb
after 1000
lappend aux [r -1 dbsize]
lappend aux [r dbsize]
} {1 1 0 0}

test {ROLE in master reports master with a slave} {
set res [r -1 role]
Expand Down
12 changes: 12 additions & 0 deletions tests/ctrip/unit/module_memory.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,18 @@ start_server {tags {"repl"} config {crdt.conf} overrides {crdt-gid 1 repl-diskle
wait_flushall [lindex $peers 0]
assert_equal [get_module_all_memory [lindex $peers 0]] $m
}
test "flushall" {
[lindex $peers 0] set k v
assert {[get_module_all_memory [lindex $peers 0]] > 0}
[lindex $peers 0] flushall
assert {[get_module_all_memory [lindex $peers 0]] == 0}
}
test "flushdb" {
[lindex $peers 0] set k v
assert {[get_module_all_memory [lindex $peers 0]] > 0}
[lindex $peers 0] flushdb
assert {[get_module_all_memory [lindex $peers 0]] == 0}
}
test "add kv memory" {
[lindex $peers 0] set k v
set before_mm [get_module_all_memory [lindex $peers 0]]
Expand Down

0 comments on commit 16aefa7

Please sign in to comment.