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
a4ec6729
Commit
a4ec6729
authored
Sep 05, 2014
by
antirez
Browse files
AOF loading: split handling of format errors from unexpected EOF.
parent
5bb0da34
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/aof.c
View file @
a4ec6729
...
...
@@ -645,7 +645,7 @@ int loadAppendOnlyFile(char *filename) {
argsds
=
sdsnewlen
(
NULL
,
len
);
if
(
len
&&
fread
(
argsds
,
len
,
1
,
fp
)
==
0
)
goto
fmterr
;
argv
[
j
]
=
createObject
(
REDIS_STRING
,
argsds
);
if
(
fread
(
buf
,
2
,
1
,
fp
)
==
0
)
goto
fmt
err
;
/* discard CRLF */
if
(
fread
(
buf
,
2
,
1
,
fp
)
==
0
)
goto
read
err
;
/* discard CRLF */
}
/* Command lookup */
...
...
@@ -673,7 +673,7 @@ int loadAppendOnlyFile(char *filename) {
/* This point can only be reached when EOF is reached without errors.
* If the client is in the middle of a MULTI/EXEC, log error and quit. */
if
(
fakeClient
->
flags
&
REDIS_MULTI
)
goto
readerr
;
if
(
fakeClient
->
flags
&
REDIS_MULTI
)
goto
uxeof
;
fclose
(
fp
);
freeFakeClient
(
fakeClient
);
...
...
@@ -683,14 +683,17 @@ int loadAppendOnlyFile(char *filename) {
server
.
aof_rewrite_base_size
=
server
.
aof_current_size
;
return
REDIS_OK
;
readerr:
if
(
feof
(
fp
))
{
redisLog
(
REDIS_WARNING
,
"Unexpected end of file reading the append only file"
);
}
else
{
readerr:
/* Read error. If feof(fp) is true, fall through to unexpected EOF. */
if
(
!
feof
(
fp
))
{
redisLog
(
REDIS_WARNING
,
"Unrecoverable error reading the append only file: %s"
,
strerror
(
errno
));
exit
(
1
);
}
uxeof:
/* Unexpected AOF end of file. */
redisLog
(
REDIS_WARNING
,
"Unexpected end of file reading the append only file"
);
exit
(
1
);
fmterr:
fmterr:
/* Format error. */
redisLog
(
REDIS_WARNING
,
"Bad file format reading the append only file: make a backup of your AOF file, then use ./redis-check-aof --fix <filename>"
);
exit
(
1
);
}
...
...
tests/integration/aof.tcl
View file @
a4ec6729
...
...
@@ -56,7 +56,7 @@ tags {"aof"} {
start_server_aof
[
list dir $server_path
]
{
test
"Short read: Server should have logged an error"
{
set pattern
"*
Bad file format
reading the append only file*"
set pattern
"*
Unexpected end of file
reading the append only file*"
set retry 10
while
{
$retry
}
{
set result
[
exec tail -n1 <
[
dict get $srv stdout
]]
...
...
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