Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
f48cd4b9
Commit
f48cd4b9
authored
Dec 21, 2011
by
antirez
Browse files
some RDB server struct fields renamed.
parent
ff2145ad
Changes
8
Hide whitespace changes
Inline
Side-by-side
src/aof.c
View file @
f48cd4b9
...
...
@@ -144,7 +144,7 @@ void flushAppendOnlyFile(int force) {
/* Don't fsync if no-appendfsync-on-rewrite is set to yes and there are
* children doing I/O in the background. */
if
(
server
.
aof_no_fsync_on_rewrite
&&
(
server
.
aof_child_pid
!=
-
1
||
server
.
bgsave
childpid
!=
-
1
))
(
server
.
aof_child_pid
!=
-
1
||
server
.
rdb_
child
_
pid
!=
-
1
))
return
;
/* Perform the fsync if needed. */
...
...
@@ -815,7 +815,7 @@ int rewriteAppendOnlyFileBackground(void) {
void
bgrewriteaofCommand
(
redisClient
*
c
)
{
if
(
server
.
aof_child_pid
!=
-
1
)
{
addReplyError
(
c
,
"Background append only file rewriting already in progress"
);
}
else
if
(
server
.
bgsave
childpid
!=
-
1
)
{
}
else
if
(
server
.
rdb_
child
_
pid
!=
-
1
)
{
server
.
aof_rewrite_scheduled
=
1
;
addReplyStatus
(
c
,
"Background append only file rewriting scheduled"
);
}
else
if
(
rewriteAppendOnlyFileBackground
()
==
REDIS_OK
)
{
...
...
src/config.c
View file @
f48cd4b9
...
...
@@ -201,7 +201,7 @@ void loadServerConfigFromString(char *config) {
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"glueoutputbuf"
))
{
redisLog
(
REDIS_WARNING
,
"Deprecated configuration directive:
\"
%s
\"
"
,
argv
[
0
]);
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"rdbcompression"
)
&&
argc
==
2
)
{
if
((
server
.
rdbcompression
=
yesnotoi
(
argv
[
1
]))
==
-
1
)
{
if
((
server
.
rdb
_
compression
=
yesnotoi
(
argv
[
1
]))
==
-
1
)
{
err
=
"argument must be 'yes' or 'no'"
;
goto
loaderr
;
}
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"activerehashing"
)
&&
argc
==
2
)
{
...
...
@@ -256,8 +256,8 @@ void loadServerConfigFromString(char *config) {
zfree
(
server
.
pidfile
);
server
.
pidfile
=
zstrdup
(
argv
[
1
]);
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"dbfilename"
)
&&
argc
==
2
)
{
zfree
(
server
.
dbfilename
);
server
.
dbfilename
=
zstrdup
(
argv
[
1
]);
zfree
(
server
.
r
db
_
filename
);
server
.
r
db
_
filename
=
zstrdup
(
argv
[
1
]);
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"hash-max-zipmap-entries"
)
&&
argc
==
2
)
{
server
.
hash_max_zipmap_entries
=
memtoll
(
argv
[
1
],
NULL
);
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"hash-max-zipmap-value"
)
&&
argc
==
2
)
{
...
...
@@ -376,8 +376,8 @@ void configSetCommand(redisClient *c) {
o
=
c
->
argv
[
3
];
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"dbfilename"
))
{
zfree
(
server
.
dbfilename
);
server
.
dbfilename
=
zstrdup
(
o
->
ptr
);
zfree
(
server
.
r
db
_
filename
);
server
.
r
db
_
filename
=
zstrdup
(
o
->
ptr
);
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"requirepass"
))
{
zfree
(
server
.
requirepass
);
server
.
requirepass
=
((
char
*
)
o
->
ptr
)[
0
]
?
zstrdup
(
o
->
ptr
)
:
NULL
;
...
...
@@ -567,7 +567,7 @@ void configGetCommand(redisClient *c) {
}
if
(
stringmatch
(
pattern
,
"dbfilename"
,
0
))
{
addReplyBulkCString
(
c
,
"dbfilename"
);
addReplyBulkCString
(
c
,
server
.
dbfilename
);
addReplyBulkCString
(
c
,
server
.
r
db
_
filename
);
matches
++
;
}
if
(
stringmatch
(
pattern
,
"requirepass"
,
0
))
{
...
...
src/db.c
View file @
f48cd4b9
...
...
@@ -40,7 +40,7 @@ robj *lookupKey(redisDb *db, robj *key) {
/* Update the access time for the aging algorithm.
* Don't do it if we have a saving child, as this will trigger
* a copy on write madness. */
if
(
server
.
bgsave
childpid
==
-
1
&&
server
.
aof_child_pid
==
-
1
)
if
(
server
.
rdb_
child
_
pid
==
-
1
&&
server
.
aof_child_pid
==
-
1
)
val
->
lru
=
server
.
lruclock
;
server
.
stat_keyspace_hits
++
;
return
val
;
...
...
@@ -210,15 +210,15 @@ void flushallCommand(redisClient *c) {
signalFlushedDb
(
-
1
);
server
.
dirty
+=
emptyDb
();
addReply
(
c
,
shared
.
ok
);
if
(
server
.
bgsave
childpid
!=
-
1
)
{
kill
(
server
.
bgsave
childpid
,
SIGKILL
);
rdbRemoveTempFile
(
server
.
bgsave
childpid
);
if
(
server
.
rdb_
child
_
pid
!=
-
1
)
{
kill
(
server
.
rdb_
child
_
pid
,
SIGKILL
);
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
;
rdbSave
(
server
.
dbfilename
);
rdbSave
(
server
.
r
db
_
filename
);
server
.
dirty
=
saved_dirty
;
}
server
.
dirty
++
;
...
...
src/debug.c
View file @
f48cd4b9
...
...
@@ -216,12 +216,12 @@ void debugCommand(redisClient *c) {
if
(
c
->
argc
>=
3
)
c
->
argv
[
2
]
=
tryObjectEncoding
(
c
->
argv
[
2
]);
redisAssertWithInfo
(
c
,
c
->
argv
[
0
],
1
==
2
);
}
else
if
(
!
strcasecmp
(
c
->
argv
[
1
]
->
ptr
,
"reload"
))
{
if
(
rdbSave
(
server
.
dbfilename
)
!=
REDIS_OK
)
{
if
(
rdbSave
(
server
.
r
db
_
filename
)
!=
REDIS_OK
)
{
addReply
(
c
,
shared
.
err
);
return
;
}
emptyDb
();
if
(
rdbLoad
(
server
.
dbfilename
)
!=
REDIS_OK
)
{
if
(
rdbLoad
(
server
.
r
db
_
filename
)
!=
REDIS_OK
)
{
addReplyError
(
c
,
"Error trying to load the RDB dump"
);
return
;
}
...
...
src/rdb.c
View file @
f48cd4b9
...
...
@@ -253,7 +253,7 @@ int rdbSaveRawString(rio *rdb, unsigned char *s, size_t len) {
/* Try LZF compression - under 20 bytes it's unable to compress even
* aaaaaaaaaaaaaaaaaa so skip it */
if
(
server
.
rdbcompression
&&
len
>
20
)
{
if
(
server
.
rdb
_
compression
&&
len
>
20
)
{
n
=
rdbSaveLzfStringObject
(
rdb
,
s
,
len
);
if
(
n
==
-
1
)
return
-
1
;
if
(
n
>
0
)
return
n
;
...
...
@@ -670,7 +670,7 @@ int rdbSaveBackground(char *filename) {
pid_t
childpid
;
long
long
start
;
if
(
server
.
bgsave
childpid
!=
-
1
)
return
REDIS_ERR
;
if
(
server
.
rdb_
child
_
pid
!=
-
1
)
return
REDIS_ERR
;
server
.
dirty_before_bgsave
=
server
.
dirty
;
...
...
@@ -692,7 +692,7 @@ int rdbSaveBackground(char *filename) {
return
REDIS_ERR
;
}
redisLog
(
REDIS_NOTICE
,
"Background saving started by pid %d"
,
childpid
);
server
.
bgsave
childpid
=
childpid
;
server
.
rdb_
child
_
pid
=
childpid
;
updateDictResizePolicy
();
return
REDIS_OK
;
}
...
...
@@ -1062,20 +1062,20 @@ void backgroundSaveDoneHandler(int exitcode, int bysignal) {
}
else
{
redisLog
(
REDIS_WARNING
,
"Background saving terminated by signal %d"
,
bysignal
);
rdbRemoveTempFile
(
server
.
bgsave
childpid
);
rdbRemoveTempFile
(
server
.
rdb_
child
_
pid
);
}
server
.
bgsave
childpid
=
-
1
;
server
.
rdb_
child
_
pid
=
-
1
;
/* Possibly there are slaves waiting for a BGSAVE in order to be served
* (the first stage of SYNC is a bulk transfer of dump.rdb) */
updateSlavesWaitingBgsave
(
exitcode
==
0
?
REDIS_OK
:
REDIS_ERR
);
}
void
saveCommand
(
redisClient
*
c
)
{
if
(
server
.
bgsave
childpid
!=
-
1
)
{
if
(
server
.
rdb_
child
_
pid
!=
-
1
)
{
addReplyError
(
c
,
"Background save already in progress"
);
return
;
}
if
(
rdbSave
(
server
.
dbfilename
)
==
REDIS_OK
)
{
if
(
rdbSave
(
server
.
r
db
_
filename
)
==
REDIS_OK
)
{
addReply
(
c
,
shared
.
ok
);
}
else
{
addReply
(
c
,
shared
.
err
);
...
...
@@ -1083,11 +1083,11 @@ void saveCommand(redisClient *c) {
}
void
bgsaveCommand
(
redisClient
*
c
)
{
if
(
server
.
bgsave
childpid
!=
-
1
)
{
if
(
server
.
rdb_
child
_
pid
!=
-
1
)
{
addReplyError
(
c
,
"Background save already in progress"
);
}
else
if
(
server
.
aof_child_pid
!=
-
1
)
{
addReplyError
(
c
,
"Can't BGSAVE while AOF log rewriting is in progress"
);
}
else
if
(
rdbSaveBackground
(
server
.
dbfilename
)
==
REDIS_OK
)
{
}
else
if
(
rdbSaveBackground
(
server
.
r
db
_
filename
)
==
REDIS_OK
)
{
addReplyStatus
(
c
,
"Background saving started"
);
}
else
{
addReply
(
c
,
shared
.
err
);
...
...
src/redis.c
View file @
f48cd4b9
...
...
@@ -563,7 +563,7 @@ void incrementallyRehash(void) {
* for dict.c to resize the hash tables accordingly to the fact we have o not
* running childs. */
void
updateDictResizePolicy
(
void
)
{
if
(
server
.
bgsave
childpid
==
-
1
&&
server
.
aof_child_pid
==
-
1
)
if
(
server
.
rdb_
child
_
pid
==
-
1
&&
server
.
aof_child_pid
==
-
1
)
dictEnableResize
();
else
dictDisableResize
();
...
...
@@ -673,7 +673,7 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
* if we resize the HT while there is the saving child at work actually
* a lot of memory movements in the parent will cause a lot of pages
* copied. */
if
(
server
.
bgsave
childpid
==
-
1
&&
server
.
aof_child_pid
==
-
1
)
{
if
(
server
.
rdb_
child
_
pid
==
-
1
&&
server
.
aof_child_pid
==
-
1
)
{
if
(
!
(
loops
%
10
))
tryResizeHashTables
();
if
(
server
.
activerehashing
)
incrementallyRehash
();
}
...
...
@@ -692,14 +692,14 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
/* Start a scheduled AOF rewrite if this was requested by the user while
* a BGSAVE was in progress. */
if
(
server
.
bgsave
childpid
==
-
1
&&
server
.
aof_child_pid
==
-
1
&&
if
(
server
.
rdb_
child
_
pid
==
-
1
&&
server
.
aof_child_pid
==
-
1
&&
server
.
aof_rewrite_scheduled
)
{
rewriteAppendOnlyFileBackground
();
}
/* Check if a background saving or AOF rewrite in progress terminated. */
if
(
server
.
bgsave
childpid
!=
-
1
||
server
.
aof_child_pid
!=
-
1
)
{
if
(
server
.
rdb_
child
_
pid
!=
-
1
||
server
.
aof_child_pid
!=
-
1
)
{
int
statloc
;
pid_t
pid
;
...
...
@@ -709,7 +709,7 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
if
(
WIFSIGNALED
(
statloc
))
bysignal
=
WTERMSIG
(
statloc
);
if
(
pid
==
server
.
bgsave
childpid
)
{
if
(
pid
==
server
.
rdb_
child
_
pid
)
{
backgroundSaveDoneHandler
(
exitcode
,
bysignal
);
}
else
{
backgroundRewriteDoneHandler
(
exitcode
,
bysignal
);
...
...
@@ -728,13 +728,13 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
now
-
server
.
lastsave
>
sp
->
seconds
)
{
redisLog
(
REDIS_NOTICE
,
"%d changes in %d seconds. Saving..."
,
sp
->
changes
,
sp
->
seconds
);
rdbSaveBackground
(
server
.
dbfilename
);
rdbSaveBackground
(
server
.
r
db
_
filename
);
break
;
}
}
/* Trigger an AOF rewrite if needed */
if
(
server
.
bgsave
childpid
==
-
1
&&
if
(
server
.
rdb_
child
_
pid
==
-
1
&&
server
.
aof_child_pid
==
-
1
&&
server
.
aof_rewrite_perc
&&
server
.
aof_current_size
>
server
.
aof_rewrite_min_size
)
...
...
@@ -885,10 +885,10 @@ void initServerConfig() {
server
.
aof_selected_db
=
-
1
;
/* Make sure the first time will not match */
server
.
aof_flush_postponed_start
=
0
;
server
.
pidfile
=
zstrdup
(
"/var/run/redis.pid"
);
server
.
dbfilename
=
zstrdup
(
"dump.rdb"
);
server
.
r
db
_
filename
=
zstrdup
(
"dump.rdb"
);
server
.
aof_filename
=
zstrdup
(
"appendonly.aof"
);
server
.
requirepass
=
NULL
;
server
.
rdbcompression
=
1
;
server
.
rdb
_
compression
=
1
;
server
.
activerehashing
=
1
;
server
.
maxclients
=
REDIS_MAX_CLIENTS
;
server
.
bpop_blocked_clients
=
0
;
...
...
@@ -1044,7 +1044,7 @@ void initServer() {
listSetFreeMethod
(
server
.
pubsub_patterns
,
freePubsubPattern
);
listSetMatchMethod
(
server
.
pubsub_patterns
,
listMatchPubsubPattern
);
server
.
cronloops
=
0
;
server
.
bgsave
childpid
=
-
1
;
server
.
rdb_
child
_
pid
=
-
1
;
server
.
aof_child_pid
=
-
1
;
server
.
aof_rewrite_buf
=
sdsempty
();
server
.
aof_buf
=
sdsempty
();
...
...
@@ -1305,10 +1305,10 @@ int prepareForShutdown(int flags) {
/* Kill the saving child if there is a background saving in progress.
We want to avoid race conditions, for instance our saving child may
overwrite the synchronous saving did by SHUTDOWN. */
if
(
server
.
bgsave
childpid
!=
-
1
)
{
if
(
server
.
rdb_
child
_
pid
!=
-
1
)
{
redisLog
(
REDIS_WARNING
,
"There is a child saving an .rdb. Killing it!"
);
kill
(
server
.
bgsave
childpid
,
SIGKILL
);
rdbRemoveTempFile
(
server
.
bgsave
childpid
);
kill
(
server
.
rdb_
child
_
pid
,
SIGKILL
);
rdbRemoveTempFile
(
server
.
rdb_
child
_
pid
);
}
if
(
server
.
aof_state
!=
REDIS_AOF_OFF
)
{
/* Kill the AOF saving child as the AOF we already have may be longer
...
...
@@ -1325,7 +1325,7 @@ int prepareForShutdown(int flags) {
if
((
server
.
saveparamslen
>
0
&&
!
nosave
)
||
save
)
{
redisLog
(
REDIS_NOTICE
,
"Saving the final RDB snapshot before exiting."
);
/* Snapshotting. Perform a SYNC SAVE and exit */
if
(
rdbSave
(
server
.
dbfilename
)
!=
REDIS_OK
)
{
if
(
rdbSave
(
server
.
r
db
_
filename
)
!=
REDIS_OK
)
{
/* Ooops.. error saving! The best we can do is to continue
* operating. Note that if there was a background saving process,
* in the next cron() Redis will be notified that the background
...
...
@@ -1499,7 +1499,7 @@ sds genRedisInfoString(char *section) {
server
.
loading
,
server
.
aof_state
!=
REDIS_AOF_OFF
,
server
.
dirty
,
server
.
bgsave
childpid
!=
-
1
,
server
.
rdb_
child
_
pid
!=
-
1
,
server
.
lastsave
,
server
.
aof_child_pid
!=
-
1
);
...
...
@@ -2102,7 +2102,7 @@ int main(int argc, char **argv) {
if
(
loadAppendOnlyFile
(
server
.
aof_filename
)
==
REDIS_OK
)
redisLog
(
REDIS_NOTICE
,
"DB loaded from append only file: %.3f seconds"
,(
float
)(
ustime
()
-
start
)
/
1000000
);
}
else
{
if
(
rdbLoad
(
server
.
dbfilename
)
==
REDIS_OK
)
{
if
(
rdbLoad
(
server
.
r
db
_
filename
)
==
REDIS_OK
)
{
redisLog
(
REDIS_NOTICE
,
"DB loaded from disk: %.3f seconds"
,
(
float
)(
ustime
()
-
start
)
/
1000000
);
}
else
if
(
errno
!=
ENOENT
)
{
...
...
src/redis.h
View file @
f48cd4b9
...
...
@@ -570,11 +570,11 @@ struct redisServer {
/* RDB persistence */
long
long
dirty
;
/* Changes to DB from the last save */
long
long
dirty_before_bgsave
;
/* Used to restore dirty on failed BGSAVE */
pid_t
bgsave
childpid
;
/* PID of RDB saving child */
pid_t
rdb_
child
_
pid
;
/* PID of RDB saving child */
struct
saveparam
*
saveparams
;
/* Save points array for RDB */
int
saveparamslen
;
/* Number of saving points */
char
*
dbfilename
;
/* Name of RDB file */
int
rdbcompression
;
/* Use compression in RDB? */
char
*
r
db
_
filename
;
/* Name of RDB file */
int
rdb
_
compression
;
/* Use compression in RDB? */
/* Logging */
char
*
logfile
;
/* Path of log file */
int
syslog_enabled
;
/* Is syslog enabled? */
...
...
src/replication.c
View file @
f48cd4b9
...
...
@@ -106,7 +106,7 @@ void syncCommand(redisClient *c) {
redisLog
(
REDIS_NOTICE
,
"Slave ask for synchronization"
);
/* Here we need to check if there is a background saving operation
* in progress, or if it is required to start one */
if
(
server
.
bgsave
childpid
!=
-
1
)
{
if
(
server
.
rdb_
child
_
pid
!=
-
1
)
{
/* Ok a background save is in progress. Let's check if it is a good
* one for replication, i.e. if there is another slave that is
* registering differences since the server forked to save */
...
...
@@ -135,7 +135,7 @@ void syncCommand(redisClient *c) {
}
else
{
/* Ok we don't have a BGSAVE in progress, let's start one */
redisLog
(
REDIS_NOTICE
,
"Starting BGSAVE for SYNC"
);
if
(
rdbSaveBackground
(
server
.
dbfilename
)
!=
REDIS_OK
)
{
if
(
rdbSaveBackground
(
server
.
r
db
_
filename
)
!=
REDIS_OK
)
{
redisLog
(
REDIS_NOTICE
,
"Replication failed, can't BGSAVE"
);
addReplyError
(
c
,
"Unable to perform background save"
);
return
;
...
...
@@ -229,7 +229,7 @@ void updateSlavesWaitingBgsave(int bgsaveerr) {
redisLog
(
REDIS_WARNING
,
"SYNC failed. BGSAVE child returned an error"
);
continue
;
}
if
((
slave
->
repldbfd
=
open
(
server
.
dbfilename
,
O_RDONLY
))
==
-
1
||
if
((
slave
->
repldbfd
=
open
(
server
.
r
db
_
filename
,
O_RDONLY
))
==
-
1
||
redis_fstat
(
slave
->
repldbfd
,
&
buf
)
==
-
1
)
{
freeClient
(
slave
);
redisLog
(
REDIS_WARNING
,
"SYNC failed. Can't open/stat DB after BGSAVE: %s"
,
strerror
(
errno
));
...
...
@@ -246,7 +246,7 @@ void updateSlavesWaitingBgsave(int bgsaveerr) {
}
}
if
(
startbgsave
)
{
if
(
rdbSaveBackground
(
server
.
dbfilename
)
!=
REDIS_OK
)
{
if
(
rdbSaveBackground
(
server
.
r
db
_
filename
)
!=
REDIS_OK
)
{
listIter
li
;
listRewind
(
server
.
slaves
,
&
li
);
...
...
@@ -333,7 +333,7 @@ void readSyncBulkPayload(aeEventLoop *el, int fd, void *privdata, int mask) {
server
.
repl_transfer_left
-=
nread
;
/* Check if the transfer is now complete */
if
(
server
.
repl_transfer_left
==
0
)
{
if
(
rename
(
server
.
repl_transfer_tmpfile
,
server
.
dbfilename
)
==
-
1
)
{
if
(
rename
(
server
.
repl_transfer_tmpfile
,
server
.
r
db
_
filename
)
==
-
1
)
{
redisLog
(
REDIS_WARNING
,
"Failed trying to rename the temp DB into dump.rdb in MASTER <-> SLAVE synchronization: %s"
,
strerror
(
errno
));
replicationAbortSyncTransfer
();
return
;
...
...
@@ -345,7 +345,7 @@ void readSyncBulkPayload(aeEventLoop *el, int fd, void *privdata, int mask) {
* rdbLoad() will call the event loop to process events from time to
* time for non blocking loading. */
aeDeleteFileEvent
(
server
.
el
,
server
.
repl_transfer_s
,
AE_READABLE
);
if
(
rdbLoad
(
server
.
dbfilename
)
!=
REDIS_OK
)
{
if
(
rdbLoad
(
server
.
r
db
_
filename
)
!=
REDIS_OK
)
{
redisLog
(
REDIS_WARNING
,
"Failed trying to load the MASTER synchronization DB from disk"
);
replicationAbortSyncTransfer
();
return
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment