mirror of https://mirror.osredm.com/root/redis.git
Move startup system check to before daeomniztion and modules init (#12067)
1. it's a bad idea to print these errors and exit after daemonization (if we'll exit, the failure may not be detected) 2. it's not nice to exit (or even do the check that uses `fork`) after modules already started (could create threads, or do some changes)
This commit is contained in:
parent
b220e6b450
commit
e5882da92b
52
src/server.c
52
src/server.c
|
@ -7176,6 +7176,34 @@ int main(int argc, char **argv) {
|
||||||
sdsfree(options);
|
sdsfree(options);
|
||||||
}
|
}
|
||||||
if (server.sentinel_mode) sentinelCheckConfigFile();
|
if (server.sentinel_mode) sentinelCheckConfigFile();
|
||||||
|
|
||||||
|
/* Do system checks */
|
||||||
|
#ifdef __linux__
|
||||||
|
linuxMemoryWarnings();
|
||||||
|
sds err_msg = NULL;
|
||||||
|
if (checkXenClocksource(&err_msg) < 0) {
|
||||||
|
serverLog(LL_WARNING, "WARNING %s", err_msg);
|
||||||
|
sdsfree(err_msg);
|
||||||
|
}
|
||||||
|
#if defined (__arm64__)
|
||||||
|
int ret;
|
||||||
|
if ((ret = checkLinuxMadvFreeForkBug(&err_msg)) <= 0) {
|
||||||
|
if (ret < 0) {
|
||||||
|
serverLog(LL_WARNING, "WARNING %s", err_msg);
|
||||||
|
sdsfree(err_msg);
|
||||||
|
} else
|
||||||
|
serverLog(LL_WARNING, "Failed to test the kernel for a bug that could lead to data corruption during background save. "
|
||||||
|
"Your system could be affected, please report this error.");
|
||||||
|
if (!checkIgnoreWarning("ARM64-COW-BUG")) {
|
||||||
|
serverLog(LL_WARNING,"Redis will now exit to prevent data corruption. "
|
||||||
|
"Note that it is possible to suppress this warning by setting the following config: ignore-warnings ARM64-COW-BUG");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* __arm64__ */
|
||||||
|
#endif /* __linux__ */
|
||||||
|
|
||||||
|
/* Daemonize if needed */
|
||||||
server.supervised = redisIsSupervised(server.supervised_mode);
|
server.supervised = redisIsSupervised(server.supervised_mode);
|
||||||
int background = server.daemonize && !server.supervised;
|
int background = server.daemonize && !server.supervised;
|
||||||
if (background) daemonize();
|
if (background) daemonize();
|
||||||
|
@ -7217,30 +7245,6 @@ int main(int argc, char **argv) {
|
||||||
if (!server.sentinel_mode) {
|
if (!server.sentinel_mode) {
|
||||||
/* Things not needed when running in Sentinel mode. */
|
/* Things not needed when running in Sentinel mode. */
|
||||||
serverLog(LL_NOTICE,"Server initialized");
|
serverLog(LL_NOTICE,"Server initialized");
|
||||||
#ifdef __linux__
|
|
||||||
linuxMemoryWarnings();
|
|
||||||
sds err_msg = NULL;
|
|
||||||
if (checkXenClocksource(&err_msg) < 0) {
|
|
||||||
serverLog(LL_WARNING, "WARNING %s", err_msg);
|
|
||||||
sdsfree(err_msg);
|
|
||||||
}
|
|
||||||
#if defined (__arm64__)
|
|
||||||
int ret;
|
|
||||||
if ((ret = checkLinuxMadvFreeForkBug(&err_msg)) <= 0) {
|
|
||||||
if (ret < 0) {
|
|
||||||
serverLog(LL_WARNING, "WARNING %s", err_msg);
|
|
||||||
sdsfree(err_msg);
|
|
||||||
} else
|
|
||||||
serverLog(LL_WARNING, "Failed to test the kernel for a bug that could lead to data corruption during background save. "
|
|
||||||
"Your system could be affected, please report this error.");
|
|
||||||
if (!checkIgnoreWarning("ARM64-COW-BUG")) {
|
|
||||||
serverLog(LL_WARNING,"Redis will now exit to prevent data corruption. "
|
|
||||||
"Note that it is possible to suppress this warning by setting the following config: ignore-warnings ARM64-COW-BUG");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif /* __arm64__ */
|
|
||||||
#endif /* __linux__ */
|
|
||||||
aofLoadManifestFromDisk();
|
aofLoadManifestFromDisk();
|
||||||
loadDataFromDisk();
|
loadDataFromDisk();
|
||||||
aofOpenIfNeededOnServerStart();
|
aofOpenIfNeededOnServerStart();
|
||||||
|
|
Loading…
Reference in New Issue