Give Brian and Kevan promotions, move release date in NEWS to the 18th, commit Brian's test for #1117.
fixes #1117
D: bug reports
N: Brian Warner
-D: code
+D: Tahoe-LAFS Hacker
N: RobK
D: code
N: Kevan Carstensen
E: kevan@isnotajoke.com
-D: servers of happiness, other improvements, code review, docs
+D: servers of happiness, other improvements, code review, docs, upload
N: Marc Tooley
W: http://rune.ca
User visible changes in Tahoe-LAFS. -*- outline; coding: utf-8 -*-
-* Release 1.7.1 (2010-07-17)
+* Release 1.7.1 (2010-07-18)
** Bugfixes and Improvements
+ - Fix bug in which servers could get into a state where they would
+ refuse to accept shares of a certain file (#1117)
- Add init scripts for managing the gateway server on Debian/Ubuntu (#961)
- Fix bug where server version number was always 0 on the welcome page (#1067)
- Add new command-line command "tahoe unlink" as a synonym for "tahoe rm"
(#776)
- The FTP frontend now encrypts its temporary files, protecting their contents
from an attacker who is able to read the disk. (#1083)
+ - Fix IP address detection on FreeBSD 7, 8, and 9 (#1098)
- Fix minor layout issue in the Web User Interface with Internet Explorer
(#1097)
- Fix rarely-encountered incompatibility between Twisted logging utility and
the new unicode support added in v1.7.0 (#1099)
- - Fix IP address detection on FreeBSD 7, 8, and 9 (#1098)
- Forward-compatibility improvements for non-ASCII caps (#1051)
** Code improvements
self.u.upload(DATA))
return d
+ def test_aborted_shares(self):
+ self.basedir = "upload/EncodingParameters/aborted_shares"
+ self.set_up_grid(num_servers=4)
+ c = self.g.clients[0]
+ DATA = upload.Data(100* "kittens", convergence="")
+ # These parameters are unsatisfiable with only 4 servers, but should
+ # work with 5, as long as the original 4 are not stuck in the open
+ # BucketWriter state (open() but not
+ parms = {"k":2, "happy":5, "n":5, "max_segment_size": 1*MiB}
+ c.DEFAULT_ENCODING_PARAMETERS = parms
+ d = self.shouldFail(UploadUnhappinessError, "test_aborted_shares",
+ "shares could be placed on only 4 "
+ "server(s) such that any 2 of them have enough "
+ "shares to recover the file, but we were asked "
+ "to place shares on at least 5 such servers",
+ c.upload, DATA)
+ # now add the 5th server
+ d.addCallback(lambda ign: self._add_server(4, False))
+ # and this time the upload ought to succeed
+ d.addCallback(lambda ign: c.upload(DATA))
+ return d
+
def test_problem_layout_comment_52(self):
def _basedir():