Unverified Commit e24d4600 authored by chenyang8094's avatar chenyang8094 Committed by GitHub
Browse files

Delete renamed new incr when write manifest failed (#10649)

Followup fix for #10616
parent 81926254
...@@ -2517,7 +2517,8 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) { ...@@ -2517,7 +2517,8 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) {
if (!bysignal && exitcode == 0) { if (!bysignal && exitcode == 0) {
char tmpfile[256]; char tmpfile[256];
long long now = ustime(); long long now = ustime();
sds new_base_filename; sds new_base_filepath = NULL;
sds new_incr_filepath = NULL;
aofManifest *temp_am; aofManifest *temp_am;
mstime_t latency; mstime_t latency;
...@@ -2534,9 +2535,9 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) { ...@@ -2534,9 +2535,9 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) {
/* Get a new BASE file name and mark the previous (if we have) /* Get a new BASE file name and mark the previous (if we have)
* as the HISTORY type. */ * as the HISTORY type. */
new_base_filename = getNewBaseFileNameAndMarkPreAsHistory(temp_am); sds new_base_filename = getNewBaseFileNameAndMarkPreAsHistory(temp_am);
serverAssert(new_base_filename != NULL); serverAssert(new_base_filename != NULL);
sds new_base_filepath = makePath(server.aof_dirname, new_base_filename); new_base_filepath = makePath(server.aof_dirname, new_base_filename);
/* Rename the temporary aof file to 'new_base_filename'. */ /* Rename the temporary aof file to 'new_base_filename'. */
latencyStartMonitor(latency); latencyStartMonitor(latency);
...@@ -2561,7 +2562,7 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) { ...@@ -2561,7 +2562,7 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) {
sdsfree(temp_incr_aof_name); sdsfree(temp_incr_aof_name);
/* Get next new incr aof name. */ /* Get next new incr aof name. */
sds new_incr_filename = getNewIncrAofName(temp_am); sds new_incr_filename = getNewIncrAofName(temp_am);
sds new_incr_filepath = makePath(server.aof_dirname, new_incr_filename); new_incr_filepath = makePath(server.aof_dirname, new_incr_filename);
latencyStartMonitor(latency); latencyStartMonitor(latency);
if (rename(temp_incr_filepath, new_incr_filepath) == -1) { if (rename(temp_incr_filepath, new_incr_filepath) == -1) {
serverLog(LL_WARNING, serverLog(LL_WARNING,
...@@ -2579,7 +2580,6 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) { ...@@ -2579,7 +2580,6 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) {
latencyEndMonitor(latency); latencyEndMonitor(latency);
latencyAddSampleIfNeeded("aof-rename", latency); latencyAddSampleIfNeeded("aof-rename", latency);
sdsfree(temp_incr_filepath); sdsfree(temp_incr_filepath);
sdsfree(new_incr_filepath);
} }
/* Change the AOF file type in 'incr_aof_list' from AOF_FILE_TYPE_INCR /* Change the AOF file type in 'incr_aof_list' from AOF_FILE_TYPE_INCR
...@@ -2591,9 +2591,14 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) { ...@@ -2591,9 +2591,14 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) {
bg_unlink(new_base_filepath); bg_unlink(new_base_filepath);
aofManifestFree(temp_am); aofManifestFree(temp_am);
sdsfree(new_base_filepath); sdsfree(new_base_filepath);
if (new_incr_filepath) {
bg_unlink(new_incr_filepath);
sdsfree(new_incr_filepath);
}
goto cleanup; goto cleanup;
} }
sdsfree(new_base_filepath); sdsfree(new_base_filepath);
if (new_incr_filepath) sdsfree(new_incr_filepath);
/* We can safely let `server.aof_manifest` point to 'temp_am' and free the previous one. */ /* We can safely let `server.aof_manifest` point to 'temp_am' and free the previous one. */
aofManifestFreeAndUpdate(temp_am); aofManifestFreeAndUpdate(temp_am);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment