Initialize the storage provider after daemonize
Former-commit-id: 5910af623b024b087c69b17ec32ce351fc4d00c2
This commit is contained in:
parent
6587134416
commit
8a1cca9756
@ -293,15 +293,20 @@ void queueLoadModule(sds path, sds *argv, int argc) {
|
|||||||
listAddNodeTail(g_pserver->loadmodule_queue,loadmod);
|
listAddNodeTail(g_pserver->loadmodule_queue,loadmod);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool initializeStorageProvider(sds *argv, int argc, const char **err)
|
sds g_sdsProvider = nullptr;
|
||||||
|
sds g_sdsArgs = nullptr;
|
||||||
|
|
||||||
|
bool initializeStorageProvider(const char **err)
|
||||||
{
|
{
|
||||||
bool fTest = false;
|
bool fTest = false;
|
||||||
if (!strcasecmp(argv[0], "flash") && argc == 2)
|
if (g_sdsProvider == nullptr)
|
||||||
|
return true;
|
||||||
|
if (!strcasecmp(g_sdsProvider, "flash") && g_sdsArgs != nullptr)
|
||||||
{
|
{
|
||||||
// Create The Storage Factory (if necessary)
|
// Create The Storage Factory (if necessary)
|
||||||
g_pserver->m_pstorageFactory = CreateRocksDBStorageFactory(argv[1], cserver.dbnum);
|
g_pserver->m_pstorageFactory = CreateRocksDBStorageFactory(g_sdsArgs, cserver.dbnum);
|
||||||
}
|
}
|
||||||
else if (!strcasecmp(argv[0], "test") && argc == 1)
|
else if (!strcasecmp(g_sdsProvider, "test") && g_sdsArgs == nullptr)
|
||||||
{
|
{
|
||||||
g_pserver->m_pstorageFactory = new (MALLOC_LOCAL) TestStorageFactory();
|
g_pserver->m_pstorageFactory = new (MALLOC_LOCAL) TestStorageFactory();
|
||||||
fTest = true;
|
fTest = true;
|
||||||
@ -578,8 +583,9 @@ void loadServerConfigFromString(char *config) {
|
|||||||
} else if (!strcasecmp(argv[0],"rdbfuzz-mode")) {
|
} else if (!strcasecmp(argv[0],"rdbfuzz-mode")) {
|
||||||
// NOP, handled in main
|
// NOP, handled in main
|
||||||
} else if (!strcasecmp(argv[0],"storage-provider") && argc >= 2) {
|
} else if (!strcasecmp(argv[0],"storage-provider") && argc >= 2) {
|
||||||
if (!initializeStorageProvider(argv+1, argc-1, &err))
|
g_sdsProvider = sdsdup(argv[1]);
|
||||||
goto loaderr;
|
if (argc > 2)
|
||||||
|
g_sdsArgs = sdsdup(argv[2]);
|
||||||
} else if (!strcasecmp(argv[0],"enable-pro") && (argc == 1 || argc == 2)) {
|
} else if (!strcasecmp(argv[0],"enable-pro") && (argc == 1 || argc == 2)) {
|
||||||
if (argc == 2)
|
if (argc == 2)
|
||||||
{
|
{
|
||||||
|
@ -5357,6 +5357,8 @@ static void validateConfiguration()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool initializeStorageProvider(const char **err);
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
int j;
|
int j;
|
||||||
@ -5530,6 +5532,14 @@ int main(int argc, char **argv) {
|
|||||||
int background = cserver.daemonize && !cserver.supervised;
|
int background = cserver.daemonize && !cserver.supervised;
|
||||||
if (background) daemonize();
|
if (background) daemonize();
|
||||||
|
|
||||||
|
const char *err;
|
||||||
|
if (!initializeStorageProvider(&err))
|
||||||
|
{
|
||||||
|
serverLog(LL_WARNING, "Failed to initialize storage provider: %s",err);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
initServer();
|
initServer();
|
||||||
initNetworking(cserver.cthreads > 1 /* fReusePort */);
|
initNetworking(cserver.cthreads > 1 /* fReusePort */);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user