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);
|
||||
}
|
||||
|
||||
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;
|
||||
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)
|
||||
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();
|
||||
fTest = true;
|
||||
@ -578,8 +583,9 @@ void loadServerConfigFromString(char *config) {
|
||||
} else if (!strcasecmp(argv[0],"rdbfuzz-mode")) {
|
||||
// NOP, handled in main
|
||||
} else if (!strcasecmp(argv[0],"storage-provider") && argc >= 2) {
|
||||
if (!initializeStorageProvider(argv+1, argc-1, &err))
|
||||
goto loaderr;
|
||||
g_sdsProvider = sdsdup(argv[1]);
|
||||
if (argc > 2)
|
||||
g_sdsArgs = sdsdup(argv[2]);
|
||||
} else if (!strcasecmp(argv[0],"enable-pro") && (argc == 1 || argc == 2)) {
|
||||
if (argc == 2)
|
||||
{
|
||||
|
@ -5357,6 +5357,8 @@ static void validateConfiguration()
|
||||
}
|
||||
}
|
||||
|
||||
bool initializeStorageProvider(const char **err);
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
struct timeval tv;
|
||||
int j;
|
||||
@ -5530,6 +5532,14 @@ int main(int argc, char **argv) {
|
||||
int background = cserver.daemonize && !cserver.supervised;
|
||||
if (background) daemonize();
|
||||
|
||||
const char *err;
|
||||
if (!initializeStorageProvider(&err))
|
||||
{
|
||||
serverLog(LL_WARNING, "Failed to initialize storage provider: %s",err);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
||||
initServer();
|
||||
initNetworking(cserver.cthreads > 1 /* fReusePort */);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user