Files
redis/src
zhaozhao.zz 49b3663332 AOF: recover from last write error after turn on appendonly again (#8030)
The key point is how to recover from last AOF write error, for example:

1. start redis with appendonly yes, and append some write commands

2. short write or something else error happen, `server.aof_last_write_status` changed to `C_ERR`, now redis doesn't accept write commands

3. execute `CONFIG SET appendonly no` to avoid the above problem, now redis can accept write commands again

4. disk error resolved, and execute `CONFIG SET appendonly yes` to reopen AOF, but `server.aof_last_write_status` cannot be changed to `C_OK` (if background aof rewrite run less then 1 second, it will free `server.aof_buf` and then serverCron cannot fix `aof_last_write_status`), then redis cannot accept write commands forever.

This PR use a simple way to fix it:

1. just free `server.aof_buf` when stop appendonly to save memory, if error happens in `flushAppendOnlyFile(1)`, the `server.aof_buf` may contains some data which has not be written to aof, I think we can ignore it because we turn off the appendonly.

2. reset fsync status after stop appendonly and call `flushAppendOnlyFile` only when `aof_state` is ON

3. reset `server.last_write_status` when reopen aof to accept write commands
2021-01-29 14:35:10 +08:00
..
2020-11-09 21:48:56 -08:00
2020-04-24 17:00:03 -07:00
2020-04-24 17:11:21 -07:00
2021-01-04 17:02:57 +02:00
2018-07-03 18:19:46 +02:00
2021-01-26 09:45:53 +08:00
2019-02-24 21:38:15 +01:00
2020-11-08 08:32:38 +02:00
2021-01-04 17:02:57 +02:00
2020-10-27 15:04:18 +02:00
2020-05-05 23:35:08 -04:00
2020-09-29 15:52:13 +03:00
2019-11-19 17:23:47 +08:00
2021-01-04 17:02:57 +02:00
2021-01-04 17:02:57 +02:00
2019-10-02 11:30:20 +02:00
2020-07-24 14:40:19 +08:00
2021-01-28 18:17:39 +02:00
2021-01-28 18:17:39 +02:00
2021-01-28 13:18:05 -08:00
2021-01-04 17:02:57 +02:00
2021-01-28 16:19:43 +02:00
2021-01-28 16:19:43 +02:00
2020-07-21 08:13:05 +03:00
2020-12-13 11:11:29 +02:00
2021-01-18 11:37:05 +02:00
2021-01-18 11:37:05 +02:00