Ticket #1191: do-retire-and-got-share-in-same-tick.dpatch.txt

File do-retire-and-got-share-in-same-tick.dpatch.txt, 2.0 KB (added by zooko, at 2010-09-09T18:59:23Z)
Line 
1HACK Zooko-Ofsimplegeos-MacBook-Pro:~/playground/tahoe-lafs/pristine$ darcs whatsnew -u
2hunk ./src/allmydata/immutable/downloader/finder.py 145
3         self.overdue_timers[req] = reactor.callLater(self.OVERDUE_TIMEOUT,
4                                                      self.overdue, req)
5         d = rref.callRemote("get_buckets", self._storage_index)
6-        d.addBoth(incidentally, self._request_retired, req)
7         d.addCallbacks(self._got_response, self._got_error,
8                        callbackArgs=(rref.version, peerid, req, d_ev,
9                                      time_sent, lp),
10hunk ./src/allmydata/immutable/downloader/finder.py 186
11             s = self._create_share(shnum, bucket, server_version, peerid,
12                                    dyhb_rtt)
13             shares.append(s)
14-        self._deliver_shares(shares)
15+        self._deliver_shares(shares, req)
16 
17     def _create_share(self, shnum, bucket, server_version, peerid, dyhb_rtt):
18         if shnum in self._commonshares:
19hunk ./src/allmydata/immutable/downloader/finder.py 216
20                   self._node_logparent)
21         return s
22 
23-    def _deliver_shares(self, shares):
24+    def _deliver_shares(self, shares, req):
25         # they will call hungry() again if they want more
26         self._hungry = False
27         shares_s = ",".join([str(sh) for sh in shares])
28hunk ./src/allmydata/immutable/downloader/finder.py 222
29         self.log(format="delivering shares: %s" % shares_s,
30                  level=log.NOISY, umid="2n1qQw")
31-        eventually(self.share_consumer.got_shares, shares)
32+        def _then_do_this():
33+            self._request_retired(req)
34+            self.share_consumer.got_shares(shares)
35+        eventually(_then_do_this)
36 
37     def _got_error(self, f, peerid, req, d_ev, lp):
38hunk ./src/allmydata/immutable/downloader/finder.py 228
39+        self._request_retired(req)
40         d_ev.finished("error", now())
41         self.log(format="got error from [%(peerid)s]",
42                  peerid=idlib.shortnodeid_b2a(peerid), failure=f,