Rev 3669: Remove FixedMemoryGraphIndex in http://bzr.arbash-meinel.com/branches/bzr/1.7-dev/btree
John Arbash Meinel
john at arbash-meinel.com
Fri Aug 22 03:03:34 BST 2008
At http://bzr.arbash-meinel.com/branches/bzr/1.7-dev/btree
------------------------------------------------------------
revno: 3669
revision-id: john at arbash-meinel.com-20080822020328-4q21ldih7c3ne64g
parent: john at arbash-meinel.com-20080821225821-sio6j57zwk7kvqe2
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: btree
timestamp: Thu 2008-08-21 21:03:28 -0500
message:
Remove FixedMemoryGraphIndex
modified:
bzrlib/btree_index.py index.py-20080624222253-p0x5f92uyh5hw734-7
-------------- next part --------------
=== modified file 'bzrlib/btree_index.py'
--- a/bzrlib/btree_index.py 2008-08-21 21:58:57 +0000
+++ b/bzrlib/btree_index.py 2008-08-22 02:03:28 +0000
@@ -1105,103 +1105,6 @@
pass
-class FixedMemoryGraphIndex(index.GraphIndex):
- """A variant of GraphIndex which spools to disk during parsing.
-
- This is useful for avoiding particularly high memory use which can occur
- with very large GraphIndices. As it imposes a performance overhead due
- to generating disk-based b+tree's, it is not suitable for general use.
-
- Also, only iter_all_entries is implemented.
- """
-
- def __init__(self, transport, name, size):
- index.GraphIndex.__init__(self, transport, name, size)
- self._locs = None
- self._key_details = None
-
- def _resolve_locs(self, references):
- """Return the resolved key references for references.
-
- References are resolved by looking up the location of the key in the
- _keys_by_offset map and substituting the key name, preserving ordering.
-
- :param references: An iterable of iterables of key locations. e.g.
- [[123, 456], [123]]
- :return: A tuple of tuples of keys.
- """
- key_offsets = {}
- needed_refs = set()
- node_refs = []
- for ref_list in references:
- for ref in ref_list:
- needed_refs.add(ref[:1])
- for node in self._locs.iter_entries(needed_refs):
- key_offsets[node[1][0]] = tuple(node[2].split(' '))
- for ref_list in references:
- node_refs.append(tuple([key_offsets[ref[0]] for ref in ref_list]))
- return tuple(node_refs)
-
- def iter_all_entries(self):
- if self._locs is None:
- self._scan_index()
- if self.node_ref_lists:
- for node in self._key_details.iter_all_entries():
- refs = self._resolve_locs(node[3])
- yield (self,) + node[1:3] + (refs,)
- else:
- for node in self._key_details.iter_all_entries():
- yield (self,) + node[1:3]
-
- def _scan_index(self):
- stream = self._transport.get(self._name)
- self._read_prefix(stream)
- self._expected_elements = 3 + self._key_length
- line_count = 0
- self._locs = BTreeBuilder(key_elements=1, reference_lists=0)
- self._key_details = BTreeBuilder(key_elements=self._key_length,
- reference_lists=self.node_ref_lists)
- # raw data keyed by offset
- self._keys_by_offset = {}
- # ready-to-return key:value or key:value, node_ref_lists
- self._nodes = {}
- self._nodes_by_key = {}
- trailers = 0
- pos = stream.tell()
- lines = stream.read().split('\n')
- del lines[-1]
- key = None
- first_key = None
- trailers = 0
- for line in lines:
- if line == '':
- # must be at the end
- if self._size:
- if not (self._size == pos + 1):
- raise AssertionError("%s %s" % (self._size, pos))
- trailers += 1
- continue
- elements = line.split('\0')
- if len(elements) != self._expected_elements:
- raise errors.BadIndexData(self)
- # keys are tuples
- key = tuple(elements[:self._key_length])
- if first_key is None:
- first_key = key
- absent, references, value = elements[-3:]
- ref_lists = []
- for ref_string in references.split('\t'):
- ref_lists.append(tuple([
- (str(int(ref)),) + ('X',) * (self._key_length - 1) for
- ref in ref_string.split('\r') if ref]))
- ref_lists = tuple(ref_lists)
- self._locs.add_node((str(pos),), ' '.join(key))
- pos += len(line) + 1 # +1 for the \n
- if absent:
- continue
- self._key_details.add_node(key, value, ref_lists)
-
-
try:
from bzrlib import _parse_btree_c as _parse_btree
except ImportError:
More information about the bazaar-commits
mailing list