diff --git a/src/box/engine_sophia.cc b/src/box/engine_sophia.cc index 116e29a13c6e6e8b9daeb6ecac8b1d695357bb9b..42318828566ff01fe04f35096cd3a7d7e821c317 100644 --- a/src/box/engine_sophia.cc +++ b/src/box/engine_sophia.cc @@ -26,6 +26,7 @@ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ +#include "cfg.h" #include "txn.h" #include "tuple.h" #include "engine.h" @@ -161,10 +162,9 @@ SophiaFactory::dropIndex(Index *index) tnt_raise(ClientError, ER_SOPHIA, sp_error(i->db)); i->db = NULL; i->env = NULL; - char path[1024]; - snprintf(path, sizeof(path), "sophia/%" PRIu32, - index->key_def->space_id); - /* todo: sophia_dir */ + char path[PATH_MAX]; + snprintf(path, sizeof(path), "%s/%" PRIu32, + cfg_gets("sophia_dir"), index->key_def->space_id); drop_repository(path); } diff --git a/src/box/lua/load_cfg.lua b/src/box/lua/load_cfg.lua index 6743b23da7998e9fa98aa90ae65135bd6413a8c2..3b073880ea5dffe4eff97924ddbaf742256c45f2 100644 --- a/src/box/lua/load_cfg.lua +++ b/src/box/lua/load_cfg.lua @@ -32,6 +32,7 @@ local default_cfg = { work_dir = nil, snap_dir = ".", wal_dir = ".", + sophia_dir = './sophia', logger = nil, logger_nonblock = true, log_level = 5, @@ -66,6 +67,7 @@ local template_cfg = { work_dir = 'string', snap_dir = 'string', wal_dir = 'string', + sophia_dir = 'string', logger = 'string', logger_nonblock = 'boolean', log_level = 'number', diff --git a/src/box/sophia_index.cc b/src/box/sophia_index.cc index 44fd3cd301c90de6487bddac365451f68a1e3b89..9767e8a383c9ced3a4470751460ffed75e281982 100644 --- a/src/box/sophia_index.cc +++ b/src/box/sophia_index.cc @@ -34,6 +34,7 @@ #include "errinj.h" #include "schema.h" #include "space.h" +#include "cfg.h" #include "engine_sophia.h" #include <sys/stat.h> #include <sys/types.h> @@ -144,9 +145,12 @@ SophiaIndex::SophiaIndex(struct key_def *key_def_arg __attribute__((unused))) if (db == NULL) tnt_raise(ClientError, ER_SOPHIA, sp_error(env)); - char path[1024]; - mkdir("sophia", 0755); /* todo: sophia_dir */ - snprintf(path, sizeof(path), "sophia/%" PRIu32, space->def.id); + const char *sophia_dir = cfg_gets("sophia_dir"); + mkdir(sophia_dir, 0755); + + char path[PATH_MAX]; + snprintf(path, sizeof(path), "%s/%" PRIu32, + sophia_dir, key_def->space_id); void *c = sp_ctl(db, "conf"); sp_set(c, "storage.dir", path);