diff options
author | Sascha 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) |
commit | de83019b12aa3ec7e39f8dd69d9fb5b418db9dde (patch) | |
tree | 3e067016436772e8a2379faaa8c68131a916c4b3 | |
parent | 8701947aadc07bafccb3d13e17b21317e003bf2a (diff) |
get completely rid of in-memory metadata storage
Signed-off-by: Sascha Silbe <sascha-pgp@silbe.org>
-rw-r--r-- | gdatastore/datastore.py | 6 | ||||
-rw-r--r-- | gdatastore/index.py | 5 |
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 |