Ticket #755: patch-755.darcs.diff

File patch-755.darcs.diff, 30.1 KB (added by francois, at 2010-11-21T22:46:52Z)
Line 
11 patch for repository http://allmydata.org/source/tahoe-lafs/trunk:
2
3Sun Nov 21 23:10:52 CET 2010  francois@ctrlaltdel.ch
4  * checker+repairer: Improve deep-check resilience in the presence of unrecoverable subdirectories
5 
6  Previously, when a deep-check operation found an unrecoverable subdirectory, an
7  exception was raised. The whole operation was then stopped and the deep-check
8  report was lost.
9 
10  This patch improves this behaviour by allowing the operation to continue while
11  correctly recording the repair failure in the deep-check report.
12 
13  The CLI now also displays the name of each file on which a repair was attempted.
14 
15
16
17New patches:
18
19[checker+repairer: Improve deep-check resilience in the presence of unrecoverable subdirectories
20francois@ctrlaltdel.ch**20101121221052
21 Ignore-this: a96e31ead2c301b4b585112491663013
22 
23 Previously, when a deep-check operation found an unrecoverable subdirectory, an
24 exception was raised. The whole operation was then stopped and the deep-check
25 report was lost.
26 
27 This patch improves this behaviour by allowing the operation to continue while
28 correctly recording the repair failure in the deep-check report.
29 
30 The CLI now also displays the name of each file on which a repair was attempted.
31 
32] {
33hunk ./src/allmydata/immutable/filenode.py 146
34                     crr.post_repair_results = prr
35                     return crr
36                 def _repair_error(f):
37-                    # as with mutable repair, I'm not sure if I want to pass
38-                    # through a failure or not. TODO
39+                    prr = CheckResults(cr.uri, cr.storage_index)
40+                    prr.data = copy.deepcopy(cr.data)
41+                    prr.set_healthy(False)
42+                    prr.set_recoverable(False)
43+                    prr.set_needs_rebalancing(False)
44+                    crr.post_repair_results = prr
45+
46                     crr.repair_successful = False
47                     crr.repair_failure = f
48hunk ./src/allmydata/immutable/filenode.py 155
49-                    return f
50+                    return crr
51+
52                 r = Repairer(self, storage_broker=sb, secret_holder=sh,
53                              monitor=monitor)
54                 d = r.start()
55hunk ./src/allmydata/mutable/checker.py 315
56             self._fill_checker_results(repair_results.servermap, r)
57             self.cr_results.repair_results = repair_results # TODO?
58         def _repair_error(f):
59-            # I'm not sure if I want to pass through a failure or not.
60+            prr = CheckResults(cr.uri, cr.storage_index)
61+            prr.data = copy.deepcopy(cr.data)
62+            prr.set_healthy(False)
63+            prr.set_recoverable(False)
64+            prr.set_needs_rebalancing(False)
65+            self.cr_results.post_repair_results = prr
66+
67             self.cr_results.repair_successful = False
68hunk ./src/allmydata/mutable/checker.py 323
69-            self.cr_results.repair_failure = f # TODO?
70-            #self.cr_results.post_repair_results = ??
71-            return f
72+            self.cr_results.repair_failure = f
73         d.addCallbacks(_repair_finished, _repair_error)
74         return d
75hunk ./src/allmydata/scripts/tahoe_check.py 213
76             self.repairs_attempted += 1
77             if crr["repair-successful"]:
78                 self.repairs_successful += 1
79+
80+        path = d["path"]
81+        if not path:
82+            path = ["<root>"]
83+        # verbose means also print one line per file
84         if self.verbose:
85hunk ./src/allmydata/scripts/tahoe_check.py 219
86-            # verbose means also print one line per file
87-            path = d["path"]
88-            if not path:
89-                path = ["<root>"]
90             # we don't seem to have a summary available, so build one
91             if was_healthy:
92                 summary = "healthy"
93hunk ./src/allmydata/scripts/tahoe_check.py 224
94             else:
95                 summary = "not healthy"
96+
97             print >>stdout, "%s: %s" % (quote_path(path), summary)
98 
99         # always print out corrupt shares
100hunk ./src/allmydata/scripts/tahoe_check.py 236
101         # always print out repairs
102         if crr["repair-attempted"]:
103             if crr["repair-successful"]:
104-                print >>stdout, " repair successful"
105+                print >>stdout, "%s repair successful" % quote_path(path)
106             else:
107hunk ./src/allmydata/scripts/tahoe_check.py 238
108-                print >>stdout, " repair failed"
109+                print >>stdout, "%s repair failed" % quote_path(path)
110 
111     def done(self):
112         if self.in_error:
113hunk ./src/allmydata/test/test_deepcheck.py 894
114         d.addCallback(self.do_deepcheck)
115         d.addCallback(self.do_deepcheck_broken)
116         d.addCallback(self.do_test_web_bad)
117+        d.addCallback(self.do_web_stream_check)
118         d.addErrback(self.explain_web_error)
119         d.addErrback(self.explain_error)
120         return d
121hunk ./src/allmydata/test/test_deepcheck.py 1210
122         d.addCallback(lambda ign: _checkv("large-corrupt-shares", self.json_has_corrupt_shares))
123         d.addCallback(lambda ign: _checkv("large-unrecoverable",
124                                          self.json_is_unrecoverable))
125+        return d
126+
127+    def do_web_stream_check(self, ignored):
128+        d = self.web(self.root, method="POST", t="stream-deep-check",
129+                     repair="true", output="json")
130+
131+        def _check((res, ign)):
132+            units = list(self.parse_streamed_json(res))
133+            assert units[-1]["type"] == "stats"
134+            stats = units[-1]["stats"]
135+
136+            self.failUnlessEqual(stats['count-files'], 8)
137+
138+            repairs = 0
139+            for i in range(0, stats['count-files']):
140+                results = units[i]['check-and-repair-results']
141+                presults = results['pre-repair-results']['results']
142+
143+                if presults['healthy']:
144+                    self.failUnlessEqual(results['repair-attempted'], False)
145+                else:
146+                    # Enough shares are available for repair
147+                    if presults['count-shares-good'] >= presults['count-shares-needed']:
148+                        self.failUnlessEqual(results['repair-attempted'], True)
149+                        self.failUnlessEqual(results['repair-successful'], True)
150+                        repairs += 1
151+                    else:
152+                        self.failUnlessEqual(results['repair-attempted'], True)
153+                        self.failUnlessEqual(results['repair-successful'], False)
154+            self.failUnlessEqual(repairs, 2)
155 
156hunk ./src/allmydata/test/test_deepcheck.py 1241
157+        d.addCallback(_check)
158         return d
159 
160 class Large(DeepCheckBase, unittest.TestCase):
161hunk ./src/allmydata/test/test_repairer.py 401
162                                       download_to_data, self.c1_filenode))
163 
164         d.addCallback(lambda ignored:
165-                      self.shouldFail(NotEnoughSharesError, "then_repair",
166-                                      None,
167-                                      self.c1_filenode.check_and_repair,
168-                                      Monitor(), verify=False))
169+                      self.c1_filenode.check_and_repair(Monitor(), verify=False))
170 
171         # test share corruption
172         def _test_corrupt(ignored):
173}
174
175Context:
176
177[docs: NEWS: add #1255
178zooko@zooko.com**20101120071249
179 Ignore-this: d37ac1a115f6cdebc3dadb32131b6141
180]
181[docs: NEWS: put news items about bugfixes/improvements and packaging before news items about documentation
182zooko@zooko.com**20101120060716
183 Ignore-this: 1a4306df950fcdc2ab9771c874d6d0a4
184]
185[tahoe_mv.py: when checking success of the DELETE operation, look at the status code from DELETE rather than from the previous PUT. fixes #1255
186david-sarah@jacaranda.org**20101110010916
187 Ignore-this: 4e07b1b51036d68ed28ee3424faa4d2a
188]
189[test_cli.py: test that 'tahoe mv' reports errors from the DELETE operation. refs #1255
190david-sarah@jacaranda.org**20101112014653
191 Ignore-this: b498a4b185bcb309754052cdcdc3c187
192]
193[bundled zetuptoolz: prefer locally-available distributions over remotely-downloaded distributions above all
194zooko@zooko.com**20101117082657
195 Ignore-this: d349c06187191f7acef970a1d7939c12
196 This fixes #1233. Actually the previous patches—[20101103034740-93fa1-9df33552497282eb72a84e5b434d035974bf2dbb] and [20101117080828-92b7f-dc0239f30b26e7e5d40b228114fb399c1e190ec5]—fixed it, but with them zetuptoolz would download a higher-numbered distribution from the net instead of using the locally-available (fake) pycryptopp-0.5.24, thus preventing the tests from passing. This patch changes that behavior (which is an improvement in its own right) and also fixes a bug in the tests.
197]
198[bundled zetuptoolz: choose a binary dist in preference to a source dist, even if the latter is newer, as long as the former satisfies the requirement
199zooko@zooko.com**20101117080828
200 Ignore-this: fa1cb6b23bc20ff60bca80d74d0c64d4
201 patch by David-Sarah, tiny bugfix to patch by Zooko
202 ref: #1233
203]
204[bundled zetuptools: prefer platform-specific dists to platform-independent ones. refs #1233
205david-sarah@jacaranda.org**20101103034740
206 Ignore-this: dad21647659e5f1f821355dc73dc33b5
207]
208[misc: gen-package-table: show only the highest-numbered package for each platform and each library
209zooko@zooko.com**20101120053905
210 Ignore-this: 38771b1d0b6050034ea82e5d2d75684a
211]
212[tests: test-with-fake-dists: clean up *just* the pycryptopp-0.5.24 eggs when exiting
213zooko@zooko.com**20101118063109
214 Ignore-this: 1d2a35d9dec7e7c9264e51632c14ffce
215 also don't set the PATH and PYTHONPATH, which is unnecessary for this test
216 also wrap the behavior in a couple of functions, just for tidiness
217]
218[setup: show-tool-versions: include the version of valgrind
219zooko@zooko.com**20101118030623
220 Ignore-this: 4b52e050468de1b89c6fb8b88f7a537a
221]
222[setup: clean up fake pycryptopp distribution after test-with-fake-dists.py created it
223zooko@zooko.com**20101117093249
224 Ignore-this: b8aedca9cd492846f0248491125e1d5f
225]
226[tests: test-with-fake-dists.py has the side-effect of injecting a fake package into ./support, so after that test rm -rf ./support, and likewise with ./pycryptopp*.egg.
227zooko@zooko.com**20101117090100
228 Ignore-this: acd63867b5f291127b54d80439e836f5
229]
230[setup: when testing, set the __requires__ as precisely as possible even if the version of this particular build of Tahoe-LAFS is not yet known (addresses test failure ref #1190, #1233)
231zooko@zooko.com**20101119074043
232 Ignore-this: 9bde8af892bbc966357eaec2f4ebb578
233]
234[tests: change test-with-fake-pkg to exercise a test suite which actually requires pycryptopp, thus making this a better test which can detect ill-installed pycryptopp
235zooko@zooko.com**20101118072334
236 Ignore-this: 750f432d3acedde244ef1ed7ebd77158
237]
238[tests: bump up the timeout on test_dirnode.Dirnode from 240s to 480s since it apparently took longer than 240s just now on François's ARM buildslave
239zooko@zooko.com**20101115092119
240 Ignore-this: e3e45c663386fe208eeedbccb2872aca
241]
242[setup: remove --multi-version
243zooko@zooko.com**20101115090048
244 Ignore-this: 235bbe0d5645091d56db3b1414fd50b0
245 It causes copious scary-looking warning messages and I'm no longer sure if it was actually needed to accomplish our goals ref #530.
246]
247[misc/build_helpers/gen-package-table.py: put 'n/a' in table entries for pywin32 on non-Windows platforms. Also remove some dead code. refs #1247
248david-sarah@jacaranda.org**20101114193558
249 Ignore-this: 50c07d1cef22b6f6511ccfa539aa3afc
250]
251[test_cli.py: fix a stale comment that incorrectly implied that test_cli runs CLI commands in subprocesses (it actually runs them using deferToThread).
252david-sarah@jacaranda.org**20101110022819
253 Ignore-this: 903b03121061d5b7185ff6333dac7bd4
254]
255[setup: include pycryptopp in the set of Python packages described in the show-tool-versions step (for cross-referencing with the test-with-fake-dists step, which behaves differently depending on what version(s) of pycryptopp are already present before it starts)
256zooko@zooko.com**20101114100540
257 Ignore-this: fd01732d1757e80f4a311ba2d38c5e3d
258]
259[setup: gen-package-table.py -- Python packages can have . in their name
260zooko@zooko.com**20101114082643
261 Ignore-this: c42cd92da320375d2dd72018ad6c1d0b
262]
263[setup: upgrade bundled version of darcsver to 1.7.1 to regain compatibility with Python 2.4
264zooko@zooko.com**20101114082620
265 Ignore-this: 9bc9dd064e239003c1a94f1ba409ac96
266]
267[setup: specify that the version file must go into src/allmydata/_version.py . fixes #1259
268zooko@zooko.com**20101114074040
269 Ignore-this: 9d5c58bc7faed738570b4b8529b129d5
270]
271[setup: upgrade bundled darcsver from 1.6.3 to 1.7.0
272zooko@zooko.com**20101114073954
273 Ignore-this: 1f930652a20d818d44c0cb863856dad5
274 ref #1259, we're going to use its 'versionfiles' setup() keyword argument to specify where to write the version file.
275 Remember, we have to bundle darcsver to work-around http://bitbucket.org/tarek/distribute/issue/55/revision-control-plugin-automatically-installed-as-a-build-dependency-is-not-present-when-another-build-dependency-is-being
276]
277[setup: David-Sarah's new gen-package-table.py plus my patch to put the newer versions of Python first
278zooko@zooko.com**20101114073532
279 Ignore-this: 249c4db261a1deb14749ef778f1f7c7a
280 fixes #1247
281]
282[setup: test whether the build system prefers binary dists which are new enough over source dists which are even newer
283zooko@zooko.com**20101113152822
284 Ignore-this: d56b67475aec5a7aa901dba7bc59083c
285 ref: #1233
286]
287[tahoe_mv.py: use do_http, not urllib.openurl, in order to avoid connecting to the webapi server via a proxy. refs #1253
288david-sarah@jacaranda.org**20101110005336
289 Ignore-this: 418b9a1c7873250a35592d3463506540
290]
291[test_system.py: test for 'tahoe mv' with the http_proxy and HTTP_PROXY variables set. refs #1253
292david-sarah@jacaranda.org**20101110033649
293 Ignore-this: a75557ba7589352768d227e2cd37299e
294]
295[docs: NEWS: merge two additions
296zooko@zooko.com**20101111055851
297 Ignore-this: 13105496bb418ebbd570ba68ef347f2
298]
299[setup: remove separate licensing declaration
300zooko@zooko.com**20101111044530
301 Ignore-this: 2992189602af3ef0a420a1b7273f6344
302 Whenever Free Software/Open Source legal folks are examining the Tahoe-LAFS source code, it seems like there has to be a discussion and documentation about every single licensing declaration. Since this one is (was) permissive, then you would think it could be avoided, but I'm not betting on it. We would probably have to install a copy of the MIT licence into every one of the "copyright" files under the debian/ subdirectory, for example. So: let's just let hashbasedsig.py be licensed the same way as the rest of Tahoe-LAFS.
303]
304[docs: fix error in .rst formatting introduced by renaming Tahoe to Tahoe-LAFS in a header
305zooko@zooko.com**20101111044344
306 Ignore-this: 6f6823891dd22d99e38ebeb9aa57b298
307]
308[docs: NEWS: refs #1253
309zooko@zooko.com**20101111044118
310 Ignore-this: 23d1cfbd2d43a68ca496958b55e4688f
311]
312[docs: added permissions to avoid licence-incompatibility with other Free/Open Source licences
313zooko@zooko.com**20101111043926
314 Ignore-this: 190cff2d0f9e910072bc0705e5e9844c
315]
316[test_client.py: change overzealous use of failUnlessReallyEqual on integers back to failUnlessEqual.
317david-sarah@jacaranda.org**20101109230816
318 Ignore-this: 6488663c0c9212f548f8b498c42c9d30
319]
320[misc/build_helpers/show-tool-versions.py: look for zetuptoolz egg in the current directory, not the parent.
321david-sarah@jacaranda.org**20101107233615
322 Ignore-this: 6e7081a69584d07d5c38fc9de6749254
323]
324[misc/build_helpers/show-tool-versions.py: if we can't import pkg_resources, insert the bundled zetuptoolz egg onto sys.path.
325david-sarah@jacaranda.org**20101106234404
326 Ignore-this: adb1bd5800129a6c9596f89620146f85
327]
328[setup.py: fix a bug in the check for whether we are running 'trial' or 'test', that affected zooko's test for #1233. refs #1233
329david-sarah@jacaranda.org**20101105235415
330 Ignore-this: bc79517853f39301218d7d840de830f2
331]
332[misc/build_helpers/gen-package-table.py: allow all lowercase letters except 'w' (for example, 'c' and 'dev') in package versions.
333david-sarah@jacaranda.org**20101105154756
334 Ignore-this: 1189fad2b0d210e2f827bb710f532f7e
335]
336[misc/build_helpers/run_trial.py: minor refactoring -- make variable names consistent between run_trial.py and test_runner.py
337david-sarah@jacaranda.org**20101104012027
338 Ignore-this: 443fb127ad39015fb2d82bd1beacfa66
339]
340[NEWS: entry for #1242 (tilde expansion in 'tahoe backup --exclude-from'). refs #1242
341david-sarah@jacaranda.org**20101104011915
342 Ignore-this: 1c85e7c74f5a48b4cdae5aa073c6b9fb
343]
344[setup: fix gen-package-table to allow the "_r$REV" version numbers of packages
345zooko@zooko.com**20101104073944
346 Ignore-this: b6b72b0d2a207929d4ffb0cfc988e8ee
347]
348[misc/build_helpers/gen-package-table.py: fix missing 'r's (meant to delete CRs :-)
349david-sarah@jacaranda.org**20101103043718
350 Ignore-this: ffa25a18637b6165725a49a79bfa6cc
351]
352[add misc/build_helpers/gen-package-table.py. refs #1247
353david-sarah@jacaranda.org**20101103043328
354 Ignore-this: 3185c869d98d6fecbae4bcc6b74a810d
355]
356[tests: make test-with-fake-pkg's unacceptably-old fake pycryptopp be 0.5.13 instead of 0.5.17, since 0.5.17 is acceptably new on non-x86 archs
357zooko@zooko.com**20101102053357
358 Ignore-this: a400f6f73c7574f2b2266547b0e7b051
359 Also move the fakepkgs directory to be in misc/build_helpers/ instead of in the base of the source tree.
360]
361[test_runner.py: fix test failure in test_the_right_code after applying zooko's change to test-with-fake-pkg.py
362david-sarah@jacaranda.org**20101102035905
363 Ignore-this: 71b467615ae7dcdfbf84049e60a08933
364]
365[setup: FreeStorm's WinXP-x86-py2.6 buildslave has informed us that there is yet a fourth way to spell "i386" in Python
366zooko@zooko.com**20101101052142
367 Ignore-this: 732892975c19f7fd18caeb071f09ef7
368]
369[setup: add platform.machine() to show-tool-versions, because FreeStorm WinXP builder apparently thinks that its platform.machine() is not one of ['i386', 'x86_64', 'amd64', ''], since it is requiring pycryptopp >= 0.5.14 instead of pycryptopp >= 0.5.20
370zooko@zooko.com**20101101042721
371 Ignore-this: 322a3e5af9785ebca3452f3937ce47a4
372]
373[edit docs for English usage, rename "Tahoe" to "Tahoe-LAFS" in docs/configuration.rst, rename a variable in bin/tahoe-script.template for clarity, update François's CREDITS entry
374zooko@zooko.com**20101101042602
375 Ignore-this: d192c4c9660b1b9173db19d0e533dc22
376]
377[allmydata/__init__.py: move the call to require_auto_deps() to the top again, since the [4784] patch turned out not to be the cause of the failure on the 'mm netbsd5' buildslave.
378david-sarah@jacaranda.org**20101101003316
379 Ignore-this: 879a5188ff2529fb755b6e594c59aeb2
380]
381[allmydata/__init__.py: put the _auto_deps.require_auto_deps() call back in exactly the same place it was prior to [4784].
382david-sarah@jacaranda.org**20101031174649
383 Ignore-this: c5f4fbb2c444d7b05b1d30a199b6178f
384]
385[allmydata/__init__.py: suppress a DeprecationWarning for the sha module on importing pycrypto.
386david-sarah@jacaranda.org**20101031160636
387 Ignore-this: 414d55a0da432cfb0d65329a88e13396
388]
389[misc/build_helpers/run_trial.py: fix another typo in last patch.
390david-sarah@jacaranda.org**20101031160332
391 Ignore-this: 61131c5775a2393b6862f76b7bc222f
392]
393[misc/build_helpers/run_trial.py: fix typo in last patch.
394david-sarah@jacaranda.org**20101031155215
395 Ignore-this: a2fbecf858c0a399e938d4f1ade7329b
396]
397[allmydata/__init__.py: call require_auto_deps() after importing nevow and twisted, reverting change in [4784]. Also fix a missing 'warnings.filters.pop()'.
398david-sarah@jacaranda.org**20101031153828
399 Ignore-this: 8a5cd7798674d56868e9c333a77a4ac2
400]
401[misc/build_helpers/run_trial.py: fix false positive on directory check that can occur when running run_trial from test-with-fake-pkg manually.
402david-sarah@jacaranda.org**20101031153613
403 Ignore-this: 7d4a0758a305cbfdd296570a9c1a88d2
404]
405[allmydata.__init__.py: temporary hack to debug failure on midnightmagic's buildslave
406david-sarah@jacaranda.org**20101031055003
407 Ignore-this: 2ac28b2f19a436a374399b4c59d29cc7
408]
409[NEWS: entries for #1190 and #1212, and minor cleanups. refs #1190, #1212
410david-sarah@jacaranda.org**20101031051426
411 Ignore-this: c318dff69296ae1e1a897752b5221870
412]
413[tahoe backup: perform tilde expansion in exclude-from filename (version 2). fixes #1241
414david-sarah@jacaranda.org**20101031035231
415 Ignore-this: 65e6cd2247dd8d1fc025758d740708c0
416]
417[NEWS: add news entry for #1223
418Francois Deppierraz <francois@ctrlaltdel.ch>**20101030111130
419 Ignore-this: 6b6afd4b0f0527a3c9784c1db95d083
420]
421[NEWS: add a NEWS entry about bug #1045
422Francois Deppierraz <francois@ctrlaltdel.ch>**20101030101351
423 Ignore-this: 7e758afbbd0f1d22a5d0b4fc38661c1d
424]
425[setup: run require_auto_deps() before attempting to import any deps in __init__.py
426zooko@zooko.com**20101030081035
427 Ignore-this: ffcaf2450628543e020e9919e455f691
428 For one thing, this makes missing-dependency failures into DistributionNotFound errors instead of ImportErrors, which might be more useful to the user. For another thing, if someone is using distributions that were installed with --multi-version, then they might be not importable until after require_auto_deps() has been run. (The docs claim that this would be the case, but we don't have an example of this happening at this time.)
429]
430[setup: show-tool-versions: emit module and __version__ information even when module name != distribution (package) name, and add TwistedCore, TwistedWeb, and TwistedConch
431zooko@zooko.com**20101030070233
432 Ignore-this: 3df19910090d44502ddeeef5d9c29a7
433]
434[misc/build_helpers/test-with-fake-pkg.py: look for eggs in the parent of the src directory. refs #1190
435david-sarah@jacaranda.org**20101030034303
436 Ignore-this: 4a3cf286272cdb5d06aac15fb5998b33
437]
438[scripts/runner.py: fix unused import of allmydata. refs #1190
439david-sarah@jacaranda.org**20101030003149
440 Ignore-this: b2fc67f6192ea7ccf8a5ad010ce74a64
441]
442[scripts/runner.py: remove pkg_resources.require() calls. These are at best redundant because we have already called _auto_deps.require_auto_deps() (from allmydata.__init__) at that point, and they are causing failure of the test-from-prefixdir step on some buildslaves. refs #1190
443david-sarah@jacaranda.org**20101029235328
444 Ignore-this: e00dee63acc7b76a5755025d75abf524
445]
446[misc/build_helpers/run_trial.py: look for zetuptoolz egg in the parent directory, not the cwd of run_trial. refs #1190
447david-sarah@jacaranda.org**20101029230329
448 Ignore-this: 1596fb8c290d1c706f079701b1857db8
449]
450[bundled zetuptoolz: if __main__.__requires__ exists then do not add packages to the working set if they provide an incompatible version of a package. Also put a complete __requires__ listing the transitive closure of dependencies at the beginning of generated scripts, rather than a shallow __requires__ specifying only the application version. refs #1190
451david-sarah@jacaranda.org**20101029223111
452 Ignore-this: a95f1967884340e53bf3adf90db40cfc
453]
454[setup.py, misc/build_helpers/run_trial.py: use undocumented __requires__ variable to cause setuptools/zetuptoolz to put the correct versions of dependencies on sys.path. Also ensure that run_trial adds the bundled zetuptoolz egg at the start of sys.path if present. Make the source directory comparison work correctly for the test-with-fake-pkg build step. refs #1190
455david-sarah@jacaranda.org**20101029222825
456 Ignore-this: 8b09366eb6ce3d55c7db5239077a0fac
457]
458[test_runner.py: fix error in BinTahoe.test_version_no_noise introduced by last patch. refs #1235
459david-sarah@jacaranda.org**20101029221123
460 Ignore-this: 4bf21ea34768e8e6adf104e56f939fd0
461]
462[test_runner.py: also allow 'from pkg_resources import load_entry_point' as noise. refs #1235.
463david-sarah@jacaranda.org**20101029204246
464 Ignore-this: a47440aa2cdd29ce55ac7c6c7f4bcaf2
465]
466[test_runner.py: if the only noise is 'UserWarning: Unbuilt egg for setuptools', skip instead of failing the no_noise tests. This version avoids 'any' to be compatible with Python < 2.5. refs #1235.
467david-sarah@jacaranda.org**20101029191804
468 Ignore-this: 83ca1543fc9673e664a8eeefe1eba429
469]
470[NEWS: clarify (strengthen) description of what backdoors.rst declares, and add bugfix entries for 'tahoe cp' and Windows console bugs. refs #1216, #1224, #1232
471david-sarah@jacaranda.org**20101028180046
472 Ignore-this: 1c3eef3cd353b06b6ee00ce87c5ef59a
473]
474[make ResponseCache smarter to avoid memory leaks: don't record timestamps, use DataSpans to merge entries, and clear the cache when we see a new seqnum. refs #1045, #1229
475david-sarah@jacaranda.org**20101027043302
476 Ignore-this: 88fd6fba7f35a2f8af1693b92718f5f3
477]
478[windows/fixups.py: limit length of string passed in a single call to WriteConsoleW. fixes #1232.
479david-sarah@jacaranda.org**20101027021636
480 Ignore-this: fbd99e0d22493974696d37925d97c7d6
481]
482[scripts/tahoe_backup.py: oops, fix missing import, thanks pyflakes
483Brian Warner <warner@lothar.com>**20101029094223
484 Ignore-this: 285c35af824935641a5be35c008b080c
485 
486 test_cli.py: hush minor pyflakes complaint
487]
488[mutable/servermap.py: update comment. Closes #1231.
489Brian Warner <warner@lothar.com>**20101029091424
490 Ignore-this: 80bf854123fc254e097a81b82bdf4990
491]
492[tahoe_cp.py: Don't call urllib.quote with an Unicode argument, fix #1224
493Brian Warner <warner@lothar.com>**20101029084520
494 Ignore-this: 5524722d5e5babbb73ca0969d54967f6
495 tahoe_backup.py: Fix another (potential) occurrence of calling urllib.quote()
496 with an Unicode parameter
497]
498[fix #1223, crash+inefficiency during repair due to read overrun
499Brian Warner <warner@lothar.com>**20101029082036
500 Ignore-this: e6aa0295ad254544da3b5cc41b33d862
501 
502 * repairer (really the uploader) reads beyond end of input file (Uploadable)
503 * new-downloader does not tolerate overreads
504 * uploader does lots of tiny reads (inefficient)
505 
506 This fixes the last two. The uploader still does a single overread at the end
507 of the input file, but now that's ok so we can leave it in place. The
508 uploader now expects the Uploadable to behave like a normal disk
509 file (reading beyond EOF will return less data than was asked for), and now
510 the new-downloadable behaves that way.
511]
512[add misc/build_helpers/test-with-fake-pkg.py. refs #1190
513david-sarah@jacaranda.org**20101029025150
514 Ignore-this: 995f220962708f1bad83092161130f67
515]
516[startstop_node.py: pyflakes import fix. refs #1190
517david-sarah@jacaranda.org**20101028014805
518 Ignore-this: 369ef5022c8ee5a0d8341af01553bcef
519]
520['tahoe start': use import+call rather than find+spawn
521"Brian Warner <warner@lothar.com>"**20101027061342
522 
523 This removes the need to use a locally-built (dependency) bin/twistd, and
524 removes a big chunk of behavior differences between unix and windows. It
525 also happens to resolve the "client node probably started" uncertainty.
526 Might help with #1190, #602, and #71.
527]
528[docs/known_issues.rst: Add section on traffic analysis. Fix URL for current version of file.
529david-sarah@jacaranda.org**20101024234259
530 Ignore-this: f3416e79d3bb833f5118da23e85723ad
531]
532[test_mutable.py: add test for ResponseCache memory leak. refs #1045, #1129
533david-sarah@jacaranda.org**20101024193409
534 Ignore-this: 3aee7f0677956cc6deaccb4d5b8e415f
535]
536[test_encodingutil.py: test_argv_to_unicode modified the wrong encoding variable. fixes #1214
537david-sarah@jacaranda.org**20101023035810
538 Ignore-this: e5f1f849931b96939facc53d93ff61c5
539]
540[docs/running.html: fix missing end-quote, and change frontends/ doc references to .rst.
541david-sarah@jacaranda.org**20101024171500
542 Ignore-this: 47c645a6595e1790b1d1adfa71af0e1d
543]
544[docs/running.html: 'tahoe create-client' now creates a node with storage disabled. Also change configuration.txt references to configuration.rst.
545david-sarah@jacaranda.org**20101024170431
546 Ignore-this: e5b048055494ba3505bb8a506610681c
547]
548[doc: add explanation of the motivation for the surprising and awkward API to erasure coding
549zooko@zooko.com**20101015060202
550 Ignore-this: 428913ff6e1bf5b393deffb1f20b949b
551]
552[setup: catch and log ValueError from locale.getdefaultlocale() in show-tool-versions.py
553zooko@zooko.com**20101015054440
554 Ignore-this: 827d91490562c32ed7cf6526dfded773
555 I got a bug report from Mathias Baert showing that locale.getdefaultlocale() raises an exception on his Mac OS X system. Heh.
556]
557[docs: update how-to-make-a-release doc with a few tweaks from the 1.8.0 process
558zooko@zooko.com**20101015054413
559 Ignore-this: ca5e9478531a3393792ae283239549dd
560]
561[docs: update NEWS ref: #1216
562zooko@zooko.com**20101015053719
563 Ignore-this: 2e0b92e4145d667cdf075e64b7965530
564]
565[docs: fix tab-vs-spaces, make some CLI examples <tt>/"literal", wrap some to
566Brian Warner <warner@lothar.com>**20101015060606
567 Ignore-this: eae08bdf0afb19a2fbf41c31e70a8122
568 80-cols, remove spurious whitespace. Add rst2html.py rule to Makefile.
569]
570[docs: add Peter Secor, Shawn Willden, and Terrell Russell as signatories to docs/backdoors.rst
571zooko@zooko.com**20101015053242
572 Ignore-this: c77adf819d664f673e17c4aaeb353f33
573]
574[docs: convert all .txt docs to .rst thanks to Ravi Pinjala
575zooko@zooko.com**20101015052913
576 Ignore-this: 178a5122423189ecfc45b142314a78ec
577 fixes #1225
578]
579[docs: add statement on our refusal to insert backdoors
580zooko@zooko.com**20101006051147
581 Ignore-this: 644d308319a7b80c4434bdff9760404a
582]
583[setup: add --multi-version to the "setup.py develop" command-line
584zooko@zooko.com**20101005182350
585 Ignore-this: 709155cc21caff29826b8d41a8c8d63d
586 fixes #530. I earlier tried this twice (see #530 for history) and then twice rolled it back due to some problems that arose. However, I didn't write down what the problems were in enough detail on the ticket that I can tell today whether those problems are still issues, so here goes the third attempt. (I did write down on the ticket that it would not create site.py or .pth files in the target directory with --multi-version mode, but I didn't explain why *that* was a problem.)
587]
588[setup: use execfile to access _auto_deps.py in its proper location of src/allmydata/ instead of copying it into place when setup.py is executed
589zooko@zooko.com**20100906055714
590 Ignore-this: c179b42672d775580afad40121f86812
591]
592[trivial: M-x whitespace-cleanup
593zooko@zooko.com**20100903144712
594 Ignore-this: 1bb764d11ac69b4a35ea091cfb13158a
595]
596[minor: remove unused interface declaration, change allmydata.org to tahoe-lafs.org in email address, fix wording in relnotes.txt
597zooko@zooko.com**20100930153708
598 Ignore-this: a452969228afed2774de375e29fa3048
599]
600[immutable/repairer.py: don't use the default happiness setting when repairing
601Kevan Carstensen <kevan@isnotajoke.com>**20100927200102
602 Ignore-this: bd704d9744b970849da8d46a16b8089a
603]
604[NEWS: note dependency updates to pycryptopp and pycrypto.
605david-sarah@jacaranda.org**20100924191207
606 Ignore-this: eeaf5c9c9104f24c450c2ec4482ac1ee
607]
608[TAG allmydata-tahoe-1.8.0
609zooko@zooko.com**20100924021631
610 Ignore-this: 494ca0a885c5e20c883845fc53e7ab5d
611]
612Patch bundle hash:
613c99af354a5bc2e8a1d266fc6a85e59967f905331