~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/repository.py

iter_interesting_nodes no longer buffers record objects.
Instead, it double-requests them, which means that we can now cleanly
clear the refcycle from lazy content manager to the lazy content.
(at the end of get_record_stream()).

Show diffs side-by-side

added added

removed removed

Lines of Context:
4237
4237
        def to_stream_adapter():
4238
4238
            """Adapt the iter_interesting_nodes result to a single stream.
4239
4239
 
4240
 
            iter_interesting_nodes returns records as it processes them, which
4241
 
            can be in batches. But we only want a single stream to be inserted.
 
4240
            iter_interesting_nodes returns records as it processes them, along
 
4241
            with keys. However, we only want to return the records themselves.
4242
4242
            """
4243
4243
            for record, items in interesting:
4244
 
                for value in record.itervalues():
4245
 
                    yield value
 
4244
                if record is not None:
 
4245
                    yield record
4246
4246
        # XXX: We could instead call get_record_stream(records.keys())
4247
4247
        #      ATM, this will always insert the records as fulltexts, and
4248
4248
        #      requires that you can hang on to records once you have gone