mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-08 19:34:18 +00:00
upload.py: fix #1118 by aborting newly-homeless buckets when reassignment runs. This makes a previously failing assert correct. This version refactors 'abort' into two methods, rather than using a default argument.
This commit is contained in:
parent
ac29012946
commit
461f946457
@ -137,11 +137,19 @@ class PeerTracker:
|
||||
|
||||
def abort(self):
|
||||
"""
|
||||
I abort the remote bucket writers for the share numbers in
|
||||
sharenums. This is a good idea to conserve space on the storage
|
||||
server.
|
||||
I abort the remote bucket writers for all shares. This is a good idea
|
||||
to conserve space on the storage server.
|
||||
"""
|
||||
for writer in self.buckets.itervalues(): writer.abort()
|
||||
self.abort_some_buckets(self.buckets.keys())
|
||||
|
||||
def abort_some_buckets(self, sharenums):
|
||||
"""
|
||||
I abort the remote bucket writers for the share numbers in sharenums.
|
||||
"""
|
||||
for sharenum in sharenums:
|
||||
if sharenum in self.buckets:
|
||||
self.buckets[sharenum].abort()
|
||||
del self.buckets[sharenum]
|
||||
|
||||
|
||||
class Tahoe2PeerSelector:
|
||||
@ -356,6 +364,8 @@ class Tahoe2PeerSelector:
|
||||
if not self.preexisting_shares[share]:
|
||||
del self.preexisting_shares[share]
|
||||
items.append((server, sharelist))
|
||||
for writer in self.use_peers:
|
||||
writer.abort_some_buckets(self.homeless_shares)
|
||||
return self._loop()
|
||||
else:
|
||||
# Redistribution won't help us; fail.
|
||||
@ -364,6 +374,8 @@ class Tahoe2PeerSelector:
|
||||
self.needed_shares,
|
||||
self.servers_of_happiness,
|
||||
effective_happiness)
|
||||
log.msg("server selection unsuccessful for %r: %s (%s), merged=%r"
|
||||
% (self, msg, self._get_progress_message(), merged), level=log.INFREQUENT)
|
||||
return self._failed("%s (%s)" % (msg, self._get_progress_message()))
|
||||
|
||||
if self.uncontacted_peers:
|
||||
|
Loading…
x
Reference in New Issue
Block a user