Ticket #677: fix_mutable_size_in_json.patch

File fix_mutable_size_in_json.patch, 234.1 KB (added by swillden, at 2009-06-17T02:27:28Z)

Patch that appears to fix the problem

Line 
1Tue Jun 16 20:23:25 MDT 2009  Shawn Willden <shawn-tahoe@willden.org>
2  * Fix missing size for JSON of mutable files
3
4New patches:
5
6[Fix missing size for JSON of mutable files
7Shawn Willden <shawn-tahoe@willden.org>**20090617022325
8 Ignore-this: ed4f17772853593f225b494aeb87f44b
9] {
10hunk ./src/allmydata/web/filenode.py 181
11             d.addCallback(lambda dn: FileDownloader(dn, filename))
12             return d
13         if t == "json":
14-            return FileJSONMetadata(ctx, self.node)
15+            if self.node.is_mutable():
16+                d = defer.maybeDeferred(self.node.get_size_of_best_version)
17+                d.addCallback(lambda sz: FileJSONMetadata(ctx, self.node, sz))
18+                return d
19+            else:
20+                return FileJSONMetadata(ctx, self.node)
21         if t == "info":
22             return MoreInfo(self.node)
23         if t == "uri":
24hunk ./src/allmydata/web/filenode.py 417
25         return req.deferred
26 
27 
28-def FileJSONMetadata(ctx, filenode):
29+def FileJSONMetadata(ctx, filenode, best_size = None):
30     if filenode.is_readonly():
31         rw_uri = None
32         ro_uri = filenode.get_uri()
33hunk ./src/allmydata/web/filenode.py 425
34         rw_uri = filenode.get_uri()
35         ro_uri = filenode.get_readonly_uri()
36     data = ("filenode", {})
37-    data[1]['size'] = filenode.get_size()
38+    if best_size:
39+        data[1]['size'] = best_size
40+    else:
41+        data[1]['size'] = filenode.get_size()
42     if ro_uri:
43         data[1]['ro_uri'] = ro_uri
44     if rw_uri:
45}
46
47Context:
48
49[tests: bump up a timeout that expired on Zandr's box
50zooko@zooko.com**20090613195703
51 Ignore-this: 853000f43665396b3734a99f72bd472d
52]
53[util: hooray!  A clean implementation of this simple utility!  Black Dew pointed out that the inverse of time.gmtime() is hidden in the "calendar" module.
54zooko@zooko.com**20090613160112
55 Ignore-this: 8359cc48ca1b8e2793e8b2afe2050cf4
56]
57[util: Brian's horrible hack to figure out how much localtime and utctime differ.  Now we'll see if it works on Windows.
58zooko@zooko.com**20090612204556
59 Ignore-this: 8c36431da4707da76472956c7750ecbd
60]
61[util: oops, time.tzset() doesn't work on Windows -- hopefully the new "London" unit test passes on Windows when we skip tzset() on platforms that don't have it
62zooko@zooko.com**20090612000920
63 Ignore-this: 7d314b8334cfa3f65f9635e3d3eb727e
64]
65[setup: edit install.html to warn Windows users away from Python v2.6
66zooko@zooko.com**20090611225506
67 Ignore-this: 89ad63eab49ede883ef92f2de5b5fc54
68]
69[util: fix time_format.iso_utc_time_to_seconds() so that it works even in London
70zooko@zooko.com**20090611221129
71 Ignore-this: 14dbb9840587797f848226fdb3645c08
72]
73[setup: run the same "make quicktest" on Windows as on non-Windows
74zooko@zooko.com**20090611193214
75 Ignore-this: d0c78377d3892373ec3d91e9e98bd8bd
76 I checked and it behaves about as well on Windows as the previous version did.
77]
78[tests: significantly increase timeouts that triggered on Zandr's ARM box
79zooko@zooko.com**20090610161043
80 Ignore-this: 2b3c556c5166a8267b4b15664d3aadfb
81]
82[test: multiple by 10 or so all timeouts that Zandr's ARM box just overran
83zooko@zooko.com**20090610125639
84 Ignore-this: bf62f063ab46814fd78de55a5fbc9d84
85]
86[tests: bump up timeout on a test that timed out on draco
87zooko@zooko.com**20090610044628
88 Ignore-this: f598b98cbae44dc947937c6ca54c10cb
89]
90[tests: raise the timeout for test_cli since Zandr's ARM machine totally burst through the old one
91zooko@zooko.com**20090609210509]
92[test_cli.Backup: increase timeout massively, it takes 1200s on zandr's ARM linkstation
93warner@lothar.com**20090609052801]
94[tests: double the timeouts on some tests which time-out on Francois's box
95zooko@zooko.com**20090609021753
96 Ignore-this: b2727b04402f24a9b9123d2f84068106
97]
98[tests: bump up timeouts so that the tests can finish before timeout on Francois's little arm box
99zooko@zooko.com**20090608225557
100 Ignore-this: fb83698338b2f12546cd3e1dcb896d34
101]
102[tests: increase timeouts on some other tests that timed-out on Francois's arm box
103zooko@zooko.com**20090605143437
104 Ignore-this: 2903cc20d914fc074c8d7a6c47740ba6
105]
106[tests: bump up the timeout on a bunch of tests that took longer than the default timeout (120s) on François Lenny-armv5tel
107zooko@zooko.com**20090605031444
108 Ignore-this: 84d67849b1f8edc88bf7001e31b5f7f3
109]
110[backup: remove the --no-backupdb command, the handling of "can't import sqlite", and the related tests, and change an error message to more correctly indicate failure to load the database from disk rather than failure to import sqlite module
111zooko@zooko.com**20090604173131
112 Ignore-this: 8200a9fdfc49243c280ecd1d0c44fa19
113 Fixes #728.
114]
115[setup: require pysqlite >= v2.0.5. if we are running on Python < 2.5
116zooko@zooko.com**20090604154548
117 Ignore-this: cf04f46079821df209d01dad2e24b40b
118]
119[setup: add pysqlite and sqlite to get_package_versions()
120zooko@zooko.com**20090604153728
121 Ignore-this: a1dea7fabeab2b08fb0d8d462facdb4d
122]
123[more refactoring: move get_all_serverids() and get_nickname_for_serverid() from Client to storage_broker
124warner@lothar.com**20090602030750]
125[more storage_broker refactoring: downloader gets a broker instead of a client,
126warner@lothar.com**20090602022511
127 use Client.get_storage_broker() accessor instead of direct attribute access.
128]
129[test_runner.py: remove test_client_no_noise: the issue in question is
130warner@lothar.com**20090601225007
131 ticketed in http://divmod.org/trac/ticket/2830 and doesn't need a Tahoe-side
132 change, plus this test fails on win32 for unrelated reasons (and test_client
133 is the place to think about the win32 issue).
134]
135[remove plaintext-hashing code from the helper interface, to close #722
136warner@lothar.com**20090601224916
137 and deny the Helper the ability to mount a partial-information-guessing
138 attack. This will probably break compatibility between new clients and very
139 old (pre-1.0) helpers.
140]
141[start to factor server-connection-management into a distinct 'StorageServerFarmBroker' object, separate from the client and the introducer. This is the starting point for #467: static server selection
142warner@lothar.com**20090601210604]
143[mutable: catch and display first error, so code bugs which break all servers get displayed better
144warner@lothar.com**20090601210407]
145[misc/run-with-pythonpath.py: exec() the child (on unix), to remove the intermediate process
146warner@lothar.com**20090601210137]
147[docs: small edit to about.html
148zooko@zooko.com**20090528233422
149 Ignore-this: 1cfbb1f8426ed6d63b2d3952e4464ddc
150]
151[docs: add links to Tahoe-LAFS for Paranoids and Tahoe-LAFS for Corporates in about.html
152zooko@zooko.com**20090528232717
153 Ignore-this: 7b70baa700d6b6f6e9ceec4132efe5
154]
155[docs: edit about.html and include network-and-reliance-topology.png (loaded from http://allmydata.org )
156zooko@zooko.com**20090527150916
157 Ignore-this: 44adc61cde8ced8be2f0a7dfc7d95dad
158]
159[docs: a few more edits to network-and-reliance-topology.svg
160zooko@zooko.com**20090527150458
161 Ignore-this: 2eac8c33fe71be25ff809b399c6193c1
162]
163[docs: update network-and-reliance-topology.svg for beauty and clarity
164zooko@zooko.com**20090527031123
165 Ignore-this: 5510914849771900ac29b4312470d84
166]
167[docs: update NEWS, relnotes.txt, CREDITS to mention WUI Style
168zooko@zooko.com**20090526233654
169 Ignore-this: 72d16ec833bc4a22af23d29ea1d5ff8b
170]
171[Modify markup of Tahoe web pages to be more amenable to styling; some minor changes of wording.
172Kevin Reid <kpreid@mac.com>**20090526232545
173 Ignore-this: 8845937f0df6c7ddc07abe3211428a6f
174]
175[Tweak wording in directory page: not-read-only is "modifiable", mention creating a directory _in this directory_.
176Kevin Reid <kpreid@mac.com>**20090526232414
177 Ignore-this: f006ec52ba2051802e025a60bcface56
178]
179[Comment on duplication of code/markup found during styling project.
180Kevin Reid <kpreid@mac.com>**20090503203442
181 Ignore-this: a4b7f9f0ab57d2c03be9ba761be8d854
182]
183[Add CSS styles to spiff up the Tahoe WUI's appearance, particularly the welcome page and directories.
184Kevin Reid <kpreid@mac.com>**20090503203142
185 Ignore-this: 5c50af241c1a958b5180ef2b6a49f626
186]
187[Link all Tahoe web pages to the /tahoe_css stylesheet which already exists.
188Kevin Reid <kpreid@mac.com>**20090503202533
189 Ignore-this: 2ea8d14d3168b9502cf39d5ea3f2f2a8
190]
191[Fix broken link from Provisioning to Reliability page.
192Kevin Reid <kpreid@mac.com>**20090501191050
193 Ignore-this: 56dc1a5e659b70cc02dc4df7b5d518cd
194]
195[docs: network-and-reliance-topology.svg: nicer server icons, mv out of the "specifications" subdir
196zooko@zooko.com**20090526165842
197 Ignore-this: 8f47ab3a0ab782c1f0d46e10bcaebe5b
198]
199[docs: update network-and-reliance-topology.svg
200zooko@zooko.com**20090526163105
201 Ignore-this: 2b864b4ed8743d4a15dfbb7eff3fa561
202]
203[accounting-overview.txt: more edits
204warner@lothar.com**20090523190359]
205[accounting-overview.txt: small edits
206warner@lothar.com**20090523184011]
207[_auto_deps.py: require foolscap-0.4.1, which adds an important fix for py2.4
208warner@lothar.com**20090523011103]
209[immutable/encode.py: tolerate immediate _remove_shareholder by copying the
210warner@lothar.com**20090522184424
211 landlord list before iterating over it. This can probably only happen in unit
212 tests, but cleaning it up makes certain test failures easier to analyze.
213]
214[switch to using RemoteException instead of 'wrapped' RemoteReferences. Should fix #653, the rref-EQ problem
215warner@lothar.com**20090522004632]
216[switch all foolscap imports to use foolscap.api or foolscap.logging
217warner@lothar.com**20090522003823]
218[_auto_deps.py: bump our foolscap dependency to 0.4.0, since I'm about to start using its new features
219warner@lothar.com**20090522002100]
220[test_runner.py: fix minor typo
221warner@lothar.com**20090520033620]
222[setup: fix bug (wrong import) in error message, as noticed by pyflakes
223zooko@zooko.com**20090519195642
224 Ignore-this: f1b9f8c00b46c1b5f2f20e5fc424f341
225]
226[setup: fix trivial bug in recent patch to test base64.py at startup
227zooko@zooko.com**20090519195129
228 Ignore-this: f6be038f74b53ca69e7109fe34adfbc
229]
230[setup: make Tahoe exit at startup with a useful error message if the base64.py module is buggy (fixes part of #710)
231zooko@zooko.com**20090519194555
232 Ignore-this: aa4d398235ddca8d417d61c9688e154
233]
234[test_introducer.py: add a test for the python2.4.0/2.4.1 bug in base64.b32decode
235warner@lothar.com**20090519034101]
236[immutable WriteBucketProxy: use pipeline to speed up uploads by overlapping roundtrips, for #392
237warner@lothar.com**20090518234422]
238[util/pipeline.py: new utility class to manage size-limited work pipelines, for #392
239warner@lothar.com**20090518234326]
240[docs: add a diagram that I'm about to show to the Boulder Linux Users Group: network-and-reliance-topology.svg
241zooko@zooko.com**20090514232059
242 Ignore-this: 2420c0a7c254c9f0f2349d9130490d33
243]
244[tests: mark test_runner as coded in utf-8 instead of ascii
245zooko@zooko.com**20090507223151
246 Ignore-this: ccf1ba9e5a9b53602701a36f9fdb545e
247]
248[tests: raise timeout on test_runner.RunNode.test_introducer from 120s to 240s, since it hit the 120s time-out on François Lenny-armv5tel
249zooko@zooko.com**20090507215012
250 Ignore-this: ba18fe6832ba255d4971e8f623ed7da5
251]
252[setup: fix comment in setup.py
253zooko@zooko.com**20090507215003
254 Ignore-this: c46ef664630d52733138ef7fbc551c1c
255]
256[docs: how_to_make_a_tahoe_release.txt: a couple of small edits
257zooko@zooko.com**20090507214932
258 Ignore-this: ae92aa835ad369f4b9e6e49d681957a3
259]
260[.darcs-boringfile: also ignore .gitignore
261warner@allmydata.com**20090415210550
262 Ignore-this: d29db314a1e506f6240859559436b4c3
263]
264[.darcs-boringfile: ignore .git, I'm starting to play around with it
265warner@allmydata.com**20090415205929
266 Ignore-this: 89234453516483c9586cd6e1351e88b5
267]
268[fix quicktest: stop using setuptools, add misc/run-with-pythonpath.py, to make it run faster
269warner@lothar.com**20090414201400]
270[TAG allmydata-tahoe-1.4.1
271zooko@zooko.com**20090414025636
272 Ignore-this: de78fc32364c83e9f4e26b5abcfdea4a
273]
274[docs: inaugurate Tahoe-1.4.1, since I left out a handful of patches from the Tahoe-1.4.0 release
275zooko@zooko.com**20090414025430
276 Ignore-this: 12d5ff7dc842668bdf318c5539272089
277]
278[docs: add "darcs pull" to how_to_make_a_tahoe_release.txt, and renumber
279zooko@zooko.com**20090414024342
280 Ignore-this: d54d33e5f7e170eea12b6d6a16d0fc87
281]
282[TAG allmydata-tahoe-1.4.0
283zooko@zooko.com**20090414022015
284 Ignore-this: 6e19652fa9775baf6e97fddf6c0313f2
285]
286[docs: edit relnotes.txt and promote Tahoe from filesystem to cloud storage thingie
287zooko@zooko.com**20090414021913
288 Ignore-this: 78cc79078c234d0467f6290dcae456b9
289]
290[docs: add note about pywin32 to install.html
291zooko@zooko.com**20090413185210
292 Ignore-this: d386abfccfdc1015b8f1216d95b4792f
293]
294[trivial: fix comment
295zooko@zooko.com**20090413174138
296 Ignore-this: d45a9786c44793bc830dab1d8c9dd57c
297]
298[docs: a few edits/updates about dirnodes
299zooko@zooko.com**20090413160837
300 Ignore-this: 107fc1796e6c7f5b68b7e2517cce516a
301]
302[docs: change install.html to point to the 1.4.0 release zip file instead of 1.3.0
303zooko@zooko.com**20090413160649
304 Ignore-this: ec6b177d6689894b9842a012da04e5dc
305]
306[docs: edit install.html regarding versions of Python
307zooko@zooko.com**20090413160612
308 Ignore-this: 1de165ad7645be32ef671ece3fcae9ea
309]
310[docs: some small edits to install.html
311zooko@zooko.com**20090413160414
312 Ignore-this: 1e7142ea444fef61c684c089407d675
313]
314[NEWS: mention that the new 'reliability' page requires numpy
315warner@lothar.com**20090413110446]
316[docs: update relnotes.txt, NEWS for Tahoe-1.4.0 release!
317zooko@zooko.com**20090413041405
318 Ignore-this: d2eacb26b359a020956ee14b63d95dc5
319]
320[tests: remove obsolete test (it tests functionality that is long gone) which occasionally ERRORs now that we have more metadata (since [20090411225205-92b7f-7adfb89cb4db4ac7d28427934dea3d2c108f6476])
321zooko@zooko.com**20090413023621
322 Ignore-this: b9f1b1225015f59ffd7e0ee1633e4098
323]
324[trivial: remove trailing whitespace and unused import
325zooko@zooko.com**20090412021742
326 Ignore-this: e249172dd0ef51ee034819bc4c62cd9d
327]
328[dirnode: add 'tahoe'/'linkcrtime' and 'tahoe'/'linkmotime' to take the place of what 'mtime'/'ctime' originally did, and make the 'tahoe' subdict be unwritable through the set_children API
329zooko@zooko.com**20090411225205
330 Ignore-this: b48b0812f353891c62f371bedb3e9880
331 Also add extensive documentation in docs/frontends/webapi.txt about the behaviors of these values.  See ticket #628.
332]
333[docs: webapi.txt edits to explain a few things better, adjust indentation, editing
334zooko@zooko.com**20090411224828
335 Ignore-this: 3a8a5559c7f0c8a585a4c0b5a2c80451
336]
337[rollback [20090226150237-b2345-1e916a746a7f4627b050f02f0e442fae5caf69d4] for 1.4.0 release; #645
338zooko@zooko.com**20090411181906
339 Ignore-this: 15aa9ce6d1d49e9447f32e233d136bab
340]
341[setup: update comments about what versions we require of our dependencies
342zooko@zooko.com**20090410174345
343 Ignore-this: 7ec194dea9d1a60aa584aebe4ee28064
344]
345[NEWS: finish formatting new items. Still needs proofreading and updating the release name+date
346warner@lothar.com**20090410015655]
347[#622: disable 'Repair' button on check-results page until we make it work correctly
348warner@lothar.com**20090409235959]
349[web: make sure that PUT /uri?mutable=false really means immutable, fixes #675
350warner@lothar.com**20090408021340]
351[NEWS: format some (but not all) items
352warner@lothar.com**20090407211514]
353[wui: edit some of the human-readable parts of the wui such as button labels
354zooko@zooko.com**20090407185459
355 Ignore-this: 145722f4627271ea1d43107a0c7ce0e1
356 (The word "parent" suggests that you can go up a directory hierarchy -- perhaps that word is vestigial.)
357]
358[wui: fix bug in which empty directory is marked as "unreadable", add test, remove exclamation point
359zooko@zooko.com**20090407182834
360 Ignore-this: 2623a7ecd9c7c46b3c984fbaddf43ad0
361]
362[NEWS: add unformatted list of code changes since previous release
363warner@lothar.com**20090407021155]
364[docs: modify how-to-relase notes a tiny bit
365warner@lothar.com**20090407021135]
366[hashtree.py: another micro-optimization, expand on a comment
367warner@lothar.com**20090404043527]
368[hashtree: fix tests of depth_of
369zooko@zooko.com**20090403235614
370 Ignore-this: 70c96e407fe732fe75335c15df5f8200
371]
372[trivial: source code metadata
373zooko@zooko.com**20090403233315
374 Ignore-this: 23858d0320b9b7ba0e6d2fe4adeccea8
375]
376[trivial: whitespace
377zooko@zooko.com**20090403233302
378 Ignore-this: fed1c44b08c699cfcaf9d2d50353ec10
379]
380[hashtree: a couple of tiny improvements
381zooko@zooko.com**20090403233037
382 Ignore-this: a74764aa40b36f7056ac4321af628714
383  * calculate depth-first with math instead of traversing the actual tree
384  * don't mark a node with a red dot if you instead compare it with an extant hash value (tiny optimization)
385  * edit a comment about checking the root node
386]
387[leases, time_format: modify time stamping in lease description
388zooko@zooko.com**20090403225904
389 Ignore-this: c20b18d117a8199cdec08d8b5991789e
390  * emit lease expiry date in ISO-8601'ish format as well as Brian's format
391  * rename iso_utc_time_to_localseconds() to iso_utc_time_to_seconds()
392  * add iso_utc_date()
393  * simplify the body of iso_utc_time_to_seconds()
394 
395]
396[hashtree: fix O(N**2) behavior, to improve fatal alacrity problems in a 10GB file (#670). Also improve docstring.
397warner@lothar.com**20090331202127
398 Ignore-this: a04f72ed2b783fc880932fc5c482182b
399]
400[docs: setup: Norm Hardy suggested that it would be easier if users realized that they already had Python (especially true for Mac users)
401zooko@zooko.com**20090325035459
402 Ignore-this: e1bb76a1be4d6d541090d8d9e7e73db9
403]
404[expirer: include crawler progress in the JSON status output
405warner@allmydata.com**20090324205137
406 Ignore-this: f65ccc0a57ed7c5d9565131350d87d2d
407]
408[docs/proposed: new Accounting overview, discuss in #666
409warner@allmydata.com**20090324015752
410 Ignore-this: 7379396536e85194b1c1bec21288adc7
411]
412[docs/proposed: move old accounting docs out of the way
413warner@allmydata.com**20090324015457
414 Ignore-this: 196fe85ef3592f7ef8e58a101eed0494
415]
416[move GC docs out of proposed/, since it's all implemented now. Add reference to configuration.txt . Add expire.*= suggestions to tahoe.cfg .
417warner@allmydata.com**20090323230820
418 Ignore-this: ce0ec977f49c4a3642cf3a7ea7789dc4
419]
420[storage: use constant-time comparison for write-enablers and lease-secrets
421warner@lothar.com**20090323032128
422 Ignore-this: efbbb15242b3f306c32498aae7fd75d
423]
424[hashutil: add constant-time comparison function, to avoid timing attacks when python's short-circuiting data-dependent == operator is used to, say, check a write-enabler
425warner@lothar.com**20090323032055
426 Ignore-this: c5c1f5e529ab1b352c949f3e0d9abf20
427]
428[WUI: fix display of empty directories, it threw an exception before
429warner@allmydata.com**20090320235809
430 Ignore-this: e598bb806d75411d202ba90fc251ad2b
431]
432[storage webstatus: insert spaces when we're configured to expire multiple sharetypes
433warner@allmydata.com**20090320224450
434 Ignore-this: 18f44396384c8598d984eaa11dc92cf7
435]
436[expirer: tolerate empty buckets, refactor bucketsize-counting code a bit, don't increment -mutable/-immutable counters unless we actually know the sharetype
437warner@allmydata.com**20090320191816
438 Ignore-this: 16827fe12b874a0205b0a7fdb6b7f960
439]
440[storage: improve wording of status message
441warner@allmydata.com**20090319184837
442 Ignore-this: 66684623d50c89fa02915665dbbfec98
443]
444[parse_date: insist that it returns an int
445warner@allmydata.com**20090319184443
446 Ignore-this: a1f5ae0c16a151d218c06fc4411f03c1
447]
448[storage status: report expiration-cutoff-date like 19-Mar-2009 (as opposed to the tahoe.cfg input format of 2009-03-19), for redundancy: someone who gets the month and day switched will have a better chance to spot the problem in the storage-status output if it's in a different format
449warner@allmydata.com**20090319180756
450 Ignore-this: df2c3778260c6389d32f4b47b004ab35
451]
452[expirer: clean up constructor args, add tahoe.cfg controls, use cutoff_date instead of date_cutoff
453warner@allmydata.com**20090319010009
454 Ignore-this: 2b6aaa6d5e6ff9fd417f32978b443fd2
455]
456[util/time_format: new routine to parse dates like 2009-03-18, switch expirer to use it. I'd prefer to use 18-Mar-2009, but it is surprisingly non-trivial to build a parser that will take UTC dates instead of local dates
457warner@allmydata.com**20090319005814
458 Ignore-this: 4f08b301c780a78084fa02a09b5dda3
459]
460[expirer: change setup, config options, in preparation for adding tahoe.cfg controls
461warner@allmydata.com**20090319002138
462 Ignore-this: b23a53e97f2a9fb7a005e9fe40e83fac
463]
464[expirer: track mutable-vs-immutable sharecounts and sizes, report them on the web status page for comparison
465warner@allmydata.com**20090318202504
466 Ignore-this: 87e809bf5dedef3f0bc8f4a7b90e42d2
467]
468[add utility function to parse durations, for lease-expiration config
469warner@lothar.com**20090317070117
470 Ignore-this: 2f4fa4352c887b4767969f0ea7931644
471]
472[expirer: add mode to expire only-mutable or only-immutable shares
473warner@lothar.com**20090317065118
474 Ignore-this: b0b25427e3b1516bdfe293528b8e4a4e
475]
476[tahoe_ls.py: add comment about error cases to improve
477warner@lothar.com**20090317051206
478 Ignore-this: 7c678b92a55b2f7c6f0d96fb6ece74ed
479]
480[GC: add date-cutoff -based expiration, add proposed docs
481warner@lothar.com**20090317051041
482 Ignore-this: a5c0ecbcc2666eb04f2daa67331d1948
483]
484[test_deepcheck: remove the 10s timeout: our dapper buildslave requires 30s, and the reduced timeout was only there because this tests fails by timeout rather than explicitly
485warner@lothar.com**20090316005134
486 Ignore-this: 4ce081283c26719be513b5ce8381a81a
487]
488[tahoe cp -r: add --caps-only flag, to write filecaps into local files instead of actual file contents. Used only for debugging and as a quick tree-comparison tool.
489warner@lothar.com**20090315231958
490 Ignore-this: 8ecdf2b08601ae9e9fec5885bf640262
491]
492[dirnode deep_traverse: insert a turn break (fireEventually) at least once every 100 files, otherwise a CHK followed by more than 158 LITs can overflow the stack, sort of like #237.
493warner@allmydata.com**20090313233135
494 Ignore-this: 39b78faa947ed9461f2d120f6843e59f
495]
496[consolidate: remove pointless 'else' after for loop
497warner@allmydata.com**20090313082751
498 Ignore-this: 517f41316f7ae40b92b9eef8269a4b69
499]
500[consolidate: add eta, flush stdout
501warner@allmydata.com**20090313082451
502 Ignore-this: 845f63adccc32557c6864ae6120ba836
503]
504[consolidate: tolerate unicode dirnames
505warner@allmydata.com**20090313065402
506 Ignore-this: 7e65703ed3d12d4bd5ec14b693e5f61f
507]
508[dirnode.py: when doing deep-traverse, walk each directory in alphabetical order, to make things like 'manifest' more predictable
509warner@allmydata.com**20090313065046
510 Ignore-this: 9a80055a93a6b11853d4e8202bacec14
511]
512[consolidator: add progress to scan-old-directory passes
513warner@allmydata.com**20090313054728
514 Ignore-this: adc67a34f4f19fd58c5bc76301b3df36
515]
516[consolidator: fix cycle detection to not trigger on merely shared directories, add snapshot counter to progress
517warner@allmydata.com**20090313042229
518 Ignore-this: eba2cf9f1b1364b8e4c5ae4fa030a99f
519]
520[consolidator: re-use more directories, add total directories seen-vs-used counts
521warner@allmydata.com**20090313034801
522 Ignore-this: 6e743d2940a9fe129cee31008c894d70
523]
524[tahoe_backup.py: tolerate more time formats
525warner@allmydata.com**20090313011600
526 Ignore-this: ca74f56f0dce7d19810c5a7a75bc623c
527]
528[consolidator: add more verbose traversal of directories
529warner@allmydata.com**20090312232900
530 Ignore-this: 8ff0e17c6174566832a566a111032db4
531]
532[consolidate: create multiple numbered backups of the original Archives directory, not just the first time
533warner@allmydata.com**20090312230427
534 Ignore-this: e4985f76969b584d099b050781aa561c
535]
536[add 'tahoe debug consolidate' command, to merge directories created by repeated 'tahoe cp -r' or the allmydata win32 backup tool, into the form that would have been created by 'tahoe backup'.
537warner@allmydata.com**20090312205606
538 Ignore-this: 66569ca2190aa7b0f9199bcf09dcb27e
539]
540[tahoe_cp.py: return 0 for success, instead of None
541warner@allmydata.com**20090312205345
542 Ignore-this: 808f6d8617f8c4e7fde455e6c7639fab
543]
544[setup: specify in the debian/control files that tahoe is compatible with Python 2.6
545zooko@zooko.com**20090311225902
546 Ignore-this: d0793013e4c868d92793d932ef92a62d
547]
548[setup: update the debian/copyright text to reflect the current licences
549zooko@zooko.com**20090311152952
550 Ignore-this: 806a95b1b79d6bb20507db5c7201af45
551]
552[expirer: fix prediction math, thanks to Zandr for the catch
553warner@allmydata.com**20090309204217
554 Ignore-this: e20f784483ea1a15e35627fe95506272
555]
556[storage.expirer: oops, fix upgrade-handler code
557warner@lothar.com**20090309035516
558 Ignore-this: af8bc0ea1c7f305b33c06f4a9bf58de3
559]
560[storage.expirer: handle upgrades better
561warner@lothar.com**20090309034220
562 Ignore-this: dd654305b94bc3209426a3e008d57363
563]
564[storage.expirer: exercise the last missing line of webstatus code
565warner@lothar.com**20090309033828
566 Ignore-this: fc4aa34734cae32eec1db623ca0b145b
567]
568[expirer: tolerate corrupt shares, add them to the state and history for future examination
569warner@lothar.com**20090309030840
570 Ignore-this: 5ae7e68471ed700cc68beb408e0f303
571]
572[storage/immutable: raise a specific error upon seeing a bad version number, instead of using assert. Also wrap to 80cols.
573warner@lothar.com**20090309030732
574 Ignore-this: 5331d9680ffceff029fbbbcdece7f282
575]
576[storage: add test coverage for BucketReader.__repr__
577warner@lothar.com**20090309030527
578 Ignore-this: 60ce4e8c5200cc9885a3057f914e78b4
579]
580[storage/mutable: raise a specific error upon seeing bad magic, instead of using assert
581warner@lothar.com**20090309020201
582 Ignore-this: 8daa77362902f5d6ef793e9602a1383b
583]
584[nodeadmin: node stops itself if a hotline file hasn't been touched in 120 seconds now, instead of in 60 seconds
585zooko@zooko.com**20090308025039
586 Ignore-this: a9cfc605d3fcad912bd2d0b35d5143ec
587 A test failed on draco (MacPPC) because it took 67.1 seconds to get around to running the test, and the node had already stopped itself when the hotline file was 60 seconds old.
588]
589[expirer: make web display a bit more consistent
590warner@lothar.com**20090307221442
591 Ignore-this: 7fec9d9bffc0bddeb51c1baa8e7ea020
592]
593[web/storage.py: tolerate unknown-future displays, I'm not sure why LeaseCrawler.test_unpredictable_future didn't catch this
594warner@lothar.com**20090307220243
595 Ignore-this: 3d4e5baa8cc6d5d26edcea29fda8593d
596]
597[tahoe_cp.py: improve error reporting slightly: don't json-interpret HTTP errors, pass through tahoe webapi error messages
598warner@lothar.com**20090307114051
599 Ignore-this: a8beccb67adb082a92509d439b27d68e
600]
601[test_cli.py: assert that 'ls' on an unrecoverable file now gives a better error message
602warner@lothar.com**20090307110815
603 Ignore-this: 18e9758e4d0ca7faeaf5bd481c2d72ff
604]
605[test_web: test behavior of broken-dirnode GET, both html and json
606warner@lothar.com**20090307105707
607 Ignore-this: c0e5b45eee28959f899efa1bd189d6bd
608]
609[web: when a dirnode can't be read, emit a regular HTML page but with the child-table and upload-forms replaced with an apologetic message. Make sure to include the 'get info' links so the user can do a filecheck
610warner@lothar.com**20090307105601
611 Ignore-this: f949d6bd58c0c2fd60fd5fa730115f3f
612]
613[web/common: split out exception-to-explanation+code mapping to a separate humanize_failure() function, so it can be used by other code. Add explanation for mutable UnrecoverableFileError.
614warner@lothar.com**20090307105408
615 Ignore-this: 92f326804ba73bb446c5df5992b7d72e
616]
617[test_cli: use explicit (and stable) testdirs, instead of using self.mktemp
618warner@lothar.com**20090307090428
619 Ignore-this: 7c58d159e4f33d01635c3445d9e591f9
620]
621[test_storage: solaris doesn't appear to give the same block count as other platforms, so don't assert as much about 'diskbytes' recovered
622warner@lothar.com**20090307084518
623 Ignore-this: 55b35c094ce78c50c8ede42062c5ea13
624]
625[tahoe_cp.py: don't be verbose unless --verbose is passed: default is one line of success
626warner@lothar.com**20090307084421
627 Ignore-this: f75bb818081e0c2993378154775a69d1
628]
629[setup.cfg: use allmydata.org as a mirror for some of our necessary dependencies
630warner@allmydata.com**20090307045753
631 Ignore-this: ce174de4ad2dd96f184eadf4d62ea779
632]
633[storage: add a lease-checker-and-expirer crawler, plus web status page.
634warner@allmydata.com**20090307044517
635 Ignore-this: 4355224f89b959c6f1a256a7e6c88c3b
636 
637 This walks slowly through all shares, examining their leases, deciding which
638 are still valid and which have expired. Once enabled, it will then remove the
639 expired leases, and delete shares which no longer have any valid leases. Note
640 that there is not yet a tahoe.cfg option to enable lease-deletion: the
641 current code is read-only. A subsequent patch will add a tahoe.cfg knob to
642 control this, as well as docs. Some other minor items included in this patch:
643 
644  tahoe debug dump-share has a new --leases-only flag
645  storage sharefile/leaseinfo code is cleaned up
646  storage web status page (/storage) has more info, more tests coverage
647  space-left measurement on OS-X should be more accurate (it was off by 2048x)
648   (use stat .f_frsize instead of f_bsize)
649]
650[setup: comment-out the use of the directory full of dependency packages on the test grid -- the test grid is too unreliable!  :-(
651zooko@zooko.com**20090307044332
652 Ignore-this: c09f2e5f0b383b4227df4b07c267cb05
653]
654[setup: create a "make deb-lenny-head" target
655zooko@zooko.com**20090306191057
656 Ignore-this: 4b2ff187a3d08dcfe9318980ca92f097
657 I made this patch by copying [20090305220021-92b7f-89d987c7d05306b5cb03a64f2956a652c10a7296] and changing the name from "intrepid" to "lenny".  I haven't tested it.
658]
659[trivial: remove unused import detected by pyflakes, and remove trailing whitespace
660zooko@zooko.com**20090305223204
661 Ignore-this: 991001a50da1a357a519c3cb880d7ee1
662]
663[setup: enable build of .debs for Ubuntu Intrepid, thanks to DarKNesS_WolF
664zooko@zooko.com**20090305220021
665 Ignore-this: 88dbb3f72c2446b7734ac437189b67df
666]
667[trivial: use more specific function for ascii-encoding storage index
668zooko@zooko.com**20090222175751
669 Ignore-this: c1a78a71cf04d7dbd80a71106f9b21a1
670]
671[doc: update how_to_make_a_tahoe_release.txt
672zooko@zooko.com**20090222175739
673 Ignore-this: 6a2e1592741b362bc170167a9cadc0b
674]
675[test_cli: validate non-HTML error response of 'tahoe get' on an unrecoverable file
676warner@lothar.com**20090304041146]
677[web: full patch for HTML-vs-plaintext traceback renderings, improve test coverage of exception rendering
678warner@lothar.com**20090304035630]
679[web/common.py: use 'Accept:' header to control HTML-vs-text/plain traceback renderings
680warner@lothar.com**20090304035457]
681[test/common: rearrange shouldHTTPError
682warner@lothar.com**20090304014059]
683[web: move plural() to common.py
684warner@lothar.com**20090304014019]
685[add more information to NotEnoughSharesError, split out new exceptions for no-servers and no-source-of-ueb-hash
686warner@lothar.com**20090304013715]
687[test_web: move shouldHTTPError into common.WebErrorMixin
688warner@lothar.com**20090303225620]
689[test_web: clean up shouldHTTPError methods
690warner@lothar.com**20090303224604]
691[immutable checker add-lease: catch remote IndexError here too
692warner@allmydata.com**20090227071724
693 Ignore-this: 94ee6064ce26409381c6451cd50fdade
694]
695[servermap add-lease: fix the code that's supposed to catch remote IndexErrors, I forgot that they present as ServerFailures instead. This should stop the deluge of Incidents that occur when you do add-lease against 1.3.0 servers
696warner@allmydata.com**20090227070426
697 Ignore-this: 3d7bc87d9587b51d44b27317d9eded23
698]
699[rrefutil: add check_remote utility function
700warner@allmydata.com**20090227065957
701 Ignore-this: d859d0fae87b7e84ad3c2893350ed519
702]
703[rrefutil: add trap_remote utility and friends
704warner@allmydata.com**20090227065524
705 Ignore-this: a594050cdd9bcca073d8029819dbc35
706]
707[web: improve layout of storage status with a table
708warner@allmydata.com**20090227015838
709 Ignore-this: 5c12f5e296ad1cf224f85e307813eb09
710]
711[crawler: add ETA to get_progress()
712warner@allmydata.com**20090227014248
713 Ignore-this: 27ae76c0530b83323209be70df3d8a4b
714]
715[Fix for bug #645, correct path handling logic so that it works from sshfs
716Alberto Berti <alberto@metapensiero.it>**20090226150237
717 Ignore-this: e9c1b2d48ebf4ba68100d76e54154a78
718]
719[wui: s/Provisioning/Reliability/ ; suggested by Terrell
720zooko@zooko.com**20090226030904
721 Ignore-this: f9559702e760dc3c57e2fc36f087d91e
722]
723[startstop_node.py: when restarting, tolerate a stale pid too
724warner@allmydata.com**20090226015245
725 Ignore-this: 59197d3f400417be64fa0f91a64fae12
726]
727[web: fix the ERROR: line to work the same in python2.4 and 2.5
728warner@lothar.com**20090225074621]
729[test_cli/test_web: fix spurious test failure on solaris (maybe python2.4?) due to variations in the way that exceptions are stringified
730warner@allmydata.com**20090225060128
731 Ignore-this: 829fb7d67fd199babdde1443b64a5381
732]
733[CLI: modify 'tahoe manifest' and 'tahoe deep-check' to report ERROR: properly. For #590.
734warner@allmydata.com**20090225054415
735 Ignore-this: 99162f894fdd24112a869e14848c3dea
736]
737[webapi: modify streaming deep-manifest/deep-checker to emit an ERROR: line if they encounter an unrecoverable+untraversable directory. For #590.
738warner@allmydata.com**20090225051335
739 Ignore-this: e6bc49368fb0e7ada7cff477fd63ffe6
740]
741[scripts/common: fix alias handling on windows again, emit slightly nicer error message in response to an unknown alias
742warner@allmydata.com**20090225042136
743 Ignore-this: 76df800d131aed6701b5c7408105b134
744]
745[#165: make 'tahoe restart --force' the default behavior: warn but do not stop if restart is used on something that wasn't a running node, and always try to start it afterwards. This is particularly important for #315 (restart -m), because otherwise a single not-already-running node will prevent all nodes from being restarted, resulting in longer downtime than necessary
746warner@allmydata.com**20090225034213
747 Ignore-this: 26d8b0eea0279ca793faf23c5e948d90
748]
749[test_deepcheck: switch deep-check tests to use no-network too. This cuts the runtime down by about 50%
750warner@allmydata.com**20090225030457
751 Ignore-this: b3a98ed18c5752c9016c047e95d42b
752]
753[test_deepcheck: convert MutableChecker to no-network GridTest
754warner@allmydata.com**20090225020010
755 Ignore-this: eccba7fda129330b642886271a61a573
756]
757[tests/no_network: move GET into the GridTestMixin class
758warner@allmydata.com**20090225003300
759 Ignore-this: 7779ad38c2d687ae328ba3cb6164a7a4
760]
761[common_web.py: oops, add .fields to the other FakeRequest
762warner@allmydata.com**20090225000459
763 Ignore-this: 7144269b5e083553ee2c3e7afea00604
764]
765[test_cli: exercise the recent tolerate-'c:\dir\file.txt' fix in scripts/common, recorded in a separate match to make it easier to merge the fix to prod
766warner@allmydata.com**20090224235620
767 Ignore-this: 2cae196dd4ccb578b2abae085376e0d7
768]
769[scripts/common: on windows, tolerate paths like 'c:\dir\file.txt', by treating single-letter aliases on windows/cygwin as non-aliases
770warner@allmydata.com**20090224235522
771 Ignore-this: 96d37644b7f81ac768ff4a1d1915eb46
772]
773[test/common_web.py: add a .fields attribute to our FakeRequest, since we support versions of Nevow that are old enough to not do it themselves
774warner@allmydata.com**20090224232050
775 Ignore-this: 239aaed746128e54e886762782541a1f
776]
777[Two small fixes on documentation for cli backup command.
778Alberto Berti <alberto@metapensiero.it>**20090224223634
779 Ignore-this: 5634a6dadad6e4e43a112de7fe5c74c
780]
781[test_web: add (disabled) test to see what happens when deep-check encounters an unrecoverable directory. We still need code changes to improve this behavior.
782warner@lothar.com**20090224214017
783 Ignore-this: e839f1b0ec40f53fedcd809c2a30d5f9
784]
785[Add elapsed timestamp to cli backup command final summary.
786Alberto Berti <alberto@metapensiero.it>**20090224171425
787 Ignore-this: 9a042d11f95ee9f6858a5096d513c0bc
788]
789[Added documentation for '--exclude' and friends cli backup command.
790Alberto Berti <alberto@metapensiero.it>**20090224153049
791 Ignore-this: bbc791fa56e38535bb82cc3077ffde90
792]
793[test_repairer: change to use faster no_network.GridTestMixin, split Verifier tests into separate cases, refactor judgement funcs into shared methods
794warner@lothar.com**20090224041506
795 Ignore-this: 584ce72d6276da5edc00562793d4ee53
796]
797[immutable/checker.py: trap ShareVersionIncompatible too. Also, use f.check
798warner@lothar.com**20090224041405
799 Ignore-this: b667e8d3192116293babcacdeed42898
800 instead of examining the value returned by f.trap, because the latter appears
801 to squash exception types down into their base classes (i.e. since
802 ShareVersionIncompatible is a subclass of LayoutInvalid,
803 f.trap(Failure(ShareVersionIncompatible)) == LayoutInvalid).
804 
805 All this resulted in 'incompatible' shares being misclassified as 'corrupt'.
806]
807[immutable/layout.py: wrap to 80 cols, no functional changes
808warner@lothar.com**20090224005837
809 Ignore-this: 40019480180ec34141506a28d7711608
810]
811[test_repairer: change Repairer to use much-faster no_network.GridTestMixin. As a side-effect, fix what I think was a bug: some of the assert-minimal-effort-expended checks were mixing write counts and allocate counts
812warner@lothar.com**20090223234227
813 Ignore-this: d58bd0a909f9939775730cda4a858cae
814]
815[test/no_network.py: add a basic stats provider
816warner@lothar.com**20090223233937
817 Ignore-this: c9f3cc4eed99cfc36f68938ceff4162c
818]
819[tests: stop using setUpClass/tearDownClass, since they've been deprecated in Twisted-8.2.0
820warner@lothar.com**20090223204312
821 Ignore-this: 24c6592141cf64103530c024f93a5b88
822]
823[test_checker: improve test coverage for checker results
824warner@lothar.com**20090223201943
825 Ignore-this: 83e173602f0f4c811a7a9893d85385df
826]
827[Fixed tests again so they will pass on windows.
828Alberto Berti <alberto@metapensiero.it>**20090223003502
829 Ignore-this: 80d5074e7153642a2fa2a77958bfb50d
830]
831[misc/*: remove RuntimeError too
832warner@lothar.com**20090222233401
833 Ignore-this: b76f8a184f75bb28eb9d8002f957936a
834]
835[scripts: stop using RuntimeError, for #639
836warner@lothar.com**20090222233106
837 Ignore-this: 686a424442670fffbd4d1816c284a601
838]
839[mutable/publish: stop using RuntimeError, for #639
840warner@lothar.com**20090222233056
841 Ignore-this: 2a80a661c7850d97357caddad48c6e9d
842]
843[remove more RuntimeError from unit tests, for #639
844warner@lothar.com**20090222232855
845 Ignore-this: 1a1c3e1457f3f29ba7101fe406ee5f43
846]
847[stop using RuntimeError in unit tests, for #639
848warner@lothar.com**20090222232722
849 Ignore-this: 475ce0c0dcd7a1f5ed83ef460312efea
850]
851[ftpd/sftpd: stop using RuntimeError, for #639
852warner@lothar.com**20090222232426
853 Ignore-this: 97001362c4ba9e94b2e254e229b79987
854]
855[Added tests for the cse when listdir is an iterator
856Alberto Berti <alberto@metapensiero.it>**20090222224356
857 Ignore-this: 218fb2aba02c28b4b1e5324bdb5adeaa
858]
859[Fixed tests so that they pass also on buildbots.
860Alberto Berti <alberto@metapensiero.it>**20090222224311
861 Ignore-this: fcb91cd6acf028382411d23d380a4576
862]
863[Use failUnlessEqual instead of failUnless(a == b)
864Alberto Berti <alberto@metapensiero.it>**20090222224214
865 Ignore-this: 8f9144632e3ac9acb4726fb48a083bf4
866]
867[Better implementation of filtering algorithm.
868Alberto Berti <alberto@metapensiero.it>**20090222224049
869 Ignore-this: 67a8bd2f99bcc87ca2443bef13370a87
870]
871[Removed '.hgrags' from vcs excludes
872Alberto Berti <alberto@metapensiero.it>**20090222223946
873 Ignore-this: 3e94c22fc9d85f380ee11fb8bdb4d1e9
874]
875[docs: CREDITS to Alberto Berti
876zooko@zooko.com**20090222193314
877 Ignore-this: 74d370ada3234cce9e58aec15d739f71
878]
879[Added tests for the --exclude* options of backup command.
880Alberto Berti <alberto@metapensiero.it>**20090222165106
881 Ignore-this: f1b931cf2e7929ce47b737c022bca707
882]
883[Added --exclude, --exclude-from and --exclude-vcs options to backup command.
884Alberto Berti <alberto@metapensiero.it>**20090222170829
885 Ignore-this: 4912890229cd54a2f61f14f06bc4afcc
886 
887 It is still impossible to specify absolute exclusion path, only
888 relative. I must check with tar or rsync how they allow them to be
889 specified.
890]
891[Raise a more explanatory exception for errors encountered during backup processing.
892Alberto Berti <alberto@metapensiero.it>**20090222170252
893 Ignore-this: f6b8ffe2a903ba07a2c1c59130dac1e4
894]
895[Added tests for the fixed alias related command's synopsis
896Alberto Berti <alberto@metapensiero.it>**20090222163732
897 Ignore-this: 4432b4e88e990ba53a5b3fe0f12db2ac
898]
899[Add missing synopsis and descriptions for alias commands.
900Alberto Berti <alberto@metapensiero.it>**20090221003106
901 Ignore-this: 8aedd03d36d92d912102c7f29e4ca697
902]
903[docs: move many specification-like documents into specifications/
904warner@lothar.com**20090222054054
905 Ignore-this: a4110cc478198c0611205aba1ccf54f4
906]
907[test_web.py: increase test coverage of web.status.plural()
908warner@lothar.com**20090222000116
909 Ignore-this: 3138c9d5d2410d8e1121e9b2ed694169
910]
911[crawler: fix performance problems: only save state once per timeslice (not after every bucket), don't start the crawler until 5 minutes after node startup
912warner@lothar.com**20090221205649
913 Ignore-this: e6551569982bd31d19779ff15c2d6f58
914]
915[test_system: oops, don't assume that all files in storage/ are in a deep storage/shares/prefix/si/shnum path, since now the crawler pickle has a short path
916warner@lothar.com**20090221061710
917 Ignore-this: fde76d0e5cae853014d1bb18b5f17dae
918]
919[crawler: tolerate low-resolution system clocks (i.e. windows)
920warner@lothar.com**20090221061533
921 Ignore-this: 57286a3abcaf44f6d1a78c3c1ad547a5
922]
923[BucketCountingCrawler: store just the count, not cycle+count, since it's too easy to make usage mistakes otherwise
924warner@lothar.com**20090221035831
925 Ignore-this: 573b6f651af74380cdd64059fbbdda4b
926]
927[test_storage: startService the server, as is now the standard practice
928warner@lothar.com**20090221035755
929 Ignore-this: 3999889bd628fe4039bbcf1b29160453
930]
931[crawler: load state from the pickle in init, rather than waiting until startService, so get_state() can be called early
932warner@lothar.com**20090221035720
933 Ignore-this: ecd128a5f4364c0daf4b72d791340b66
934]
935[BucketCountingCrawler: rename status and state keys to use 'bucket' instead of 'share', because the former is more accurate
936warner@lothar.com**20090221034606
937 Ignore-this: cf819f63fac9506c878d6c9715ce35b7
938]
939[storage: also report space-free-for-root and space-free-for-nonroot, since that helps users understand the space-left-for-tahoe number better
940warner@lothar.com**20090221032856
941 Ignore-this: 9fdf0475f758acd98b73026677170b45
942]
943[storage: add bucket-counting share crawler, add its output (number of files+directories maintained by a storage server) and status to the webapi /storage page
944warner@lothar.com**20090221030408
945 Ignore-this: 28761c5e076648026bc5f518506db65c
946]
947[storage: move si_b2a/si_a2b/storage_index_to_dir out of server.py and into common.py
948warner@lothar.com**20090221030309
949 Ignore-this: 645056428ab797f0b542831c82bf192a
950]
951[crawler: add get_progress, clean up get_state
952warner@lothar.com**20090221002743
953 Ignore-this: 9bea69f154c75b31a53425a8ea67789b
954]
955[web/storage: make sure we can handle platforms without os.statvfs too
956warner@lothar.com**20090220220353
957 Ignore-this: 79d4cb8482a8543b9759dc949c86c587
958]
959[crawler: provide for one-shot crawlers, which stop after their first full cycle, for share-upgraders and database-populaters
960warner@lothar.com**20090220211911
961 Ignore-this: fcdf72c5ffcafa374d376388be6fa5c5
962]
963[web: add Storage status page, improve tests
964warner@lothar.com**20090220202926
965 Ignore-this: e34d5270dcf0237fe72f573f717c7a4
966]
967[storage: include reserved_space in stats
968warner@lothar.com**20090220202920
969 Ignore-this: b5b480fe0abad0148ecad0c1fb47ecae
970]
971[web/check_results: sort share identifiers in the sharemap display
972warner@lothar.com**20090220182922
973 Ignore-this: 5c7bfcee3e15c7082c3653eb8a460960
974]
975[webapi: pass client through constructor arguments, remove IClient, should make it easier to test web renderers in isolation
976warner@lothar.com**20090220181554
977 Ignore-this: e7848cd1bee8faf2ce7aaf040b9bf8e3
978]
979[test/no_network: do startService on the storage servers, make it easier to customize the storage servers
980warner@lothar.com**20090220022254
981 Ignore-this: e62f328721c007e4c5ee023a6efdf66d
982]
983[crawler: modify API to support upcoming bucket-counting crawler
984warner@lothar.com**20090220013142
985 Ignore-this: 808f8382837b13082f8b245db2ebee06
986]
987[test_backupdb: make the not-a-database file larger, since the older sqlite-2.3.2 on OS-X is easily fooled
988warner@lothar.com**20090220000409
989 Ignore-this: 694d2ca5053bb96e91670765d0cedf2e
990]
991[web/reliability: add parameter descriptions, adapted from a patch from Terrell Russell.
992warner@lothar.com**20090219222918
993 Ignore-this: 835f5ab01e1aff31b2ff9febb9a51f3
994]
995[test_crawler: hush pyflakes
996warner@lothar.com**20090219202340
997 Ignore-this: 765d22c9c9682cc86c5205dc130500af
998]
999[test_crawler: disable the percentage-of-cpu-used test, since it is too unreliable on our slow buildslaves. But leave the code in place for developers to run by hand.
1000warner@lothar.com**20090219201654
1001 Ignore-this: ff7cf5cfa79c6f2ef0cf959495dd989a
1002]
1003[reliability.py: fix the numpy conversion, it was completely broken. Thanks to Terrell Russell for the help.
1004warner@lothar.com**20090219195515
1005 Ignore-this: f2b1eb65855111b338e1487feee1bbcf
1006]
1007[reliability: switch to NumPy, since Numeric is deprecated
1008warner@lothar.com**20090219074435
1009 Ignore-this: f588a68e9bcd3b0bc3653570882b6fd5
1010]
1011[setup.py: fix pyflakes complaints
1012warner@lothar.com**20090219073643
1013 Ignore-this: a314e5456b0a796bc9f70232a119ec68
1014]
1015[move show-tool-versions out of setup.py and into a separate script in misc/ , since setuptools is trying to build and install a bunch of stuff first
1016warner@lothar.com**20090219073558
1017 Ignore-this: 9e56bc43026379212e6b6671ed6a1fd4
1018]
1019[test_crawler: don't require >=1 cycle on cygwin
1020warner@lothar.com**20090219065818
1021 Ignore-this: b8d2d40f26aeb30a7622479840a04635
1022]
1023[setup.py: add show_tool_versions command, for the benefit of a new buildbot step
1024warner@lothar.com**20090219062436
1025 Ignore-this: 21d761c76a033e481831584bedc60c86
1026]
1027[setup.py: wrap to 80 cols, no functional changes
1028warner@lothar.com**20090219055751
1029 Ignore-this: d29e57c6ee555f2ee435667b7e13e60b
1030]
1031[crawler: use fileutil.move_info_place in preference to our own version
1032warner@lothar.com**20090219051342
1033 Ignore-this: ee4e46f3de965610503ba36b28184db9
1034]
1035[fileutil: add move_into_place(), to perform the standard unix trick of atomically replacing a file, with a fallback for windows
1036warner@lothar.com**20090219051310
1037 Ignore-this: c1d35e8ca88fcb223ea194513611c511
1038]
1039[crawler: fix problems on windows and our slow cygwin slave
1040warner@lothar.com**20090219042431
1041 Ignore-this: 8019cb0da79ba00c536183a6f57b4cab
1042]
1043[#633: first version of a rate-limited interruptable share-crawler
1044warner@lothar.com**20090219034633
1045 Ignore-this: 5d2d30c743e3b096a8e775d5a9b33601
1046]
1047[change StorageServer to take nodeid in the constructor, instead of assigning it later, since it's cleaner and because the original problem (Tubs not being ready until later) went away
1048warner@lothar.com**20090218222301
1049 Ignore-this: 740d582f20c93bebf60e21d9a446d3d2
1050]
1051[test_system: split off checker tests to test_deepcheck.py, this file is too big
1052warner@lothar.com**20090218214234
1053 Ignore-this: 82bf8db81dfbc98224bbf694054a8761
1054]
1055[break storage.py into smaller pieces in storage/*.py . No behavioral changes.
1056warner@lothar.com**20090218204655
1057 Ignore-this: 312d408d1cacc5a764d791b53ebf8f91
1058]
1059[immutable/layout: minor change to repr name
1060warner@lothar.com**20090218204648
1061 Ignore-this: c8781ef15b7dea63b39236a1899b86ce
1062]
1063[docs: add lease-tradeoffs diagram
1064warner@lothar.com**20090218204137
1065 Ignore-this: c22a589ad465dac846da834c30dc4083
1066]
1067[interfaces.py: allow add/renew/cancel-lease to return Any, so that 1.3.1 clients (the first to use these calls) can tolerate future storage servers which might return something other than None
1068warner@lothar.com**20090218192903
1069 Ignore-this: dcbb704a05416ecc66d90fb486c3d75b
1070]
1071[docs/debian.txt: minor edit
1072warner@lothar.com**20090218032212
1073 Ignore-this: 64ff1fb163ffca4bcfd920254f1cf866
1074]
1075[add --add-lease to 'tahoe check', 'tahoe deep-check', and webapi.
1076warner@lothar.com**20090218013243
1077 Ignore-this: 176b2006cef5041adcb592ee83e084dd
1078]
1079[change RIStorageServer.remote_add_lease to exit silently in case of no-such-bucket, instead of raising IndexError, because that makes the upcoming --add-lease feature faster and less noisy
1080warner@lothar.com**20090218013053
1081 Ignore-this: 6fdfcea2c832178f1ce72ab0ff510f3a
1082]
1083[CLI #590: convert 'tahoe deep-check' to streaming form, improve display, add tests
1084warner@lothar.com**20090217231511
1085 Ignore-this: 6d88eb94b1c877eacc8c5ca7d0aac776
1086]
1087[interfaces.py: document behavior of add_lease/renew_lease/cancel_lease, before I change it
1088warner@lothar.com**20090217194809
1089 Ignore-this: 703c6712926b8edb19d55d790b65a400
1090]
1091[test_backupdb: improve error messages if the test fails
1092warner@lothar.com**20090217170838
1093 Ignore-this: ef657e87c66e4304d3e0aca9831b84c
1094]
1095[webapi #590: add streaming deep-check. Still need a CLI tool to use it.
1096warner@lothar.com**20090217053553
1097 Ignore-this: a0edd3d2a531c48a64d8397f7e4b208c
1098]
1099[test_web.Grid: change the CHECK() function to make it easier to test t= values with hyphens in them
1100warner@lothar.com**20090217050034
1101 Ignore-this: 410c08735347c2057df52f6716520228
1102]
1103[test_web: improve checker-results coverage with a no-network -based test, enhance no-network harness to assist, fix some bugs in web/check_results.py that were exposed
1104warner@lothar.com**20090217041242
1105 Ignore-this: fe54bb66a9ae073c002a7af51cd1e18
1106]
1107[web: fix handling of reliability page when Numeric is not available
1108warner@lothar.com**20090217015658
1109 Ignore-this: 9d329182f1b2e5f812e5e7eb5f4cf2ed
1110]
1111[test/no_network: update comments with setup timing: no_network takes 50ms, SystemTestMixin takes 2s (on my laptop)
1112warner@lothar.com**20090217000643
1113 Ignore-this: cc778fa3219775b25057bfc9491f8f34
1114]
1115[test_upload: rewrite in terms of no-network GridTestMixin, improve no_network.py as necessary
1116warner@lothar.com**20090216234457
1117 Ignore-this: 80a341d5aa3036d24de98e267499d70d
1118]
1119[test_download: rewrite in terms of no-network GridTestMixin, improve no_network.py as necessary
1120warner@lothar.com**20090216233658
1121 Ignore-this: ec2febafd2403830519120fb3f3ca04e
1122]
1123[test_dirnode.py: convert Deleter to new no-network gridtest
1124warner@lothar.com**20090216232348
1125 Ignore-this: 8041739442ec4db726675e48f9775ae9
1126]
1127[test_cli.py: modify to use the new 'no-network' gridtest instead of SystemTestMixin, which speeds it up from 73s to 43s on my system
1128warner@lothar.com**20090216232005
1129 Ignore-this: ec6d010c9182aa72049d1fb894cf890e
1130]
1131[tests: fix no_network framework to work with upload/download and checker
1132warner@lothar.com**20090216231947
1133 Ignore-this: 74b4dbd66b8384ae7c7544969fe4f744
1134]
1135[client.py: improve docstring
1136warner@lothar.com**20090216231532
1137 Ignore-this: bbaa9e3f63fdb0048e3125c4681b2d1f
1138]
1139[test_cli: add test coverage for help strings
1140warner@lothar.com**20090216210833
1141 Ignore-this: d2020849107f687448e159a19d0e5dab
1142]
1143[test/no_network: new test harness, like system-test but doesn't use the network so it's faster
1144warner@lothar.com**20090216205844
1145 Ignore-this: 31678f7bdef30b0216fd657fc6145534
1146]
1147[interfaces.py: minor docstring edit
1148warner@lothar.com**20090216205816
1149 Ignore-this: cec3855070197f7920b370f95e8b07bd
1150]
1151[setup: if you sdist_dsc (to produce the input files for dpkg-buildpackage) then run darcsver first
1152zooko@zooko.com**20090216201558
1153 Ignore-this: b85be51b3d4a9a19a3366e690f1063e2
1154]
1155[doc: a few edits to docs made after the 1.3.0 release
1156zooko@zooko.com**20090216201539
1157 Ignore-this: dbff3b929d88134d862f1dffd1ef068a
1158]
1159[test_cli: improve test coverage slightly
1160warner@lothar.com**20090216030451
1161 Ignore-this: e01ccc6a6fb44aaa4fb14fe8669e2065
1162]
1163[test_util: get almost full test coverage of dictutil, starting with the original pyutil tests as a base. The remaining three uncovered lines involve funny cases of ValueOrderedDict that I can't figure out how to get at
1164warner@lothar.com**20090216023210
1165 Ignore-this: dc1f0c6d8c003c0ade38bc8f8516b04d
1166]
1167[provisioning/reliability: add tests, hush pyflakes, remove dead code, fix web links
1168warner@lothar.com**20090215222451
1169 Ignore-this: 7854df3e0130d9388f06efd4c797262f
1170]
1171[util/statistics: add tests, fix mean_repair_cost
1172warner@lothar.com**20090215222326
1173 Ignore-this: c576eabc74c23b170702018fc3c122d9
1174]
1175[test_repairer: hush pyflakes
1176warner@lothar.com**20090215222310
1177 Ignore-this: 875eb52e86077cda77efd02da77f8cfa
1178]
1179[lossmodel.lyx: move draft paper into docs/proposed/, since it's unfinished
1180warner@lothar.com**20090215221905
1181 Ignore-this: 7f7ee204e47fd66932759c94deefe68
1182]
1183[build a 'reliability' web page, with a simulation of file decay and repair over time
1184warner@lothar.com**20090213234234
1185 Ignore-this: 9e9623eaac7b0637bbd0071f082bd345
1186]
1187[docs: relnotes-short.txt
1188zooko@zooko.com**20090215163510
1189 Ignore-this: 683649bb13499bbe0e5cea2e1716ff59
1190 linkedin.com imposed a strict limit on the number of characters I could post.  This forced me to prune and prune and edit and edit until relnotes.txt was a quarter of its former size.  Here's the short version.
1191]
1192[TAG allmydata-tahoe-1.3.0
1193zooko@zooko.com**20090214000556
1194 Ignore-this: aa6c9a31a14a58ad2298cb7b08d3ea70
1195]
1196[docs: a few last-minute edits to the docs for 1.3.0 (also this patch will accompany the tag and conveniently trigger the buildbots to build a 1.3.0 version)
1197zooko@zooko.com**20090214000500
1198 Ignore-this: 879c9b10f0e5b9ed0031236e0714ddfa
1199]
1200[setup: remove attempt to automatically satisfy dependency on pywin32
1201zooko@zooko.com**20090213234939
1202 Ignore-this: ac02d54a956f7cc58bd3c0802764005f
1203]
1204[NEWS: mention #625 (deep-repair breaks when it tries to repair a read-only directory)
1205warner@lothar.com**20090213225534
1206 Ignore-this: a3b6b3dd483f8a4a459dfc064760326f
1207]
1208[test_dirnode: #625 run deep-check on a readonly dirnode too
1209warner@lothar.com**20090213205337
1210 Ignore-this: 2a18d33a7cc99c9959b7182e37b35077
1211]
1212[docs: CREDITS
1213zooko@zooko.com**20090213201245
1214 Ignore-this: 5d3101e680739e6cdacb4351b518ae33
1215]
1216[figleaf_htmlizer: fix order of summary counters
1217warner@lothar.com**20090213155753
1218 Ignore-this: aa6f0cd37e79857482967496252088da
1219]
1220[Makefile: minor, add .PHONY declarations
1221warner@lothar.com**20090213072341
1222 Ignore-this: 7666385dc250014198454707ee82cd1c
1223]
1224[figleaf_htmlizer: oops, re-ignore files that aren't under root, like code in auto-built eggs
1225warner@lothar.com**20090213060022
1226 Ignore-this: b4e67d5e025198d01e373728d1a74b11
1227]
1228[setup: relnotes.txt mention the iPhone app and CIFS/SMB (tahoe-w32-client)
1229zooko@zooko.com**20090213044121
1230 Ignore-this: 2c9b8720579c4c146e4416c5a02c77a5
1231]
1232[setup: make the "full version string" be "allmydata-tahoe/1.3.0" instead of "allmydata-tahoe-1.3.0" and the UserAgent string of the cli be "allmydata-tahoe/1.3.0 (tahoe-client)"
1233zooko@zooko.com**20090213043738
1234 Ignore-this: f41a0472abc9910ad180831963d740e8
1235 This is webbish.  Thanks to kpreid for suggesting it.
1236]
1237[docs: relnotes.txt final (!?) update for 1.3.0!
1238zooko@zooko.com**20090213042814
1239 Ignore-this: 7a959eba00115474ff048cd84ecab495
1240]
1241[docs: known_issues.txt: my version of #615, remove "issue numbers", edits, move tahoe-1.1.0 issues to historical
1242zooko@zooko.com**20090213041621
1243 Ignore-this: 58dee952a3139791ba0fe03f03fcf8bb
1244]
1245[docs: CREDITS
1246zooko@zooko.com**20090213034228
1247 Ignore-this: d6bb651d657ed8967ca1dfb23afbd00e
1248]
1249[Makefile: add figleaf-delta-output, to render figleaf coverage differences with a previous run
1250warner@lothar.com**20090212211829
1251 Ignore-this: 9c78861c4abed3d6c2d013ff40d9b4fb
1252]
1253[figleaf_htmlizer: emit stats to stdout, so buildbot can see it
1254warner@lothar.com**20090212211020
1255 Ignore-this: bf5b503717580561c2fdb6c619159c9
1256]
1257[figleaf_htmlizer: render changes in coverage relative to a previous test run using --old-coverage
1258warner@lothar.com**20090212210412
1259 Ignore-this: 6c2bfc21a0671f1a07e19d3f9fd17157
1260]
1261[immutable repairer: fix DownUpConnector so that it satisfies short reads the were requested after the last write and before the close
1262zooko@zooko.com**20090212230447
1263 Ignore-this: 2856bb9582d9c38a82fd9aad7fd10b57
1264 This is probably the cause of the very rare "loss of progress" bug.  This is tested by unit tests.  A recent patch changed this to errback instead of losing progress, and now this patch is changing it again to return a short read instead of errbacking.  Returning a short read is what the uploader (in encode.py) is expecting, when it is reading the last block of the ciphertext, which might be shorter than the other blocks.
1265]
1266[immutable repairer: add an assertion that a certain value in this tricky function is always what I think it is
1267zooko@zooko.com**20090212223132
1268 Ignore-this: 65b6920d67d7289f0dfc38c8e42f7c82
1269]
1270[immutable repairer: add tests of how it handles short reads
1271zooko@zooko.com**20090212224853
1272 Ignore-this: bca74cfa2b1f27d733540fccd1c29839
1273]
1274[nodeadmin: node stops itself if a hotline file hasn't been touched in 60 seconds now, instead of in 40 seconds
1275zooko@zooko.com**20090212212131
1276 Ignore-this: a6f44b9dfd9f405d4fe9ef66a6d293da
1277 A test failed on draco (MacPPC) because it took 49 seconds to get around to running the test, and the node had already stopped itself when the hotline file was 40 seconds old.
1278]
1279[immutable repairer: errback any pending readers of DownUpConnectorwhen it runs out of bytes, and test that fact
1280zooko@zooko.com**20090212021129
1281 Ignore-this: efd1fac753dad541fe5a0f232bcbf161
1282]
1283[figleaf_htmlizer: more rearranging, behavior should still be unchanged
1284warner@allmydata.com**20090212020515
1285 Ignore-this: 8fb7dd723b2d26bdcf1d57685b113bb8
1286]
1287[figleaf_htmlizer: break it up into subfunctions, behavior should still be unchanged
1288warner@allmydata.com**20090212015607
1289 Ignore-this: 9644ec95b0f9950722c13ad3c9654e22
1290]
1291[figleaf_htmlizer: rewrite in class form, behavior should be the same as before
1292warner@allmydata.com**20090212014050
1293 Ignore-this: d00b838c0af1ea2d71be246bbcf36c53
1294]
1295[figleaf_htmlizer: rewrite with twisted.python.usage, remove logging: should behave the same as before
1296warner@allmydata.com**20090212011643
1297 Ignore-this: 86f961e369625e9ab5188e817b083fe4
1298]
1299[figleaf_htmlizer: expand tabs, fix to 4-space indents. No functional changes.
1300warner@allmydata.com**20090212010542
1301 Ignore-this: 5c9aa3704eacf1b42a985ade8e43dd1f
1302]
1303[Makefile: include the figleaf pickle in the uploaded coverage data, for later differential analysis
1304warner@allmydata.com**20090212000913
1305 Ignore-this: e31002f4a7d55d8a2ca1131a1066c066
1306]
1307[Makefile: fix test-clean, by ignoring _appname.py and removing src/allmydata_tahoe.egg-info
1308warner@allmydata.com**20090212000434
1309 Ignore-this: 17e4513eb0c844f434b863d40319dfdd
1310]
1311[setup: from the perspective of darcs, src/allmydata/_appname.py is a very boring file, indeed
1312zooko@zooko.com**20090211233108
1313 Ignore-this: d22a1d76879744fa2a4dd6ea218511ba
1314]
1315[versioning: include an "appname" in the application version string in the versioning protocol, and make that appname be controlled by setup.py
1316zooko@zooko.com**20090211231816
1317 Ignore-this: 6a0e62492bd271cdaaf696c4a35bc919
1318 It is currently hardcoded in setup.py to be 'allmydata-tahoe'.  Ticket #556 is to make it configurable by a runtime command-line argument to setup.py: "--appname=foo", but I suddenly wondered if we really wanted that and at the same time realized that we don't need that for tahoe-1.3.0 release, so this patch just hardcodes it in setup.py.
1319 setup.py inspects a file named 'src/allmydata/_appname.py' and assert that it contains the string "__appname__ = 'allmydata-tahoe'", and creates it if it isn't already present.  src/allmydata/__init__.py import _appname and reads __appname__ from it.  The rest of the Python code imports allmydata and inspects "allmydata.__appname__", although actually every use it uses "allmydata.__full_version__" instead, where "allmydata.__full_version__" is created in src/allmydata/__init__.py to be:
1320 
1321 __full_version__ = __appname + '-' + str(__version__).
1322 
1323 All the code that emits an "application version string" when describing what version of a protocol it supports (introducer server, storage server, upload helper), or when describing itself in general (introducer client), usese allmydata.__full_version__.
1324 
1325 This fixes ticket #556 at least well enough for tahoe-1.3.0 release.
1326 
1327]
1328[setup: add new darcsver-1.2.1 which includes Brian's and Nils Durner's patch to ignore non-ascii chars in XML output
1329zooko@zooko.com**20090211215253
1330 Ignore-this: d0319ec509f6562a45c9a555cf37d3cc
1331]
1332[backupdb: cosmetic: capitalize the no-pysqlite instructions properly. Thanks to Terrell Russell for the catch.
1333warner@allmydata.com**20090211212830
1334 Ignore-this: a17b34a12bbe96ad5b531ef5d293471e
1335]
1336[test_repairer: disable repair-from-corruption tests until other things are improved well enough to make it useful
1337warner@allmydata.com**20090211210159
1338 Ignore-this: bf2c780be028f0f5556f1aed04cc29b9
1339]
1340[NEWS: explain limitations of the new repairer
1341warner@allmydata.com**20090211204352
1342 Ignore-this: 455822aeeae12b999fb28ba8a9265a51
1343]
1344[setup: removed bundled darcsver-1.2.0
1345zooko@zooko.com**20090211201904
1346 Ignore-this: a826819eb8665e6d00e30a929f1f9831
1347 (I'm about to add a new bundled darcsver-1.2.1, but I want to see what the buildbots will do when there is no bundled darcsver present.)
1348]
1349[trivial: whitespace
1350zooko@zooko.com**20090211171935
1351 Ignore-this: 38b042422093adc2e176e448051f19f
1352]
1353[docs/known_issues: mention #615 javascript-vs-frames, for zooko to improve/rewrite
1354warner@allmydata.com**20090211201453
1355 Ignore-this: b4805670c3700d90db39fb008b0f2c92
1356]
1357[storage: make add-lease work, change default ownernum=1 since 0 is reserved to mean 'no lease here'
1358warner@allmydata.com**20090211053938
1359 Ignore-this: 9437ec1529c34351f2725df37e0859c
1360]
1361[#620: storage: allow mutable shares to be deleted, with a writev where new_length=0
1362warner@allmydata.com**20090211053756
1363 Ignore-this: 81f79e0d72f7572bdc1c9f01bb91620
1364]
1365[test_cli.Backup: insert some stalls to make sure two successive backups get distinct timestamps, avoiding intermittent failures
1366warner@allmydata.com**20090211023709
1367 Ignore-this: a146380e9adf94c2d301b59e4d23f02
1368]
1369[#619: make 'tahoe backup' complain and refuse to run if sqlite is unavailable and --no-backupdb is not passed
1370warner@allmydata.com**20090211004910
1371 Ignore-this: 46ca8be19011b0ec11e7a10cb2556386
1372]
1373[NEWS: point out that 'tahoe backup' requires a 1.3.0-or-later client node
1374warner@allmydata.com**20090210210025
1375 Ignore-this: 26e3e87dd9c762e59d6e0eb9f1acfb8d
1376]
1377[tests: increase the default timeout for SystemTestMixin -based tests to 300 seconds, since our slower buildslaves sometimes take longer than the default 120s
1378warner@allmydata.com**20090210204412
1379 Ignore-this: 781ec7b1060fa8c75dc12401b07ee358
1380]
1381[immutable: repairer: add a simple test to exercise the "leftover" code path, fix the bug (and rename the variable "leftover" to "extra")
1382zooko@zooko.com**20090210181245
1383 Ignore-this: 8426b3cd55ff38e390c4d1d5c0b87e9d
1384]
1385[docs: not-quite-final version of relnotes.txt for tahoe-1.3.0
1386zooko@zooko.com**20090210170227
1387 Ignore-this: 64e11f3619d537eae28f4d33977bd7ab
1388]
1389[docs: small edit to about.html
1390zooko@zooko.com**20090210170219
1391 Ignore-this: fa79838f4cdac17c09b6c3332e8a68b5
1392]
1393[docs: NEWS: move the most exciting items to the top, break them out of less exciting categories, update a couple of stale bits, and a touch of editing
1394zooko@zooko.com**20090210084843
1395 Ignore-this: 181b31e3338b14b70ee9bc068ed2e4fb
1396]
1397[docs: edit about.html
1398zooko@zooko.com**20090210080102
1399 Ignore-this: d96f9b21f88d4c7a552f9ed3db5c6af4
1400]
1401[immutable: tighten preconditions -- you can write empty strings or read zero bytes, and add the first simple unit test of DownUpConnector
1402zooko@zooko.com**20090210065647
1403 Ignore-this: 81aad112bb240b23f92e38f06b4ae140
1404]
1405[immutable: tests: the real WRITE_LEEWAY is 35 (it was a mistake to move it from 10 to 35 earlier -- I had seen a failure in which it took 35 times as many writes as I thought were optimal, but I misread and thought it took only 20 times as many)
1406zooko@zooko.com**20090210055348
1407 Ignore-this: e81c34d31fe2e3fd641a284a300352cc
1408]
1409[immutable: defensive programming: assert that the encrypted readable gave you no more than the number of bytes you asked for
1410zooko@zooko.com**20090210054605
1411 Ignore-this: 72cac6a6ccdd9533af4bc02b64598e6d
1412 (There is a bug in the current DownUpConnector which can cause it to give more bytes than you asked for on one request, and then less on the next, effectively shifting some of the bytes to an earlier request, but I think this bug never gets triggered in practice.)
1413]
1414[docs: suggest Python 2.5 -- Python 2.6 is not as well tested yet
1415zooko@zooko.com**20090210054421
1416 Ignore-this: 3ef6988c693330d4937b4d8e1a996c39
1417]
1418[immutable: tests: sigh, raise, again the limit of how many extra writes you can do and still pass this test
1419zooko@zooko.com**20090210020931
1420 Ignore-this: 91faf5d6919ca27f8212efc8d19b04c5
1421 Obviously requiring the code under test to perform within some limit isn't very meaningful if we raise the limit whenever the test goes outside of it.
1422 But I still don't want to remove the test code which measures how many writes (and, elsewhere, how many reads) a client does in order to fulfill these duties.
1423 Let this number -- now 20 -- stand as an approximation of the inefficiency of our code divided by my mental model of how many operations are actually optimal for these duties.
1424 
1425]
1426[immutable: tests: assert that verifier gives a clean bill of health after corruption and repair (the previous patch mistakenly did this only after deletion and repair), and also test whether deleting seven other shares and then downloading works.  Also count the number of shares stored in the local filesystem.
1427zooko@zooko.com**20090210020841
1428 Ignore-this: ac803d0599f336c308fe74a2582e6aa4
1429]
1430[immutable: test: add a test after attempting to repair from corruption: does a full verify run give the file a clean bill of health?  If not, the you haven't successfully repaired it.
1431zooko@zooko.com**20090210010149
1432 Ignore-this: 43faea747e7afccaae230d50c067adc6
1433 This will make the repairer tests more consistent -- less accidentally passing due to getting lucky.
1434]
1435[immutable: tests: put shares back to their pristine condition in between each test of corrupting-and-repairing them
1436zooko@zooko.com**20090210002956
1437 Ignore-this: 45de680a6ac69b1845c0c74534913dec
1438 This is important, because if the repairer doesn't completely repair all kinds of corruption (as the current one doesn't), then the successive tests get messed up by assuming that the shares were uncorrupted when the test first set about to corrupt them.
1439]
1440[upload: add a think-of-the-compatibility note to UploadResults
1441warner@allmydata.com**20090209205004
1442 Ignore-this: 9ae325ac7281ab67ce45bccb8af672a
1443]
1444[helper #609: uploading client should ignore old helper's UploadResults, which were in a different format
1445warner@allmydata.com**20090209204543
1446 Ignore-this: 4868a60d01fa528077d8cf6efa9db35d
1447]
1448[test_runner: skip all spawnProcess-using tests on cygwin, since spawnProcess just hangs forever
1449warner@lothar.com**20090209083400
1450 Ignore-this: e8c2c85650b61cf084cb8a8852118b86
1451]
1452[test_runner.py: revert the CreateNode section to using runner() inline, rather than spawning a process, to get more precise coverage
1453warner@lothar.com**20090209082617
1454 Ignore-this: e7f0ae5c9a2c2d8157289ef39fda371
1455]
1456[storage #596: announce 'tolerates-immutable-read-overrun' to the version announcement, to indicate that a read() on an immutable share where offset+length is beyond the end of the file will return a truncated string instead of raising an exception
1457warner@lothar.com**20090209015602
1458 Ignore-this: cbd07102909449da55067184a63fc0d1
1459]
1460[test_upload: add test of maximum-immutable-share-size, to complete the last item of #538
1461warner@lothar.com**20090209014127
1462 Ignore-this: 943b9b11812ad784ec824db7a8a7aff9
1463]
1464[docs/specifications: add an outline of the spec documents we'd like to have some day
1465warner@lothar.com**20090208234748
1466 Ignore-this: b591ad0361810e5aae37cba07fdfbd43
1467]
1468[test_cli.Backup: capture stderr when sqlite is unavailable
1469warner@lothar.com**20090207211440
1470 Ignore-this: 4978b1a149e32bd31e66d5bc4269bc55
1471]
1472[docs: add mac/README.txt to explain the first few basic facts about what the files are in this directory
1473zooko@zooko.com**20090207223321
1474 Ignore-this: d89a55b55cab69d2171529f62fcfbc11
1475]
1476[test_repairer: wrap comments to 80cols, my laptop does not have a wide screen. No functional changes.
1477warner@lothar.com**20090207200626
1478 Ignore-this: f539c156f3b79cfe49c7cf0fa788994e
1479]
1480[immutable/checker: wrap comments to 80cols, my laptop does not have a wide screen. No functional changes.
1481warner@lothar.com**20090207200439
1482 Ignore-this: ad8f03eb17b217987268f76d15fa5655
1483]
1484[test/common.py: in share-layout-reading code, use '>L' consistently, since '>l' doesn't specify the signedness and the windows tests appear to be failing with an endianness-like problem (version==0x01000000). Also use binary mode when editing sharefiles
1485warner@lothar.com**20090207193817
1486 Ignore-this: dec2c7208b2fe7a56e74f61a8dc304f6
1487]
1488[test_cli: increase timeout on test_backup, since our dapper buildslave is really slow
1489warner@lothar.com**20090206081753]
1490[backupdb.py: catch OperationalError on duplicate-insert too, since pysqlite2 on dapper raises it instead of IntegrityError
1491warner@lothar.com**20090206073401]
1492[test_backupdb.py: reset the check-timers after one step, otherwise a slow host can false-fail
1493warner@lothar.com**20090206073305]
1494[NEWS: announce the #598 'tahoe backup' command
1495warner@lothar.com**20090206054416]
1496[docs/CLI: document 'tahoe backup'
1497warner@allmydata.com**20090206041445
1498 Ignore-this: 60dade71212f2a65d3c0aaca7fb8ba00
1499]
1500[test_cli.backup: oops, fix test to work even when sqlite is unavailable
1501warner@allmydata.com**20090206041042
1502 Ignore-this: 8a550049c8eb27c34ab2440263e07593
1503]
1504[#598: add cli+backupdb tests, improve user display, update docs, move docs out of proposed/
1505warner@allmydata.com**20090206040701
1506 Ignore-this: 7a795db5573247471c6a268fb0aa23c0
1507]
1508[#598: add backupdb to 'tahoe backup' command, enable it by default
1509warner@allmydata.com**20090206015640
1510 Ignore-this: 4e6a158d97549c55dbc49f6d69be8c44
1511]
1512[add sqlite-based backupdb, for #598 and others (including 'tahoe cp'). Not enabled yet.
1513warner@allmydata.com**20090206001756
1514 Ignore-this: 36d9a56b257e481091fd1a105318cc25
1515]
1516[setup: require new bundled setuptools-0.6c12dev
1517zooko@zooko.com**20090205152923
1518 Ignore-this: 516bbb2195a20493fa72a0ca11a2361c
1519]
1520[setup: bundle setuptools-0.6c12dev (our own toothpick of setuptools) this version completes my patch to fix http://bugs.python.org/setuptools/issue54 , which is necessary for tahoe to build with --prefix=support without doing a lot of PYTHONPATH gymnastics around the call to setup.py
1521zooko@zooko.com**20090205152818
1522 Ignore-this: da7b1587ee91180c4a1a56f217311de3
1523]
1524[setup: remove old bundled setuptools-0.6c11dev (our own toothpick of setuptools)
1525zooko@zooko.com**20090205152758
1526 Ignore-this: 21140fb5a62bf855d9ffa8af8ff4cdac
1527]
1528[setup: add a case to execute "python .../twistd.py" if "twistd" is not found
1529zooko@zooko.com**20090205000620
1530 Ignore-this: 6d472905042d14707bdf5d591d76248e
1531]
1532[doc: specify Python >= 2.4.2
1533zooko@zooko.com**20090204213840
1534 Ignore-this: 108c60b69fdb1d0fcb95810703ce415a
1535]
1536[setup: merge recent patches that change the set of bundled tools in misc/dependencies/
1537zooko@zooko.com**20090204193222
1538 Ignore-this: 4e5df8a8b5da51d122022dabb40f4b62
1539]
1540[setup: bundle new setuptools_trial
1541zooko@zooko.com**20090204192454
1542 Ignore-this: a213fca1fd09ba2c3999dc948dafba98
1543]
1544[setup: remove old bundled setuptools_trial
1545zooko@zooko.com**20090204192442
1546 Ignore-this: 18ed85a4dae721d3a25c67c9f5672802
1547]
1548[setup: bundle new setuptools_darcs
1549zooko@zooko.com**20090204192429
1550 Ignore-this: 232482cdc411fb200e37f77ca8914760
1551]
1552[setup: remove old bundled setuptools_darcs
1553zooko@zooko.com**20090204192418
1554 Ignore-this: 2af1cca4a5ed087120b5373a63600792
1555]
1556[roll back the upgrade of the bundled setuptools_trial from 0.5 to 0.5.1
1557zooko@zooko.com**20090204073836
1558 Ignore-this: a939f9bd569b6db315dc62561edec56f
1559 Upgrading setuptools trial in that way leads to a very tricky problem in setuptools's handling of recursive installation of the build-time dependencies of build-time dependencies...
1560 
1561 rolling back:
1562 
1563 Tue Feb  3 22:17:18 MST 2009  zooko@zooko.com
1564   * setup: bundle new setuptools_trial-0.5.1
1565 
1566     A ./misc/dependencies/setuptools_trial-0.5.1.tar
1567 Tue Feb  3 22:17:32 MST 2009  zooko@zooko.com
1568   * setup: remove old bundled setuptools_trial
1569 
1570     R ./misc/dependencies/setuptools_trial-0.5.tar
1571]
1572[setup: remove a couple of horrible work-arounds in setup.py now that we rely on our own toothpick of setuptools which fixes those issues
1573zooko@zooko.com**20090204052405
1574 Ignore-this: a11bc74a5cb879db42c4fe468c375577
1575 also specify that we need our latest revision (11dev) of our toothpick of setuptools
1576 also *always* setup_require setuptools_darcs at module import time.  Formerly we added setup_require setuptools_darcs only if the PKG-INFO file were not already created.  There is some weird, irreproducible bug to do with setuptool_darcs, and I guess that the fact that whether it is required or not depends on that autogenerated file might have something to do with it.  Anyway, this is simpler.
1577]
1578[setup: remove old bundled setuptools_trial
1579zooko@zooko.com**20090204051732
1580 Ignore-this: 3e753f59c15f5787097be1ce21985c83
1581]
1582[setup: bundle new setuptools_trial-0.5.1
1583zooko@zooko.com**20090204051718
1584 Ignore-this: a28f2b48075a9383984da37c4f200121
1585]
1586[setup: bundle new setuptools_darcs-1.2.5
1587zooko@zooko.com**20090204051704
1588 Ignore-this: 7f868649d64c1e4b42a56fab3e32ea13
1589]
1590[setup: remove old bundled setuptools_darcs
1591zooko@zooko.com**20090204051640
1592 Ignore-this: f52325aca56c86573f16890c2c4fa4d7
1593]
1594[setup: remove bundled darcsver in gzipped format
1595zooko@zooko.com**20090204051628
1596 Ignore-this: d3272f89c0c3275fca83df84f221fe45
1597]
1598[setup: bundle darcsver in ungzipped format
1599zooko@zooko.com**20090204051617
1600 Ignore-this: a3a17bcaba2476577c9695911c630408
1601]
1602[docs: mention issues using flogtool on Windows
1603zooko@zooko.com**20090204033410
1604 Ignore-this: 6122bcb82eea32d2a936a59d77233743
1605]
1606[webapi: add verifycap (spelled 'verify_url') to the t=json output on files and directories. Closes #559.
1607warner@allmydata.com**20090204012248
1608 Ignore-this: 7da755304f6708b4973e4a7c1bcf8a43
1609]
1610[setup: stop trying to add specific dirs to site-dirs to work-around setuptools #17
1611zooko@zooko.com**20090203042352]
1612[setup: require and automatically use setuptools-0.6c11dev (our own toothpick of setuptools) which is bundled
1613zooko@zooko.com**20090203042323]
1614[setup: remove old bundled setuptools-0.6c10dev (our own toothpick of setuptools)
1615zooko@zooko.com**20090203042304]
1616[setup: bundle setuptools-0.6c11dev (our own toothpick of setuptools)
1617zooko@zooko.com**20090203041950
1618 Hopefully this one fixes the issue with easy_install not searching the sys.path for packages that were requested to be installed, (setuptools #17), thus allowing us to do away with the "--site-dirs=" kludges, which are currently breaking some of our buildbots.
1619]
1620[CLI: tahoe_check: stop escaping the JSON output when using --raw
1621warner@allmydata.com**20090203031232
1622 Ignore-this: c8a450a6e28731c352c0414b59861502
1623]
1624[#598: first cut of 'tahoe backup' command: no backupdb, but yes shared-unchanged-directories and Archives/TIMESTAMP and Latest/
1625warner@allmydata.com**20090203030902
1626 Ignore-this: 650df5631523b63dd138978b8f3aa372
1627]
1628[CLI: move node-url -should-end-in-slash code into a common place, so other tools can rely upon it later
1629warner@allmydata.com**20090203030856
1630 Ignore-this: dd94e011d74bcc371f36011a34230649
1631]
1632[tahoe_ls: CLI command should return rc=0, not None
1633warner@allmydata.com**20090203030720
1634 Ignore-this: 18993c782cf84edc01e4accb6f8bf31a
1635]
1636[setup: add site-dirs for Debian and for some (?) Mac OS X
1637zooko@zooko.com**20090203000955
1638 Ignore-this: ebd8b925dbe51bae390f8e8ddb429209
1639]
1640[misc/dependencies: update setuptools_trial from 0.4 to 0.5
1641warner@allmydata.com**20090202233657
1642 Ignore-this: 9e338f824287552100ac92d78d19fe19
1643]
1644[.darcs-boringfile: ignore bin/tahoe and bin/tahoe-script.py, since both are now generated
1645warner@allmydata.com**20090202230333
1646 Ignore-this: 92aa108838182076e71f0270bdba5887
1647]
1648[Makefile: fix 'clean' target to remove bin/tahoe and bin/tahoe-script.py, since both are now generated
1649warner@allmydata.com**20090202230307
1650 Ignore-this: b01f539cd85dbcbba26616224cad0146
1651]
1652[storage: disable test_large_share again: my linux laptop has less than 4 GiB free
1653zooko@zooko.com**20090131041649
1654 Ignore-this: da931a572a88699371057f932106b375
1655]
1656[web/directory: add a link from readwrite directories to a read-only version, and fix the 'SI=xxx' header to actually use the storage index, not the writekey
1657warner@allmydata.com**20090131013205
1658 Ignore-this: a1f21f81e6dbf88e591085efd1a57740
1659]
1660[uri: add abbrev_si() method, which returns the abbreviated storage index
1661warner@allmydata.com**20090131013110
1662 Ignore-this: bb3d9483570dbe0dc9ecdc1f31d8d79f
1663]
1664[setup: make sure you use darcsver whenever you are going to run trial
1665zooko@zooko.com**20090130203819
1666 Ignore-this: 2bd632d7540020c0dd893d337163d396
1667 This fixes the bug Brian had where he ran "python ./setup.py trial" and the allmydata-tahoe version number came out as 0.0.0.
1668]
1669[setup: require setuptools_trial >= 0.5, and delegate to it the job of deciding which Twisted reactor to use for the current platform
1670zooko@zooko.com**20090130043133
1671 Ignore-this: 9e354184d6c989ddf16c7e16a3295ef2
1672]
1673[Makefile: use 'setup.py test' for test/quicktest targets (instead of
1674Brian Warner <warner@allmydata.com>**20090130102536
1675 Ignore-this: da07fae8417bc54a610786bc57959c5e
1676 'setup.py trial'). 'setup.py trial' clobbers the tahoe .egg's PKG-INFO
1677 "Version:" field (resetting it to 0.0.0), possibly because it isn't invoking
1678 the darcsver subcommand that 'setup.py test' does before it runs the 'trial'
1679 subcommand.
1680 
1681 This slows down quicktest by another couple of seconds (see #591) and adds
1682 more noise to its output, but without this change, 'make test' and 'make
1683 quicktest' fail on test_runner (which spawns bin/tahoe as a subprocess, and
1684 with a mangled Version:, the setuptools-based entry point script refuses to
1685 recognize our source tree as a usable version of Tahoe).
1686]
1687[Makefile: remove the obsolete stats-gatherer-run target
1688warner@allmydata.com**20090130010131
1689 Ignore-this: c6f278f8f8fafcd23fb942aa681c842e
1690]
1691[setup: remove the "build three times in a row" kludge now that #229 is fixed, and spell build "build" instead of "build_tahoe"
1692zooko@zooko.com**20090129195952
1693 Ignore-this: e50ec860284fbc13d37cdc50bc09390a
1694]
1695[setup: require darcsver >= 1.2.0 and rely exclusively on darcsver to set the version string
1696zooko@zooko.com**20090129185640
1697 Ignore-this: b7ed63526015c0769812f3c6f2342b8c
1698]
1699[setup: add new bundled darcsver-1.2.0
1700zooko@zooko.com**20090129185115
1701 Ignore-this: 2e58040639d589205ad79d96d95c076f
1702]
1703[setup: remove old bundled darcsver-1.1.8
1704zooko@zooko.com**20090129185102
1705 Ignore-this: f4c735ebb71ec4bf9e4a10bcbe959573
1706]
1707[setup: add doc explaining why we set zip_safe=False
1708zooko@zooko.com**20090129174802
1709 Ignore-this: 7dd345f33bd10b9a362980bfb904ca60
1710]
1711[setup: setup.cfg aliases get expanded only once, so put everything you want to happen during the "test" step in the alias
1712zooko@zooko.com**20090129165815
1713 Ignore-this: fcf87cf9592410a7b9a5150f2ccd3a13
1714]
1715[setup: invoke darcsver whenever doing an sdist
1716zooko@zooko.com**20090129165125
1717 Ignore-this: 88b9bf4fae0303250ada810d351b566
1718]
1719[setup: more verbose assertion failure in test_runner
1720zooko@zooko.com**20090129164906
1721 Ignore-this: 2d657efb77e1bc562e628e51c8fb6236
1722]
1723[setup: subclass setuptools.Command instead of distutils Command
1724zooko@zooko.com**20090129130058
1725 Ignore-this: 8ef3cbf8cd11a5f3451854aa3298c826
1726 There's almost no difference between them, but let's be consistent try to use the setuptools API as it was intended.
1727]
1728[setup: temporarily comment-out the horrible kludge to work-around setuptools #17, while I figure out how to solve it better
1729zooko@zooko.com**20090129130000
1730 Ignore-this: 9e42491cfa8042c90a6a96081c00a053
1731]
1732[setup: always create a support dir and populate it with a site-packages and add same to the PYTHONPATH, just in case someone is going to do "build", "develop", or "test" or something else which triggers a build
1733zooko@zooko.com**20090129045608
1734 Ignore-this: d3740cd285f1d30a111536863a8e8457
1735 I think there must be a much better solution for this -- probably to fix setuptools #54 and ship our own fork of setuptools and rely on it.
1736]
1737[setup: if any of "build", "develop", or "test" appear in the sys.argv then that means we'll be doing a develop, so add the workarounds for setuptools #17 in any case
1738zooko@zooko.com**20090129045534
1739 Ignore-this: 38645dfadf3ba7b42370e795b7c90214
1740 I think there must be a much better solution for this -- probably to fix setuptools #17 and ship our own fork of setuptools and rely on it.
1741]
1742[setup: add metadata indicating compatibility with python 2.6
1743zooko@zooko.com**20090129002628
1744 Ignore-this: ca9af281354ed62f654d6b15267c8d6b
1745]
1746[setup: a new improved way to create tahoe executables
1747zooko@zooko.com**20090129000716
1748 Ignore-this: d1b038ab8efb949125d7592ebcceccba
1749 Create the 'tahoe-script.py' file under the 'bin' directory. The 'tahoe-script.py' file is exactly the same as the 'tahoe-script.template' script except that the shebang line is rewritten to use our sys.executable for the interpreter. On Windows, create a tahoe.exe will execute it.  On non-Windows, make a symlink to it from 'tahoe'.  The tahoe.exe will be copied from the setuptools egg's cli.exe and this will work from a zip-safe and non-zip-safe setuptools egg.
1750]
1751[storage: enable the test of a share larger than 2 GiB; this will probably be too expensive on Mac OS X, but I think it won't be on all the other platforms ; I will probably set it to SkipTest if the sys.platform is Mac after seeing the results of this buildbot run
1752zooko@zooko.com**20090128223312
1753 Ignore-this: 1b08b73b8f9ec4b5f629b734c556f2ed
1754]
1755[setup: bundle darcsver-1.1.8
1756zooko@zooko.com**20090128200326
1757 Ignore-this: e2923c03860a45f4a49d79bd51acba77
1758]
1759[setup: remove old bundled dependency darcsver-1.1.5
1760zooko@zooko.com**20090128182012
1761 Ignore-this: db20eeded096231e9d1da397d595c39d
1762]
1763[CLI: fix examples in tahoe put --help
1764warner@allmydata.com**20090127213909
1765 Ignore-this: 1fe319f70c3791482bb381c06d4a066b
1766]
1767[trivial: remove unused imports noticed by pyflakes
1768zooko@zooko.com**20090127211148
1769 Ignore-this: aee8bae8aa6f641fe15c5fe947d92f77
1770]
1771[setup: fix test_runner to invoke bin/tahoe.exe instead of bin/tahoe if on Windows (this is what happens when a user invokes bin/tahoe on Windows)
1772zooko@zooko.com**20090127203717
1773 Ignore-this: e8795f2d3c70e871839d893bdfec0186
1774]
1775[setup: fix test_runner to assert that lines which are output to stderr must end with a punctuation mark (apparently re.search("x$", "x\r\n") does not match.  :-()
1776zooko@zooko.com**20090127203505
1777 Ignore-this: d323b364d7cafb4c5847c0cc8346702e
1778]
1779[setup: fix test_runner.RunNode.test_baddir -- it was left incomplete and broken by a recent patch
1780zooko@zooko.com**20090127203245
1781 Ignore-this: fee5c807945f45bce4919106771914f3
1782]
1783[setup: hack the sys.argv to set poll reactor if "python ./setup.py test" in addition to if "python ./setup.py trial"; remove another hack which has been moved setup.cfg; remove setup_requires Twisted since now we actually setup_require setuptools_trial and it install_requires Twisted.
1784zooko@zooko.com**20090127044046
1785 Ignore-this: 38c5afd730024cca63bc84f8ab7100f4
1786]
1787[setup: go ahead and check for noise in test_client_no_noise
1788zooko@zooko.com**20090126234616
1789 Ignore-this: dff1a3511fdfad1a61fe73e4277c8981
1790]
1791[setup: always run "build" before running "test"
1792zooko@zooko.com**20090126233240
1793 Ignore-this: 8cf76347ba24f02023f1690a470569df
1794]
1795[setup: add a test for a warning message from importing nevow, marked as TODO, comment-out the assertion of no-noise inside other test_runner tests
1796zooko@zooko.com**20090126233046
1797 Ignore-this: 6b1554ed9268988fd65b8e8aac75ed4e
1798]
1799[setup: always run build_tahoe before running tests
1800zooko@zooko.com**20090126233024
1801 Ignore-this: da31145fa86a61a307dc5dcc4debc0bb
1802]
1803[diskwatcher: cache growth results (which take 30s to generate) for 3 minutes, to help munin, which invokes it 6 times in a row every 5 minutes
1804warner@lothar.com**20090125230639]
1805[make streaming-manifest stop doing work after the HTTP connection is dropped
1806warner@allmydata.com**20090124013908]
1807[setup: sys.exit() raises a SystemExit exception on Python 2.4 on Solaris -- fix it so that bin/tahoe doesn't interpret this as its brother having been non-executable
1808zooko@zooko.com**20090124004911
1809 Ignore-this: 117db7036306bbe8b5008d18ba23cb9b
1810]
1811[setup: find a "bin/tahoe" executable to test based on allmydata.__file__ instead of based on the CWD
1812zooko@zooko.com**20090124003437
1813 Ignore-this: 25282068ce695c12a2b1f23c6fd2b205
1814 This means that the tests still work if you are executing them from a CWD other than the src dir -- *if* the "bin/tahoe" is found at os.path.dirname(os.path.dirname(os.path.dirname(allmydata.__file__))).
1815 If no file is found at that location, then just skip the tests of executing the "tahoe" executable, because we don't want to accidentally run those tests against an executable from a different version of tahoe.
1816]
1817[rollback the #591 fix, since it breaks quicktest entirely
1818warner@allmydata.com**20090123232812]
1819[#509: remove non-streaming 'tahoe manifest' CLI form
1820warner@allmydata.com**20090123230002]
1821[CLI.txt: improve docs on 'tahoe manifest' to cover --verify-cap, --repair-cap, and streaming JSON
1822warner@allmydata.com**20090123225939]
1823[#509 CLI: add 'tahoe manifest --stream'
1824warner@allmydata.com**20090123223321]
1825[#509: test_system.py: add test for streamed-manifest
1826warner@allmydata.com**20090123223247]
1827[test_system: rearrange DeepCheckWebGood to make it easier to add CLI tests
1828warner@allmydata.com**20090123221306]
1829[setup: use "trial" executable instead of the setuptools_trial plugin for "make quicktest"
1830zooko@zooko.com**20090123225830
1831 Ignore-this: f70fb8873e0ac94f0c55e57f0f826334
1832 This is to fix #591 ("make quicktest" could be quicker and less noisy).  This means that "make quicktest" won't work unless the user has manually installed Twisted already such that the "trial" executable is on their PATH and the Twisted package is on their PYTHONPATH.  This bypasses the behavior of setuptools_trial which builds and checks package dependencies before executing the tests.
1833]
1834[CLI: remove the '-v' alias for --version-and-path, to free up '-v' for more traditional uses (like --verbose)
1835warner@allmydata.com**20090123212150]
1836[#590: add webish t=stream-manifest
1837warner@allmydata.com**20090123040136]
1838[dirnode: add get_repair_cap()
1839warner@allmydata.com**20090123034449]
1840[dirnode.deep_traverse: fix docstring to describe the correct return value
1841warner@allmydata.com**20090123033950]
1842[filenode: add get_repair_cap(), which uses the read-write filecap for immutable files, and the verifycap for immutable files
1843warner@allmydata.com**20090123033836]
1844[setup: make the bin/tahoe executable exit with the appropriate exit code
1845zooko@zooko.com**20090122215405
1846 Ignore-this: 98fc14e578be45b7c1b527fc7ace73b1
1847]
1848[setup: add test that the tests are testing the right source code
1849zooko@zooko.com**20090122215240
1850 Ignore-this: f56c1bc525924154042fefa5d30b04f6
1851 This is a test of #145, and I think that now the code passes this test.
1852]
1853[trivial: removed unused imports noticed by pyflakes
1854zooko@zooko.com**20090122215213
1855 Ignore-this: a83aa1f27b31a72aed07caa866abfafe
1856]
1857[setup: change test_runner to invoke "bin/tahoe" in a subprocess instead of executing runner.runner()
1858zooko@zooko.com**20090122213818
1859 Ignore-this: f7ef67adf1b9508617c9a7d305191627
1860 This is necessary because loading allmydata code now depends on PYTHONPATH manipulation which is done in the "bin/tahoe" script.  Unfortunately it makes test_runner slower since it launches and waits for many subprocesses.
1861]
1862[setup: fix "tahoe start" to work on Windows even when a Tahoe base dir hasn't been configured in the Windows registry
1863zooko@zooko.com**20090121184720
1864 Ignore-this: ba147a8f75e8aa9cdc3ee0a56dbf7413
1865]
1866[docs: trivial naming change
1867zooko@zooko.com**20090121025042
1868 Ignore-this: a9c2fe6119c43683c6f88662e60de306
1869]
1870[rollback the feature of making "ambient upload authority" configurable
1871zooko@zooko.com**20090121024735
1872 Ignore-this: 3fcea1b8179e6278adc360414b527b8b
1873 
1874 This reverses some, but not all, of the changes that were committed in the following set of patches.
1875 
1876 rolling back:
1877 
1878 Sun Jan 18 09:54:30 MST 2009  toby.murray
1879   * add 'web.ambient_upload_authority' as a paramater to tahoe.cfg
1880 
1881     M ./src/allmydata/client.py -1 +3
1882     M ./src/allmydata/test/common.py -7 +9
1883     A ./src/allmydata/test/test_ambient_upload_authority.py
1884     M ./src/allmydata/web/root.py +12
1885     M ./src/allmydata/webish.py -1 +4
1886 Sun Jan 18 09:56:08 MST 2009  zooko@zooko.com
1887   * trivial: whitespace
1888   I ran emacs's "M-x whitespace-cleanup" on the files that Toby's recent patch had touched that had trailing whitespace on some lines.
1889 
1890     M ./src/allmydata/test/test_ambient_upload_authority.py -9 +8
1891     M ./src/allmydata/web/root.py -2 +1
1892     M ./src/allmydata/webish.py -2 +1
1893 Mon Jan 19 14:16:19 MST 2009  zooko@zooko.com
1894   * trivial: remove unused import noticed by pyflakes
1895 
1896     M ./src/allmydata/test/test_ambient_upload_authority.py -1
1897 Mon Jan 19 21:38:35 MST 2009  toby.murray
1898   * doc: describe web.ambient_upload_authority
1899 
1900     M ./docs/configuration.txt +14
1901     M ./docs/frontends/webapi.txt +11
1902 Mon Jan 19 21:38:57 MST 2009  zooko@zooko.com
1903   * doc: add Toby Murray to the CREDITS
1904 
1905     M ./CREDITS +4
1906]
1907[setup: add new bundled setuptools_trial-0.4
1908zooko@zooko.com**20090120234012
1909 Ignore-this: f260255f657af2792beac9314fdc9ab4
1910]
1911[setup: remove old bundled setuptools_trial-0.2
1912zooko@zooko.com**20090120233918
1913 Ignore-this: 6fce4d5106357981871ba0b8c7fb464e
1914]
1915[setup: require darcsver always, and not just when we see the string "darcsver" in sys.argv, because the new aliases hack means that the string might not appear in sys.argv
1916zooko@zooko.com**20090120184229
1917 Ignore-this: beecca08d9f59704be7ef1aeca6fd779
1918]
1919[setup: fix test_system to require tahoe under its package==distribution name "allmydata-tahoe" instead of its module name "allmydata"
1920zooko@zooko.com**20090120183809
1921 Ignore-this: 51e925c03dbcb9ccf1d7ee34c91c6e72
1922]
1923[setup: use setup.cfg aliases to map "setup.py test" to "setup.py trial" and "setup.py build" to "setup.py darcsver --count-all-patches build_tahoe"
1924zooko@zooko.com**20090120183723
1925 Ignore-this: f390676787f4d521c17fbe96fb2cd2a6
1926 Thanks to dpeterson for the suggestion.
1927]
1928[doc: add Toby Murray to the CREDITS
1929zooko@zooko.com**20090120043857
1930 Ignore-this: eedb7e9d47ddee5cbe189b55251d0859
1931]
1932[doc: describe web.ambient_upload_authority
1933toby.murray**20090120043835
1934 Ignore-this: cc1920b2c5d4d587af84c4d251ad0e4b
1935]
1936[trivial: remove unused import noticed by pyflakes
1937zooko@zooko.com**20090119211619
1938 Ignore-this: 4999f513a5c8d73ed8f79c2b012fea6b
1939]
1940[setup: simplify install.html a tad
1941zooko@zooko.com**20090119210447
1942 Ignore-this: 529b2f225b3d98ed3bc99a4962e781ee
1943]
1944[setup: refactor versions-and-paths and use pkg_resources to find them
1945zooko@zooko.com**20090119210435
1946 Ignore-this: b368d8ede7531f1d79ee3c2c1a2cc116
1947 Using pkg_resources is probably better if it works -- zope.interface doesn't have a __version__ attribute that we can query, but pkg_resources knows zope.interface's version number, for one thing.
1948 This code falls back to the old way -- looking at the __version__ attributes and __file__ attributes -- if the pkg_resources way doesn't answer.
1949 Note that this patch also changes the capitalization of "Nevow", "Twisted", and "pyOpenSSL", and the spelling of "allmydata-tahoe".  These changes are not frivolous: they are reflecting the fact that we are naming Python packages (technically called Python "distributions") instead of Python modules (technically and confusingly called Python "packages") here.  The package ("distribution") is named "allmydata-tahoe".  The module ("package") is named "allmydata".
1950]
1951[setup: undo (for the second time) the use of the --multi-version feature
1952zooko@zooko.com**20090119205352
1953 Ignore-this: 80bdbb488c3e4fb042bcd968a9bc120a
1954 When this feature is turned on, then setuptools doesn't create easy-install.pth, setuptools.pth, or site.py in the target site-packages dir.  I don't know why not and we should probably open a ticket on the setuptools tracker and/or hack setuptools to create those files anyway.  But for now (for the Tahoe-1.3.0 release), we're going to leave --multi-version mode off and require users to manually uninstall any packages which are too old and thus conflict with our newer dependencies.
1955 
1956]
1957[trivial: whitespace
1958zooko@zooko.com**20090118165815
1959 Ignore-this: 6f97042f221da3ad931c6b545edc6a30
1960 Ran "M-x whitespace-cleanup" on files that Toby's recent patch touched, even though they didn't have trailing whitespace.
1961]
1962[trivial: whitespace
1963zooko@zooko.com**20090118165608
1964 Ignore-this: 8539e7e73e43f459f7b82e84dface95c
1965 I ran emacs's "M-x whitespace-cleanup" on the files that Toby's recent patch had touched that had trailing whitespace on some lines.
1966]
1967[trivial: whitespace
1968zooko@zooko.com**20090118165458
1969 Ignore-this: dedfb44829ea73f0e39f582f16112506
1970]
1971[add 'web.ambient_upload_authority' as a paramater to tahoe.cfg
1972toby.murray**20090118165430
1973 Ignore-this: 2c6ed484009c03fe9db1bb6eb67500ff
1974]
1975[doc: add Larry Hosken to CREDITS
1976zooko@zooko.com**20090117164943
1977 Ignore-this: f2433a296ab2485872d22538bd0f64b2
1978]
1979[run build_tahoe command with trial commmand
1980cgalvan@mail.utexas.edu**20090117000047]
1981[adding multi-version support
1982cgalvan@mail.utexas.edu**20090116230326]
1983[setup: addition of setuptools_trial egg to the base dir is boring from the point of view of revision control
1984zooko@zooko.com**20090116200554
1985 Ignore-this: 63dd48c06356f638ca85c5e4a25457b1
1986]
1987[prevent --site-dirs from being passed to the 'install' command
1988cgalvan@mail.utexas.edu**20090116195732]
1989[add option to show version and path to the tahoe executable
1990cgalvan@mail.utexas.edu**20090116184751]
1991[More lossmodel work, on repair.
1992Shawn Willden <shawn-tahoe@willden.org>**20090116025648]
1993[setup: put back configuration of the PYTHONPATH which is necessary to build the Windows packages
1994zooko@zooko.com**20090115023751
1995 Ignore-this: 936b4d58babb84d1766695ad8c61ced7
1996]
1997[node.py: use NODEDIR/tmp for the 'tempfile' module's temporary directory, so webapi upload tempfiles are put there instead of /tmp . You can set it to something else by setting [node]tempdir in tahoe.cfg
1998warner@allmydata.com**20090115020015]
1999[web/operations: undo the disable-ophandle-expiration change that inadvertently got included in zooko's recent 'rename wapi.txt to webapi.txt' patch, causing test failures
2000warner@allmydata.com**20090115011459]
2001[Loss model work (temp1)
2002Shawn Willden <shawn@willden.org>**20090115030058]
2003[cli: tests: skip symlink test if there is no os.symlink
2004zooko@zooko.com**20090115001010
2005 Ignore-this: 4987fea4fe070c2dd5ff75401fbf89e1
2006]
2007[webapi.txt: explain POST /uri/?t=upload, thanks to Toby Murray for the catch
2008warner@allmydata.com**20090115000803]
2009[mutable: move recent operation history management code (MutableWatcher) into history.py, have History provide stats
2010warner@allmydata.com**20090114233620]
2011[download: tiny cleanup of history code
2012warner@allmydata.com**20090114224151]
2013[upload: move upload history into History object
2014warner@allmydata.com**20090114224106]
2015[immutable/download.py move recent-downloads history out of Downloader and into a separate class. upload/etc will follow soon.
2016warner@allmydata.com**20090114221424]
2017[docs: rename wapi.txt to webapi.txt
2018zooko@zooko.com**20090114195348
2019 Ignore-this: 419685f2807714bab4069fbaa3a02c1c
2020 Because Brian argues that the file contains a description of the wui as well as of the wapi, and because the name "webapi.txt" might be more obvious to the untrained eye.
2021]
2022[setup: configure setup.cfg to point setuptools at the index.html page instead of straight at the tahoe directory listing
2023zooko@zooko.com**20090114185023
2024 Ignore-this: 71e06cbbd91397f3e12109e48d3f8a81
2025 This is necessary, because if setuptools looks at the directory listing, then it follows the link named "More Info" in attempt to download the file, and this fails.
2026]
2027[setup: fix previous patch to set reactor to poll reactor on linux or cygwin
2028zooko@zooko.com**20090114164022
2029 Ignore-this: 9e37242ca3cfd47c6f69ee2438ec743b
2030]
2031[setup: use poll reactor for trial if on linux2 or cygwin
2032zooko@zooko.com**20090114151546
2033 Ignore-this: f6c4b45745527811c9f72448d74649f5
2034]
2035[docs: rename frontends/webapi.txt to frontends/wapi.txt
2036zooko@zooko.com**20090114025143
2037 Ignore-this: c35acd8dc7c1106ca31104b6db43e5ad
2038 rename CLI.txt to frontends/CLI.txt
2039 change a few mentions of "webapi" to "wapi"
2040 fixes #582
2041]
2042[Statistics module
2043Shawn Willden <shawn-tahoe@willden.org>**20090114021235
2044 
2045 Added a statistics module for calculating various facets of
2046 share survival statistics.
2047]
2048[upload: use WriteBucketProxy_v2 when uploading a large file (with shares larger than 4GiB). This finally closes #346. I think we can now handle immutable files up to 48EiB.
2049warner@allmydata.com**20090113021442]
2050[deep-check-and-repair: improve results and their HTML representation
2051warner@allmydata.com**20090113005619]
2052[test_repairer.py: hush pyflakes: remove duplicate/shadowed function name, by using the earlier definition (which is identical)
2053warner@allmydata.com**20090112214509]
2054[hush pyflakes by removing unused imports
2055warner@allmydata.com**20090112214120]
2056[immutable repairer
2057zooko@zooko.com**20090112170022
2058 Ignore-this: f17cb07b15a554b31fc5203cf4f64d81
2059 This implements an immutable repairer by marrying a CiphertextDownloader to a CHKUploader.  It extends the IDownloadTarget interface so that the downloader can provide some metadata that the uploader requires.
2060 The processing is incremental -- it uploads the first segments before it finishes downloading the whole file.  This is necessary so that you can repair large files without running out of RAM or using a temporary file on the repairer.
2061 It requires only a verifycap, not a readcap.  That is: it doesn't need or use the decryption key, only the integrity check codes.
2062 There are several tests marked TODO and several instances of XXX in the source code.  I intend to open tickets to document further improvements to functionality and testing, but the current version is probably good enough for Tahoe-1.3.0.
2063]
2064[util: dictutil: add DictOfSets.union(key, values) and DictOfSets.update(otherdictofsets)
2065zooko@zooko.com**20090112165539
2066 Ignore-this: 84fb8a2793238b077a7a71aa03ae9d2
2067]
2068[setup: update doc in setup.cfg
2069zooko@zooko.com**20090111151319
2070 Ignore-this: 296bfa1b9dbdac876f2d2c8e4e2b1294
2071]
2072[setup: Point setuptools at a directory on the allmydata.org test grid to find dependencies.
2073zooko@zooko.com**20090111151126
2074 Ignore-this: f5b6a8f5ce3ba08fea2573b5c582aba8
2075 Don't include an unrouteable IP address in find_links (fixes #574).
2076]
2077[immutable: separate tests of immutable upload/download from tests of immutable checking/repair
2078zooko@zooko.com**20090110210739
2079 Ignore-this: 9e668609d797ec86a618ed52602c111d
2080]
2081[trivial: minor changes to in-line comments -- mark plaintext-hash-tree as obsolete
2082zooko@zooko.com**20090110205601
2083 Ignore-this: df286154e1acde469f28e9bd00bb1068
2084]
2085[immutable: make the web display of upload results more human-friendly, like they were before my recent change to the meaning of the "sharemap"
2086zooko@zooko.com**20090110200209
2087 Ignore-this: 527d067334f982cb2d3e185f72272f60
2088]
2089[immutable: fix edit-o in interfaces.py documentation introduced in recent patch
2090zooko@zooko.com**20090110185408
2091 Ignore-this: f255d09aa96907c402583fc182379391
2092]
2093[immutable: redefine the "sharemap" member of the upload results to be a map from shnum to set of serverids
2094zooko@zooko.com**20090110174623
2095 Ignore-this: 10300a2333605bc26c4ee9c7ab7dae10
2096 It used to be a map from shnum to a string saying "placed this share on XYZ server".  The new definition is more in keeping with the "sharemap" object that results from immutable file checking and repair, and it is more useful to the repairer, which is a consumer of immutable upload results.
2097]
2098[naming: finish renaming "CheckerResults" to "CheckResults"
2099zooko@zooko.com**20090110000052
2100 Ignore-this: b01bd1d066d56eff3a6322e0c3a9fbdc
2101]
2102[storage.py : replace 4294967295 with 2**32-1: python does constant folding, I measured this statement as taking 50ns, versus the 400ns for the call to min(), or the 9us required for the 'assert not os.path.exists' syscall
2103warner@allmydata.com**20090110015222]
2104[storage.py: announce a maximum-immutable-share-size based upon a 'df' of the disk. Fixes #569, and this should be the last requirement for #346 (remove 12GiB filesize limit)
2105warner@allmydata.com**20090110013736]
2106[set bin/tahoe executable permissions and leave build_tahoe in sys.argv
2107cgalvan@mail.utexas.edu**20090109210640]
2108[setup: merge relaxation of the version of setuptools that we require at runtime with an indentation change
2109zooko@zooko.com**20090109190949
2110 Ignore-this: eb396c71563b9917c8a485efc5bebb36
2111]
2112[setup: remove custom Trial class inside our setup.py and use the setuptools_trial plugin
2113zooko@zooko.com**20081205232207
2114 Ignore-this: e0f68169e8ac1b5a54b796e8905c7b80
2115]
2116[setup: we require pywin32 if building on Windows (plus some formatting and comment fixes)
2117zooko@zooko.com**20081205231911
2118 Ignore-this: c1d1966cfe458a6380bfd5dce09010ff
2119]
2120[fix bin/tahoe executable for Windows
2121cgalvan@mail.utexas.edu**20090109184222]
2122[use subprocess.call instead of os.execve in bin/tahoe
2123cgalvan@mail.utexas.edu**20090109180300]
2124[setup: attempt to remove the custom setuptools-ish logic in setup.py -- the result works on my Windows box but doesn't yield a working ./bin/tahoe on Windows, and hasn't been tested yet on other platforms
2125zooko@zooko.com**20081205233054
2126 Ignore-this: 843e7514870d7a4e708646acaa7c9699
2127]
2128[setup: integrate the bundled setuptools_trial plugin with Chris Galvan's patch to use that plugin
2129zooko@zooko.com**20081201174804
2130 Ignore-this: 5d03e936cf45f67a39f993704024788c
2131]
2132[use_setuptools_trial.patch
2133cgalvan@mail.utexas.edu**20081121205759]
2134[setup: bundle setuptools_trial in misc/dependencies/
2135zooko@zooko.com**20081201174438
2136 Ignore-this: f13a4a1af648f9ab9b3b3438cf94053f
2137]
2138[test_helper: hush pyflakes by avoiding use of 'uri' as a variable, since it shadows an import of the same name
2139warner@allmydata.com**20090109025941]
2140[immutable/checker: include a summary (with 'Healthy' or 'Not Healthy' and a count of shares) in the checker results
2141warner@allmydata.com**20090109020145]
2142[webapi/deep-manifest t=JSON: don't return the (large) manifest/SI/verifycap lists unless the operation has completed, to avoid the considerable CPU+memory cost of creating the JSON (for 330k dirnodes, it could take two minutes to generate 275MB of JSON). They must be paid eventually, but not on every poll
2143warner@allmydata.com**20090109015932]
2144[dirnode deep-traversal: remove use of Limiter, stick with strict depth-first-traversal, to reduce memory usage during very large (300k+ dirnode) traversals
2145warner@allmydata.com**20090109014116]
2146[immutable: add a monitor API to CiphertextDownloader with which to tell it to stop its work
2147zooko@zooko.com**20090108204215
2148 Ignore-this: f96fc150fa68fc2cec46c943171a5d48
2149]
2150[naming: Rename a few things which I touched or changed in the recent patch to download-without-decrypting.
2151zooko@zooko.com**20090108181307
2152 Ignore-this: 495ce8d8854c5db5a09b35b856809fba
2153 Rename "downloadable" to "target".
2154 Rename "u" to "v" in FileDownloader.__init__().
2155 Rename "_uri" to "_verifycap" in FileDownloader.
2156 Rename "_downloadable" to "_target" in FileDownloader.
2157 Rename "FileDownloader" to "CiphertextDownloader".
2158]
2159[immutable: refactor download to do only download-and-decode, not decryption
2160zooko@zooko.com**20090108175349
2161 Ignore-this: 1e4f26f6390a67aa5714650017c4dca1
2162 FileDownloader takes a verify cap and produces ciphertext, instead of taking a read cap and producing plaintext.
2163 FileDownloader does all integrity checking including the mandatory ciphertext hash tree and the optional ciphertext flat hash, rather than expecting its target to do some of that checking.
2164 Rename immutable.download.Output to immutable.download.DecryptingOutput. An instance of DecryptingOutput can be passed to FileDownloader to use as the latter's target.  Text pushed to the DecryptingOutput is decrypted and then pushed to *its* target.
2165 DecryptingOutput satisfies the IConsumer interface, and if its target also satisfies IConsumer, then it forwards and pause/unpause signals to its producer (which is the FileDownloader).
2166 This patch also changes some logging code to use the new logging mixin class.
2167 Check integrity of a segment and decrypt the segment one block-sized buffer at a time instead of copying the buffers together into one segment-sized buffer (reduces peak memory usage, I think, and is probably a tad faster/less CPU, depending on your encoding parameters).
2168 Refactor FileDownloader so that processing of segments and of tail-segment share as much code is possible.
2169 FileDownloader and FileNode take caps as instances of URI (Python objects), not as strings.
2170]
2171[trivial: tiny changes to test code
2172zooko@zooko.com**20090108172048
2173 Ignore-this: b1a434cd40a87c3d027fef4ce609d25c
2174]
2175[immutable: Make more parts of download use logging mixins and know what their "parent msg id" is.
2176zooko@zooko.com**20090108172530
2177 Ignore-this: a4296b5f9b75933d644fd222e1fba079
2178]
2179[trivial: M-x whitespace-cleanup on src/immutable/download.py
2180zooko@zooko.com**20090108164901
2181 Ignore-this: bb62daf511e41a69860be657cde8df04
2182]
2183[immutable: ValidatedExtendedURIProxy computes and stores the tail data size as a convenience to its caller.
2184zooko@zooko.com**20090108164139
2185 Ignore-this: 75c561d73b17418775faafa60fbbd45b
2186 The "tail data size" is how many of the bytes of the tail segment are data (as opposed to padding).
2187]
2188[immutable: define a new interface IImmutableFileURI and declare that CHKFileURI and LiteralFileURI provide it
2189zooko@zooko.com**20090107182451
2190 Ignore-this: 12c256a0d20655cd73739d45fff0d4d8
2191]
2192[util: log: allow empty msgs (because downloader is using the "format" alternative with no "msg" argument)
2193zooko@zooko.com**20090107175411
2194 Ignore-this: 832c333bf027a30a2fcf96e462297ac5
2195]
2196['tahoe cp -r', upon encountering a dangling symlink, would assert out.
2197Larry Hosken <tahoe at lahosken.san-francisco.ca.us>**20090108055114
2198 Ignore-this: 46e75845339faa69ffb3addb7ce74f28
2199 This was somewhat sad; the assertion didn't say what path caused the
2200 error, what went wrong.  So... silently skip over things that are
2201 neither dirs nor files.
2202]
2203[immutable: fix error in validation of ciphertext hash tree and add test for that code
2204zooko@zooko.com**20090108054012
2205 Ignore-this: 3241ce66373ebc514ae6e6f086f6daa2
2206 pyflakes pointed out to me that I had committed some code that is untested, since it uses an undefined name.  This patch exercises that code -- the validation of the ciphertext hash tree -- by corrupting some of the share files in a very specific way, and also fixes the bug.
2207]
2208[immutable: do not catch arbitrary exceptions/failures from the attempt to get a crypttext hash tree -- catch only ServerFailure, IntegrityCheckReject, LayoutInvalid, ShareVersionIncompatible, and DeadReferenceError
2209zooko@zooko.com**20090108042551
2210 Ignore-this: 35f208af1b9f8603df25ed69047360d1
2211 Once again I inserted a bug into the code, and once again it was hidden by something catching arbitrary exception/failure and assuming that it means the server failed to provide valid data.
2212]
2213[download: make sure you really get all the crypttext hashes
2214zooko@zooko.com**20090108022638
2215 Ignore-this: c1d5ebb048e81f706b9098e26876e040
2216 We were not making sure that we really got all the crypttext hashes during download.  If a server were to return less than the complete set of crypttext hashes, then our subsequent attempt to verify the correctness of the ciphertext would fail.  (And it wouldn't be obvious without very careful debugging why it had failed.)
2217 This patch makes it so that you keep trying to get ciphertext hashes until you have a full set or you run out of servers to ask.
2218]
2219[util: deferredutil: undo my recent patch to use our own implementation of gatherResults
2220zooko@zooko.com**20090107170005
2221 Ignore-this: c8c5421b47ab5a83c7ced8b08add80e8
2222 It seems to cause lots of failures on some builders.
2223]
2224[util: deferredutil: implement our own gatherResults instead of using Twisted's
2225zooko@zooko.com**20090107163207
2226 Ignore-this: aa676b2b6cfb73bbca15827cb7c0a43e
2227 Because we want to maintain backwards compatibility to Twisted 2.4.0.
2228]
2229[trivial: M-x whitespace-cleanup
2230zooko@zooko.com**20090107162528
2231 Ignore-this: 69bef4518477ca875785f0e0b8ab0000
2232]
2233[util: deferredutil: add basic test for deferredutil.gatherResults
2234zooko@zooko.com**20090107141342
2235 Ignore-this: ad457053c8ee3a04921fdcdb639c03d
2236 Also I checked and Twisted 2.4.0 supports .subFailure and the other parts of the API that we require.
2237]
2238[trivial: fix redefinition of name "log" in imports (pyflakes)
2239zooko@zooko.com**20090107040829
2240 Ignore-this: cdcf7ff84082323ebc022b186127e678
2241]
2242[immutable: refactor uploader to do just encoding-and-uploading, not encryption
2243zooko@zooko.com**20090107034822
2244 Ignore-this: 681f3ad6827a93f1431d6e3f818840a9
2245 This makes Uploader take an EncryptedUploadable object instead of an Uploadable object.  I also changed it to return a verify cap instead of a tuple of the bits of data that one finds in a verify cap.
2246 This will facilitate hooking together an Uploader and a Downloader to make a Repairer.
2247 Also move offloaded.py into src/allmydata/immutable/.
2248]
2249[trivial: whitespace and docstring tidyups
2250zooko@zooko.com**20090107034104
2251 Ignore-this: 34db3eec599efbb2088a87333abfb797
2252]
2253[storage.py: explain what this large and hard-to-recognize 4294967295 number is
2254warner@allmydata.com**20090106195721]
2255[rename "checker results" to "check results", because it is more parallel to "check-and-repair results"
2256zooko@zooko.com**20090106193703
2257 Ignore-this: d310e3d7f42a76df68536650c996aa49
2258]
2259[immutable: tests: verifier doesn't always catch corrupted share hashes
2260zooko@zooko.com**20090106190449
2261 Ignore-this: a9be83b8e2350ae9af808476015fe0e4
2262 Maybe it already got one of the corrupted hashes from a different server and it doesn't double-check that the hash from every server is correct.  Or another problem.  But in any case I'm marking this as TODO because an even better (more picky) verifier is less urgent than repairer.
2263]
2264[immutable: fix the writing of share data size into share file in case the share file is used by a < v1.3.0 storage server
2265zooko@zooko.com**20090106182404
2266 Ignore-this: 7d6025aba05fe8140bb712e71e89f1ba
2267 Brian noticed that the constant was wrong, and in fixing that I noticed that we should be saturating instead of modding.
2268 This code would never matter unless a server downgraded or a share migrated from Tahoe >= v1.3.0 to Tahoe < v1.3.0.  Even in that case, this bug would never matter unless the share size were exactly 4,294,967,296 bytes long.
2269 Brian, for good reason, wanted this to be spelled "2**32" instead of "4294967296", but I couldn't stand to see a couple of more Python bytecodes interpreted in the middle of a core, frequent operation on the server like immutable share creation.
2270 
2271]
2272[trivial: whitespace cleanup
2273zooko@zooko.com**20090106172058
2274 Ignore-this: 50ee40d42cc8d8f39d2f8ed15f6790d4
2275]
2276[util: base32: require str-not-unicode inputs -- effectively rolls back [3306] and [3307]
2277zooko@zooko.com**20090106164122
2278 Ignore-this: 1030c2d37e636d194c99ec99707ae86f
2279]
2280[trivial: fix a bunch of pyflakes complaints
2281zooko@zooko.com**20090106140054
2282 Ignore-this: 9a515a237248a148bcf8db68f70566d4
2283]
2284[cli: make startstop_node wait 40 seconds instead of 20 for a process to go away after we signalled it to go away, before emitting a warning
2285zooko@zooko.com**20090106135106
2286 Ignore-this: 2da4b794b6a7e2e2ad6904cce61b0f10
2287 Because the unit tests on the VirtualZooko? buildslave failed when it took 31 seconds for a process to go away.
2288 Perhaps getting warning message after only 5 seconds instead of 40 seconds is desirable, and we should change the unit tests and set this back to 5, but I don't know exactly how to change the unit tests. Perhaps match this particular warning message about the shutdown taking a while and allow the code under test to pass if the only stderr that it emits is this warning.
2289]
2290[immutable: new checker and verifier
2291zooko@zooko.com**20090106002818
2292 Ignore-this: 65441f8fdf0db8bcedeeb3fcbbd07d12
2293 New checker and verifier use the new download class.  They are robust against various sorts of failures or corruption.  They return detailed results explaining what they learned about your immutable files.  Some grotesque sorts of corruption are not properly handled yet, and those ones are marked as TODO or commented-out in the unit tests.
2294 There is also a repairer module in this patch with the beginnings of a repairer in it.  That repairer is mostly just the interface to the outside world -- the core operation of actually reconstructing the missing data blocks and uploading them is not in there yet.
2295 This patch also refactors the unit tests in test_immutable so that the handling of each kind of corruption is reported as passing or failing separately, can be separately TODO'ified, etc.  The unit tests are also improved in various ways to require more of the code under test or to stop requiring unreasonable things of it.  :-)
2296 
2297]
2298[trivial: fix inline comment in test code
2299zooko@zooko.com**20090105235342
2300 Ignore-this: b3d79b9644052e6402b2f7d0125f678a
2301]
2302[immutable: handle another form of share corruption with LayoutInvalid exception instead of AssertionError
2303zooko@zooko.com**20090105234645
2304 Ignore-this: fee5f6572efca5435ef54ed32552ca9d
2305]
2306[trivial: remove unused import (pyflakes)
2307zooko@zooko.com**20090105233120
2308 Ignore-this: 47b6989ffa5b3a5733e45e8feb507959
2309]
2310[immutable: skip the test of large files, because that is too hard on the host if it doesn't efficiently handle sparse files
2311zooko@zooko.com**20090105230727
2312 Ignore-this: 7d35a6cdb1ea6be2adf0e6dacefe01a7
2313]
2314[immutable: raise a LayoutInvalid exception instead of an AssertionError if the share is corrupted so that the sharehashtree is the wrong size
2315zooko@zooko.com**20090105200114
2316 Ignore-this: b63d028c44dcd04ef424d6460b46e349
2317]
2318[immutable: stop reading past the end of the sharefile in the process of optimizing download -- Tahoe storage servers < 1.3.0 return an error if you read past the end of the share file
2319zooko@zooko.com**20090105194057
2320 Ignore-this: 365e1f199235a55c0354ba6cb2b05a04
2321]
2322[immutable: tidy up the notification of waiters for ReadBucketProxy
2323zooko@zooko.com**20090105193522
2324 Ignore-this: 6b93478dae3d627b9d3cbdd254afbe7e
2325]
2326[immutable: refactor downloader to be more reusable for checker/verifier/repairer (and better)
2327zooko@zooko.com**20090105155145
2328 Ignore-this: 29a22b1eb4cb530d4b69c12aa0d00740
2329 
2330 The code for validating the share hash tree and the block hash tree has been rewritten to make sure it handles all cases, to share metadata about the file (such as the share hash tree, block hash trees, and UEB) among different share downloads, and not to require hashes to be stored on the server unnecessarily, such as the roots of the block hash trees (not needed since they are also the leaves of the share hash tree), and the root of the share hash tree (not needed since it is also included in the UEB).  It also passes the latest tests including handling corrupted shares well.
2331   
2332 ValidatedReadBucketProxy takes a share_hash_tree argument to its constructor, which is a reference to a share hash tree shared by all ValidatedReadBucketProxies for that immutable file download.
2333   
2334 ValidatedReadBucketProxy requires the block_size and share_size to be provided in its constructor, and it then uses those to compute the offsets and lengths of blocks when it needs them, instead of reading those values out of the share.  The user of ValidatedReadBucketProxy therefore has to have first used a ValidatedExtendedURIProxy to compute those two values from the validated contents of the URI.  This is pleasingly simplifies safety analysis: the client knows which span of bytes corresponds to a given block from the validated URI data, rather than from the unvalidated data stored on the storage server.  It also simplifies unit testing of verifier/repairer, because now it doesn't care about the contents of the "share size" and "block size" fields in the share.  It does not relieve the need for share data v2 layout, because we still need to store and retrieve the offsets of the fields which come after the share data, therefore we still need to use share data v2 with its 8-byte fields if we want to store share data larger than about 2^32.
2335   
2336 Specify which subset of the block hashes and share hashes you need while downloading a particular share.  In the future this will hopefully be used to fetch only a subset, for network efficiency, but currently all of them are fetched, regardless of which subset you specify.
2337   
2338 ReadBucketProxy hides the question of whether it has "started" or not (sent a request to the server to get metadata) from its user.
2339 
2340 Download is optimized to do as few roundtrips and as few requests as possible, hopefully speeding up download a bit.
2341 
2342]
2343[util: add gatherResults which is a deferred-list-like thing that doesn't wrap failures in a FirstError
2344zooko@zooko.com**20090104165202
2345 Ignore-this: a284fb8ab8a00a39416a67dc5d9a451e
2346]
2347[immutable: fix think-o in previous patch which caused all reads to return "", and also optimize by not opening the file when the answer is going to be ""
2348zooko@zooko.com**20090103200245
2349 Ignore-this: 8ac4d0b0399cd74e8a424ffbcf3d9eb9
2350]
2351[immutable: when storage server reads from immutable share, don't try to read past the end of the file (Python allocates space according to the amount of data requested, so if there is corruption and that number is huge it will do a huge memory allocation)
2352zooko@zooko.com**20090103192222
2353 Ignore-this: e533a65d74437676d5116369fd7c663b
2354]
2355[immutable: mark a failing download test as "todo", because I think it is revealing a limitation of the current downloader's handling of corrupted shares
2356zooko@zooko.com**20090103190003
2357 Ignore-this: 1d429912dda92d986e2ee366d73e088c
2358]
2359[docs: update install.html to recommend Python v2 instead of Python v2.5.2
2360zooko@zooko.com**20090103183100
2361 Ignore-this: 5dbea379c59e0d9be817cdd9c8393d65
2362]
2363[trivial: remove unused import (pyflakes)
2364zooko@zooko.com**20090103182215
2365 Ignore-this: 4a29a14fa4580460a5e61fa0aa88b9b2
2366]
2367[merge_install.patch
2368cgalvan@mail.utexas.edu**20090102164434
2369 Ignore-this: aa6d4c05d583a0724eb218fef04c3940
2370]
2371[setup: new install doc -- doesn't require GNU make or a C++ compiler any more!
2372zooko@zooko.com**20081201180933
2373 Ignore-this: 753e8d1e6f32e2ddcd7a082050114725
2374]
2375[immutable: fix test for truncated reads of URI extension block size
2376zooko@zooko.com**20090103174427
2377 Ignore-this: d9ff9dfff88b4cc7aa6751ce2e9088a6
2378]
2379[immutable: further loosen the performance-regression test to allow up to 45 reads
2380zooko@zooko.com**20090103174109
2381 Ignore-this: 614f7dba9c0d310a220e74e45441f07
2382 This does raise the question of if there is any point to this test, since I apparently don't know what the answer *should* be, and whenever one of the buildbots fails then I redefine success.
2383 
2384 But, I'm about to commit a bunch of patches to implement checker, verifier, and repairer as well as to refactor downloader, and I would really like to know if these patches *increase* the number of reads required even higher than it currently is.
2385 
2386]
2387[trivial: another place where I accidentally committed a note-to-self about the lease fields in the server-side share file
2388zooko@zooko.com**20090103172941
2389 Ignore-this: c23c7095ffccdf5aa033ed434b50582b
2390]
2391[immutable: fix detection of truncated shares to take into account the fieldsize -- either 4 or 8
2392zooko@zooko.com**20090103005745
2393 Ignore-this: 710184bd90f73dc18f3899d90ec6e972
2394]
2395[immutable: raise LayoutInvalid instead of struct.error when a share is truncated
2396zooko@zooko.com**20090103004806
2397 Ignore-this: 346c779045f79725965a0f2d3eea41f9
2398 To fix this error from the Windows buildslave:
2399 
2400 [ERROR]: allmydata.test.test_immutable.Test.test_download_from_only_3_remaining_shares
2401 
2402 Traceback (most recent call last):
2403   File "C:\Documents and Settings\buildslave\windows-native-tahoe\windows\build\src\allmydata\immutable\download.py", line 135, in _bad
2404     raise NotEnoughSharesError("ran out of peers, last error was %s" % (f,))
2405 allmydata.interfaces.NotEnoughSharesError: ran out of peers, last error was [Failure instance: Traceback: <class 'struct.error'>: unpack requires a string argument of length 4
2406 c:\documents and settings\buildslave\windows-native-tahoe\windows\build\support\lib\site-packages\foolscap-0.3.2-py2.5.egg\foolscap\call.py:667:_done
2407 c:\documents and settings\buildslave\windows-native-tahoe\windows\build\support\lib\site-packages\foolscap-0.3.2-py2.5.egg\foolscap\call.py:53:complete
2408 c:\Python25\lib\site-packages\twisted\internet\defer.py:239:callback
2409 c:\Python25\lib\site-packages\twisted\internet\defer.py:304:_startRunCallbacks
2410 --- <exception caught here> ---
2411 c:\Python25\lib\site-packages\twisted\internet\defer.py:317:_runCallbacks
2412 C:\Documents and Settings\buildslave\windows-native-tahoe\windows\build\src\allmydata\immutable\layout.py:374:_got_length
2413 C:\Python25\lib\struct.py:87:unpack
2414 ]
2415 ===============================================================================
2416 
2417]
2418[immutable: whoops, it actually takes up to 39 reads sometimes to download a corrupted file
2419zooko@zooko.com**20090102234302
2420 Ignore-this: ef009d179eb4f84a56559017b633d819
2421]
2422[immutable: add more detailed tests of download, including testing the count of how many reads different sorts of downloads take
2423zooko@zooko.com**20090102225459
2424 Ignore-this: d248eb3982fdb05b43329142a723f5a1
2425]
2426[trivial: a few improvements to in-line doc and code, and renaming of test/test_immutable_checker.py to test/test_immutable.py
2427zooko@zooko.com**20090102224941
2428 Ignore-this: 27b97a06c3edad1821f43876b4350f3
2429 That file currently tests checker and verifier and repairer, and will soon also test downloader.
2430]
2431[immutable: fix name change from BadOrMissingShareHash to BadOrMissingHash
2432zooko@zooko.com**20090102192709
2433 Ignore-this: 3f22ca1ee045beabb11559512ba130f4
2434 One of the instances of the name accidentally didn't get changed, and pyflakes noticed.  The new downloader/checker/verifier/repairer unit tests would also have noticed, but those tests haven't been rolled into a patch and applied to this repo yet...
2435]
2436[trivial: remove unused import -- thanks, pyflakes
2437zooko@zooko.com**20090102192128
2438 Ignore-this: d99c7349ba6f8db971e31cf8789883d5
2439]
2440[immutable: download.py: Raise the appropriate type of exception to indicate the cause of failure, e.g. BadOrMissingHash, ServerFailure, IntegrityCheckReject (which is a supertype of BadOrMissingHash).  This helps users (such as verifier/repairer) catch certain classes of reasons for "why did this download not work".  The tests of verifier/repairer test this code and rely on this code.
2441zooko@zooko.com**20090102185858
2442 Ignore-this: 377bf621bbb6e360a98fd287bb1593f1
2443]
2444[immutable: ReadBucketProxy defines classes of exception: LayoutInvalid and its two subtypes RidiculouslyLargeURIExtensionBlock and ShareVersionIncompatible.  This helps users (such as verifier/repairer) catch certain classes of reasons for "why did this download not work".  This code gets exercised by the verifier/repairer unit tests, which corrupt the shares on disk in order to trigger problems like these.
2445zooko@zooko.com**20090102181554
2446 Ignore-this: 2288262a59ee695f524859ed4b0b39d5
2447]
2448[immutable: ValidatedExtendedURIProxy computes and stores block_size and share_size for the convenience of its users
2449zooko@zooko.com**20090102174317
2450 Ignore-this: 2bab64048fffc05dc6592d617aeb412f
2451]
2452[remove_sumo_install.patch
2453cgalvan@mail.utexas.edu**20090102162347
2454 Ignore-this: f328570b1da1ccfbaebc770d40748046
2455]
2456[doc: remove notes to self that I accidentally included in a recent patch
2457zooko@zooko.com**20090102041457
2458 Ignore-this: d0039512dbde09811fdec48a2e00dc4
2459]
2460[docs: remove caveat about Nevow incompatibility with Python 2.6 since the latest version of Nevow has fixed it
2461zooko@zooko.com**20090102034135
2462 Ignore-this: 4cb2ceb41f53e07dab0f623e01044edc
2463]
2464[immutable: make the test of large files more likely to work by requesting to allocate space for only one huge share, not three
2465zooko@zooko.com**20081231215942
2466 Ignore-this: d7073de4764506550e184f8fdc670962
2467]
2468[trivial: "M-x whitespace-cleanup", and also remove an unused variable
2469zooko@zooko.com**20081231214233
2470 Ignore-this: 54c33c205aa88de8655e4232d07f083e
2471]
2472[immutable: storage servers accept any size shares now
2473zooko@zooko.com**20081231214226
2474 Ignore-this: 28669d591dddaff69088cba4483da61a
2475 Nathan Wilcox observed that the storage server can rely on the size of the share file combined with the count of leases to unambiguously identify the location of the leases.  This means that it can hold any size share data, even though the field nominally used to hold the size of the share data is only 32 bits wide.
2476 
2477 With this patch, the storage server still writes the "size of the share data" field (just in case the server gets downgraded to an earlier version which requires that field, or the share file gets moved to another server which is of an earlier vintage), but it doesn't use it.  Also, with this patch, the server no longer rejects requests to write shares which are >= 2^32 bytes in size, and it no longer rejects attempts to read such shares.
2478 
2479 This fixes http://allmydata.org/trac/tahoe/ticket/346 (increase share-size field to 8 bytes, remove 12GiB filesize limit), although there remains open a question of how clients know that a given server can handle large shares (by using the new versioning scheme, probably).
2480 
2481 Note that share size is also limited by another factor -- how big of a file we can store on the local filesystem on the server.  Currently allmydata.com typically uses ext3 and I think we typically have block size = 4 KiB, which means that the largest file is about 2 TiB.  Also, the hard drives themselves are only 1 TB, so the largest share is definitely slightly less than 1 TB, which means (when K == 3), the largest file is less than 3 TB.
2482 
2483 This patch also refactors the creation of new sharefiles so that only a single fopen() is used.
2484 
2485 This patch also helps with the unit-testing of repairer, since formerly it was unclear what repairer should expect to find if the "share data size" field was corrupted (some corruptions would have no effect, others would cause failure to download).  Now it is clear that repairer is not required to notice if this field is corrupted since it has no effect on download.  :-)
2486 
2487]
2488[trivial: "M-x whitespace-cleanup" on immutable/layout.py
2489zooko@zooko.com**20081231210702
2490 Ignore-this: 8be47d01cf40d1f81aeb0011a0a0caa
2491]
2492[trivial: remove unused import -- thanks, pyflakes
2493zooko@zooko.com**20081231212556
2494 Ignore-this: a70cd39a7d633bde2bb5275dfd4d3781
2495]
2496[rrefutil: generically wrap any errback from callRemote() in a ServerFailure instance
2497zooko@zooko.com**20081231202830
2498 Ignore-this: c949eaf8589ed4c3c232f17808fdce6a
2499 This facilitates client code to easily catch ServerFailures without also catching exceptions arising from client-side code.
2500 See also:
2501 http://foolscap.lothar.com/trac/ticket/105 # make it easy to distinguish server-side failures/exceptions from client-side
2502]
2503[immutable: more detailed tests for checker/verifier/repairer
2504zooko@zooko.com**20081231201838
2505 Ignore-this: dd16beef604b0917f4493bc4ef35ab74
2506 There are a lot of different ways that a share could be corrupted, or that attempting to download it might fail.  These tests attempt to exercise many of those ways and require the checker/verifier/repairer to handle each kind of failure well.
2507]
2508[docs: add note about non-ascii chars in cli to NEWS
2509zooko@zooko.com**20081230081728
2510 Ignore-this: c6f45a1d944af3c77942a4bf740ee24c
2511]
2512[cli: make startstop_node wait 20 seconds instead of 5 for a process to go away after we signalled it to go away
2513zooko@zooko.com**20081230072022
2514 Ignore-this: 3b0d47649e32b01ff55a506245c674c6
2515 Because the unit tests on the VirtualZooko buildslave failed when it took 16 seconds for a process to go away.
2516 Perhaps getting notification after only 5 seconds instead of 20 seconds is desirable, and we should change the unit tests and set this back to 5, but I don't know exactly how to change the unit tests.  Perhaps match this particular warning message about the shutdown taking a while and allow the code under test to pass if the only stderr that it emits is this warning.
2517]
2518[docs: editing changes and updated news in known_issues.txt
2519zooko@zooko.com**20081230070116
2520 Ignore-this: e5dddc4446e3335a6c4eee7472e0670e
2521]
2522[docs: split historical/historical_known_issues.txt out of known_issues.txt
2523zooko@zooko.com**20081230065226
2524 Ignore-this: 9b6d0d679294110deeb0ea18b4ad7ac8
2525 All issues which are relevant to users of v1.1, v1.2, or v1.3 go in known_issues.txt.  All issues which are relevant to users of v1.0 go in historical/historical_known_issues.txt.
2526]
2527[doc: sundry amendments to docs and in-line code comments
2528zooko@zooko.com**20081228225954
2529 Ignore-this: a38057b9bf0f00afeea1c468b2237c36
2530]
2531[doc: add mention of "tahoe create-alias" in the security-warning section of CLI.txt
2532zooko@zooko.com**20081224211646
2533 Ignore-this: 6bb0ab3af59a79e05ebccb800d9a12b0
2534]
2535[doc: trivial: remove trailing whitespace
2536zooko@zooko.com**20081224211634
2537 Ignore-this: 6ff234bc7632c3ae4d4f2be2198bb97d
2538]
2539[doc: warn that unicode might not work, in CLI.txt
2540zooko@zooko.com**20081224211618
2541 Ignore-this: 89355b53aab40af1d45a3746bb90ed10
2542]
2543[doc: use the term "filesystem" rather than "virtual drive" in CLI.txt
2544zooko@zooko.com**20081224211614
2545 Ignore-this: c9541955201671c1a3a8c6ca7be4e7d
2546]
2547[cli: mark unicode filenames as unsupported -- see #534 for details
2548zooko@zooko.com**20081224192802
2549 Ignore-this: b209ccbd838f633ec201e2e97156847c
2550]
2551[cli: undo the effects of [http://allmydata.org/trac/tahoe/changeset/20081222235453-92b7f-f841e18afb94e1fd95e6dafb799a3d876dd85c69]
2552zooko@zooko.com**20081224155317
2553 Ignore-this: d34ee20d89221357e32872d721d7685f
2554 We're just going to mark unicode in the cli as unsupported for tahoe-lafs-1.3.0.  Unicode filenames on the command-line do actually work for some platforms and probably only if the platform encoding is utf-8, but I'm not sure, and in any case for it to be marked as "supported" it would have to work on all platforms, be thoroughly tested, and also we would have to understand why it worked.  :-)
2555 
2556]
2557[test: extend timeout on the hotline file that prevents the client from stopping itself
2558zooko@zooko.com**20081222030629
2559 Ignore-this: 391f48caef9d6ad558e540ded56a8075
2560 The 20-second timeout was apparently tripped on my Powerbook G4 "draco".
2561]
2562[cli: decode all cli arguments, assuming that they are utf-8 encoded
2563zooko@zooko.com**20081222235453
2564 Ignore-this: d92b4d146e1dc9848c6a4b6aaaa3d1e9
2565 Also encode all args to urllib as utf-8 because urllib doesn't handle unicode objects.
2566 I'm not sure if it is appropriate to *assume* utf-8 encoding of cli args.  Perhaps the Right thing to do is to detect the platform encoding.  Any ideas?
2567 This patch is mostly due to François Deppierraz.
2568 
2569]
2570[util/base32: the identity trans table needn't have any contents -- we are using string.translate solely to delete known chars
2571zooko@zooko.com**20081222234808
2572 Ignore-this: 8fe03ec6571726f44425fc5905387b78
2573]
2574[util/base32: allow unicode inputs to a2b() or could_be_base32_encoded(), and encode them with utf-8 before processing them
2575zooko@zooko.com**20081222234713
2576 Ignore-this: e1eb4caed2f78b2fef0df4bbf8bb26f7
2577]
2578[util/base32: loosen the precondition forbidding unicode and requiring str -- now it requires either unicode or str
2579zooko@zooko.com**20081222222237
2580 Ignore-this: 3481d644bdc5345facbc199d33653f37
2581 Hopefully this will make it so that tests pass with François Deppierraz's patch to fix the tahoe cli's handling of unicode argument.
2582]
2583[immutable: don't catch all exception when downloading, catch only DeadReferenceError and IntegrityCheckReject
2584zooko@zooko.com**20081221234135
2585 Ignore-this: 1abe05c3a5910378abc3920961f19aee
2586]
2587[immutable: invent download.BadOrMissingHashError which is raised if either hashtree.BadHashError, hashtree.NotEnoughHashesError, and which is a subclass of IntegrityCheckReject
2588zooko@zooko.com**20081221234130
2589 Ignore-this: 1b04d7e9402ebfb2cd4c7648eb16af84
2590]
2591[dirnode: don't check MAC on entries in dirnodes
2592zooko@zooko.com**20081221233518
2593 Ignore-this: efacb56d18259219c910cf5c84b17340
2594 In an ancient version of directories, we needed a MAC on each entry.  In modern times, the entire dirnode comes with a digital signature, so the MAC on each entry is redundant.
2595 With this patch, we no longer check those MACs when reading directories, but we still produce them so that older readers will accept directories that we write.
2596 
2597]
2598[immutable, checker, and tests: improve docstrings, assertions, tests
2599zooko@zooko.com**20081221210752
2600 Ignore-this: 403ed5ca120d085d582cd5695d8371f
2601 No functional changes, but remove unused code, improve or fix docstrings, etc.
2602]
2603[cli: if response code from wapi server is not 200 then stop instead of proceeding
2604zooko@zooko.com**20081220134918
2605 Ignore-this: 907481c941fc5696630b9c118137fb52
2606 Also, include the data that failed to json parse in an exception raised by the json parser.
2607]
2608[immutable: when downloading an immutable file, use primary shares if they are available
2609zooko@zooko.com**20081220131456
2610 Ignore-this: f7b8b76fd7df032673ab072384eaa989
2611 Primary shares require no erasure decoding so the more primary shares you have, the less CPU is used.
2612]
2613[trivial: remove unused import (thanks, pyflakes)
2614zooko@zooko.com**20081219194629
2615 Ignore-this: 96e15d6de43dd1204a8933171f194189
2616]
2617[try to tidy up uri-as-string vs. uri-as-object
2618zooko@zooko.com**20081219143924
2619 Ignore-this: 4280727007c29f5b3e9273a34519893f
2620 I get confused about whether a given argument or return value is a uri-as-string or uri-as-object.  This patch adds a lot of assertions that it is one or the other, and also changes CheckerResults to take objects not strings.
2621 In the future, I hope that we generally use Python objects except when importing into or exporting from the Python interpreter e.g. over the wire, the UI, or a stored file.
2622]
2623[immutable: remove the last bits of code (only test code or unused code) which did something with plaintext hashes or plaintext hash trees
2624zooko@zooko.com**20081219141807
2625 Ignore-this: d10d26b279794383f27fa59ec4a50219
2626]
2627[immutable: use new logging mixins to simplify logging
2628zooko@zooko.com**20081217000450
2629 Ignore-this: 7d942905d1ea8f34753dbb997e1857f3
2630]
2631[immutable: refactor ReadBucketProxy a little
2632zooko@zooko.com**20081216235325
2633 Ignore-this: b3733257769eff3b3e9625bd04643fd6
2634]
2635[debug: pass empty optional arguments to ReadBucketProxy
2636zooko@zooko.com**20081216235145
2637 Ignore-this: 7132cdc6a52767fbbcca03b242a16982
2638 because those arguments are about to become non-optional (for other code than test/debug code)
2639]
2640[uri: generalize regexp that recognizes tahoe URLs to work for any host and port
2641zooko@zooko.com**20081216234930
2642 Ignore-this: 4a7716b8034c8e5ed9698a99f1ec5cb4
2643]
2644[util: logging: refactor some common logging behavior into mixins
2645zooko@zooko.com**20081216233807
2646 Ignore-this: d91408bc984d1cf1fae30134f6cddb13
2647]
2648[pyutil: assertutil: copy in simplified assertutil from pyutil
2649zooko@zooko.com**20081216233745
2650 Ignore-this: cd4a33186c8c134104f07018ab448583
2651]
2652[pyutil: assertutil: simplify handling of exception during formatting of precondition message, and reduce dependency to just the Python Standard Library's logging module
2653zooko@zooko.com**20081210131057
2654 Ignore-this: 4a7f1aa5b9f7ac60067347db9cdf5f28
2655]
2656[client: add get_servers()
2657zooko@zooko.com**20081208230400
2658 Ignore-this: 1b9b3ff483849563342f467c39fdd15d
2659]
2660[mutable publish: if we are surprised by shares that match what we would have written anyways, don't be surprised. This should fix one of the two #546 problems, in which we re-use a server and forget that we already sent them a share.
2661warner@allmydata.com**20081210044449]
2662[NEWS: updated to most recent user-visible changes, including the 8123-to-3456 change
2663warner@allmydata.com**20081209231146]
2664[immutable: remove unused code to produce plaintext hashes
2665zooko@zooko.com**20081209224546
2666 Ignore-this: 1ff9b6fa48e0617fea809998a0e3b6e
2667]
2668[finish renaming 'subshare' to 'block' in immutable/encode.py and in docs/
2669zooko@zooko.com**20081209223318
2670 Ignore-this: 3d1b519f740c3d1030cb733f76fdae61
2671]
2672[introducer: fix bug in recent simplification caught by Brian's sharp code-reviewing eye
2673zooko@zooko.com**20081208231634
2674 Ignore-this: 29854954577018d658be49142177edf2
2675]
2676[introducer: simplify get_permuted_peers() implementation and add get_peers()
2677zooko@zooko.com**20081208225725
2678 Ignore-this: 8299c0dc187521f34187e54c72e57dc9
2679]
2680[webapi.txt: minor edits
2681warner@allmydata.com**20081208213256]
2682[rename "get_verifier()" to "get_verify_cap()"
2683zooko@zooko.com**20081208184411
2684 Ignore-this: 3ea4d7a78c802b23f628a37cc643c11a
2685]
2686[setup: try depending on setuptools >= 0.6c6 instead of >= 0.6c7 at run-time, to be able to use the setuptools that came with Ubuntu Gutsy
2687zooko@zooko.com**20081208174725
2688 Ignore-this: 1cfefa8891f627c7ed46f1ff127eeee9
2689]
2690[setup: loosen requirement on simplejson to >= 1.4
2691zooko@zooko.com**20081208143537
2692 Ignore-this: 2e4bec12f047f3f525caa6f234b58784
2693 That's the version of simplejson that comes with ubuntu feisty, and the one that we've required for most of our history.  Currently the Ubuntu dapper buildslave fails (see issue #534), and setting the simplejson requirement to be >= 2.0 would fix that failure, but I don't understand why.
2694]
2695[setup: require simplejson >= 1.7.1
2696zooko@zooko.com**20081208043412
2697 Ignore-this: ab0e8ba82f0d10bc650bc80732bf3d0e
2698 That's the version that comes with gutsy, and we don't really understand why increasing the required version number helped with issue #553.
2699]
2700[mutable: merge renaming with test patches
2701zooko@zooko.com**20081207144519
2702 Ignore-this: a922a8b231090fb35b9ef84d99e9dba3
2703]
2704[mutable: rename mutable/node.py to mutable/filenode.py and mutable/repair.py to mutable/repairer.py
2705zooko@zooko.com**20081207142008
2706 Ignore-this: ecee635b01a21e6f866a11bb349712a3
2707 To be more consistent with the immutable layout that I am working on.
2708]
2709[web/directory.py: really really fix #553. Unfortunately it's tricky to simulate the behavior of a brower's relative-url handling in a unit test.
2710warner@allmydata.com**20081206051412]
2711[filenode.py: Fix partial HTTP Range header handling according to RFC2616
2712francois@ctrlaltdel.ch**20081118134135
2713 
2714 Tahoe webapi was failing on HTTP request containing a partial Range header.
2715 This change allows movies players like mplayer to seek in movie files stored in
2716 tahoe.
2717 
2718 Associated tests for GET and HEAD methods are also included
2719]
2720[mutable.modify(): after UCWE, publish even if the second invocation of the modifier didn't modify anything. For #551.
2721warner@allmydata.com**20081206044923]
2722[dirnode.py: dirnode.delete which hits UCWE should not fail with NoSuchChildError. Fixes #550.
2723warner@allmydata.com**20081206040837]
2724[MutableFileNode.modify: pass first_time= and servermap= to the modifier callback
2725warner@allmydata.com**20081206040710]
2726[misc/cpu-watcher.tac: tolerate disk-full errors when writing the pickle, and pickle corruption from earlier disk-full errors
2727warner@allmydata.com**20081205215412]
2728[web: fix more info links again
2729zooko@zooko.com**20081205213939
2730 Ignore-this: d51cf2c6393b5799dc615952680cd079
2731 Really, *really* closes #553.
2732]
2733[web: fix moreinfo link
2734zooko@zooko.com**20081205212939
2735 Ignore-this: 89913601a159437a2c151dd3652e6a94
2736]
2737[web: "More Info" link describes the same file that the "file" link points to, rather than to the file under the same name in this directory
2738zooko@zooko.com**20081205210502
2739 Ignore-this: 5017754e11749b376c7fa66d1acb2a58
2740 It's a subtle but real difference.
2741 Fixes #553 -- "More Info" link should point to a file/dir, not a dir+childname .
2742]
2743[minor: fix unused imports -- thanks, pyflakes
2744zooko@zooko.com**20081205190723
2745 Ignore-this: 799f6a16360ac1aee8f6e0eb35a28a88
2746]
2747[download: refactor handling of URI Extension Block and crypttext hash tree, simplify things
2748zooko@zooko.com**20081205141754
2749 Ignore-this: 51b9952ea2406b0eea60e8d72654fd99
2750 
2751 Refactor into a class the logic of asking each server in turn until one of them gives an answer
2752 that validates.  It is called ValidatedThingObtainer.
2753 
2754 Refactor the downloading and verification of the URI Extension Block into a class named
2755 ValidatedExtendedURIProxy.
2756 
2757 The new logic of validating UEBs is minimalist: it doesn't require the UEB to contain any
2758 unncessary information, but of course it still accepts such information for backwards
2759 compatibility (so that this new download code is able to download files uploaded with old, and
2760 for that matter with current, upload code).
2761 
2762 The new logic of validating UEBs follows the practice of doing all validation up front.  This
2763 practice advises one to isolate the validation of incoming data into one place, so that all of
2764 the rest of the code can assume only valid data.
2765 
2766 If any redundant information is present in the UEB+URI, the new code cross-checks and asserts
2767 that it is all fully consistent.  This closes some issues where the uploader could have
2768 uploaded inconsistent redundant data, which would probably have caused the old downloader to
2769 simply reject that download after getting a Python exception, but perhaps could have caused
2770 greater harm to the old downloader.
2771 
2772 I removed the notion of selecting an erasure codec from codec.py based on the string that was
2773 passed in the UEB.  Currently "crs" is the only such string that works, so
2774 "_assert(codec_name == 'crs')" is simpler and more explicit.  This is also in keeping with the
2775 "validate up front" strategy -- now if someone sets a different string than "crs" in their UEB,
2776 the downloader will reject the download in the "validate this UEB" function instead of in a
2777 separate "select the codec instance" function.
2778 
2779 I removed the code to check plaintext hashes and plaintext Merkle Trees.  Uploaders do not
2780 produce this information any more (since it potentially exposes confidential information about
2781 the file), and the unit tests for it were disabled.  The downloader before this patch would
2782 check that plaintext hash or plaintext merkle tree if they were present, but not complain if
2783 they were absent.  The new downloader in this patch complains if they are present and doesn't
2784 check them.  (We might in the future re-introduce such hashes over the plaintext, but encrypt
2785 the hashes which are stored in the UEB to preserve confidentiality.  This would be a double-
2786 check on the correctness of our own source code -- the current Merkle Tree over the ciphertext
2787 is already sufficient to guarantee the integrity of the download unless there is a bug in our
2788 Merkle Tree or AES implementation.)
2789 
2790 This patch increases the lines-of-code count by 8 (from 17,770 to 17,778), and reduces the
2791 uncovered-by-tests lines-of-code count by 24 (from 1408 to 1384).  Those numbers would be more
2792 meaningful if we omitted src/allmydata/util/ from the test-coverage statistics.
2793 
2794]
2795[test_web: add get_permuted_peers, to unbreak recent checker_results change
2796warner@allmydata.com**20081205081210]
2797[web checker_results: include a table of servers in permuted order, so you can see the places where new servers have been inserted
2798warner@allmydata.com**20081205080309]
2799[test_system.py: assert less about the stats we get, since shares (and thus allocate() calls) are distributed randomly
2800warner@allmydata.com**20081204232704]
2801[stats: don't return booleans: it violates the schema. Add a test.
2802warner@lothar.com**20081204210124]
2803[test_system.py: don't ask the stats-gatherer to poll: it tolerates failures, so it isn't really giving us enough test coverage. Removing the call will make it more clear that we need to improve the tests later
2804warner@lothar.com**20081204210053]
2805[confwiz.py - removing hardcoded version number
2806secorp@allmydata.com**20081203023831]
2807[CLI: check for pre-existing aliases in 'tahoe create-alias' and 'tahoe add-alias'
2808warner@lothar.com**20081203022022]
2809[test_cli: pass rc out of do_cli() too
2810warner@lothar.com**20081203020828]
2811[setup: one more address to send release announcements to
2812zooko@zooko.com**20081203015040
2813 Ignore-this: 87cb7a9c3a1810ff0c87908548027ac5
2814]
2815[setup: another note about the process of making a tahoe release: mail to duplicity-talk@nongnu.org
2816zooko@zooko.com**20081203014414
2817 Ignore-this: 77ffd6f7412cdc3283c1450cfde9fdf1
2818]
2819[test_storage.py: more windows-vs-readonly-storage fixes
2820warner@lothar.com**20081203014102]
2821[docs/webapi.txt: update helper section to discuss tahoe.cfg
2822warner@lothar.com**20081203010726]
2823[docs/webapi.txt: update to discuss tahoe.cfg, not BASEDIR/webport
2824warner@lothar.com**20081203010612]
2825[storage.py: oops, fix windows again, readonly_storage wasn't getting picked up properly
2826warner@lothar.com**20081203010317]
2827[test_download.py: remove extra base32 import
2828warner@lothar.com**20081203003126]
2829[test_download: test both mutable and immutable pre-generated shares
2830warner@lothar.com**20081203003007]
2831[test_download.py: added 'known-answer-tests', to make sure current code can download a file that was created by earlier code
2832warner@lothar.com**20081203002208]
2833[docs/configuration.txt: fix minor typo
2834warner@lothar.com**20081202215101]
2835[storage.py: unbreak readonly_storage=True on windows
2836warner@allmydata.com**20081202014946]
2837[#542 'tahoe create-key-generator': fix the .tac file this creates to be compatible with modern code, add a test
2838warner@allmydata.com**20081201234721]
2839[storage.py: fix minor typo in comment
2840warner@lothar.com**20081201232540]
2841[storage: replace sizelimit with reserved_space, make the stats 'disk_avail' number incorporate this reservation
2842warner@lothar.com**20081201232421]
2843[util/abbreviate: add abbreviated-size parser
2844warner@lothar.com**20081201232412]
2845[wui/wapi: change the default port number from 8123 to 3456 to avoid conflict with TorButton
2846zooko@zooko.com**20081125235737
2847 Ignore-this: 47ea30bafd5917a7e1dbc88aa0190f8e
2848 See ticket #536 for details.
2849]
2850[setup: move the requirement on simplejson from setup.py to _auto_deps.py, and loosen it from >= 2.0.5 to > 1.8.1
2851zooko@zooko.com**20081125203751
2852 Ignore-this: 4403781ef878547ee09e7e010eb5b49a
2853 We'll see if this fixes the tests on all of our current buildslaves, and if it does then I'll be happy to leave it at "> 1.8.1" for now, even though I don't know exactly what versions of simplejson changed exactly what behavior that interacts with exactly what environment.  See http://allmydata.org/trac/tahoe/ticket/534 for uncertainties.
2854 
2855]
2856[setup.py: Require simplejson version >= 2.0.5
2857francois@ctrlaltdel.ch**20081125171727]
2858[mutable publish: reinstate the foolscap-reference-token-bug workaround, both for the original reasons and because of an apparent new foolscap bug that's triggered by reference tokens. See #541 for details.
2859warner@allmydata.com**20081125202735]
2860[setup: fix missing import -- thanks, pyflakes
2861zooko@zooko.com**20081125155528
2862 Ignore-this: 1fc042da2882b7b2f71cde93eb234a47
2863]
2864[setup: correctly detect Arch Linux in platform description
2865zooko@zooko.com**20081125155118
2866 Ignore-this: 37a7648f190679d3e973270a73133189
2867]
2868[dirnode manifest: add verifycaps, both to internal API and to webapi. This will give the manual-GC tools more to work with, so they can estimate how much space will be freed.
2869warner@allmydata.com**20081124204046]
2870[control.py: use get_buckets() instead of get_version() to measure ping time, because the latter changed recently
2871warner@lothar.com**20081123051323]
2872[upload: when using a Helper, insist that it provide protocols/helper/v1 . Related to #538.
2873warner@allmydata.com**20081122022932]
2874[upload: don't use servers which can't support the share size we need. This ought to avoid #439 problems. Some day we'll have a storage server which advertises support for a larger share size. No tests yet.
2875warner@allmydata.com**20081122022812]
2876[#538: fetch version and attach to the rref. Make IntroducerClient demand v1 support.
2877warner@allmydata.com**20081122020727]
2878[#538: add remote_get_version() to four main Referenceable objects: Introducer Service, Storage Server, Helper, CHK Upload Helper. Remove unused storage-server get_versions().
2879warner@allmydata.com**20081121234352]
2880[setup: turn off --multi-version until I can figure out why it breaks test_runner
2881zooko@zooko.com**20081121043645
2882 Ignore-this: 36bf5db4122e6bc4e12588d9717a1e32
2883]
2884[setup: require setuptools >= 0.6c7 to run
2885zooko@zooko.com**20081121043611
2886 Ignore-this: e92e07c7e8edbaadcd44db7e8f4a028
2887]
2888[setup: use "setup.py develop --multi-version" so that if there is a too-old version of a dependency installed this doesn't prevent Tahoe's "develop" and run-in-place from working
2889zooko@zooko.com**20081120201545
2890 Ignore-this: 898f21fc1b16ae39c292fdd1ef42c446
2891]
2892[setup: we require setuptools > 0.6a9 in order to parse requirements that have a dot in them such as "zope.interface"
2893zooko@zooko.com**20081120151503
2894 Ignore-this: a6304de8f1f44defc50438d72a13e58f
2895 In the near future we might start actually relying on setuptools's pkg_resources's "require()" function to make modules importable, so we can't just skip zope.interface.
2896]
2897[test_dirnode: add an explainError call
2898warner@allmydata.com**20081119220212]
2899[manifest: add storage-index strings to the json results
2900warner@allmydata.com**20081119220027]
2901[manifest: include stats in results. webapi is unchanged.
2902warner@allmydata.com**20081119210347]
2903[misc/spacetime/diskwatcher.tac: remove dead code
2904warner@allmydata.com**20081119200552]
2905[mutable: respect the new tahoe.cfg 'shares.needed' and 'shares.total' settings
2906warner@allmydata.com**20081119200501]
2907[oops, update tests to match 'tahoe stats' change
2908warner@allmydata.com**20081119023259]
2909[cli: tahoe stats: abbreviate total sizes too
2910warner@allmydata.com**20081119022816]
2911[cli: 'tahoe stats': add abbreviated size to the histogram. Not sure this actually improves things.
2912warner@allmydata.com**20081119021736]
2913[util/abbreviate: little utility to abbreviate seconds and bytes
2914warner@allmydata.com**20081119021142]
2915[cli: add 'tahoe check' and 'tahoe deep-check' commands, with primitive reporting code
2916warner@allmydata.com**20081119011210]
2917[cli: factor out slow-http-operation to a separate module
2918warner@allmydata.com**20081119011113]
2919[cli: tahoe stats/manifest: change --verbose to --raw, since I want -v for --verify for check/deep-check/repair
2920warner@allmydata.com**20081119003608]
2921[test_system: make 'where' strings more helpful, to track down test failures better
2922warner@allmydata.com**20081119002950]
2923[webapi: add 'summary' string to checker results JSON
2924warner@allmydata.com**20081119002826]
2925[munin/tahoe_disktotal: add a 'disk used' line, since it will always be less than disktotal
2926warner@allmydata.com**20081118214431]
2927[munin/tahoe_introstats: add line for distinct-storage-hosts (which counts machines instead of nodes)
2928warner@allmydata.com**20081118213238]
2929[webapi: introducer stats: add 'announcement_distinct_hosts' to the t=json form, to show how many distinct hosts are providing e.g. storage services
2930warner@allmydata.com**20081118213015]
2931['tahoe create-key-generator': fix help text
2932warner@allmydata.com**20081118074758]
2933[#330: convert stats-gatherer into a .tac file service, add 'tahoe create-stats-gatherer'
2934warner@allmydata.com**20081118074620]
2935[munin/tahoe_diskused: new plugin to show total disk space used across the grid
2936warner@allmydata.com**20081118072525]
2937[munin/tahoe_disktotal: new plugin to show total disk space (used and unused) in the grid
2938warner@allmydata.com**20081118065101]
2939[tahoe.cfg: add controls for k and N (and shares-of-happiness)
2940warner@allmydata.com**20081118062944]
2941[cli: add tests for 'tahoe stats --verbose'
2942warner@allmydata.com**20081118041114]
2943[cli: add --verbose to 'tahoe manifest', to show the raw JSON data
2944warner@allmydata.com**20081118040219]
2945[diskwatcher: record total-space (the size of the disk as reported by df) in the db, report it to HTTP clients. This will involve a 50-item-per-second upgrade process when it is first used on old data
2946warner@allmydata.com**20081118034516]
2947[dirnode manifest/stats: process more than one LIT file per tree; we were accidentally ignoring all but the first
2948warner@allmydata.com**20081115045049]
2949[limiter.py: fix stack blowout by inserting an eventual-send between _done and maybe_start_task. This was causing failures during a 'tahoe manifest' of a large set of directories
2950warner@allmydata.com**20081115031144]
2951[New credit file entry
2952francois@ctrlaltdel.ch**20081114140548]
2953[test_cli.py: Ensure that we can read our uploaded files back
2954francois@ctrlaltdel.ch**20081114134458]
2955[test_cli.py: use str objects instead of unicode ones
2956francois@ctrlaltdel.ch**20081114134137
2957 
2958 This will hopefully fix failing tests with LC_ALL=C
2959]
2960[CLI: add 'tahoe stats', to run start-deep-stats and print the results
2961warner@allmydata.com**20081114014350]
2962[test_system.py: fix new 'tahoe manifest' tests to not break on windows, by providing --node-directory instead of --node-url
2963warner@allmydata.com**20081113212748]
2964[test for bug #534, unicode filenames
2965francois@ctrlaltdel.ch**20081113111951
2966 
2967 This test assure that uploading a file whose name contains unicode character
2968 doesn't prevent further uploads in the same directory.
2969]
2970[Fix an filename encoding issue with "tahoe cp"
2971francois@ctrlaltdel.ch**20081111200803]
2972[web/info.py: use 128-bit ophandles instead of 64-bit
2973warner@allmydata.com**20081113021842]
2974[CLI: add 'tahoe manifest', which takes a directory and returns a list of things you can reach from it
2975warner@allmydata.com**20081113021725]
2976[create_node.py: also remove now-unused import of pkg_resources
2977warner@allmydata.com**20081113004716]
2978[tahoe.cfg: add tub.location, to override the location hints we include in our FURL. This replaces advertised_ip_addresses, which doesn't remain useful enough to retain it. Helps with #517 (Tor).
2979warner@allmydata.com**20081113004458]
2980[setup: remove pkg_resources.require() from create_node.py and add it to runner.py
2981zooko@zooko.com**20081112212503
2982 Ignore-this: 763324202456a59b833b14eb4027171
2983 Brian correctly points out that the latter is an entry point.
2984]
2985[docs: fix cutnpasto in source:docs/logging.txt
2986zooko@zooko.com**19700105140422
2987 Ignore-this: de0f9ceb8e0ca4c158492ad2f9a6ba6f
2988]
2989[tests: fix comment
2990zooko@zooko.com**19700105101055
2991 Ignore-this: fabedea917895568b1fca75a480111b9
2992]
2993[tests: add tahoe_cp to the list of scripts that we don't actually have tests for yet
2994zooko@zooko.com**19700105100058
2995 Ignore-this: ac89583992fb1b48d9a4680344569d91
2996]
2997[setup: the .tac files created by create_node.py call pkg_resources.require() so that they can load tahoe and twisted packages which were installed with setuptools multi-version mode
2998zooko@zooko.com**19700101235005
2999 Ignore-this: e1db03f86e0407a91087d8ada6b477fd
3000 Also the create_node.py script itself uses pkg_resources.require() for the same reason.
3001]
3002[web/info: don't let an unrecoverable file break the page (show ? instead of a size)
3003warner@allmydata.com**20081107045117]
3004[checker: add is_recoverable() to checker results, make our stub immutable-verifier not throw an exception on unrecoverable files, add tests
3005warner@allmydata.com**20081107043547]
3006[monitor: update interface definition: get_status() can return a Failure
3007warner@allmydata.com**20081107035452]
3008[web/operations.py: if the operation failed, render the Failure
3009warner@allmydata.com**20081107035309]
3010[undoing test change for native_client.php
3011secorp@allmydata.com**20081106220310]
3012[NEWS: more minor edits
3013warner@allmydata.com**20081106223517]
3014[NEWS: minor edits
3015warner@allmydata.com**20081106223356]
3016[NEWS: mention SFTP server
3017warner@allmydata.com**20081106014153]
3018[client.py: oops, update FTP/SFTP config names to match current docs
3019warner@allmydata.com**20081106013442]
3020[remove duplicate+old docs/NEWS. The top-level NEWS file is the canonical one.
3021warner@allmydata.com**20081106013224]
3022[SFTP/FTP: merge user/account code, merge docs
3023warner@allmydata.com**20081106012558]
3024[docs: move webapi/ftp/sftp into a new frontends/ directory
3025warner@allmydata.com**20081105233050]
3026[ftp/sftp: move to a new frontends/ directory in preparation for factoring out password-auth component
3027warner@allmydata.com**20081105200733]
3028[sftpd: minor debug-logging tweak
3029warner@allmydata.com**20081105194511]
3030[confwiz.py - trying out a new configuration site
3031secorp@allmydata.com**20081105011830]
3032[ftpd: include an (unused) avatar logout callback
3033warner@allmydata.com**20081105000104]
3034[#531: implement an SFTP frontend. Mostly works, still lots of debug messages. Still needs tests and auth-by-pubkey in accounts.file
3035warner@allmydata.com**20081105000022]
3036[docs/ftp.txt: correct Twisted dependency: we don't need VFS, we can use a release, as long as you apply the patch
3037warner@allmydata.com**20081104235840]
3038[shebang: replace "/usr/bin/python" with "/usr/bin/env python"
3039zooko@zooko.com**20081105000306
3040 Ignore-this: 8ae33a8a7828fa7423422e252f2cfd74
3041]
3042[misc/fixshebangs.py
3043zooko@zooko.com**20081105000130
3044 Ignore-this: 13b03ea2d2ed8982f8346a827b46bd2e
3045]
3046[util: copy in pyutil.fileutil.ReopenableNamedTemporaryFile
3047zooko@zooko.com**20081104234715
3048 Ignore-this: f1131e9b8f249b5f10be4cba2aeb6118
3049]
3050[immutable: tolerate filenode.read() with a size= that's too big, rather than hanging
3051warner@allmydata.com**20081104212919]
3052[util: copy in nummedobj from pyutil
3053zooko@zooko.com**20081104195550]
3054[util: copy in dictutil from pyutil
3055zooko@zooko.com**20081104195327]
3056[rollback change... move allmydatacontextmenu registration to installer.tmpl in tahoe-w32-client\installer
3057booker@allmydata.com**20081103213647]
3058[register the AllmydataContextMenu.dll for the context menu handler file sharing shell extension
3059booker@allmydata.com**20081103200027]
3060[debug catalog-shares: tolerate even more errors on bad files/directories
3061warner@allmydata.com**20081030215447]
3062[NEWS: update with all user-visible changes since the last update
3063warner@allmydata.com**20081030213604]
3064[#527: expire the cached files that are used to support Range: headers, every hour, when the file is unused and older than an hour
3065warner@allmydata.com**20081030203909]
3066[util/cachedir.py: add a cache-directory manager class, which expires+deletes unused files after a while
3067warner@allmydata.com**20081030200120]
3068[test_cli: try to fix windows again
3069warner@allmydata.com**20081030193204]
3070[debug/test_cli: fix error handling for catalog-shares, to make the test stop failing on windows
3071warner@allmydata.com**20081030190651]
3072[web: add 'Repair' button to checker results when they indicate unhealthyness. Also add the object's uri to the CheckerResults instance.
3073warner@allmydata.com**20081030010917]
3074[create_node.py: add 'web.static = public_html' to the initial tahoe.cfg
3075warner@allmydata.com**20081030001336]
3076[webapi: serve the /static URL tree from /public_html (configurable)
3077warner@allmydata.com**20081029223431]
3078[catalog-shares command: tolerate errors, log them to stderr, handle v2-immutable shares
3079warner@allmydata.com**20081029221010]
3080[test_web.py: one more line of test coverage
3081warner@allmydata.com**20081029050015]
3082[test_web: improve test coverage of PUT DIRURL t=uri replace=false
3083warner@allmydata.com**20081029045744]
3084[web: test (and fix) PUT DIRURL t=uri, which replaces a directory in-place with some other cap
3085warner@allmydata.com**20081029045446]
3086[web/directory.py: slight shuffle to improve test coverage
3087warner@allmydata.com**20081029045406]
3088[test_client.py: improve test coverage a bit
3089warner@allmydata.com**20081029044335]
3090[node.py: remove unused old_log() function
3091warner@allmydata.com**20081029043558]
3092[node.py: remove support for the old BASEDIR/authorized_keys.PORT file
3093warner@allmydata.com**20081029043420]
3094[move testutil into test/common_util.py, since it doesn't count as 'code under test' for our pyflakes numbers
3095warner@allmydata.com**20081029042831]
3096[util: move PollMixin to a separate file (pollmixin.py), so testutil can be moved into test/
3097warner@allmydata.com**20081029041548]
3098[control.py: removed unused testutil.PollMixin
3099warner@allmydata.com**20081029040359]
3100[web/filenode: oops, fix test failures, not everything has a storage index
3101warner@allmydata.com**20081029011720]
3102[web/filenode: add Accept-Ranges and ETag (for immutable files) headers to GET responses
3103warner@allmydata.com**20081029010103]
3104[#527: respond to GETs with early ranges quickly, without waiting for the whole file to download. Fixes the alacrity problems with the earlier code. Still needs cache expiration.
3105warner@allmydata.com**20081029005618]
3106[#527: support HTTP 'Range:' requests, using a cachefile. Adds filenode.read(consumer, offset, size) method. Still needs: cache expiration, reduced alacrity.
3107warner@lothar.com**20081028204104]
3108[iputil.py: avoid a DNS lookup at startup (which may timeout tests when run on a partially-offline host) by using 198.41.0.4 instead of A.ROOT-SERVERS.NET
3109warner@lothar.com**20081028203646]
3110[interfaces.py: promote immutable.encode.NotEnoughSharesError.. it isn't just for immutable files any more
3111warner@lothar.com**20081027203449]
3112[interfaces.IMutableFileNode.download_best_version(): fix return value
3113warner@lothar.com**20081027202046]
3114[dirnode lookup: use distinct NoSuchChildError instead of the generic KeyError when a child can't be found
3115warner@lothar.com**20081027201525]
3116[storage: don't use colons in the corruption-advisory filename, since windows can't tolerate them
3117warner@lothar.com**20081026024633]
3118[mutable: call remove_advise_corrupt_share when we see share corruption in mapupdate/download/check, tolerate servers that do not implement it
3119warner@lothar.com**20081024202128]
3120[storage: add remote_advise_corrupt_share, for clients to tell storage servers about share corruption that they've discovered. The server logs the report.
3121warner@lothar.com**20081024185248]
3122[mutable/servermap.py: fix needs_merge(), it was incorrectly claiming that mixed shares with distinct seqnums needed a merge, causing repair(force=False) to fail
3123warner@lothar.com**20081024040024]
3124[test_web.test_POST_DIRURL_deepcheck: confirm that /operations/HANDLE/ works with or without the slash
3125warner@lothar.com**20081024021759]
3126[web/checker_results.py: remove dead code
3127warner@lothar.com**20081024001717]
3128[test_web: more test coverage
3129warner@lothar.com**20081024001118]
3130[webapi: fix t=rename from==to, it used to delete the file
3131warner@lothar.com**20081023233236]
3132[test_system: update test to match web checker results
3133warner@lothar.com**20081023233202]
3134[webapi deep-check: show the root as <root>, rather than an empty path string
3135warner@lothar.com**20081023230359]
3136[mutable/checker: announce the mapupdate op on the 'recent uploads+downloads' page
3137warner@lothar.com**20081023230319]
3138[scripts/create_node.py: remove empty-string defaults for --introducer= and --nickname=
3139warner@lothar.com**20081023230235]
3140[deep-check: add webapi links to detailed per-file/dir results
3141warner@lothar.com**20081023230031]
3142[interface.py: fix typo
3143warner@lothar.com**20081023225936]
3144[webapi: make the /operations/ 't=status' qualifier optional, remove it from examples
3145warner@lothar.com**20081023225658]
3146[setup: require the latest version of the setuptools bootstrap egg
3147zooko@zooko.com**20081025152858
3148 Ignore-this: c0c9923ba3008f410d5cc56f2236edb9
3149]
3150[setup: include _pkgutil.py in setuptools bootstrap egg so that it will work on Python 2.4
3151zooko@zooko.com**20081025152839
3152 Ignore-this: 38d81a037c1a3413d69d580ccb13fd67
3153]
3154[setup: pretend the tahoe requires twisted to set up, so that twisted will be there for nevow
3155zooko@zooko.com**20081025135042
3156 Ignore-this: 4e6c7e580f7e30df571e2e63be663734
3157]
3158[setup: require the SVN snapshot of setuptools to build
3159zooko@zooko.com**20081025134959
3160 Ignore-this: f68077dd10d85a71a1e06678365e6753
3161]
3162[setup: remove old bundled setuptools-0.6c9
3163zooko@zooko.com**20081025134947
3164 Ignore-this: 3a95dd72346a60b39ffd6ddfadd1b3a8
3165]
3166[setup: bundle an SVN snapshot of setuptools instead of the most recent stable release of setuptools
3167zooko@zooko.com**20081025134837
3168 Ignore-this: 9a0c9a34b186b972650cf9455edb0d28
3169 This SVN snapshot fixes a problem that prevents the setting up of nevow:
3170 http://bugs.python.org/setuptools/issue20
3171]
3172[setup: reorder dependencies to be sort of increasing order of how much they depend on other stuff
3173zooko@zooko.com**20081025134739
3174 Ignore-this: 6d636aaf5deb37cbf18172824b0bbf87
3175 Not that the order makes any different to how it gets installed, as far as I can tell.
3176]
3177[docs: add a note that when you make a new tahoe release, you should send the announcement to fuse-devel@lists.sourceforge.net
3178zooko@zooko.com**20081023213658]
3179[web/info.py: fix 'Check This Object' link, for files it was checking the parent directory by mistake
3180warner@lothar.com**20081022171056]
3181[#514: add meta-refresh=60 tag to t=status page for incomplete operations
3182warner@lothar.com**20081022164842]
3183[test_dirnode.py: oops, missed a Monitor(), unbreak tests
3184warner@lothar.com**20081022085054]
3185[immutable/filenode.py: add TODO note about the #514 monitor to check(), rather than going through the checker/verifier code and adding it, since Zooko is currently working on that code
3186warner@lothar.com**20081022084237]
3187[more #514: pass a Monitor to all checker operations, make mutable-checker honor the cancel flag
3188warner@lothar.com**20081022083818]
3189[dirnode.py: check for cancel during deep-traverse operations, and don't initiate any new ones if we've been cancelled. Gets us closer to #514.
3190warner@lothar.com**20081022075552]
3191[more #514 log-webop status/cancel: add handle-expiration, test coverage
3192warner@lothar.com**20081022051354]
3193[webapi.txt: improve t=deep-size output docs
3194warner@lothar.com**20081022005331]
3195[#514: improve test coverage
3196warner@lothar.com**20081022005256]
3197[Change deep-size/stats/check/manifest to a start+poll model instead of a single long-running synchronous operation. No cancel or handle-expiration yet. #514.
3198warner@lothar.com**20081022000307]
3199[setup: change ez_setup.py to install setuptools-0.6c9
3200zooko@zooko.com**20080930200502]
3201[setup: bundle setuptools-0.6c9
3202zooko@zooko.com**20080930200448]
3203[setup: remove bundled setuptools-0.6c8
3204zooko@zooko.com**20080930200336]
3205[setup: remove the developer note about doing without GNU make (the GNU make requirement is about to hurt Peter if he tries to follow this doc, by the way)
3206zooko@zooko.com**20081021163200
3207 add classifiers showing with which versions of Python it is known to work.
3208]
3209[* fuse/runtests: added --catch-up-pause option
3210robk-tahoe@allmydata.com**20081021002902
3211 
3212 On linux, write tests are failing because data written to fuse isn't showing
3213 up in tahoe by the time it's checked.  it's not clear where this is originating,
3214 since the fuse implementation [should be] waiting for completion of tahoe
3215 operations before returning from its calls.  This adds an option to control the
3216 duration of a pause between the fuse write and the check of tahoe, which is by
3217 default set to 2s on linux, which - somewhat inexplicably - seems to 'fix' the
3218 problem, in as far as it allows tests to complete.
3219 
3220]
3221[fuse/runtests: include length in drepr() output
3222robk-tahoe@allmydata.com**20081021000159]
3223[fuse/runtests: make exceptions in 'read_in_random_order' into TestFailures
3224robk-tahoe@allmydata.com**20081020235235]
3225[fuse/blackmatch: added asynchronous (background) file download
3226robk-tahoe@allmydata.com**20081020233333
3227 
3228 previously, upon opening a file for reading, the open() call would block
3229 while the entire file was retrieved from tahoe into the cache directory.
3230 This change adds a DownloaderWithReadQueue class, and associated plumbing,
3231 such that an open() will return promptly with the download initiated 'in
3232 the background'.  Subsequent read() operations will block until enough
3233 data has been downloaded to satisfy that request.  This provides a behaviour
3234 similar to streaming, i.e. the client application will be able to read
3235 data from the fuse interface while the remainder of the file is still being
3236 downloaded.
3237 
3238]
3239[fuse/runtests: added 'read_in_random_order' test
3240robk-tahoe@allmydata.com**20081020232427
3241 
3242 this test uploads a test file to tahoe, and then reads the file from fuse,
3243 but reads the blocks of the file in a random order; this is designed to
3244 exercise the asynchronous download feature of blackmatch - where the file
3245 is downloaded from tahoe asynchronously, and rather than blocking open()
3246 for the entirety of the download, instead individual read() calls are
3247 blocked until enough of the file has been downloaded to satisfy them
3248]
3249[fuse/runtests: added a --no-cleanup option
3250robk-tahoe@allmydata.com**20081020155120
3251 
3252 the code had a 'fullcleanup' flag internally which controlled whether
3253 working directories were cleaned up.  this promotes that to a command
3254 line option (negated) '--no-cleanup' defaulting to False, i.e. do cleanup
3255]
3256[fuse/runtests: truncate expected file contents in reported error message
3257robk-tahoe@allmydata.com**20081020144523
3258 
3259 this avoids dumping the repr of 1Mb of random data to stdout in the event
3260 of a test failure, but rather just dumps the start/end of the errant strings
3261 if the amount of data is > 200 chars repr'd
3262]
3263[fuse/blackmatch: fix platform specific problems in repr_flags
3264robk-tahoe@allmydata.com**20081020143052
3265 
3266 the repr_flags debug/logging function had a list of fields from the os
3267 module that might be passed into an open() call, but it included at
3268 least one which was available on the mac but not on linux. symmetrically
3269 linux has numerous flags which are not present on the mac. the repr_flags
3270 function is now tolerant of flags not being present, and has an expanded
3271 list of flags
3272]
3273[makefile: added 'fuse-test' target to makefile, to run 'runtests'
3274robk-tahoe@allmydata.com**20081019132518]
3275[fuse/runtests: added a 'todo' flag, surpressing failure for implementations not expected to pass
3276robk-tahoe@allmydata.com**20081019131600
3277 
3278 since the current tests assume that the implementation responds to changes made
3279 to tahoe after mount, and impl_b prefetches and cached directory data, impl_b
3280 fails the current 'read' test suite.
3281 
3282 rather than reflect that problem in the overall failure of the runtests exit
3283 code, this adds a 'todo' flag to the implementations table, and sets the todo
3284 flag for impl_b.  Thus errors will therein be reported in output, but not cause
3285 a failing exit code.
3286]
3287[fuse/runtests: made runtests exit code depend on success
3288robk-tahoe@allmydata.com**20081017180058
3289 
3290 return an exit code of 0 only if no tests failed, and 1 in the case of
3291 linkage error, test setup failure, or individual test case failure
3292 
3293]
3294[storage.py: assert that immutable share size will fit in the 4-byte v1 container (see #346). The struct module in py2.4 raises an error on overflow, but py2.5 merely emits a warning
3295warner@lothar.com**20081020172208]
3296[NEWS: update to summarize all changes since the last update
3297warner@lothar.com**20081020164047]
3298[fuse/runtest: make removal of webport file soft
3299robk-tahoe@allmydata.com**20081017030154
3300 
3301 previously the runtests suite removed the webport file created by
3302 tahoe create-client in all but the first node.  now that the node config
3303 is in tahoe.cfg by default this file might not exist.
3304]
3305[fuse/blackmatch: update json handling to support simplejson v2
3306robk-tahoe@allmydata.com**20081017025931
3307 
3308 simplejson v2 returns strings as either unicode or str, depending upon its
3309 mood.  thus the interpretation of the node's json repr of a directory, and
3310 the serialisation of strings in the json based rpc both exploded when built
3311 against simplejson v2.  this makes both of these places liberal in their
3312 acceptance of either str or unicode.
3313]
3314[fuse/blackmatch: log exception in server startup
3315robk-tahoe@allmydata.com**20081017014650
3316 
3317 humphf.  my build runs the fuse stuff fine, but the build from the buildslave
3318 doesn't seem to start up properly.  hopefully this will elicit some useful info
3319]
3320[fuse/blackmatch: add readability to some logging, fix a permissions problem
3321robk-tahoe@allmydata.com**20081017004421
3322 
3323 adds a couple of functions to unpack 'mode' and 'flags' for open() calls, to
3324 facilitate debugging.
3325 
3326 adds a fix to ensure that all tmp files created for writing are opened with
3327 permissions 0600 - one problem I had with testing with the Finder was that
3328 files were being opened write only (0200) and were then failing to upload
3329 to tahoe due to internal permission denied errors.
3330 
3331 there remain a variety of problems with finder access which I'm unable to
3332 comprehend at this time.  sometimes copies to tahoe will work fine, sometimes
3333 they yield "the finder cannot complete the operation because some data ...
3334 could not be read or written. (Error code -36)" sometimes "You may need to
3335 enter the name and password for an administrator on this computer to change
3336 the item" sometimes "The operation cannot be completed because an item with
3337 the name ... already exists." and sometimes "The operation cannot be completed
3338 because the item ... is locked."  What seems to be absent is rhyme or reason.
3339 
3340 unix operations (cp, mv) work fine, rsync works fine.
3341 
3342]
3343[fuse/blackmatch: fix linkage problems with daemonize
3344robk-tahoe@allmydata.com**20081016163637
3345 
3346 the daemonize() function imported from twisted was causing problems when
3347 run from a frozen (py2app) build.  I simply copied the daemonize function
3348 into this file, and that fixes the problem.
3349 
3350 also removed a couple of lines of debugging spam that slipped through.
3351 
3352]
3353[gui/macapp: minor bugfixes
3354robk-tahoe@allmydata.com**20081016163052
3355 
3356 though it seemed to work before the 'fstype' passed to fuse of 'allmydata' was
3357 today throwing errors that len(fstype) must be at most 7.
3358 
3359 fixed a typo in changes to 'mount_filesystem()' args
3360 
3361 bumped the delay between mounting a filesystem and 'open'ing it in Finder to
3362 4s, as it seems to take a little longer to mount now the client and server
3363 fuse processes need to coordinate.
3364]
3365[fuse/blackmatch: split into client/server (twisted server)
3366robk-tahoe@allmydata.com**20081016150846
3367 
3368 This implements a client/server split for blackmatch, where the client
3369 implements the fuse_main bindings and a simple blocking rpc client mechanism.
3370 The server implements the other half of that rpc mechanism, and contains all
3371 the actual logic for interpreting fuse requests in the context of the on disk
3372 cache and requests to the tahoe node.  The server is based on a twisted reactor.
3373 
3374 The rpc mechanism implements a simple method dispatch including marshalling,
3375 using json, of basic inert data types, in a flat namespace (no objects).
3376 The client side is written in a blocking idiom, to interface with the threading
3377 model used by the fuse_main bindings, whereas the server side is written for a
3378 twisted reactor-based environment, intended to facilitate implementing more
3379 sophisticated logic in that paradigm.  The two communicate over a unix domain
3380 socket, allocated within the nodedir.
3381 
3382 Command line usage is unchanged; the server is launched automatically by the
3383 client. The server daemonizes itself, to avoid preventing the original parent
3384 process (e.g. 'runtests') from waiting upon the server exiting.
3385 
3386 The client keeps open a 'keepalive' connection to the server; upon loss thereof
3387 the server will exit. This addresses the fact that the python-fuse bindings
3388 provide no notification of exit of the client process upon unmount.
3389 
3390 The client thus provides a relatively thin 'shim' proxying requests from the
3391 fuse_main bindings across the rpc to the server process, which handles the
3392 logic behind each request. 
3393 
3394 For the time being, a '--no-split' option is provided to surpress the splitting
3395 into client/server, yielding the prior behaviour.  Once the server logic gets
3396 more complex and more entrenched in a twisted idiom, this might be removed.
3397 The 'runtests' test harness currently tests both modes, as 'impl_c' and
3398 'impl_c_no_split'
3399 
3400]
3401[fuse/blackmatch: 'flatten' the fuse api implementation
3402robk-tahoe@allmydata.com**20081016143547
3403 
3404 the previous revision of blackmatch used a file_class to delegate all fuse
3405 api operations on files to a specific per-file class, which is an option
3406 given by the python-fuse bindings.
3407 
3408 this is a pre-cursor to the 'split' client/server version, which uses a
3409 simple, moreover flat, rpc mechanism to broker access to methods.
3410]
3411[fuse/runtests: disable impl_a/impl_b on mac, as they don't actually work.
3412robk-tahoe@allmydata.com**20081016143232]
3413[fuse/runtests: added write_partial_overwrite test
3414robk-tahoe@allmydata.com**20081016142926
3415 
3416 this tests opening a file for update, overwriting a small part of it, and
3417 ensuring that the end result constitutes an overwrite of the original file.
3418 This tests, e.g. the implementation doesn' open a 'fresh' file but does in
3419 fact initialise the file to be uploaded with the contents of any extant
3420 file before applying updates
3421 
3422]
3423[fuse/runtests: added --tests, renamed --suites
3424robk-tahoe@allmydata.com**20081016142836
3425 
3426 changed the --tests option to be --suites, as it takes a prefix, e.g. 'read'
3427 'write' (or 'all', the default) and runs those suites which are applicable to
3428 each implementation being tested.
3429 
3430 added a --tests option, which takes a list of tests, e.g. 'read_file_contents'
3431 'write_overlapping_large_writes' and runs all tests specified without regard
3432 to whether the implementation(s) under test are declared to support them.
3433 
3434 this is basically to allow a specific test or two to be run, saving time
3435 during development and debugging by not running the entire suite
3436]
3437[fuse/runtests: added 'random scatter' write test
3438robk-tahoe@allmydata.com**20081003233436
3439 
3440 this writes the test file in a randomised order, with randomly sized writes.
3441 also for each 'slice' of the file written, a randomly chosen overlapping
3442 write is also made to the file.  this ensures that the file will be written
3443 in its entirety in a thoroughly random order, with many overlapping writes.
3444]
3445[fuse/runtests: add overlapping write tests
3446robk-tahoe@allmydata.com**20081003224833
3447 
3448 using both small and large blocksizes for writes, write a 1Mb file to fuse
3449 where every write overlaps another.
3450 
3451 This serves a useful purpose - in manual testing of blackmatch some time ago
3452 most operations e.g. bulk copies, worked fine, but using rsync caused data
3453 corruption on most files.  it turned out to be that rsync writes in 64K blocks,
3454 but rather than making the last block short, the last block instead overlaps
3455 the preceding (already written) block.  This revealed a problem where cache
3456 files were being opened 'append' rather than 'write' and hence the overlapping
3457 write to the fuse layer caused the overlapping portion of the file to be
3458 duplicated in cache, leading to oversized and corrupt files being uploaded.
3459]
3460[fuse/runtests: remove write small file test, as it's subsumed by the tiny_file test
3461robk-tahoe@allmydata.com**20081003223944]
3462[fuse/runtests: added linear write tests for various block sizes
3463robk-tahoe@allmydata.com**20081003223550
3464 
3465 unit tests to test writing contiguous blocks linearly through the file,
3466 for a variety of block sizes;  'tiny_file' is an entire file fitting within
3467 a single io block / write operation.  'linear_{small,large}_writes' test
3468 a 1Mb file written with each write operation containing significantly less
3469 or more, respecitvely, data than fuse will pass into the implementation as
3470 a single operation (which on the mac at least is 64Kib)
3471]
3472[fuse/runtests: add a very simple 'write' test
3473robk-tahoe@allmydata.com**20081003172044
3474 
3475 this performs a very simple write through the fuse layer and confirms that
3476 the file is stored correctly into the tahoe mesh.  ('simple' in the sense
3477 that the entire file body fits trivially in a single write() operation,
3478 disk block etc)
3479]
3480[fuse/runtests: added a --web-open option
3481robk-tahoe@allmydata.com**20081003172026
3482 
3483 similar to the --debug-wait option which causes the test harness to
3484 pause at various stages of the process to facilitate debugging, this
3485 option simplifies that debugging by automatically opening a web browser
3486 to the root dir of that implementation's tests when tests are commenced.
3487 
3488 in addition, if --web-open is specfied but --debug-wait is not, the
3489 harness will still pause after running tests but before tearing down
3490 the tahoe grid - this allows all tests to run to completion, but
3491 provide a debugging hook to investigate the end state of the grid's
3492 contents thereafter.
3493]
3494[fuse/impl_a: fix a suspected bug in caching
3495robk-tahoe@allmydata.com**20081003171309
3496 
3497 from my examination of the tahoe_fuse ('impl_a') code, it looks like
3498 the intention is to cache the file contents in memory while it's open,
3499 since it does in fact do that.  however it looks like it also ignored
3500 that cache entirely, and made an individual tahoe webapi GET request
3501 for each and every read() operation regardless of the relative size of
3502 the read block and the file in question.
3503 
3504 this changes that to make read() use the data in memory rather than
3505 fetch the data over again.   if there's something more subtle going
3506 on, please let me know.
3507]
3508[gui/macapp: slew of code cleanup; unmount filesystems on quit
3509robk-tahoe@allmydata.com**20080925233235
3510 
3511 a handful of code cleanup, renaming and refactoring.  basically consolidating
3512 'application logic' (mount/unmount fs) into the 'MacGuiApp' class (the wx.App)
3513 and cleaning up various scoping things around that.  renamed all references to
3514 'app' to refer more clearly to the 'AppContainer' or to the guiapp.
3515 
3516 globally renamed basedir -> nodedir
3517 
3518 also made the guiapp keep a note of each filesystem it mounts, and unmount
3519 them upon 'quit' so as to cleanup the user's environment before the tahoe node
3520 vanishes from out underneath the orphaned tahoe fuse processes
3521 
3522]
3523[gui/macapp: make submenu of aliases for 'webopen'
3524robk-tahoe@allmydata.com**20080925163919
3525 
3526 this changes the 'open webroot' menu item to be a submenu listing all aliases
3527 defined in ~/.tahoe.  Note that the dock menu does not support submenus, so it
3528 only offers a single 'open webroot' option for the default tahoe: alias.
3529 
3530 I had trouble with this at first and concluded that the submenus didn't work,
3531 and made it a distinct 'WebUI' menu in it's own right.  on further inspection,
3532 there are still problems but they seem to be something like once the dock menu
3533 has been used, sometimes the app's main menubar menus will cease to function,
3534 and this happens regardless of whether submenus or plain simple menus are used.
3535 I have no idea what the peoblem is, but it's not submenu specific.
3536]
3537[repairer: fix flaw in testutil.flip_one_bit() that Brian pointed out
3538zooko@zooko.com**20081016194848]
3539[misc/incident-gatherer: add classify_tahoe.py: a foolscap incident-gatherer classification plugin
3540warner@allmydata.com**20081015220940]
3541[repairer: test all different kinds of corruption that can happen to share files on disk
3542zooko@zooko.com**20081014230920]
3543[util/time_format.py: accept space separator, add unit tests
3544warner@allmydata.com**20081013225258]
3545[test_storage: use different filenames, poor stupid windows
3546warner@allmydata.com**20081010021139]
3547[scripts/debug.py: emit the immutable-share version number, tolerate v2
3548warner@allmydata.com**20081010013422]
3549[storage.py: improve some precondition() error messages
3550warner@allmydata.com**20081010011425]
3551[storage: introduce v2 immutable shares, with 8-byte offsets fields, to remove two of the three size limitations in #346. This code handles v2 shares but does not generate them. We'll make a release with this v2-tolerance, wait a while, then make a second release that actually generates v2 shares, to avoid compatibility problems.
3552warner@allmydata.com**20081010011327]
3553[debug.py: oops, add missing import for ReadBucketProxy
3554warner@allmydata.com**20081010002922]
3555[storage: split WriteBucketProxy and ReadBucketProxy out into immutable/layout.py . No behavioral changes.
3556warner@allmydata.com**20081010000800]
3557[interfaces: loosen a few max-size constraints which would limit us to a mere 1.09 TB maximum file size
3558zooko@zooko.com**20081009191357
3559 
3560 These constraints were originally intended to protect against attacks on the
3561 storage server protocol layer which exhaust memory in the peer.  However,
3562 defending against that sort of DoS is hard -- probably it isn't completely
3563 achieved -- and it costs development time to think about it, and it sometimes
3564 imposes limits on legitimate users which we don't necessarily want to impose.
3565 So, for now we forget about limiting the amount of RAM that a foolscap peer can
3566 cause you to start using.
3567 
3568]
3569[util/limiter: add a repr
3570warner@allmydata.com**20081007201945]
3571[dirnode.build_manifest: include node.list in the limiter, that's the most important thing to slow down
3572warner@allmydata.com**20081007201929]
3573[web/directory: t=manifest output=html: make the caps into clickable hrefs
3574warner@allmydata.com**20081007201845]
3575[web/directory: factor out the get_root function
3576warner@allmydata.com**20081007201742]
3577[web/directory.py: remove unused imports
3578warner@allmydata.com**20081007194820]
3579[test_web: deep-size is more variable than I thought, so assert less
3580warner@allmydata.com**20081007051147]
3581[web: change t=manifest to return a list of (path,read/writecap) tuples, instead of a list of verifycaps. Add output=html,text,json.
3582warner@allmydata.com**20081007043618]
3583[web: rewrite t=deep-size in terms of deep-stats, update test to match inclusion of directory sizes
3584warner@allmydata.com**20081007043539]
3585[ftpd: hush pyflakes
3586warner@allmydata.com**20081007014513]
3587[ftpd: make sure we're using a patched/fixed Twisted, to avoid confusion later
3588warner@allmydata.com**20081007011411]
3589[ftp: change the twisted hack necessary for async-write-close, to one more agreeable to the twisted-dev folks, add a copy of the necessary patch to docs/ftp.txt
3590warner@allmydata.com**20081007010605]
3591[ftpd: remove debug messages
3592warner@allmydata.com**20081006231620]
3593[ftpd: add native_client.php -based HTTP authentication scheme
3594warner@allmydata.com**20081006231511]
3595[ftpd: add ftp.accounts checker, remove InMemoryPasswordChecker
3596warner@allmydata.com**20081006225124]
3597[test_system: add test coverage for immutable download.ConsumerAdapter, remove debug messages
3598warner@allmydata.com**20081006225037]
3599[ftp server: initial implementation. Still needs unit tests, custom Twisted patches. For #512
3600warner@allmydata.com**20081006195236]
3601[test_cli.py: remove unused imports
3602warner@allmydata.com**20081007004204]
3603[CLI: remove 'tahoe admin generate-keypair', since the pycryptopp ecdsa API is about to change incompatibly. We'll undo this once pycryptopp is updated
3604warner@allmydata.com**20081007002320]
3605[docs: update architecture.txt 's section on the vdrive a.k.a. filesystem layer
3606zooko@zooko.com**20081006210500
3607 Remove some obsolete parts (correct at the time, now incorrect), change terminology to reflect my preference: s/vdrive/filesystem/ and s/dirnode/directory/, and make a few other small changes.
3608]
3609[dirnode: fix my remarkably-consistent 'metdadata' typo
3610warner@allmydata.com**20081003010845]
3611[interfaces: fix minor typo
3612warner@allmydata.com**20081003005249]
3613[dirnode: add get_child_and_metadata_at_path
3614warner@allmydata.com**20081003005203]
3615[stop using 'as' as an identifier: as with 'with', 'as' has become a reserved word in python 2.6
3616warner@allmydata.com**20081003002749]
3617[scripts/admin: split up generate_keypair code so that unit tests can use it more easily
3618warner@allmydata.com**20081001235238]
3619[docs: add some notes about things to do for a Tahoe release on pypi, freshmeat, and launchpad
3620zooko@zooko.com**20081001210703]
3621[misc/cpu-watcher.tac: use writeaside-and-rename for the history.pickle file
3622warner@allmydata.com**20081001003053]
3623[misc/spacetime: use async polling so we can add a 60-second timeout, add an index to the 'url' Axiom column for 2x speedup
3624warner@allmydata.com**20080930233448]
3625[#518: replace various BASEDIR/* config files with a single BASEDIR/tahoe.cfg, with backwards-compatibility of course
3626warner@allmydata.com**20080930232149]
3627[tolerate simplejson-2.0.0 and newer, which frequently return bytestrings instead of unicode objects. Closes #523
3628warner@allmydata.com**20080930222106]
3629[munin/tahoe_doomsday: oops, tolerate 'null' in the timeleft results, to unbreak the 2wk/4wk graphs
3630warner@allmydata.com**20080930202051]
3631[test_node: improve coverage of advertised_ip_addresses a bit
3632warner@allmydata.com**20080930060816]
3633[testutil.PollMixin: set default timeout (to 100s), emit a more helpful error when the timeout is hit
3634warner@allmydata.com**20080930052309]
3635[repair: fix test to map from storage index to directory structure properly (thanks, cygwin buildbot, for being so kloodgey that you won't accept random binary filenames and thus making me notice this bug)
3636zooko@zooko.com**20080926224913]
3637[repairer: assert that the test code isn't accidentally allowing the repairer code which is being tested to do impossible things
3638zooko@zooko.com**20080926222353]
3639[repairer: enhance the repairer tests
3640zooko@zooko.com**20080926174719
3641 Make sure the file can actually be downloaded afterward, that it used one of the
3642 deleted and then repaired shares to do so, and that it repairs from multiple
3643 deletions at once (without using more than a reasonable amount of calls to
3644 storage server allocate).
3645]
3646[netstring: add required_trailer= argument
3647warner@allmydata.com**20080926165754]
3648[test_netstring.py: move netstring tests to a separate file
3649warner@allmydata.com**20080926165526]
3650[move netstring() and split_netstring() into a separate util.netstring module
3651warner@allmydata.com**20080926043824]
3652[repairer: remove a test that doesn't apply to the repair-from-corruption case
3653zooko@zooko.com**20080925220954]
3654[repairer: add a test that repairer fixes corrupted shares (in addition to the test that it fixes deleted shares)
3655zooko@zooko.com**20080925220712]
3656[docs: proposed mutable file crypto design with ECDSA, 96-bit private keys, and semi-private keys (from http://allmydata.org/~zooko/lafs.pdf )
3657zooko@zooko.com**20080925213457]
3658[docs: mutable file crypto design (from http://allmydata.org/~zooko/lafs.pdf )
3659zooko@zooko.com**20080925213433]
3660[repairer: fix swapped docstrings; thanks Brian
3661zooko@zooko.com**20080925182436]
3662[trivial: remove unused imports; thanks, pyflakes
3663zooko@zooko.com**20080925180422]
3664[trivial: remove unused imports -- thanks, pyflakes
3665zooko@zooko.com**20080925173453]
3666[repairer: add basic test of repairer, move tests of immutable checker/repairer from test_system to test_immutable_checker, remove obsolete test helper code from test_filenode
3667zooko@zooko.com**20080925171653
3668 Hm...  "Checker" ought to be renamed to "CheckerRepairer" or "Repairer" at some point...
3669]
3670[setup: remove a few minimal unit tests from test_filenode which have been obviated by much better tests in test_mutable and test_system
3671zooko@zooko.com**20080925161544]
3672[gui/macapp: rough cut of ui tweaks; configurability, auto-mount
3673robk-tahoe@allmydata.com**20080925141224
3674 
3675 chatting with peter, two things the mac gui needed were the ability to mount
3676 the 'allmydata drive' automatically upon launching the app, and open the
3677 Finder to reveal it.  (also a request to hide the debug 'open webroot' stuff)
3678 
3679 this (somewhat rough) patch implements all the above as default behaviour
3680 
3681 it also contains a quick configuration mechanism for the gui - rather than a
3682 preferences gui, running with a more 'tahoe' styled mechanism, the contents
3683 of a few optional files can modify the default behaviour, specifically file
3684 in ~/.tahoe/gui.conf control behaviour as follows:
3685 
3686 auto-mount (bool): if set (the default) then the mac app will, upon launch
3687 automatically mount the 'tahoe:' alias with the display name 'Allmydata'
3688 using a mountpoint of ~/.tahoe/mnt/__auto__
3689 
3690 auto-open (bool): if set (the default) then upon mounting a file system
3691 (including the auto-mount if set) finder will be opened to the mountpoint
3692 of the filesystem, which essentially reveals the newly mounted drive in a
3693 Finder window
3694 
3695 show-webopen (bool): if set (false by default) then the 'open webroot'
3696 action will be made available in both the dock and file menus of the app
3697 
3698 daemon-timout (int): sets the daemon-timeout option passed into tahoe fuse
3699 when a filesystem is mounted. this defaults to 5 min
3700 
3701 files of type (int) much, naturally contain a parsable int representation.
3702 files of type (bool) are considered true if their (case-insensitive) contents
3703 are any of ['y', 'yes', 'true', 'on', '1'] and considered false otherwise.
3704 
3705]
3706[gui/macapp: improve 'about' box
3707robk-tahoe@allmydata.com**20080925135415
3708 
3709 adds exactly 1 metric dollop of professionalism to the previously
3710 rather amateurish looking about box.
3711]
3712[fuse/impl_c: UNDO --auto-fsid option
3713robk-tahoe@allmydata.com**20080925134730
3714 
3715 rolling back:
3716 
3717 Thu Sep 25 14:42:23 BST 2008  robk-tahoe@allmydata.com
3718   * fuse/impl_c: add --auto-fsid option
3719   
3720   this was inspired by reading the fuse docs and discovering the 'fsid' option
3721   to fuse_main, and was _intended_ to support a sort of 'stability' to the
3722   filesystem (specifically derived from the root-uri mounted, whether directly
3723   or via an alias) to support mac aliases across unmount/remount etc.
3724   
3725   some experimentation shows that that doesn't actually work, and that, at
3726   least for mac aliases in my testing, they're tied to path-to-mountpoint and
3727   not to the fsid - which seems to have no bearing.  perhaps the 'local' flag
3728   is causing weirdness therein.
3729   
3730   at any rate, I'm recording it simply for posterity, in case it turns out to
3731   be useful after all somewhere down the road.
3732   
3733 
3734     M ./contrib/fuse/impl_c/blackmatch.py +13
3735]
3736[fuse/impl_c: add --auto-fsid option
3737robk-tahoe@allmydata.com**20080925134223
3738 
3739 this was inspired by reading the fuse docs and discovering the 'fsid' option
3740 to fuse_main, and was _intended_ to support a sort of 'stability' to the
3741 filesystem (specifically derived from the root-uri mounted, whether directly
3742 or via an alias) to support mac aliases across unmount/remount etc.
3743 
3744 some experimentation shows that that doesn't actually work, and that, at
3745 least for mac aliases in my testing, they're tied to path-to-mountpoint and
3746 not to the fsid - which seems to have no bearing.  perhaps the 'local' flag
3747 is causing weirdness therein.
3748 
3749 at any rate, I'm recording it simply for posterity, in case it turns out to
3750 be useful after all somewhere down the road.
3751 
3752]
3753[manhole: be more tolerant of authorized_keys. files in .tahoe
3754robk-tahoe@allmydata.com**20080925031149
3755 
3756 both peter and I independently tried to do the same thing to eliminate the
3757 authorized_keys file which was causing problems with the broken mac build
3758 (c.f. #522) namely mv authorized_keys.8223{,.bak}  but the node is, ahem,
3759 let's say 'intolerant' of the trailing .bak - rather than disable the
3760 manhole as one might expect, it instead causes the node to explode on
3761 startup.  this patch makes it skip over anything that doesn't pass the
3762 'parse this trailing stuff as an int' test.
3763]
3764[fuse/impl_c: move mac tahoefuse impl out into contrib/fuse
3765robk-tahoe@allmydata.com**20080925014214
3766 
3767 For a variety of reasons, high amongst them the fact that many people
3768 interested in fuse support for tahoe seem to have missed its existence,
3769 the existing fuse implementation for tahoe, previously 'mac/tahoefuse.py'
3770 has been renamed and moved.
3771 
3772 It was suggested that, even though the mac build depends upon it, that
3773 the mac/tahoefuse implementation be moved into contrib/fuse along with
3774 the other fuse implementations.  The fact that it's not as extensively
3775 covered by unit tests as mainline tahoe was given as corroboration.
3776 
3777 In a bid to try and stem the confusion inherent in having tahoe_fuse,
3778 tfuse and tahoefuse jumbled together (not necessarily helped by
3779 referring to them as impl_a, b and c respectively) I'm hereby renaming
3780 tahoefuse as 'blackmatch'  (black match is, per wikipedia "a type of
3781 crude fuse" hey, I'm a punny guy)  Maybe one day it'll be promoted to
3782 be 'quickmatch' instead...
3783 
3784 Anyway, this patch moves mac/tahoefuse.py out to contrib/fuse/impl_c/
3785 as blackmatch.py, and makes appropriate changes to the mac build process
3786 to transclude blackmatch therein.  this leaves the extant fuse.py and
3787 fuseparts business in mac/ as-is and doesn't attempt to address such
3788 issues in contrib/fuse/impl_c.
3789 
3790 it is left as an exercise to the reader (or the reader of a message
3791 to follow) as to how to deal with the 'fuse' python module on the mac.
3792 
3793 as of this time, blackmatch should work on both mac and linux, and
3794 passes the four extant tests in runtests.  (fwiw neither impl_a nor
3795 impl_b have I managed to get working on the mac yet)
3796 
3797 since blackmatch supports a read-write and caching fuse interface to
3798 tahoe, some write tests obviously need to be added to runtests.
3799 
3800]
3801[macapp: changes to support aliases, updated tahoefuse command line options
3802robk-tahoe@allmydata.com**20080925010128
3803 
3804 the tahoefuse command line options changed to support the runtests harness,
3805 and as part of that gained support for named aliases via --alias
3806 
3807 this changes the mac app's invocation of tahoefuse to match that, and also
3808 changes the gui to present the list of defined aliases as valid mounts
3809 
3810 this replaces the previous logic which examined the ~/.tahoe/private directory
3811 looking for files ending in '.cap' - an ad-hoc alias mechanism.
3812 
3813 if a file is found matching ~/.tahoe/private/ALIASNAME.icns then that will still
3814 be passed to tahoefuse as the icon to display for that filesystem. if no such
3815 file is found, the allmydata icon will be used by default.
3816 
3817 the '-olocal' option is passed to tahoefuse.  this is potentially contentious.
3818 specifically this is telling the OS that this is a 'local' filesystem, which is
3819 intended to be used to locally attached devices.  however leopard (OSX 10.5)
3820 will only display non-local filesystems in the Finder's side bar if they are of
3821 fs types specifically known by Finder to be network file systems (nfs, cifs,
3822 webdav, afp)  hence the -olocal flag is the only way on leopard to cause finder
3823 to display the mounted filesystem in the sidebar, but it displays as a 'device'.
3824 there is a potential (i.e. the fuse docs carry warnings) that this may cause
3825 vague and unspecified undesirable behaviour.
3826 (c.f. http://code.google.com/p/macfuse/wiki/FAQ specifically Q4.3 and Q4.1)
3827 
3828 
3829]
3830[fuse/impl_c: reworking of mac/tahoefuse, command line options, test integration
3831robk-tahoe@allmydata.com**20080925001535
3832 
3833 a handful of changes to the tahoefuse implementation used by the mac build, to
3834 make command line option parsing more flexible and robust, and moreover to
3835 facilitate integration of this implementation with the 'runtests' test harness
3836 used to test the other two implementations.
3837 
3838 this patch includes;
3839 - improvements to command line option parsing [ see below ]
3840 - support for 'aliases' akin to other tahoe tools
3841 - tweaks to support linux (ubuntu hardy)
3842 
3843 the linux support tweaks are, or at least seem to be, a result of the fact that
3844 hardy ships with fuse 0.2pre3, as opposed to the fuse0.2 that macfuse is based
3845 upon.  at least the versions I was working with have discrepencies in their
3846 interfaces, but on reflection this is probably a 'python-fuse' version issue
3847 rather than fuse per se.  At any rate, the fixes to handling the Stat objects
3848 should be safe against either version, it's just that the bindings on hardy
3849 lacked code that was in the 'fuse' python module on the mac...
3850 
3851 command line options:
3852 
3853 the need for more flexible invocation in support of the runtests harness led
3854 me to rework the argument parsing from some simple positional hacks with a
3855 pass-through of the remainder to the fuse binding's 'fuse_main' to a system
3856 using twisted.usage to parse arguments, and having just one option '-o' being
3857 explicitly a pass-through for -o options to fuse_main. the options are now:
3858 
3859 --node-directory NODEDIR : this is used to look up the node-url to connect
3860 to if that's not specified concretely on the command line, and also used to
3861 determine the location of the cache directory used by the implementation,
3862 specifically '_cache' within the nodedir.  default value: ~/.tahoe
3863 
3864 --node-url NODEURL : specify a node-url taking precendence over that found
3865 in the node.url file within the nodedir
3866 
3867 --alias ALIAS : specifies the named alias should be mounted. a lookup is
3868 performed in the alias table within 'nodedir' to find the root dir cap
3869 the named alias must exist in the alias table of the specified nodedir
3870 
3871 --root-uri ROOTURI : specifies that the given directory uri should be mounted
3872 
3873 at least one of --alias and --root-uri must be given (which directory to mount
3874 must be specified somehow)  if both are given --alias takes precedence.
3875 
3876 --cache-timeout TIMEOUTSECS : specifies the number of seconds that cached
3877 directory data should be considered valid for.  this tahoefuse implementation
3878 implements directory caching for a limited time; largely because the mac (i.e.
3879 the Finder in particular) tends to make a large number of requests in quick
3880 successsion when browsing the filesystem.  on the flip side, the 'runtests'
3881 unit tests fail in the face of such caching because the changes made to the
3882 underlying tahoe directories are not reflected in the fuse presentation.  by
3883 specifying a cache-timeout of 0 seconds, runtests can force the fuse layer
3884 into refetching directory data upon each request.
3885 
3886 any number of -oname=value options may be specified on the command line,
3887 and they will all be passed into the underlying fuse_main call.
3888 
3889 a single non-optional argument, the mountpoint, must also be given.
3890 
3891 
3892 
3893]
3894[fuse/tests: slew of changes to fuse 'runtests'
3895robk-tahoe@allmydata.com**20080924183601
3896 
3897 This patch makes a significant number of changes to the fuse 'runtests' script
3898 which stem from my efforts to integrate the third fuse implementation into this
3899 framework.  Perhaps not all were necessary to that end, and I beg nejucomo's
3900 forebearance if I got too carried away.
3901 
3902 - cleaned up the blank lines; imho blank lines should be empty
3903 
3904 - made the unmount command switch based on platform, since macfuse just uses
3905 'umount' not the 'fusermount' command (which doesn't exist)
3906 
3907 - made the expected working dir for runtests the contrib/fuse dir, not the
3908 top-level tahoe source tree - see also discussion of --path-to-tahoe below
3909 
3910 - significantly reworked the ImplProcManager class.  rather than subclassing
3911 for each fuse implementation to be tested, the new version is based on
3912 instantiating objects and providing relevant config info to the constructor.
3913 this was motivated by a desire to eliminate the duplication of similar but
3914 subtly different code between instances, framed by consideration of increasing
3915 the number of platforms and implementations involved. each implementation to
3916 test is thus reduced to the pertinent import and an entry in the
3917 'implementations' table defining how to handle that implementation. this also
3918 provides a way to specify which sets of tests to run for each implementation,
3919 more on that below.
3920 
3921 
3922 - significantly reworked the command line options parsing, using twisted.usage;
3923 
3924 what used to be a single optional argument is now represented by the
3925 --test-type option which allows one to choose between running unittests, the
3926 system tests, or both.
3927 
3928 the --implementations option allows for a specific (comma-separated) list of
3929 implemenations to be tested, or the default 'all'
3930 
3931 the --tests option allows for a specific (comma-separated) list of tests sets
3932 to be run, or the default 'all'.  note that only the intersection of tests
3933 requested on the command line and tests relevant to each implementation will
3934 be run. see below for more on tests sets.
3935 
3936 the --path-to-tahoe open allows for the path to the 'tahoe' executable to be
3937 specified. it defaults to '../../bin/tahoe' which is the location of the tahoe
3938 script in the source tree relative to the contrib/fuse dir by default.
3939 
3940 the --tmp-dir option controls where temporary directories (and hence
3941 mountpoints) are created during the test.  this defaults to /tmp - a change
3942 from the previous behaviour of using the system default dir for calls to
3943 tempfile.mkdtemp(), a behaviour which can be obtained by providing an empty
3944 value, e.g. "--tmp-dir="
3945 
3946 the --debug-wait flag causes the test runner to pause waiting upon user
3947 input at various stages through the testing, which facilitates debugging e.g.
3948 by allowing the user to open a browser and explore or modify the contents of
3949 the ephemeral grid after it has been instantiated but before tests are run,
3950 or make environmental adjustments before actually triggering fuse mounts etc.
3951 note that the webapi url for the first client node is printed out upon its
3952 startup to facilitate this sort of debugging also.
3953 
3954 
3955 - the default tmp dir was changed, and made configurable. previously the
3956 default behaviour of tempfile.mkdtemp() was used.  it turns out that, at least
3957 on the mac, that led to temporary directories to be created in a location
3958 which ultimately led to mountpoint paths longer than could be handled by
3959 macfuse - specifically mounted filesystems could not be unmounted and would
3960 'leak'. by changing the default location to be rooted at /tmp this leads to
3961 mountpoint paths short enough to be supported without problems.
3962 
3963 - tests are now grouped into 'sets' by method name prefix.  all the existing
3964 tests have been moved into the 'read' set, i.e. with method names starting
3965 'test_read_'. this is intended to facilitate the fact that some implementations
3966 are read-only, and some support write, so the applicability of tests will vary
3967 by implementation. the 'implementations' table, which governs the configuration
3968 of the ImplProcManager responsible for a given implementation, provides a list
3969 of 'test' (i.e test set names) which are applicable to that implementation.
3970 note no 'write' tests yet exist, this is merely laying the groundwork.
3971 
3972 - the 'expected output' of the tahoe command, which is checked for 'surprising'
3973 output by regex match, can be confused by spurious output from libraries.
3974 specfically, testing on the mac produced a warning message about zope interface
3975 resolution various multiple eggs.  the 'check_tahoe_output()' function now has
3976 a list of 'ignorable_lines' (each a regex) which will be discarded before the
3977 remainder of the output of the tahoe script is matched against expectation.
3978 
3979 - cleaned up a typo, and a few spurious imports caught by pyflakes
3980 
3981]
3982[fuse/impl_{a,b}: improve node-url handling
3983robk-tahoe@allmydata.com**20080924182854
3984   
3985 specifically change the expectation of the code to be such that the node-url
3986 (self.url) always includes the trailing slash to be a correctly formed url
3987 
3988 moreover read the node-url from the 'node.url' file found in the node 'basedir'
3989 and only if that doesn't exist, then fall back to reading the 'webport' file
3990 from therein and assuming localhost.  This then supports the general tahoe
3991 pattern that tools needing only a webapi server can be pointed at a directory
3992 containing the node.url file, which can optionally point to another server,
3993 rather than requiring a complete node dir and locally running node instance.
3994 
3995]
3996[fuse/impl_b: tweaks from testing on hardy
3997robk-tahoe@allmydata.com**20080924180738
3998 
3999 from testing on linux (specifically ubuntu hardy) the libfuse dll has a
4000 different name, specifically libfuse.so.2. this patch tries libfuse.so
4001 and then falls back to trying .2 if the former fails.
4002 
4003 it also changes the unmount behaviour, to simply return from the handler's
4004 loop_forever() loop upon being unmounted, rather than raising an EOFError,
4005 since none of the client code I looked at actually handled that exception,
4006 but did seem to expect to fall off of main() when loop_forever() returned.
4007 Additionally, from my testing unmount typically led to an OSError from the
4008 fuse fd read, rather than an empty read, as the code seemed to expect.
4009 
4010 also removed a spurious import pyflakes quibbled about.
4011]
4012[setup: fix site-dirs to find system installed twisted on mac.
4013robk-tahoe@allmydata.com**20080924174255
4014 
4015 zooko helped me unravel a build weirdness today.  somehow the system installed
4016 twisted (/System/Library) was pulling in parts of the other twisted (/Library)
4017 which had been installed by easy_install, and exploding.
4018 
4019 getting rid of the latter helped, but it took this change to get the tahoe
4020 build to stop trying to rebuild twisted and instead use the one that was
4021 already installed. c.f. tkt #229
4022]
4023[CLI: rework webopen, and moreover its tests w.r.t. path handling
4024robk-tahoe@allmydata.com**20080924164523
4025 
4026 in the recent reconciliation of webopen patches, I wound up adjusting
4027 webopen to 'pass through' the state of the trailing slash on the given
4028 argument to the resultant url passed to the browser.  this change
4029 removes the requirement that arguments must be directories, and allows
4030 webopen to be used with files.  it also broke the tests that assumed
4031 that webopen would always normalise the url to have a trailing slash.
4032 
4033 in fixing the tests, I realised that, IMHO, there's something deeply
4034 awry with the way tahoe handles paths; specifically in the combination
4035 of '/' being the name of the root path within an alias, but a leading
4036 slash on paths, e.g. 'alias:/path', is catagorically incorrect. i.e.
4037  'tahoe:' == 'tahoe:/' == '/'
4038 but 'tahoe:/foo' is an invalid path, and must be 'tahoe:foo'
4039 
4040 I wound up making the internals of webopen simply spot a 'path' of
4041 '/' and smash it to '', which 'fixes' webopen to match the behaviour
4042 of tahoe's path handling elsewhere, but that special case sort of
4043 points to the weirdness.
4044 
4045 (fwiw, I personally found the fact that the leading / in a path was
4046 disallowed to be weird - I'm just used to seeing paths qualified by
4047 the leading / I guess - so in a debate about normalising path handling
4048 I'd vote to include the /)
4049 
4050]
4051[CLI: reconcile webopen changes
4052robk-tahoe@allmydata.com**20080924152002
4053 
4054 I think this is largely attributable to a cleanup patch I'd made
4055 which never got committed upstream somehow, but at any rate various
4056 conflicting changes to webopen had been made. This cleans up the
4057 conflicts therein, and hopefully brings 'tahoe webopen' in line with
4058 other cli commands.
4059]
4060[cli: cleanup webopen command
4061robk-tahoe@allmydata.com**20080618201940
4062 
4063 moved the body of webopen out of cli.py into tahoe_webopen.py
4064 
4065 made its invocation consistent with the other cli commands, most
4066 notably replacing its 'vdrive path' with the same alias parsing,
4067 allowing usage such as 'tahoe webopen private:Pictures/xti'
4068]
4069[macapp: changed to remove 'Tahoe' from .app name
4070robk-tahoe@allmydata.com**20080611003145
4071 
4072 Change the build product from 'Allmydata Tahoe' to 'Allmydata'
4073 more inkeeping with the branding of the Allmydata product
4074]
4075[add --syslog argument to 'tahoe start' and 'tahoe restart', used to pass --syslog to twistd for non-Tahoe nodes (like cpu-watcher)
4076warner@allmydata.com**20080925010302]
4077[misc/make-canary-files.py: tool to create 'canary files', explained in the docstring
4078warner@allmydata.com**20080925004716]
4079[webapi: survive slashes in filenames better: make t=info and t=delete to work, and let t=rename fix the problem
4080warner@allmydata.com**20080924203505]
4081[setup: when detecting platform, ask the Python Standard Library's platform.dist() before executing lsb_release, and cache the result in global (module) variables
4082zooko@zooko.com**20080924180922
4083 This should make it sufficiently fast, while still giving a better answer on Ubuntu than platform.dist() currently does, and also falling back to lsb_release if platform.dist() says that it doesn't know.
4084]
4085[node.py: add BASEDIR/keepalive_timeout and BASEDIR/disconnect_timeout, to set/enable the foolscap timers, for #521
4086warner@allmydata.com**20080924175112]
4087[setup: stop catching EnvironmentError when attempting to copy ./_auto_deps.py to ./src/allmydata/_auto_deps.py
4088zooko@zooko.com**20080924000402
4089 It is no longer the case that we can run okay without _auto_deps.py being in place in ./src/allmydata, so if that cp fails then the build should fail.
4090]
4091[immutable: remove unused imports (thanks, pyflakes)
4092zooko@zooko.com**20080923192610]
4093[immutable: refactor immutable filenodes and comparison thereof
4094zooko@zooko.com**20080923185249
4095 * the two kinds of immutable filenode now have a common base class
4096 * they store only an instance of their URI, not both an instance and a string
4097 * they delegate comparison to that instance
4098]
4099[setup: try parsing /etc/lsb-release first, then invoking lsb_release, because the latter takes half-a-second on my workstation, which is too long
4100zooko@zooko.com**20080923171431
4101 Also because in some cases the former will work and the latter won't.
4102 This patch also tightens the regexes so it won't match random junk.
4103]
4104[setup: fix a cut-and-paste error in the fallback to parsing /etc/lsb-release
4105zooko@zooko.com**20080923165551]
4106[setup: if executing lsb_release doesn't work, fall back to parsing /etc/lsb-release before falling back to platform.dist()
4107zooko@zooko.com**20080923162858
4108 An explanatio of why we do it this way is in the docstring.
4109]
4110[setup: if invoking lsb_release doesn't work (which it doesn't on our etch buildslave), then fall back to the Python Standard Library's platform.dist() function
4111zooko@zooko.com**20080923154820]
4112[setup: fix bug in recent patch to use allmydata.get_package_versions() to tell the foolscap app-version-tracking what's what
4113zooko@zooko.com**20080923001347]
4114[setup: when using the foolscap "what versions are here?" feature, use allmydata.get_package_versions() instead of specifically importing allmydata, pycryptopp, and zfec
4115zooko@zooko.com**20080923000351]
4116[setup: simplify the implementation of allmydata.get_package_versions() and add "platform" which is a human-oriented summary of the underlying operating system and machine
4117zooko@zooko.com**20080922235354]
4118[misc/make_umid: change docs, make elisp code easier to grab
4119warner@lothar.com**20080920183933]
4120[use foolscap's new app_versions API, require foolscap-0.3.1
4121warner@lothar.com**20080920183853]
4122[BASEDIR/nickname is now UTF-8 encoded
4123warner@lothar.com**20080920183713]
4124[various: use util.log.err instead of twisted.log.err, so we get both Incidents and trial-test-flunking
4125warner@lothar.com**20080920173545]
4126[logging.txt: explain how to put log.err at the end of Deferred chains, explain FLOGTOTWISTED=1
4127warner@lothar.com**20080920173500]
4128[util.log: send log.err to Twisted too, so that Trial tests are flunked
4129warner@lothar.com**20080920173427]
4130[setup.py trial: improve --verbose suggestion a bit
4131warner@lothar.com**20080919193922]
4132[test_cli: disable generate-keypair test on OS-X, pycryptopp still has a bug
4133warner@lothar.com**20080919193855]
4134[NEWS: finish editing for the upcoming 1.3.0 release
4135warner@lothar.com**20080919193053]
4136[NEWS: more edits, almost done
4137warner@lothar.com**20080919010036]
4138[NEWS: describe all changes since the last release. Still needs editing.
4139warner@lothar.com**20080919002755]
4140[CLI: add 'tahoe admin generate-keypair' command
4141warner@lothar.com**20080919001133]
4142[web: add 'more info' pages for files and directories, move URI/checker-buttons/deep-size/etc off to them
4143warner@lothar.com**20080918050041]
4144[setup.py: remove unused 'Extension' import
4145warner@lothar.com**20080917230829]
4146[setup.py,Makefile: move the 'chmod +x bin/tahoe' into setup.py
4147warner@lothar.com**20080917230756]
4148[docs/install.html: reference InstallDetails instead of debian-specific stuff
4149warner@lothar.com**20080917225742]
4150[Makefile,docs: tahoe-deps.tar.gz now lives in separate source/deps/ directory on http://allmydata.org
4151warner@lothar.com**20080917204452]
4152[docs: mention -SUMO tarballs, point users at release tarballs instead of development ones
4153warner@lothar.com**20080917203631]
4154[setup.py,Makefile: teat sdist --sumo about tahoe-deps/, use -SUMO suffix on tarballs, add sumo to 'make tarballs' target
4155warner@lothar.com**20080917200119]
4156[.darcs-boringfile ignore tahoe-deps and tahoe-deps.tar.gz
4157warner@lothar.com**20080917195938]
4158[docs: add a note about the process of making a new Tahoe release
4159zooko@zooko.com**20080917170839]
4160[Makefile: pyutil from a dependent lib causes a #455-ish problem, the workaround is to run build-once *three* times
4161warner@lothar.com**20080917053643]
4162[Makefile: desert-island: don't re-fetch tahoe-deps.tar.gz if it's already there, remove the tahoe-deps/ before untarring directory to avoid unpacking weirdness
4163warner@lothar.com**20080917052204]
4164[misc/check-build.py: ignore the 'Downloading file:..' line that occurs for the setup_requires= -triggered handling of the setuptools egg
4165warner@lothar.com**20080917051725]
4166[#249: add 'test-desert-island', to assert that a tahoe-deps.tar.gz -enabled build does not download anything
4167warner@lothar.com**20080917013702]
4168[#249: get dependent libs from tahoe-deps and ../tahoe-deps
4169warner@lothar.com**20080917013627]
4170[#249: move dependent libs out of misc/dependencies/, get them from tahoe-deps.tar.gz instead
4171warner@allmydata.com**20080917012545]
4172[conf_wiz.py - updating version numbers in file, should really get these from a TAG or conf file
4173secorp@allmydata.com**20080917004547]
4174[webish: add an extra newline to JSON output
4175warner@lothar.com**20080915204314]
4176[windows/Makefile: fix dependencies: windows-installer must cause windows-exe to run
4177warner@allmydata.com**20080912052151]
4178[Makefile: fix windows issues
4179warner@allmydata.com**20080912050919]
4180[Makefile: use run_with_pythonpath, move windows targets into a separate Makefile
4181warner@allmydata.com**20080912044508]
4182[setup.py: add 'setup.py run_with_pythonpath', to run other commands with PYTHONPATH set usefully
4183warner@allmydata.com**20080912044418]
4184[Makefile: convert check-auto-deps target into 'setup.py check_auto_deps'
4185warner@allmydata.com**20080912035904]
4186[startstop_node.py: find twistd in our supportlib if we had to build Twisted as a setuptools dependency. This is a form of cgalvan's #505 patch, simplified because now 'setup.py trial' takes care of sys.path and PYTHONPATH
4187warner@allmydata.com**20080912025138]
4188[rewrite parts of the Makefile in setup.py. Add 'build_tahoe' and 'trial' subcommands.
4189warner@allmydata.com**20080912010321
4190 
4191 The 'make build' target now runs 'setup.py build_tahoe', which figures out
4192 where the target 'supportlib' directory should go, and invokes 'setup.py
4193 develop' with the appropriate arguments.
4194 
4195 The 'make test' target now runs 'setup.py trial', which manages sys.path and
4196 runs trial as a subroutine instead of spawning an external process. This
4197 simplifies the case where Twisted was built as a dependent library (and thus
4198 the 'trial' executable is not on PATH).
4199 
4200 setup.py now manages sys.path and PYTHONPATH for its internal subcommands, so
4201 the $(PP) prefix was removed from all Makefile targets that invoke setup.py .
4202 For the remaining ones, the 'setup.py -q show_pythonpath' subcommand was
4203 added to compute this prefix with python rather than with fragile
4204 shell/Makefile syntax.
4205 
4206 
4207]
4208[bin/tahoe: reflow error messages
4209warner@allmydata.com**20080912010225]
4210[mac/Makefile: remove the verbose hdiutil diagnostics now that we resolved the problem
4211warner@allmydata.com**20080912004622]
4212[Makefile: give setup.py develop a '--site-dirs' arg to work around the #249 setuptools bug which causes us to unnecessarily rebuild pyopenssl and other support libs installed via debian's python-support. Should be harmless on other platforms.
4213warner@allmydata.com**20080910233432]
4214[web: fix output=JSON, add buttons for repair/json to the 'run deep-check' form
4215warner@allmydata.com**20080910211137]
4216[disallow deep-check on non-directories, simplifies the code a bit
4217warner@allmydata.com**20080910204458]
4218[dirnode: refactor recursive-traversal methods, add stats to deep_check() method results and t=deep-check webapi
4219warner@lothar.com**20080910084504]
4220[dirnode: cleanup, make get_verifier() always return a URI instance, not a string
4221warner@lothar.com**20080910083755]
4222[test_system: check t=deep-stats too
4223warner@lothar.com**20080910065457]
4224[test_system: add deep-check-JSON tests, fix a bug
4225warner@lothar.com**20080910061416]
4226[test_system: oops, re-enable some tests that got bypassed
4227warner@lothar.com**20080910060245]
4228[test_system: add deep-stats test
4229warner@lothar.com**20080910055634]
4230[hush pyflakes
4231warner@allmydata.com**20080910025017]
4232[checker results: add output=JSON to webapi, add tests, clean up APIs
4233warner@allmydata.com**20080910024517
4234 to make the internal ones use binary strings (nodeid, storage index) and
4235 the web/JSON ones use base32-encoded strings. The immutable verifier is
4236 still incomplete (it returns imaginary healty results).
4237]
4238[immutable verifier: provide some dummy results so deep-check works, make the tests ignore these results until we finish it off
4239warner@allmydata.com**20080910010827]
4240[mutable checker: even more tests. Everything in ICheckerResults should be covered now, except for immutable-verify which is incomplete
4241warner@allmydata.com**20080910005706]
4242[checker results: more tests, update interface docs
4243warner@allmydata.com**20080910003010]
4244[mutable checker: oops, fix redefinition of 'healthy' (numshares < N, not numshares < k, which is 'recoverable' not 'healthy')
4245warner@allmydata.com**20080910002853]
4246[checker results: more tests, more results. immutable verifier tests are disabled until they emit more complete results
4247warner@allmydata.com**20080910001546]
4248[checker: add tests, add stub for immutable check_and_repair
4249warner@allmydata.com**20080909233449]
4250[interfaces.py: minor improvement to IDirectoryNode.set_node
4251warner@allmydata.com**20080909233416]
4252[mac/Makefile: upload the .dmg file with foolscap xfer-client.py instead of scp
4253warner@allmydata.com**20080908231943]
4254[misc/xfer-client.py: small foolscap utility to transfer a file to a waiting server
4255warner@allmydata.com**20080908231903]
4256[setup: add excited DEVELOPER NOTE to install.html
4257zooko@zooko.com**20080908215603
4258 It should be removed before 1.3.0 release, of course...
4259]
4260[setup: edit the text of install.html
4261zooko@zooko.com**20080908215549]
4262[setup: add link to the DownloadDebianPackages page
4263zooko@zooko.com**20080908215451
4264 Because I want that link off of the front page of the wiki...
4265]
4266[setup: change URL from which to get source tarballs
4267zooko@zooko.com**20080908215409
4268 So that when you look at that directory you won't see distracting other things such as darcs repositories.
4269]
4270[test_system: make log() tolerate the format= form
4271warner@lothar.com**20080908030336]
4272[immutable/checker: make log() tolerate the format= form
4273warner@lothar.com**20080908030308]
4274[checker: overhaul checker results, split check/check_and_repair into separate methods, improve web displays
4275warner@allmydata.com**20080907194456]
4276[webapi.txt: explain that t=manifest gives verifycaps
4277warner@allmydata.com**20080907192950]
4278[introducer: add get_nickname_for_peerid
4279warner@allmydata.com**20080906050700]
4280[docs/logging.txt: explain tahoe/foolscap logging. Addresses #239.
4281warner@allmydata.com**20080904002531]
4282[setup: don't assert that trial is present when the Makefile is evaluated
4283zooko@zooko.com**20080903171837
4284 This should fix #506, but it means that if (for some weird reason) Twisted can't be auto-installed and the find_trial.py script doesn't work, the user will get a weird failure message instead of a clean failure message explaining that trial couldn't be found.  Oh well.
4285 
4286 Chris Galvan is working on a much nicer fix to all these issues -- see #505.
4287 
4288]
4289[testutil.PollMixin: use a custom exception (and convert it) to avoid the ugly 'stash' cycle
4290warner@allmydata.com**20080903033251]
4291[mac/Makefile: more attempts to debug the buildslave failure
4292warner@allmydata.com**20080829220614]
4293[mac: add -verbose to the hdiutil call, to figure out why it's failing on the buildslave
4294warner@allmydata.com**20080829205243]
4295[setup: simplify parsing of python version number
4296zooko@zooko.com**20080829000045]
4297[setup: emit the version of python in the list of versions
4298zooko@zooko.com**20080828220454]
4299[munin: add tahoe_diskleft plugin, update spacetime/diskwatcher.tac to support it
4300warner@allmydata.com**20080828203236]
4301[docs: how_to_make_a_tahoe_release.txt
4302zooko@zooko.com**20080828202109
4303 Just some cryptic notes to self, but if I get hit by a truck then someone else might be able to decode them.
4304]
4305[debian: include misc/cpu-watcher.tac in the debian package
4306warner@allmydata.com**20080827223026]
4307[munin/tahoe_doomsday: change the graph title, 'time predictor' is more accurate than 'space predictor'
4308warner@allmydata.com**20080827213013]
4309[munin/tahoe_diskusage: clip the graph at zero, to prevent transient negative excursions (such as when a lot of old logfiles are deleted from a storage server's disk) from scaling the graph into unusability
4310warner@allmydata.com**20080827193543]
4311[CREDITS: thanks to Chris Galvan
4312zooko@zooko.com**20080827183950]
4313[setup: patch from Chris Galvan to build sdists with no deps in them normally, but include deps if --sumo
4314zooko@zooko.com**20080827182644]
4315[servermap: don't log late arrivals, and don't log DeadReferenceError at log.WEIRD
4316warner@allmydata.com**20080827003729]
4317[mutable: make mutable-repair work for non-verifier runs, add tests
4318warner@allmydata.com**20080826233454]
4319[mutable: remove work-around for a flaw in an older version of foolscap
4320zooko@zooko.com**20080826155055
4321 We now require "foolscap[secure_connections] >= 0.3.0", per [source:_auto_deps.py].
4322]
4323[docs: edit install.html a tad
4324zooko@zooko.com**20080826154929]
4325[misc/make_umid: little script and elisp fragment to insert umid= arguments
4326warner@allmydata.com**20080826015918]
4327[logging: add 'unique-message-ids' (or 'umids') to each WEIRD-or-higher log.msg call, to make it easier to correlate log message with source code
4328warner@allmydata.com**20080826015759]
4329[logging cleanups: lower DeadReferenceError from WEIRD (which provokes Incidents) to merely UNUSUAL, don't pre-format Failures in others
4330warner@allmydata.com**20080826005155]
4331[checker: make the log() function of SimpleCHKFileVerifier compatible with the log() function of its superclasses and subclasses
4332zooko@zooko.com**20080825214407]
4333[docs: warn that the "garbage-collection and accounting" section of architecture.txt is out of date, and clarify that "deleted" therein means ciphertext getting garbage-collected
4334zooko@zooko.com**20080822154605]
4335[docs/filesystem-notes.txt: add notes about enabling the 'directory index' feature on ext3 filesystems for storage server lookup speed
4336warner@allmydata.com**20080821205901]
4337[setup: doc string describing what the require_auto_deps() function is for
4338zooko@zooko.com**20080815172234]
4339[mutable/checker: log a WEIRD-level event when we see a hash failure, to trigger an Incident
4340warner@allmydata.com**20080813035020]
4341[immutable checker: add a status_report field
4342warner@allmydata.com**20080813033530]
4343[mutable/servermap: lower the priority of many log messages
4344warner@allmydata.com**20080813033506]
4345[web/deep-check: show the webapi runtime at the bottom of the page
4346warner@allmydata.com**20080813033426]
4347[CLI: tolerate blank lines in the aliases file
4348warner@allmydata.com**20080813025050]
4349[test_web: workaround broken HEAD behavior in twisted-2.5.0 and earlier
4350warner@allmydata.com**20080813024520]
4351[test_web: oops, actually use HEAD (instead of GET) in the HEAD test
4352warner@allmydata.com**20080813020451]
4353[web: use get_size_of_best_version for HEAD requests, provide correct content-type
4354warner@allmydata.com**20080813020410]
4355[mutable: add get_size_of_best_version to the interface, to simplify the web HEAD code, and tests
4356warner@allmydata.com**20080813020252]
4357[CLI: add 'tahoe debug corrupt-share', and use it for deep-verify tests, and fix non-deep web checker API to pass verify=true into node
4358warner@allmydata.com**20080813000501]
4359[IFilesystemNode: add get_storage_index(), it makes tests easier
4360warner@allmydata.com**20080812231407]
4361[test_system: rename Checker to ImmutableChecker, to make room for a mutable one
4362warner@allmydata.com**20080812225932]
4363['tahoe debug dump-share': add --offsets, to show section offsets
4364warner@allmydata.com**20080812214656]
4365[test_cli: oops, fix tests after recent stdout/stderr cleanup
4366warner@allmydata.com**20080812214634]
4367[scripts/debug: split out dump_immutable_share
4368warner@allmydata.com**20080812205517]
4369[scripts/debug: clean up use of stdout/stderr
4370warner@allmydata.com**20080812205242]
4371[CLI: move the 'repl' command to 'tahoe debug repl'
4372warner@allmydata.com**20080812204017]
4373[CLI: move all debug commands (dump-share, dump-cap, find-shares, catalog-shares) into a 'debug' subcommand, and improve --help output
4374warner@allmydata.com**20080812203732]
4375[hush a pyflakes warning
4376warner@allmydata.com**20080812042423]
4377[web/directory: enable verify=true in t=deep-check
4378warner@allmydata.com**20080812042409]
4379[dirnode: add some deep-check logging
4380warner@allmydata.com**20080812042338]
4381[checker_results.problems: don't str the whole Failure, just extract the reason string
4382warner@allmydata.com**20080812042306]
4383[checker: add information to results, add some deep-check tests, fix a bug in which unhealthy files were not counted
4384warner@allmydata.com**20080812040326]
4385[mutable/checker: rearrange a bit, change checker-results to have a status_report string
4386warner@allmydata.com**20080812032033]
4387[mutable/servermap: add summarize_version
4388warner@allmydata.com**20080812031930]
4389[CLI: make 'tahoe webopen' command accept aliases like 'tahoe ls'
4390warner@allmydata.com**20080812012023]
4391[munin diskusage/doomsday: oops, fix labels, everything was reported in the 1hr column
4392warner@allmydata.com**20080811203431]
4393[munin/tahoe_overhead: don't emit non-sensicial numbers
4394warner@lothar.com**20080807214008]
4395[munin: add tahoe_overhead plugin, to measure effectiveness of GC and deleting data from inactive accounts
4396warner@lothar.com**20080807203925]
4397[diskwatcher.tac: include total-bytes-used
4398warner@lothar.com**20080807201214]
4399[setup: remove accidentally duplicated lines from Makefile
4400zooko@zooko.com**20080807193029]
4401[misc/dependencies: remove the no-longer-useful foolscap-0.2.5 tarball
4402warner@lothar.com**20080807184546]
4403[Makefile: avoid bare quotes, since the emacs syntax-highlighter gets confused by them
4404warner@lothar.com**20080807183001]
4405[diskwatcher.tac: don't report negative timeleft
4406warner@lothar.com**20080807173433]
4407[diskwatcher.tac: reduce the polling rate to once per hour
4408warner@lothar.com**20080807062021]
4409[misc/spacetime: add munin plugins, add everything to .deb
4410warner@lothar.com**20080807060003]
4411[diskwatcher.tac: hush pyflakes
4412warner@lothar.com**20080807050427]
4413[diskwatcher.tac: add async-GET code, but leave it commented out: urlopen() seems to work better for now
4414warner@lothar.com**20080807050327]
4415[cpu-watcher.tac: improve error message
4416warner@lothar.com**20080807043801]
4417[disk-watcher: first draft of a daemon to use the HTTP stats interface and its new storage_server.disk_avail feature, to track changes in disk space over time
4418warner@lothar.com**20080807042222]
4419[misc/cpu-watcher.tac: tolerate missing pidfiles, just skip over that sample
4420warner@lothar.com**20080807041705]
4421[setup: don't attempt to escape quote marks, just delete them.  Ugly, but it works okay.
4422zooko@zooko.com**20080806232742]
4423[setup: escape any double-quote chars in the PATH before using the PATH to find and invoke trial
4424zooko@zooko.com**20080806231143]
4425[storage: include disk-free information in the stats-gatherer output
4426warner@lothar.com**20080806210602]
4427[mutable: more repair tests, one with force=True to check out merging
4428warner@lothar.com**20080806190607]
4429[test/common: add ShouldFailMixin
4430warner@lothar.com**20080806190552]
4431[test_mutable: add comment about minimal-bandwidth repairer, comma lack of
4432warner@lothar.com**20080806173850]
4433[test_mutable: factor out common setup code
4434warner@lothar.com**20080806173804]
4435[mutable: start adding Repair tests, fix a simple bug
4436warner@lothar.com**20080806061239]
4437[mutable.txt: add warning about out-of-date section
4438warner@lothar.com**20080806061219]
4439[test_system: factor out find_shares/replace_shares to a common class, so they can be used by other tests
4440warner@lothar.com**20080806014958]
4441[debian/control: update dependencies to match _auto_deps: foolscap-0.3.0, pycryptopp-0.5
4442warner@lothar.com**20080806013222]
4443[bump foolscap dependency to 0.3.0, for the new incident-gathering interfaces
4444warner@lothar.com**20080805235828]
4445[web: add 'report incident' button at the bottom of the welcome page
4446warner@lothar.com**20080805190921]
4447[test_cli: more coverage for 'tahoe put' modifying a mutable file in-place, by filename, closes #441
4448warner@lothar.com**20080804202643]
4449[check_grid.py: update to match new CLI: 'put - TARGET' instead of 'put TARGET'
4450warner@lothar.com**20080802024856]
4451[test_cli: remove windows-worrying newlines from test data
4452warner@lothar.com**20080802024734]
4453[test_cli.py: factor out CLITestMixin
4454warner@lothar.com**20080802022938]
4455[CLI: change one-arg forms of 'tahoe put' to make an unlinked file, fix replace-mutable #441
4456warner@lothar.com**20080802022729]
4457[CLI: add create-alias command, to merge mkdir and add-alias into a single (secure-from-argv-snooping) step
4458warner@lothar.com**20080802021041]
4459[test_cli: add system-based tests for PUT, including a mutable put that fails/todo (#441)
4460warner@lothar.com**20080801221009]
4461[tests: simplify CLI tests that use stdin, now that runner supports it
4462warner@lothar.com**20080801220514]
4463[CLI: simplify argument-passing, use options= for everthing, including stdout
4464warner@lothar.com**20080801184624]
4465[tests: add test that verifier notices any (randomly chosen) bit flipped in the verifiable part of any (randomly chosen) share
4466zooko@zooko.com**20080731002015
4467 The currently verifier doesn't (usually) pass this randomized test, hence the TODO.
4468]
4469[tests: test that checker doesn't cause reads on the storage servers
4470zooko@zooko.com**20080730235420
4471 It would still pass the test if it noticed a corrupted share.  (It won't
4472 notice, of course.)  But it is required to do its work without causing storage
4473 servers to read blocks from the filesystem.
4474 
4475]
4476[storage: make storage servers declare oldest supported version == 1.0, and storage clients declare oldest supported version == 1.0
4477zooko@zooko.com**20080730225107
4478 See comments in patch for intended semantics.
4479]
4480[tests: use the handy dandy TestCase.mktemp() function from trial to give unique and nicely named directories for each testcase
4481zooko@zooko.com**20080730224920]
4482[tests: don't use SignalMixin
4483zooko@zooko.com**20080730223536
4484 It seems like we no longer need it, and it screws up something internal in
4485 trial which causes trial's TestCase.mktemp() method to exhibit wrong behavior
4486 (always using a certain test method name instead of using the current test
4487 method name), and I wish to use TestCase.mktemp().
4488 
4489 Of course, it is possible that the buildbot is about to tell me that we do
4490 still require SignalMixin on some of our platforms...
4491 
4492]
4493[setup: if the user passes a TRIALOPT env var then pass that on to trial
4494zooko@zooko.com**20080730205806
4495 This is useful for --reporter=bwverbose, for example.
4496]
4497[setup: turn back on reactor=poll for cygwin trial (else it runs out of fds)
4498zooko@zooko.com**20080730181217]
4499[setup: fix bug in Makefile -- ifeq, not ifneq -- so that now it sets poll reactor only if the user hasn't specified a REACTOR variable, instead of setting poll reactor only if the user has specified a REACTOR variable
4500zooko@zooko.com**20080730160429]
4501[setup: whoops, really remove the default reactor=poll this time
4502zooko@zooko.com**20080730032358]
4503[setup: instead of setting --reactor=poll for trial in all cases (which fails on platforms that don't have poll reactor, such as Windows and some Mac OS X), just set --reactor=poll for linux2.
4504zooko@zooko.com**20080730031656
4505 
4506]
4507[setup: pass --reactor=poll to trial unless REACTOR variable is set, in which case pass --reactor=$(REACTOR)
4508zooko@zooko.com**20080730023906
4509 This hopefully works around the problem that Twisted v8.1.0 has a bug when used
4510 with pyOpenSSL v0.7 which bug causes some unit tests to spuriously fail -- see
4511 known_issues.txt r2788:
4512 
4513 http://allmydata.org/trac/tahoe/browser/docs/known_issues.txt?rev=2788#L122
4514 
4515 Also it matches with the fact that --reactor=poll is required on cygwin.
4516 
4517]
4518[setup: require secure_connections from foolscap
4519zooko@zooko.com**20080730021041
4520 This causes a problem on debian sid, since the pyOpenSSL v0.6 .deb doesn't come
4521 with .egg-info, so setuptools will not know that it is already installed and
4522 will try to install pyOpenSSL, and if it installs pyOpenSSL v0.7, then this
4523 will trigger the bug in Twisted v8.1.0 when used with pyOpenSSL v0.7.
4524 
4525 http://twistedmatrix.com/trac/ticket/3218
4526 
4527 Now the comments in twisted #3218 suggest that it happens only with the select
4528 reactor, so maybe using --reactor=poll will avoid it.
4529 
4530]
4531[tests: add test_system.Checker which tests basic checking (without verification) functionality
4532zooko@zooko.com**20080728234317]
4533[test: add testutil.flip_one_bit which flips a randomly chosen bit of the input string
4534zooko@zooko.com**20080728234217]
4535[tests: make it so that you can use common.py's SystemTestMixin.set_up_nodes() more than once with the same introducer
4536zooko@zooko.com**20080728234029]
4537[download.py: set up self._paused before registering the producer, since they might call pauseProducing right away
4538warner@lothar.com**20080728215731]
4539[test/common.py: use pre-computed Tub certificates for the system-test mixin, to speed such tests up by maybe 15%. The goal is to encourage more full-grid tests.
4540warner@allmydata.com**20080728194421]
4541[munin/tahoe_spacetime: show 2wk data even if 4wk data is unavailable
4542warner@allmydata.com**20080728194233]
4543[web: add /status/?t=json, with active upload/download ops. Addresses #493.
4544warner@allmydata.com**20080726004110]
4545[web: make t=json stats pages use text/plain, instead of leaving it at text/html
4546warner@allmydata.com**20080726002427]
4547[test_system.py: factor SystemTestMixin out of SystemTest
4548warner@allmydata.com**20080725223349]
4549[test_system.py: modify system-test setup code in preparation for merge with common.SystemTestMixin
4550warner@allmydata.com**20080725222931]
4551[test_system.py: move SystemTestMixin out into common.py, where further improvements will occur
4552warner@allmydata.com**20080725221758]
4553[test_system.py: create SystemTestMixin, with less cruft, for faster system-like tests
4554warner@allmydata.com**20080725221300]
4555[TAG allmydata-tahoe-1.2.0
4556zooko@zooko.com**20080722014608]
4557Patch bundle hash:
45589ffee3526159795f1692c2d98097fcd60ac9b2c6