From de83019b12aa3ec7e39f8dd69d9fb5b418db9dde Mon Sep 17 00:00:00 2001 From: Sascha Silbe Date: Sun, 15 May 2011 19:40:10 +0000 Subject: get completely rid of in-memory metadata storage Signed-off-by: Sascha Silbe --- 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 -- cgit v0.9.1