Skip to content

Commit

Permalink
Print the number of abnormal line in AOF (redis#8823)
Browse files Browse the repository at this point in the history
When redis-check-aof finds an error, it prints the line number for faster troubleshooting.
  • Loading branch information
bugwz authored Apr 20, 2021
1 parent 080d457 commit 761d7d2
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/redis-check-aof.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,14 @@

static char error[1044];
static off_t epos;
static long long line = 1;

int consumeNewline(char *buf) {
if (strncmp(buf,"\r\n",2) != 0) {
ERROR("Expected \\r\\n, got: %02x%02x",buf[0],buf[1]);
return 0;
}
line += 1;
return 1;
}

Expand Down Expand Up @@ -201,8 +203,8 @@ int redis_check_aof_main(int argc, char **argv) {

off_t pos = process(fp);
off_t diff = size-pos;
printf("AOF analyzed: size=%lld, ok_up_to=%lld, diff=%lld\n",
(long long) size, (long long) pos, (long long) diff);
printf("AOF analyzed: size=%lld, ok_up_to=%lld, ok_up_to_line=%lld, diff=%lld\n",
(long long) size, (long long) pos, line, (long long) diff);
if (diff > 0) {
if (fix) {
char buf[2];
Expand Down
12 changes: 12 additions & 0 deletions tests/integration/aof.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,18 @@ tags {"aof"} {
assert_match "*not valid*" $result
}

test "Short read: Utility should show the abnormal line num in AOF" {
create_aof {
append_to_aof [formatCommand set foo hello]
append_to_aof "!!!"
}

catch {
exec src/redis-check-aof $aof_path
} result
assert_match "*ok_up_to_line=8*" $result
}

test "Short read: Utility should be able to fix the AOF" {
set result [exec src/redis-check-aof --fix $aof_path << "y\n"]
assert_match "*Successfully truncated AOF*" $result
Expand Down

0 comments on commit 761d7d2

Please sign in to comment.