Change the return value of rdbLoad function to enums (#11039)
The reason we do this is because in #11036, we added error log message when failing to open RDB file for reading. In loadDdataFromDisk we call rdbLoad and also check errno, now the logging corrupts errno (reported in alpine daily). It is not safe to rely on errno as we do today, so we change the return value of rdbLoad function to enums, like we have when loading an AOF.
This commit is contained in:
parent
6f0a27e38e
commit
00097bf4aa
@ -567,7 +567,7 @@ NULL
|
||||
protectClient(c);
|
||||
int ret = rdbLoad(server.rdb_filename,NULL,flags);
|
||||
unprotectClient(c);
|
||||
if (ret != C_OK) {
|
||||
if (ret != RDB_OK) {
|
||||
addReplyError(c,"Error trying to load the RDB dump");
|
||||
return;
|
||||
}
|
||||
|
@ -3256,8 +3256,9 @@ int rdbLoad(char *filename, rdbSaveInfo *rsi, int rdbflags) {
|
||||
|
||||
fp = fopen(filename, "r");
|
||||
if (fp == NULL) {
|
||||
retval = (errno == ENOENT) ? RDB_NOT_EXIST : RDB_FAILED;
|
||||
serverLog(LL_WARNING,"Fatal error: can't open the RDB file %s for reading: %s", filename, strerror(errno));
|
||||
return C_ERR;
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (fstat(fileno(fp), &sb) == -1)
|
||||
@ -3270,7 +3271,7 @@ int rdbLoad(char *filename, rdbSaveInfo *rsi, int rdbflags) {
|
||||
|
||||
fclose(fp);
|
||||
stopLoading(retval==C_OK);
|
||||
return retval;
|
||||
return (retval==C_OK) ? RDB_OK : RDB_FAILED;
|
||||
}
|
||||
|
||||
/* A background saving child (BGSAVE) terminated its work. Handle this.
|
||||
|
@ -2161,7 +2161,7 @@ void readSyncBulkPayload(connection *conn) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (rdbLoad(server.rdb_filename,&rsi,RDBFLAGS_REPLICATION) != C_OK) {
|
||||
if (rdbLoad(server.rdb_filename,&rsi,RDBFLAGS_REPLICATION) != RDB_OK) {
|
||||
serverLog(LL_WARNING,
|
||||
"Failed trying to load the MASTER synchronization "
|
||||
"DB from disk: %s", strerror(errno));
|
||||
|
@ -6515,7 +6515,8 @@ void loadDataFromDisk(void) {
|
||||
createReplicationBacklog();
|
||||
rdb_flags |= RDBFLAGS_FEED_REPL;
|
||||
}
|
||||
if (rdbLoad(server.rdb_filename,&rsi,rdb_flags) == C_OK) {
|
||||
int rdb_load_ret = rdbLoad(server.rdb_filename, &rsi, rdb_flags);
|
||||
if (rdb_load_ret == RDB_OK) {
|
||||
serverLog(LL_NOTICE,"DB loaded from disk: %.3f seconds",
|
||||
(float)(ustime()-start)/1000000);
|
||||
|
||||
@ -6550,7 +6551,7 @@ void loadDataFromDisk(void) {
|
||||
server.repl_no_slaves_since = time(NULL);
|
||||
}
|
||||
}
|
||||
} else if (errno != ENOENT) {
|
||||
} else if (rdb_load_ret != RDB_NOT_EXIST) {
|
||||
serverLog(LL_WARNING,"Fatal error loading the DB: %s. Exiting.",strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
@ -301,6 +301,11 @@ extern int configOOMScoreAdjValuesDefaults[CONFIG_OOM_COUNT];
|
||||
#define AOF_FAILED 4
|
||||
#define AOF_TRUNCATED 5
|
||||
|
||||
/* RDB return values for rdbLoad. */
|
||||
#define RDB_OK 0
|
||||
#define RDB_NOT_EXIST 1 /* RDB file doesn't exist. */
|
||||
#define RDB_FAILED 2 /* Failed to load the RDB file. */
|
||||
|
||||
/* Command doc flags */
|
||||
#define CMD_DOC_NONE 0
|
||||
#define CMD_DOC_DEPRECATED (1<<0) /* Command is deprecated */
|
||||
|
Loading…
x
Reference in New Issue
Block a user