Browse Source

Cleaner bootstrap.

Stefano Cossu 6 years ago
parent
commit
ebfcec1084

+ 1 - 3
conftest.py

@@ -28,9 +28,7 @@ def db(app):
     Set up and tear down test triplestore.
     '''
     db = app.rdfly
-    if hasattr(db.store, 'begin'):
-        with TxnManager(db.store, True) as txn:
-            db.bootstrap()
+    db.bootstrap()
     bootstrap_binary_store(app)
 
     yield db

+ 2 - 0
lakesuperior/store_layouts/ldp_rs/lmdb_store.py

@@ -5,6 +5,7 @@ from contextlib import ContextDecorator, ExitStack
 from multiprocessing import Process
 from os import makedirs
 from os.path import exists, abspath
+from shutil import rmtree
 from threading import Lock, Thread
 from urllib.request import pathname2url
 
@@ -269,6 +270,7 @@ class LmdbStore(Store):
 
         self.identifier = identifier or URIRef(pathname2url(abspath(path)))
         super(LmdbStore, self).__init__(path)
+        self.path = path
 
         self._pickle = self.node_pickler.dumps
         self._unpickle = self.node_pickler.loads

+ 7 - 4
lakesuperior/store_layouts/ldp_rs/rsrc_centric_layout.py

@@ -15,6 +15,7 @@ from lakesuperior.dictionaries.srv_mgd_terms import  srv_mgd_subjects, \
         srv_mgd_predicates, srv_mgd_types
 from lakesuperior.exceptions import (InvalidResourceError,
         ResourceNotExistsError, TombstoneError, PathSegmentError)
+from lakesuperior.store_layouts.ldp_rs.lmdb_store import TxnManager
 
 
 META_GR_URI = nsc['fcsystem']['meta']
@@ -176,15 +177,17 @@ class RsrcCentricLayout:
         Delete all graphs and insert the basic triples.
         '''
         self._logger.info('Deleting all data from the graph store.')
-        self.ds.update('DROP SILENT ALL')
+        store = self.ds.store
+        if store.is_txn_open:
+            store.rollback()
+        store.destroy(store.path)
 
         self._logger.info('Initializing the graph store with system data.')
         #self.ds.default_context.parse(
         #        source='data/bootstrap/rsrc_centric_layout.nq', format='nquads')
         with open('data/bootstrap/rsrc_centric_layout.sparql', 'r') as f:
-            self.ds.update(f.read())
-
-        self.ds.store.commit()
+            with TxnManager(store, True):
+                self.ds.update(f.read())
 
 
     def get_raw(self, uri, ctx):