Skip to content
Snippets Groups Projects
Commit f1ab1cc4 authored by Dmitry Simonenko's avatar Dmitry Simonenko
Browse files

sophia-gh-678: sophia engine creates empty sophia dir

parent b740034a
No related branches found
No related tags found
No related merge requests found
......@@ -112,6 +112,7 @@ SophiaFactory::SophiaFactory()
flags = ENGINE_TRANSACTIONAL;
env = NULL;
tx = NULL;
sophia_dir_exists = 0;
recovery.state = READY_NO_KEYS;
recovery.recover = sophia_recovery_begin_snapshot;
recovery.replace = sophia_replace_recover;
......@@ -125,6 +126,7 @@ SophiaFactory::init()
panic("failed to create sophia environment");
void *c = sp_ctl(env);
sp_set(c, "sophia.path", cfg_gets("sophia_dir"));
sp_set(c, "sophia.path_create", "0");
sp_set(c, "scheduler.threads", cfg_gets("sophia.threads"));
sp_set(c, "memory.limit", cfg_gets("sophia.memory_limit"));
sp_set(c, "compaction.node_size", cfg_gets("sophia.node_size"));
......@@ -135,6 +137,8 @@ SophiaFactory::init()
int rc = sp_open(env);
if (rc == -1)
sophia_raise(env);
if (access(cfg_gets("sophia_dir"), F_OK) == 0)
sophia_dir_exists = 1;
}
Engine*
......
......@@ -44,6 +44,7 @@ struct SophiaFactory: public EngineFactory {
virtual void end_recover_snapshot();
virtual void end_recovery();
virtual void snapshot(enum engine_snapshot_event, int64_t);
int sophia_dir_exists;
void *env;
void *tx;
};
......
......@@ -154,6 +154,14 @@ SophiaIndex::SophiaIndex(struct key_def *key_def_arg __attribute__((unused)))
struct space *space = space_cache_find(key_def->space_id);
SophiaFactory *factory =
(SophiaFactory*)space->engine->factory;
if (! factory->sophia_dir_exists) {
int rc = mkdir(cfg_gets("sophia_dir"), 0755);
if (rc == -1) {
tnt_raise(SystemError, "failed to create directory '%s'",
cfg_gets("sophia_dir"));
}
factory->sophia_dir_exists = 1;
}
env = factory->env;
db = sophia_configure(space, key_def);
if (db == NULL)
......
TAP version 13
1..1
ok - sophia_dir is not auto-created
#!/usr/bin/env tarantool
local tap = require('tap')
local test = tap.test('cfg')
test:plan(1)
local function file_exists(name)
local f = io.open(name,"r")
if f ~= nil then
io.close(f)
return true
else
return false
end
end
os.execute("rm -rf sophia")
local box = require('box')
box.cfg{
logger="tarantool.log",
slab_alloc_arena=0.1,
wal_mode = ""
}
test:is(file_exists("sophia"), false, 'sophia_dir is not auto-created')
test:check()
os.exit(0)
Subproject commit 5d894d284d1bf8c036845f0c0fa82627a7afc1b4
Subproject commit 4a9b77cbad39976ec40efaa0cb2e66bdaf810d41
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment