Changeset 461f9464 in trunk


Ignore:
Timestamp:
2010-07-19T04:46:55Z (15 years ago)
Author:
david-sarah <david-sarah@…>
Branches:
master
Children:
13b5e44
Parents:
ac29012
Message:

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.

File:
1 edited

Legend:

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

    rac29012 r461f9464  
    138138    def abort(self):
    139139        """
    140         I abort the remote bucket writers for the share numbers in
    141         sharenums. This is a good idea to conserve space on the storage
    142         server.
    143         """
    144         for writer in self.buckets.itervalues(): writer.abort()
     140        I abort the remote bucket writers for all shares. This is a good idea
     141        to conserve space on the storage server.
     142        """
     143        self.abort_some_buckets(self.buckets.keys())
     144
     145    def abort_some_buckets(self, sharenums):
     146        """
     147        I abort the remote bucket writers for the share numbers in sharenums.
     148        """
     149        for sharenum in sharenums:
     150            if sharenum in self.buckets:
     151                self.buckets[sharenum].abort()
     152                del self.buckets[sharenum]
    145153
    146154
     
    357365                                del self.preexisting_shares[share]
    358366                            items.append((server, sharelist))
     367                        for writer in self.use_peers:
     368                            writer.abort_some_buckets(self.homeless_shares)
    359369                    return self._loop()
    360370                else:
     
    365375                                          self.servers_of_happiness,
    366376                                          effective_happiness)
     377                    log.msg("server selection unsuccessful for %r: %s (%s), merged=%r"
     378                            % (self, msg, self._get_progress_message(), merged), level=log.INFREQUENT)
    367379                    return self._failed("%s (%s)" % (msg, self._get_progress_message()))
    368380
Note: See TracChangeset for help on using the changeset viewer.