Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Silbe <sascha-pgp@silbe.org>2011-05-15 19:40:10 (GMT)
committer Sascha Silbe <sascha-pgp@silbe.org>2011-05-15 20:16:36 (GMT)
commitde83019b12aa3ec7e39f8dd69d9fb5b418db9dde (patch)
tree3e067016436772e8a2379faaa8c68131a916c4b3
parent8701947aadc07bafccb3d13e17b21317e003bf2a (diff)
get completely rid of in-memory metadata storage
Signed-off-by: Sascha Silbe <sascha-pgp@silbe.org>
-rw-r--r--gdatastore/datastore.py6
-rw-r--r--gdatastore/index.py5
2 files changed, 6 insertions, 5 deletions
diff --git a/gdatastore/datastore.py b/gdatastore/datastore.py
index 6f1e86c..b8cf032 100644
--- a/gdatastore/datastore.py
+++ b/gdatastore/datastore.py
@@ -242,22 +242,19 @@ class InternalApi(object):
logging.debug('max_versions=%r', self._max_versions)
self._index = Index(os.path.join(self._base_dir, 'index'))
self._migrate()
- self._metadata = {}
def change_metadata(self, object_id, metadata):
logging.debug('change_metadata(%r, %r)', object_id, metadata)
metadata['tree_id'], metadata['version_id'] = object_id
if 'creation_time' not in metadata:
- old_metadata = self._metadata[object_id]
+ old_metadata = self._index.retrieve(object_id)
metadata['creation_time'] = old_metadata['creation_time']
self._index.store(object_id, metadata)
- self._metadata[object_id] = metadata
def delete(self, object_id):
logging.debug('delete(%r)', object_id)
self._index.delete(object_id)
- del self._metadata[object_id]
self._git_call('update-ref', ['-d', _format_ref(*object_id)])
def get_data_path(self, (tree_id, version_id), sender=None):
@@ -350,7 +347,6 @@ class InternalApi(object):
# TODO: check metadata for validity first (index?)
self._store_entry(tree_id, child_id, parent_id, path, metadata)
- self._metadata[(tree_id, child_id)] = metadata
self._index.store((tree_id, child_id), metadata)
async_cb(tree_id, child_id)
diff --git a/gdatastore/index.py b/gdatastore/index.py
index 35491bf..4b0569a 100644
--- a/gdatastore/index.py
+++ b/gdatastore/index.py
@@ -302,6 +302,11 @@ class Index(object):
return entries, total_count
+ def retrieve(self, object_id):
+ postings = self._database.postlist(_object_id_term(object_id))
+ document = self._database.get_document(postings.next().docid)
+ return deserialise_metadata(document.get_data())
+
def store(self, object_id, properties):
logging.debug('store(%r, %r)', object_id, properties)
assert (properties['tree_id'], properties['version_id']) == object_id