mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-02-20 17:52:50 +00:00
add better error reporting to NotEnoughPeersError
This commit is contained in:
parent
8d4d2c82c4
commit
fed539a16d
@ -77,6 +77,9 @@ class FileUploader:
|
||||
max_peers = None
|
||||
|
||||
self.permuted = self._peer.permute_peerids(self._verifierid, max_peers)
|
||||
self.peers_who_said_yes = []
|
||||
self.peers_who_said_no = []
|
||||
self.peers_who_had_errors = []
|
||||
|
||||
self._total_peers = len(self.permuted)
|
||||
for p in self.permuted:
|
||||
@ -103,12 +106,20 @@ class FileUploader:
|
||||
self._total_peers))
|
||||
if len(self.permuted) == 0:
|
||||
# there are no more to check
|
||||
raise NotEnoughPeersError("%s goodness, want %s, have %d "
|
||||
"landlords, %d total peers" %
|
||||
(self.goodness_points,
|
||||
self.target_goodness,
|
||||
len(self.landlords),
|
||||
self._total_peers))
|
||||
yes = ",".join([peerid_to_short_string(p)
|
||||
for p in self.peers_who_said_yes])
|
||||
no = ",".join([peerid_to_short_string(p)
|
||||
for p in self.peers_who_said_no])
|
||||
err = ",".join([peerid_to_short_string(p)
|
||||
for p in self.peers_who_had_errors])
|
||||
msg = ("%s goodness, want %s, have %d "
|
||||
"landlords, %d total peers, "
|
||||
"peers:yes=%s;no=%s;err=%s" %
|
||||
(self.goodness_points, self.target_goodness,
|
||||
len(self.landlords), self._total_peers,
|
||||
yes, no, err))
|
||||
log.msg("NotEnoughPeersError: %s" % msg)
|
||||
raise NotEnoughPeersError(msg)
|
||||
if self.peer_index >= len(self.permuted):
|
||||
self.peer_index = 0
|
||||
|
||||
@ -127,6 +138,7 @@ class FileUploader:
|
||||
def _allocate_response(bucket):
|
||||
if self.debug:
|
||||
print " peerid %s will grant us a lease" % idlib.b2a(peerid)
|
||||
self.peers_who_said_yes.append(peerid)
|
||||
self.landlords.append( (peerid, bucket_num, bucket) )
|
||||
self.goodness_points += 1
|
||||
if (self.goodness_points >= self.target_goodness and
|
||||
@ -146,10 +158,13 @@ class FileUploader:
|
||||
return
|
||||
if res.check(TooFullError):
|
||||
if self.debug: print " too full"
|
||||
self.peers_who_said_no.append(peerid)
|
||||
elif res.check(IndexError):
|
||||
if self.debug: print " no connection"
|
||||
self.peers_who_had_errors.append(peerid)
|
||||
else:
|
||||
if self.debug: print " other error:", res
|
||||
self.peers_who_had_errors.append(peerid)
|
||||
self.permuted.remove(peerid) # this peer was unusable
|
||||
else:
|
||||
if self.debug: print " they gave us a lease"
|
||||
|
@ -12,3 +12,6 @@ def a2b(i):
|
||||
print "b32decode failed on a %s byte string '%s'" % (len(i), i)
|
||||
raise
|
||||
|
||||
|
||||
def peerid_to_short_string(peerid):
|
||||
return b2a(peerid)[:4]
|
||||
|
@ -324,8 +324,3 @@ class WebishServer(service.MultiService):
|
||||
#print "REMEMBERING", self.site, dl, IDownloader
|
||||
#self.site.remember(dl, IDownloader)
|
||||
|
||||
|
||||
# TODO: figleaf gets confused when the last line of a file is a comment. I
|
||||
# suspect an off-by-one error in the code that decides which lines are code
|
||||
# and which are not.
|
||||
pass
|
||||
|
Loading…
x
Reference in New Issue
Block a user