Changeset 2a05aa2 in trunk


Ignore:
Timestamp:
2010-08-04T07:28:08Z (15 years ago)
Author:
Brian Warner <warner@…>
Branches:
master
Children:
fa34e4dd
Parents:
abcd6e0e
Message:

lazily create DownloadNode? upon first read()/get_segment()

Location:
src/allmydata
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified src/allmydata/immutable/filenode.py

    rabcd6e0e r2a05aa2  
    3232                history.add_download(ds)
    3333            download_status = ds
    34         self._node = DownloadNode(verifycap, storage_broker, secret_holder,
    35                                   terminator, history, download_status)
     34        self._terminator = terminator
     35        self._history = history
     36        self._download_status = download_status
     37        self._node = None # created lazily, on read()
     38
     39    def _maybe_create_download_node(self):
     40        if self._node is None:
     41            self._node = DownloadNode(self._verifycap, self._storage_broker,
     42                                      self._secret_holder,
     43                                      self._terminator,
     44                                      self._history, self._download_status)
    3645
    3746    def read(self, consumer, offset=0, size=None, read_ev=None):
     
    4049        return a Deferred that fires (with the consumer) when the read is
    4150        finished."""
     51        self._maybe_create_download_node()
    4252        return self._node.read(consumer, offset, size, read_ev)
    4353
     
    5767        segment size, and still know which data you received.
    5868        """
     69        self._maybe_create_download_node()
    5970        return self._node.get_segment(segnum)
    6071
    6172    def get_segment_size(self):
    6273        # return a Deferred that fires with the file's real segment size
     74        self._maybe_create_download_node()
    6375        return self._node.get_segsize()
    6476
  • TabularUnified src/allmydata/test/test_download.py

    rabcd6e0e r2a05aa2  
    328328        self.load_shares()
    329329        n = self.c0.create_node_from_uri(immutable_uri)
     330        n._cnode._maybe_create_download_node()
    330331
    331332        # Cause the downloader to guess a segsize that's too low, so it will
     
    386387        def _uploaded(ur):
    387388            n = self.c0.create_node_from_uri(ur.uri)
     389            n._cnode._maybe_create_download_node()
    388390            n._cnode._node._build_guessed_tables(u.max_segment_size)
    389391            d1 = n.read(con1, 70, 20)
     
    414416        def _uploaded(ur):
    415417            n = self.c0.create_node_from_uri(ur.uri)
     418            n._cnode._maybe_create_download_node()
    416419            n._cnode._node._build_guessed_tables(u.max_segment_size)
    417420            d = n.read(con1, 12000, 20)
     
    621624        def _uploaded(ur):
    622625            n = self.c0.create_node_from_uri(ur.uri)
     626            n._cnode._maybe_create_download_node()
    623627            n._cnode._node._build_guessed_tables(u.max_segment_size)
    624628
     
    659663        def _uploaded(ur):
    660664            n = self.c0.create_node_from_uri(ur.uri)
     665            n._cnode._maybe_create_download_node()
    661666            n._cnode._node._build_guessed_tables(u.max_segment_size)
    662667            d1 = n.read(con1, 70, 20)
     
    806811        def _download(ign, imm_uri, which, expected):
    807812            n = self.c0.create_node_from_uri(imm_uri)
     813            n._cnode._maybe_create_download_node()
    808814            # for this test to work, we need to have a new Node each time.
    809815            # Make sure the NodeMaker's weakcache hasn't interfered.
     
    946952            def _download(imm_uri):
    947953                n = self.c0.create_node_from_uri(imm_uri)
     954                n._cnode._maybe_create_download_node()
    948955                # for this test to work, we need to have a new Node each time.
    949956                # Make sure the NodeMaker's weakcache hasn't interfered.
  • TabularUnified src/allmydata/test/test_hung_server.py

    rabcd6e0e r2a05aa2  
    232232            self._hang_shares(range(5))
    233233            n = self.c0.create_node_from_uri(self.uri)
     234            n._cnode._maybe_create_download_node()
    234235            self._sf = n._cnode._node._sharefinder
    235236            self._sf.max_outstanding_requests = 5
Note: See TracChangeset for help on using the changeset viewer.