From 73bffb4c4dc5cc57b583d8ea7f72d11763b32733 Mon Sep 17 00:00:00 2001
From: Dmitry Simonenko <pmwkaa@gmail.com>
Date: Thu, 25 Sep 2014 15:12:15 +0400
Subject: [PATCH] Fix #490: implement sophia_dir

---
 src/box/engine_sophia.cc |  8 ++++----
 src/box/lua/load_cfg.lua |  2 ++
 src/box/sophia_index.cc  | 10 +++++++---
 3 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/box/engine_sophia.cc b/src/box/engine_sophia.cc
index 116e29a13c..4231882856 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 6743b23da7..3b073880ea 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 44fd3cd301..9767e8a383 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);
-- 
GitLab