Ticket #1678: s3-implement-prefix-queries.darcs.patch

File s3-implement-prefix-queries.darcs.patch, 138.8 KB (added by davidsarah, at 2012-03-09T00:15:56Z)

Implementation of prefix queries, for information only (doesn't fix the problem yet). Depends on txaws 0.2.1.post4, diff from 0.2.1 at https://leastauthority.com/static/patches/txAWS-0.2.1-to-post4.diff

Line 
15 patches for repository tahoe-lafs.org:/home/source/darcs/tahoe-lafs/ticket999-S3-backend:
2
3Thu Mar  8 03:51:24 GMT 2012  david-sarah@jacaranda.org
4  * Maybe fix a Python 2.4 yield-in-try incompatibility (probably not, but this is a slight simplification).
5
6Thu Mar  8 03:55:38 GMT 2012  david-sarah@jacaranda.org
7  * Remove unnecessary 'xml' argument to TahoeS3Error (duplicate of last argument).
8
9Thu Mar  8 03:56:37 GMT 2012  david-sarah@jacaranda.org
10  * S3 backend: fix and test the limitation on number of objects by using prefix queries (relying on txaws 0.2.1.post3). refs #1678.
11
12Thu Mar  8 22:45:08 GMT 2012  david-sarah@jacaranda.org
13  * S3 backend: replace the response body when reporting an S3 SignatureDoesNotMatch error as a TahoeS3Error, to avoid any possibility of leaking credentials echoed in the response. (Sorry if this hampers debugging.)
14
15Thu Mar  8 22:45:44 GMT 2012  david-sarah@jacaranda.org
16  * S3 backend: set the content type to application/octet-stream when storing shares.
17
18New patches:
19
20[Maybe fix a Python 2.4 yield-in-try incompatibility (probably not, but this is a slight simplification).
21david-sarah@jacaranda.org**20120308035124
22 Ignore-this: 96e895feee0c1675d4df17e2c77abb31
23] hunk ./src/allmydata/storage/backends/disk/immutable.py 249
24         except:  # workaround for silly Python 2.4 restriction on yield-in-try/finally
25             f.close()
26             raise
27-        else:
28-            f.close()
29+        f.close()
30 
31     def add_lease(self, lease_info):
32         f = self._home.open(mode='rb+')
33[Remove unnecessary 'xml' argument to TahoeS3Error (duplicate of last argument).
34david-sarah@jacaranda.org**20120308035538
35 Ignore-this: 418db828186aacd1b8251b3e46e89a06
36] {
37hunk ./src/allmydata/storage/backends/s3/s3_common.py 92
38                 raise f.value
39             except self.S3Error:
40                 typ, val, tb = sys.exc_info()
41-                xml = f.value.original
42                 fargs = f.value.args
43hunk ./src/allmydata/storage/backends/s3/s3_common.py 93
44-                err = TahoeS3Error(xml, *fargs)
45+                err = TahoeS3Error(*fargs)
46                 log.msg(format="%(err)s", err=err, level=log.WEIRD)
47                 raise err.__class__, err, tb
48         d.addErrback(_handle_error)
49hunk ./src/allmydata/test/test_storage.py 1336
50         def done(res):
51             if isinstance(res, Failure):
52                 res.trap(s3_common.TahoeS3Error)
53-                self.failUnlessIn("('XML', 500, 'Internal error', 'response')", str(res.value))
54+                self.failUnlessIn("(500, 'Internal error', 'response')", str(res.value))
55                 self.failUnless(s["level"] >= WEIRD, s["level"])
56             else:
57                 self.fail("was supposed to raise TahoeS3Error, not get %r" % (res,))
58}
59[S3 backend: fix and test the limitation on number of objects by using prefix queries (relying on txaws 0.2.1.post3). refs #1678.
60david-sarah@jacaranda.org**20120308035637
61 Ignore-this: cffe79e4497c69ff5860714534c5087d
62] {
63hunk ./src/allmydata/storage/backends/s3/mock_s3.py 5
64 from twisted.internet import defer
65 from twisted.web.error import Error
66 
67+from foolscap.logging import log
68+
69 from zope.interface import implements
70 from allmydata.storage.backends.s3.s3_common import IS3Bucket, S3BucketMixin
71 from allmydata.util.time_format import iso_utc
72hunk ./src/allmydata/storage/backends/s3/mock_s3.py 23
73     return S3Backend(s3bucket, corruption_advisory_dir)
74 
75 
76-MAX_KEYS = 1000
77-
78 class MockS3Bucket(S3BucketMixin):
79     implements(IS3Bucket)
80     """
81hunk ./src/allmydata/storage/backends/s3/mock_s3.py 56
82                     shnumstr = sharefp.basename()
83                     yield (sharefp, "%s/%s" % (sikey, shnumstr))
84 
85-    def _list_all_objects(self):
86+    def _list_objects(self, prefix='', max_keys=1000):
87         contents = []
88         def _next_share(res):
89             if res is None:
90hunk ./src/allmydata/storage/backends/s3/mock_s3.py 62
91                 return
92             (sharefp, sharekey) = res
93-            mtime_utc = iso_utc(sharefp.getmtime(), sep=' ')+'+00:00'
94-            item = BucketItem(key=sharekey, modification_date=mtime_utc, etag="",
95-                              size=sharefp.getsize(), storage_class="STANDARD")
96-            contents.append(item)
97-            return len(contents) < MAX_KEYS
98+            if sharekey.startswith(prefix):
99+                mtime_utc = iso_utc(sharefp.getmtime(), sep=' ')+'+00:00'
100+                item = BucketItem(key=sharekey, modification_date=mtime_utc, etag="",
101+                                  size=sharefp.getsize(), storage_class="STANDARD")
102+                contents.append(item)
103+            return len(contents) < max_keys
104 
105         d = async_iterate(_next_share, self._iterate_dirs())
106hunk ./src/allmydata/storage/backends/s3/mock_s3.py 70
107-        d.addCallback(lambda completed:
108-                      BucketListing(self.bucketname, '', '/', MAX_KEYS,
109-                                    is_truncated=not completed, contents=contents))
110+        def _done(completed):
111+            contents.sort(key=lambda item: item.key)
112+            return BucketListing(self.bucketname, '', '', max_keys,
113+                                 is_truncated=not completed, contents=contents)
114+        d.addCallback(_done)
115         return d
116 
117     def _get_filepath(self, object_name, must_exist=False):
118hunk ./src/allmydata/storage/backends/s3/mock_s3.py 113
119     def delete(self):
120         return self._do_aws(self._delete)
121 
122-    def list_all_objects(self):
123-        return self._do_aws(self._list_all_objects)
124+    def list_objects(self, **kwargs):
125+        d = self._do_aws(self._list_objects, **kwargs)
126+        def _log(res):
127+            if res.is_truncated:
128+                log.msg(format="truncated get_bucket response (%(num)d objects)", num=len(res.contents), level=log.WEIRD)
129+            return res
130+        d.addCallback(_log)
131+        return d
132 
133     def put_object(self, object_name, data, content_type=None, metadata={}):
134         return self._do_aws(self._put_object, object_name, data, content_type, metadata)
135hunk ./src/allmydata/storage/backends/s3/s3_backend.py 12
136 from allmydata.storage.backends.base import Backend, ShareSet
137 from allmydata.storage.backends.s3.immutable import ImmutableS3ShareForReading, ImmutableS3ShareForWriting
138 from allmydata.storage.backends.s3.mutable import load_mutable_s3_share, create_mutable_s3_share
139-from allmydata.storage.backends.s3.s3_common import get_s3_share_key, list_objects, NUM_RE
140+from allmydata.storage.backends.s3.s3_common import get_s3_share_key, NUM_RE
141 from allmydata.mutable.layout import MUTABLE_MAGIC
142 
143 
144hunk ./src/allmydata/storage/backends/s3/s3_backend.py 65
145         self._incomingset = set()
146 
147     def get_sharesets_for_prefix(self, prefix):
148-        d = list_objects(self._s3bucket, 'shares/%s/' % (prefix,))
149+        d = self._s3bucket.list_objects(prefix='shares/%s/' % (prefix,))
150         def _get_sharesets(res):
151             # XXX this enumerates all shares to get the set of SIs.
152             # Is there a way to enumerate SIs more efficiently?
153hunk ./src/allmydata/storage/backends/s3/s3_backend.py 110
154         return 0
155 
156     def get_shares(self):
157-        d = list_objects(self._s3bucket, self._key)
158+        d = self._s3bucket.list_objects(prefix=self._key)
159         def _get_shares(res):
160             si = self.get_storage_index()
161             shnums = []
162hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 2
163 
164+from foolscap.logging import log
165+
166 from zope.interface import implements
167 from allmydata.storage.backends.s3.s3_common import IS3Bucket, S3BucketMixin
168 
169hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 52
170     def delete(self):
171         return self._do_aws(self.client.delete, self.bucketname)
172 
173-    # We want to be able to do prefix queries, but txaws 0.2 doesn't implement that.
174-    def list_all_objects(self):
175-        return self._do_aws(self.client.get_bucket, self.bucketname)
176+    def list_objects(self, **kwargs):
177+        d = self._do_aws(self.client.get_bucket, self.bucketname, **kwargs)
178+        def _log(res):
179+            if res.is_truncated:
180+                log.msg(format="truncated get_bucket response (%(num)d objects)", num=len(res.contents), level=log.WEIRD)
181+            return res
182+        d.addCallback(_log)
183+        return d
184 
185     def put_object(self, object_name, data, content_type=None, metadata={}):
186         return self._do_aws(self.client.put_object, self.bucketname,
187hunk ./src/allmydata/storage/backends/s3/s3_common.py 21
188     else:
189         return "shares/%s/%s/%d" % (sistr[:2], sistr, shnum)
190 
191-def list_objects(s3bucket, prefix, marker='/'):
192-    # XXX we want to be able to implement this in terms of a prefix query. Fake it for now.
193-    #d = self._s3bucket.list_objects('shares/%s/' % (prefix,), marker)
194-    d = s3bucket.list_all_objects()
195-    def _filter(res):
196-        if res.is_truncated:
197-            log.msg(format="truncated get_bucket response (%(num)d objects)", num=len(res.contents), level=log.WEIRD)
198-        res.contents = [item for item in res.contents if item.key.startswith(prefix)]
199-        return res
200-    d.addCallback(_filter)
201-    return d
202-
203 NUM_RE=re.compile("^[0-9]+$")
204 
205 
206hunk ./src/allmydata/storage/backends/s3/s3_common.py 39
207         The bucket must be empty before it can be deleted.
208         """
209 
210-    def list_all_objects():
211+    def list_objects(**kwargs):
212         """
213         Get a BucketListing that lists all the objects in this bucket.
214         """
215hunk ./src/allmydata/storage/backends/s3/s3_common.py 72
216 
217 
218 class S3BucketMixin:
219-    def _do_aws(self, operation, *args):
220-        d = defer.maybeDeferred(operation, *args)
221+    def _do_aws(self, operation, *args, **kwargs):
222+        d = defer.maybeDeferred(operation, *args, **kwargs)
223         def _handle_error(f):
224             f.trap(self.S3Error)
225             try:
226hunk ./src/allmydata/test/test_storage.py 21
227 from allmydata.storage.backends.disk.disk_backend import DiskBackend
228 from allmydata.storage.backends.disk.immutable import load_immutable_disk_share, create_immutable_disk_share
229 from allmydata.storage.backends.disk.mutable import MutableDiskShare
230-from allmydata.storage.backends.s3 import s3_common
231 from allmydata.storage.backends.s3.s3_backend import S3Backend
232hunk ./src/allmydata/test/test_storage.py 22
233+from allmydata.storage.backends.s3 import mock_s3, s3_common
234 from allmydata.storage.backends.s3.mock_s3 import MockS3Bucket, MockS3Error, BucketListing
235 from allmydata.storage.bucket import BucketWriter, BucketReader
236 from allmydata.storage.common import DataTooLargeError, UnknownContainerVersionError, \
237hunk ./src/allmydata/test/test_storage.py 379
238 
239 
240 class S3Common(unittest.TestCase):
241+    def workdir(self, name):
242+        return FilePath("storage").child(self.__class__.__name__).child(name)
243+
244     def test_list_objects_truncated(self):
245         # A truncated bucket listing should cause an incident.
246hunk ./src/allmydata/test/test_storage.py 384
247+        basedir = self.workdir("test_list_objects_truncated")
248+        basedir.makedirs()
249 
250hunk ./src/allmydata/test/test_storage.py 387
251-        class MockBucket(object):
252-            def list_all_objects(self):
253-                return defer.succeed(BucketListing("bucket", "", "/", 0, True, contents=[]))
254+        class MockBucket(MockS3Bucket):
255+            def _list_objects(self, prefix=''):
256+                return defer.succeed(BucketListing("bucket", "", "", 0, True, contents=[]))
257 
258         s = {"level": 0}
259         def call_log_msg(*args, **kwargs):
260hunk ./src/allmydata/test/test_storage.py 394
261             s["level"] = max(s["level"], kwargs["level"])
262-        self.patch(s3_common.log, 'msg', call_log_msg)
263+        self.patch(mock_s3.log, 'msg', call_log_msg)
264 
265hunk ./src/allmydata/test/test_storage.py 396
266-        d = s3_common.list_objects(MockBucket(), "")
267+        bucket = MockBucket(basedir)
268+        d = bucket.list_objects(prefix="")
269         d.addCallback(lambda ign: self.failUnless(s["level"] >= WEIRD, s["level"]))
270         return d
271 
272hunk ./src/allmydata/test/test_storage.py 1332
273         s = {"level": 0}
274         def call_log_msg(*args, **kwargs):
275             s["level"] = max(s["level"], kwargs["level"])
276-        self.patch(s3_common.log, 'msg', call_log_msg)
277+        self.patch(mock_s3.log, 'msg', call_log_msg)
278 
279         ss = self.create("test_s3_errors")
280 
281}
282[S3 backend: replace the response body when reporting an S3 SignatureDoesNotMatch error as a TahoeS3Error, to avoid any possibility of leaking credentials echoed in the response. (Sorry if this hampers debugging.)
283david-sarah@jacaranda.org**20120308224508
284 Ignore-this: 1da251dbd7b595cba52c121f2ceee480
285] hunk ./src/allmydata/storage/backends/s3/s3_common.py 81
286             except self.S3Error:
287                 typ, val, tb = sys.exc_info()
288                 fargs = f.value.args
289+                if len(fargs) > 2 and '<code>signaturedoesnotmatch</code>' in fargs[2].lower():
290+                    fargs[2] = "SignatureDoesNotMatch response redacted"
291                 err = TahoeS3Error(*fargs)
292                 log.msg(format="%(err)s", err=err, level=log.WEIRD)
293                 raise err.__class__, err, tb
294[S3 backend: set the content type to application/octet-stream when storing shares.
295david-sarah@jacaranda.org**20120308224544
296 Ignore-this: aef622b207e8c49569bc6ae84ef4f794
297] hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 61
298         d.addCallback(_log)
299         return d
300 
301-    def put_object(self, object_name, data, content_type=None, metadata={}):
302+    def put_object(self, object_name, data, content_type='application/octet-stream', metadata={}):
303         return self._do_aws(self.client.put_object, self.bucketname,
304                             object_name, data, content_type, metadata)
305 
306
307Context:
308
309[Allow PyCrypto 2.4 for now as a temporary hack.
310david-sarah@jacaranda.org**20120224064138
311 Ignore-this: 16fe87837ba168386b155db258e015d5
312]
313[Fix an incompatibility with Python 2.4 (doesn't support yield within try/finally).
314david-sarah@jacaranda.org**20120223060521
315 Ignore-this: d8b6bdd20ca168886fe1cadef9d9a56
316]
317[Remove test_provisioning.py, as on trunk.
318david-sarah@jacaranda.org**20120223060441
319 Ignore-this: cd7f2b36de703278147250bf43bc12d1
320]
321[Adapt the test for #1654 to the ticket999-S3-backend branch. I verified that reverting the fix for #1654 causes the adapted test to fail.
322david-sarah@jacaranda.org**20120220202753
323 Ignore-this: 81dade25475c6421b83d164ec1811f0
324]
325[test_provisioning.py: follow naming convention for mock class.
326david-sarah@jacaranda.org**20120220193255
327 Ignore-this: 40c46e2159484a8ff1623677a59763de
328]
329[Resolve conflicts in fix for #1628. Note that the conflict in the _record_verinfo method in publish.py was nontrivial.
330david-sarah@jacaranda.org**20120220193150
331 Ignore-this: d589a712e8597efa10ce63389da349cb
332]
333[make provisioning/reliability work in the new location, fix tests
334Brian Warner <warner@lothar.com>**20120216222905
335 Ignore-this: 8a2923a54ca224fe69fe404e819aaaac
336]
337[remove 'provisioning'/'reliability' from WUI, add to misc/operations_helpers
338Brian Warner <warner@lothar.com>**20120216222905
339 Ignore-this: 4090c8ac99f139393d9573b65cbbfe0c
340 
341 Also remove docs related to reliability/provisioning pages
342]
343[provisioning.py: update disk sizes and usage numbers
344Brian Warner <warner@lothar.com>**20120213155708
345 Ignore-this: e47ee282bfba4beb2598b227add5250a
346]
347[configuration.rst: another attempt to fix formatting of sample tahoe.cfg.
348david-sarah@jacaranda.org**20120131000949
349 Ignore-this: bb67b6c9bb191a1335eaadfe9594fa4f
350]
351[configuration.rst: remove the obsolete sizelimit option from the sample tahoe.cfg. Also fix the RST formatting of blank lines in the file.
352david-sarah@jacaranda.org**20120131000643
353 Ignore-this: 9c5327edf031d8578c19383d950b17b9
354]
355[Add a Python 3 blocker to setup.py, to display a better error message when it is run under Python 3.
356david-sarah@jacaranda.org**20120127015525
357 Ignore-this: 5f032794ecc8cd6c512a7ab9efffed2
358]
359[Ensure that verification proceeds and stops when appropriate.
360Brian Warner <warner@lothar.com>**20120124205209
361 Ignore-this: 88278bbd6a3b33cf3b286feaa162ad02
362 
363 The removed assertions are appropriate for a download that seeks to
364 return plaintext to a caller; if we don't have at least k active remote
365 shares, then we can't hope to do that. They're not appropriate for a
366 verification operation; a user can try to verify a file that has fewer
367 than k shares available, so that shouldn't be treated as an error.
368 Instead, we proceed with fewer than k shares, and ensure that we
369 terminate the download if we have no shares at all and we're verifying.
370]
371[Add test_verify_mdmf_all_bad_sharedata
372Brian Warner <warner@lothar.com>**20120124205209
373 Ignore-this: 52acb4f0256af764acb038f7c8344367
374 
375 test_verify_mdmf_all_bad_sharedata tests for the regression described
376 in ticket 1648. In particular, it will trigger the misplaced assertion
377 in the share activation code. It also tests to make sure that
378 verification continues with fewer than k shares.
379]
380[Added clarification on how interface= works
381Brian Warner <warner@lothar.com>**20120124203821
382 Ignore-this: 57f86d178c8e4f3c62d15bf99dec7d0d
383]
384[FTP-and-SFTP.rst: minor edits
385Brian Warner <warner@lothar.com>**20120124203654
386 Ignore-this: ec21fadb85cf7b3192d32b02c03c3656
387]
388[Updated accounts.url directive per warner's suggestions
389Brian Warner <warner@lothar.com>**20120124203126
390 Ignore-this: 9297ec6406e11d4e1fe24ba3a06725e3
391]
392[Added information on accounts.url directive
393Brian Warner <warner@lothar.com>**20120124203126
394 Ignore-this: 6d6142418eabdad789a2fc68f26b3ba1
395]
396[docs: an extra newline to separate utf-8 BOF from comment for the sake of trac's rst renderer
397zooko@zooko.com**20120122212002
398 Ignore-this: 5c6d0dbfa1430681fa00494937537956
399]
400[docs: a newline between the utf-8 BOF and the comment in order to prevent trac from misrendering the comment
401zooko@zooko.com**20120122211856
402 Ignore-this: 5e92cb88ba46b82227338522b834b90d
403 sheesh
404]
405[docs: a comment to inform the (human) reader about encoding and to prevent someone from moving the title up to where it will interact with the utf-8 BOM and cause trac to mis-render the title
406zooko@zooko.com**20120122211731
407 Ignore-this: f7912a13ffba60408ec901a9586ce8a4
408]
409[docs: insert another newline between utf-8 BOF and title
410zooko@zooko.com**20120122211427
411 Ignore-this: 1b3861ef7d4531acfa61fac31e14fe98
412]
413[docs: insert newline after utf-8 BOF and before restructuredtext title
414zooko@zooko.com**20120122182127
415 Ignore-this: f947afe5bdfc9f44ba9bf7f0e585da7c
416]
417[docs: remove utf-8 "BOM" which confuses trac's rst renderer
418zooko@zooko.com**20120122140052
419 Ignore-this: ba58c59a314f23c65de5443bd7b6ffcb
420]
421[docs: try again to change RestructuredText titles to a format that trac will render
422zooko@zooko.com**20120122135613
423 Ignore-this: 588bbb627a95cd8317c809567cfa3e78
424]
425[docs: backdoors.rst: fix title formatting
426zooko@zooko.com**20120122135125
427 Ignore-this: 5bf980c1a8703ee353cd747ae343176a
428]
429[docs: backdoors.rst: stop using embedded URIs and tweak title so that trac will render it correctly; reflow to fill-column 77; M-x whitespace-cleanup
430zooko@zooko.com**20120122134319
431 Ignore-this: e1b5b3d2809040cfd7f13bb88ee8313d
432]
433[update release process: git, not darcs, etc
434Brian Warner <warner@lothar.com>**20120113071257
435 Ignore-this: 2eaa1f0e93dc545989bb1e62b2446e1e
436]
437[prepare to Org-ify how_to_make_a_tahoe-lafs_release: rename the file
438Brian Warner <warner@lothar.com>**20120113070153
439 Ignore-this: d9bb83dfd6c3b4c0ca0efd2adacdf63c
440]
441[retrieve.py: unconditionally check share-hash-tree. Fixes #1654.
442Brian Warner <warner@lothar.com>**20120112213553
443 Ignore-this: 7ddc903a382b52bc014262b3b4099165
444 
445 Add Kevan's unit test, update known_issues.rst
446]
447[mutable/retrieve.py: clean up control flow to avoid dropping errors
448Brian Warner <warner@lothar.com>**20120108221248
449 Ignore-this: 4e991bdf6399439d2cee3d743814a327
450 
451 * replace DeferredList with gatherResults, simplify result handling
452 * use BadShareError to signal recoverable problems in either fetch or
453   validate, catch after _validate_block
454 * _validate_block is thus not responsible for noticing fetch problems
455 * rename _validation_or_decoding_failed() to _handle_bad_share()
456 * _get_needed_hashes() returns two Deferreds, instead of a hard-to-unpack
457   DeferredList
458]
459[mutable/layout.py: raise BadShareError instead of assert()
460Brian Warner <warner@lothar.com>**20120108221247
461 Ignore-this: 129891a807315f657b80576025135df8
462]
463[mutable: don't tell server about corruption unless it's really CorruptShareError
464Brian Warner <warner@lothar.com>**20120108221245
465 Ignore-this: 90da01af1008477c45d333a0f74f1c5b
466]
467[mutable: simplify Retrieve._process_segment() to use a gatherDeferred
468Brian Warner <warner@lothar.com>**20120108221244
469 Ignore-this: cfc7a56414889d02bffd747f1abad8ef
470]
471[Retrieve.decode(): simplify setup of DeferredList-like argument
472Brian Warner <warner@lothar.com>**20120108221240
473 Ignore-this: c92d377bf4d65251240e59c8db5452af
474 
475 make it more obviously match the expectations of _decode_blocks() and
476 _maybe_decode_and_decrypt_segment()
477]
478[test_mutable: don't use 75 shares (slow), now that the bug is fixed
479Brian Warner <warner@lothar.com>**20111228223819
480 Ignore-this: 930f1a24ebe9ed2ab25e4b2a16e36352
481 
482 I missed this part of Kevan's fix-1628.darcs.2.patch .
483]
484[mutable publish: fix not-enough-shares detection. Refs #1628.
485Brian Warner <warner@lothar.com>**20111228055018
486 Ignore-this: 23db08d8d630268e208e1755509adf92
487 
488 This should match the "fix-1628.darcs.2.patch" attachment on that ticket.
489]
490[mutable publish: track multiple servers-per-share. Fixes some of #1628.
491Brian Warner <warner@lothar.com>**20111228053358
492 Ignore-this: 6e8cb92e70273b81098f73ebf23164bd
493 
494 The remaining work is to write additional tests.
495 
496 src/allmydata/test/no_network.py:
497 
498  This supports tests in which servers leave the grid only to return with
499  their shares intact at a later time.
500 
501 src/allmydata/test/test_mutable.py:
502 
503  The UCWEs in the incident reports associated with #1628 all seem to be
504  associated with shares that the servermap knows about, but which aren't
505  accounted for during the publish process for whatever reason. Specifically,
506  it looks like the publisher is only capable of keeping track of a single
507  storage server for a given share. This makes the repair process worse than
508  it was pre-MDMF at updating all of the shares of a particular file to the
509  newest version, and can also cause spurious UCWEs. This test simulates such
510  a layout and fails if an UCWE is thrown. We need to write another test to
511  ensure that all copies of a share are updated to the latest version (or
512  alter this test to do that), so that the test suite doesn't pass unless both
513  regressions are fixed.
514 
515  We want the publisher to follow the existing share placement when uploading
516  a new version of a mutable file, and we don't want this test to pass unless
517  it does.
518 
519 src/allmydata/mutable/publish.py:
520 
521  Before this commit, the publisher only kept track of a single writer for
522  each share. This is insufficient to handle updates in which a single share
523  may live on multiple servers. In the best case, an update will only update
524  one of the existing shares instead of all of them. In some cases, the update
525  will encounter the existing shares when publishing some other share,
526  interpret it as a sign of an uncoordinated update, and fail. Keeping track
527  of all of the writers helps ensure that all existing shares are updated, and
528  helps avoid spurious uncoordinated write errors.
529]
530[IServer refactoring: pass IServer instances around, instead of peerids
531Brian Warner <warner@lothar.com>**20111101040319
532 Ignore-this: 35e4698a0273a0311fe0ccedcc7881b5
533 
534 refs #1363
535 
536 This collapses 88 small incremental changes (each of which passes all tests)
537 into one big patch. The development process for the long path started with
538 adding some temporary scaffolding, changing one method at a time, then
539 removing the scaffolding. The individual pieces are as follows, in reverse
540 chronological order (the first patch is at the end of this comment):
541 
542  commit 9bbe4174fd0d98a6cf47a8ef96e85d9ef34b2f9a
543  Author: Brian Warner <warner@lothar.com>
544  Date:   Tue Oct 4 16:05:00 2011 -0400
545 
546      immutable/downloader/status.py: correct comment
547 
548   src/allmydata/immutable/downloader/status.py |    2 +-
549   1 files changed, 1 insertions(+), 1 deletions(-)
550 
551  commit 72146a7c7c91eac2f7c3ceb801eb7a1721376889
552  Author: Brian Warner <warner@lothar.com>
553  Date:   Tue Oct 4 15:46:20 2011 -0400
554 
555      remove temporary ServerMap._storage_broker
556 
557   src/allmydata/mutable/checker.py   |    2 +-
558   src/allmydata/mutable/filenode.py  |    2 +-
559   src/allmydata/mutable/publish.py   |    2 +-
560   src/allmydata/mutable/servermap.py |    5 ++---
561   src/allmydata/test/test_mutable.py |    8 ++++----
562   5 files changed, 9 insertions(+), 10 deletions(-)
563 
564  commit d703096b41632c47d76414b12672e076a422ff5c
565  Author: Brian Warner <warner@lothar.com>
566  Date:   Tue Oct 4 15:37:05 2011 -0400
567 
568      remove temporary storage_broker.get_server_for_id()
569 
570   src/allmydata/storage_client.py  |    3 ---
571   src/allmydata/test/no_network.py |   13 -------------
572   2 files changed, 0 insertions(+), 16 deletions(-)
573 
574  commit 620cc5d80882ef6f7decfd26af8a6c7c1ddf80d1
575  Author: Brian Warner <warner@lothar.com>
576  Date:   Tue Oct 4 12:50:06 2011 -0400
577 
578      API of Retrieve._try_to_validate_privkey(), trying to remove reader.server
579 
580   src/allmydata/mutable/retrieve.py |   10 +++++-----
581   1 files changed, 5 insertions(+), 5 deletions(-)
582 
583  commit 92f43f856f4a8b36c207d1b190ed8699b5a4ecb4
584  Author: Brian Warner <warner@lothar.com>
585  Date:   Tue Oct 4 12:48:08 2011 -0400
586 
587      API of Retrieve._validate_block(), trying to remove reader.server
588 
589   src/allmydata/mutable/retrieve.py |   14 +++++++-------
590   1 files changed, 7 insertions(+), 7 deletions(-)
591 
592  commit 572d5070761861a2190349d1ed8d85dbc25698a5
593  Author: Brian Warner <warner@lothar.com>
594  Date:   Tue Oct 4 12:36:58 2011 -0400
595 
596      API of Retrieve._mark_bad_share(), trying to remove reader.server
597 
598   src/allmydata/mutable/retrieve.py |   21 +++++++++------------
599   1 files changed, 9 insertions(+), 12 deletions(-)
600 
601  commit a793ff00c0de1e2eec7b46288fdf388c7a2bec89
602  Author: Brian Warner <warner@lothar.com>
603  Date:   Tue Oct 4 12:06:13 2011 -0400
604 
605      remove now-unused get_rref_for_serverid()
606 
607   src/allmydata/mutable/servermap.py |    3 ---
608   1 files changed, 0 insertions(+), 3 deletions(-)
609 
610  commit 1b9827cc9366bf90b93297fdd6832f2ad0480ce7
611  Author: Brian Warner <warner@lothar.com>
612  Date:   Tue Oct 4 12:03:09 2011 -0400
613 
614      Retrieve: stop adding .serverid attributes to readers
615 
616   src/allmydata/mutable/retrieve.py |    1 -
617   1 files changed, 0 insertions(+), 1 deletions(-)
618 
619  commit 5d4e9d491b19e49d2e443a1dfff2c672842c36ef
620  Author: Brian Warner <warner@lothar.com>
621  Date:   Tue Oct 4 12:03:34 2011 -0400
622 
623      return value of Retrieve(verify=True)
624 
625   src/allmydata/mutable/checker.py  |   11 ++++++-----
626   src/allmydata/mutable/retrieve.py |    3 +--
627   2 files changed, 7 insertions(+), 7 deletions(-)
628 
629  commit e9ab7978c384e1f677cb7779dc449b1044face82
630  Author: Brian Warner <warner@lothar.com>
631  Date:   Tue Oct 4 11:54:23 2011 -0400
632 
633      Retrieve._bad_shares (but not return value, used by Verifier)
634 
635   src/allmydata/mutable/retrieve.py |    7 ++++---
636   1 files changed, 4 insertions(+), 3 deletions(-)
637 
638  commit 2d91926de233ec5c881f30e36b4a30ad92ab42a9
639  Author: Brian Warner <warner@lothar.com>
640  Date:   Tue Oct 4 11:51:23 2011 -0400
641 
642      Publish: stop adding .serverid attributes to writers
643 
644   src/allmydata/mutable/publish.py |    9 ++-------
645   1 files changed, 2 insertions(+), 7 deletions(-)
646 
647  commit 47c7a0105dec7cbf4f7e0a3ce800bbb85b15df4a
648  Author: Brian Warner <warner@lothar.com>
649  Date:   Tue Oct 4 11:56:33 2011 -0400
650 
651      API of get_write_enabler()
652 
653   src/allmydata/mutable/filenode.py |    7 ++++---
654   src/allmydata/mutable/publish.py  |    4 ++--
655   src/allmydata/test/no_network.py  |    3 +++
656   3 files changed, 9 insertions(+), 5 deletions(-)
657 
658  commit 9196a5c6590fdbfd660325ea8358b345887d3db0
659  Author: Brian Warner <warner@lothar.com>
660  Date:   Tue Oct 4 11:46:24 2011 -0400
661 
662      API of get_(renewal|cancel)_secret()
663 
664   src/allmydata/mutable/filenode.py  |   14 ++++++++------
665   src/allmydata/mutable/publish.py   |    8 ++++----
666   src/allmydata/mutable/servermap.py |    5 ++---
667   3 files changed, 14 insertions(+), 13 deletions(-)
668 
669  commit de7c1552f8c163eff5b6d820b5fb3b21c1b47cb5
670  Author: Brian Warner <warner@lothar.com>
671  Date:   Tue Oct 4 11:41:52 2011 -0400
672 
673      API of CorruptShareError. Also comment out some related+unused test_web.py code
674 
675   src/allmydata/mutable/common.py    |   13 +++++--------
676   src/allmydata/mutable/retrieve.py  |   10 +++++-----
677   src/allmydata/mutable/servermap.py |    8 +++-----
678   src/allmydata/test/common.py       |   13 ++++++++-----
679   4 files changed, 21 insertions(+), 23 deletions(-)
680 
681  commit 2c1c314046b620c16f1e66d030c150d768b7d01e
682  Author: Brian Warner <warner@lothar.com>
683  Date:   Tue Oct 4 12:01:46 2011 -0400
684 
685      API of ServerMap.mark_bad_share()
686 
687   src/allmydata/mutable/publish.py   |    2 +-
688   src/allmydata/mutable/retrieve.py  |    6 +++---
689   src/allmydata/mutable/servermap.py |    6 ++----
690   src/allmydata/test/test_mutable.py |    3 +--
691   4 files changed, 7 insertions(+), 10 deletions(-)
692 
693  commit 1bed349030779fd0c378ae4e821384f953c6f6ff
694  Author: Brian Warner <warner@lothar.com>
695  Date:   Tue Oct 4 11:11:17 2011 -0400
696 
697      API+name of ServerMap.shares_on_server() : only for tests, so debug_ prefix
698 
699   src/allmydata/mutable/servermap.py |    7 ++-----
700   src/allmydata/test/test_mutable.py |    6 +++---
701   2 files changed, 5 insertions(+), 8 deletions(-)
702 
703  commit 2d32e448677d6b818692e801045d4115b29abf21
704  Author: Brian Warner <warner@lothar.com>
705  Date:   Tue Oct 4 11:07:10 2011 -0400
706 
707      API of ServerMap.all_servers_for_version()
708 
709   src/allmydata/mutable/servermap.py |    4 ++--
710   1 files changed, 2 insertions(+), 2 deletions(-)
711 
712  commit 48f3204d1889c3e7179578125c4bdef515af3d6a
713  Author: Brian Warner <warner@lothar.com>
714  Date:   Tue Oct 4 11:04:50 2011 -0400
715 
716      internals of ServerMap methods that use make_versionmap(), remove temp copy
717 
718   src/allmydata/mutable/servermap.py |   28 +++++++++----------------
719   1 files changed, 10 insertions(+), 18 deletions(-)
720 
721  commit 5c3da77b6c777a145bd5ddfaa4db849dc9495548
722  Author: Brian Warner <warner@lothar.com>
723  Date:   Tue Oct 4 11:01:28 2011 -0400
724 
725      API of ServerMap.make_versionmap()
726 
727   src/allmydata/mutable/checker.py   |    4 ++--
728   src/allmydata/mutable/retrieve.py  |    5 ++---
729   src/allmydata/mutable/servermap.py |    4 ++--
730   src/allmydata/test/test_mutable.py |    7 ++++---
731   4 files changed, 10 insertions(+), 10 deletions(-)
732 
733  commit b6882ece49afb4c507d118af2db346fa329209dc
734  Author: Brian Warner <warner@lothar.com>
735  Date:   Tue Oct 4 10:53:38 2011 -0400
736 
737      make a copy of ServerMap.make_versionmap() (_make_versionmap2) for internal use
738 
739   src/allmydata/mutable/servermap.py |   18 +++++++++++++-----
740   1 files changed, 13 insertions(+), 5 deletions(-)
741 
742  commit 963f8e63faf32b950eb1b8103cd2ff16fe8f0151
743  Author: Brian Warner <warner@lothar.com>
744  Date:   Tue Oct 4 00:45:58 2011 -0400
745 
746      API of RetrieveStatus.add_problem()
747 
748   src/allmydata/mutable/retrieve.py |    5 +++--
749   1 files changed, 3 insertions(+), 2 deletions(-)
750 
751  commit 4976d29ffae565a048851601c29013bbae2976d8
752  Author: Brian Warner <warner@lothar.com>
753  Date:   Tue Oct 4 00:45:05 2011 -0400
754 
755      API of RetrieveStatus.add_fetch_timing()
756 
757   src/allmydata/mutable/retrieve.py |    5 +++--
758   1 files changed, 3 insertions(+), 2 deletions(-)
759 
760  commit d057d3bbba72663ee148a8b916bc2d52be2e3982
761  Author: Brian Warner <warner@lothar.com>
762  Date:   Tue Oct 4 00:44:04 2011 -0400
763 
764      API of Retrieve.notify_server_corruption()
765 
766   src/allmydata/mutable/retrieve.py |    6 +++---
767   1 files changed, 3 insertions(+), 3 deletions(-)
768 
769  commit 8a2a81e46671c860610e0e96d6add1a57551f22d
770  Author: Brian Warner <warner@lothar.com>
771  Date:   Tue Oct 4 00:42:32 2011 -0400
772 
773      remove unused _outstanding_queries
774 
775   src/allmydata/mutable/retrieve.py |    1 -
776   1 files changed, 0 insertions(+), 1 deletions(-)
777 
778  commit 56d12cc9968d03ccd53764455c671122c4f391d1
779  Author: Brian Warner <warner@lothar.com>
780  Date:   Tue Oct 4 00:40:57 2011 -0400
781 
782      change Retrieve.remaining_sharemap
783 
784   src/allmydata/mutable/retrieve.py |    4 ++--
785   1 files changed, 2 insertions(+), 2 deletions(-)
786 
787  commit 4f0b7af4821f43290bfc70f2b1fc30149ad81281
788  Author: Brian Warner <warner@lothar.com>
789  Date:   Tue Oct 4 10:40:18 2011 -0400
790 
791      accessor for PublishStatus._problems
792 
793   src/allmydata/mutable/publish.py |    4 +++-
794   src/allmydata/web/status.py      |    2 +-
795   2 files changed, 4 insertions(+), 2 deletions(-)
796 
797  commit 627087cf66d0b8cc519f4d551a967a7bd9b6a741
798  Author: Brian Warner <warner@lothar.com>
799  Date:   Tue Oct 4 10:36:39 2011 -0400
800 
801      accessor for RetrieveStatus._problems
802 
803   src/allmydata/mutable/retrieve.py |    8 ++++++--
804   src/allmydata/web/status.py       |    2 +-
805   2 files changed, 7 insertions(+), 3 deletions(-)
806 
807  commit ca7dea81f03801b1c7353fc00ecba689268109cf
808  Author: Brian Warner <warner@lothar.com>
809  Date:   Tue Oct 4 00:35:32 2011 -0400
810 
811      add .server to "reader", so we can get at it later
812 
813   src/allmydata/mutable/retrieve.py |    5 +++--
814   1 files changed, 3 insertions(+), 2 deletions(-)
815 
816  commit 6ef516e24908ec195af084a7550d1921a5e983b0
817  Author: Brian Warner <warner@lothar.com>
818  Date:   Tue Oct 4 00:32:32 2011 -0400
819 
820      temporarily give Retrieve a _storage_broker, so it can map serverids to servers
821 
822   src/allmydata/mutable/checker.py   |    3 ++-
823   src/allmydata/mutable/filenode.py  |    6 ++++--
824   src/allmydata/mutable/retrieve.py  |    5 +++--
825   src/allmydata/test/test_mutable.py |    4 ++--
826   4 files changed, 11 insertions(+), 7 deletions(-)
827 
828  commit afe08e4dd3f4ff9ff7e8a2a8d28b181e3625bcc9
829  Author: Brian Warner <warner@lothar.com>
830  Date:   Tue Oct 4 00:21:51 2011 -0400
831 
832      mutable/retrieve.py: s/peer/server/
833 
834   src/allmydata/mutable/retrieve.py  |   82 +++++++++++++-------------
835   src/allmydata/test/test_mutable.py |    6 +-
836   2 files changed, 44 insertions(+), 44 deletions(-)
837 
838  commit 910afcb5d7f274880f68dd6cdb5b05f2bbc29adc
839  Author: Brian Warner <warner@lothar.com>
840  Date:   Tue Oct 4 00:16:01 2011 -0400
841 
842      web.status.PublishStatusPage: add comment, I think .problems isn't exercised
843 
844   src/allmydata/web/status.py |    2 ++
845   1 files changed, 2 insertions(+), 0 deletions(-)
846 
847  commit 311466dd8c931bbba40d590ade867704282e7f1a
848  Author: Brian Warner <warner@lothar.com>
849  Date:   Mon Oct 3 23:48:16 2011 -0400
850 
851      API of PublishStatus.add_per_server_time()
852 
853   src/allmydata/mutable/publish.py |    5 +++--
854   1 files changed, 3 insertions(+), 2 deletions(-)
855 
856  commit 2df5faa1b6cbfbaded520d2320305a62fe961118
857  Author: Brian Warner <warner@lothar.com>
858  Date:   Mon Oct 3 23:46:37 2011 -0400
859 
860      more simplifications
861 
862   src/allmydata/mutable/publish.py |    4 +---
863   1 files changed, 1 insertions(+), 3 deletions(-)
864 
865  commit 6ac4544a3da385f2aad9392f906b90192f4f919a
866  Author: Brian Warner <warner@lothar.com>
867  Date:   Mon Oct 3 23:44:08 2011 -0400
868 
869      API of ServerMap.version_on_server()
870 
871   src/allmydata/mutable/publish.py   |    2 +-
872   src/allmydata/mutable/servermap.py |    4 ++--
873   src/allmydata/test/test_mutable.py |    5 ++---
874   3 files changed, 5 insertions(+), 6 deletions(-)
875 
876  commit 3e187e322511072e4683329df6b2c6c733a66dba
877  Author: Brian Warner <warner@lothar.com>
878  Date:   Tue Oct 4 00:16:32 2011 -0400
879 
880      API of ServerMap.make_sharemap()
881 
882   src/allmydata/mutable/servermap.py |    4 ++--
883   src/allmydata/test/test_mutable.py |    7 ++++---
884   src/allmydata/web/status.py        |    4 ++--
885   3 files changed, 8 insertions(+), 7 deletions(-)
886 
887  commit 318feed8437bdd8d4943c6569d38f7b54b6313cc
888  Author: Brian Warner <warner@lothar.com>
889  Date:   Mon Oct 3 23:36:19 2011 -0400
890 
891      small cleanups
892 
893   src/allmydata/mutable/publish.py |    4 ++--
894   1 files changed, 2 insertions(+), 2 deletions(-)
895 
896  commit bd459ed5714e1db5a7163935c54b7b0b56db8349
897  Author: Brian Warner <warner@lothar.com>
898  Date:   Mon Oct 3 23:33:39 2011 -0400
899 
900      API of ServerMap.add_new_share()
901 
902   src/allmydata/mutable/publish.py   |    4 ++--
903   src/allmydata/mutable/servermap.py |    6 ++----
904   2 files changed, 4 insertions(+), 6 deletions(-)
905 
906  commit f2804fb6ed11d80088e0da8ed48e6c2922f2ffef
907  Author: Brian Warner <warner@lothar.com>
908  Date:   Mon Oct 3 23:30:26 2011 -0400
909 
910      API of ServerMap.get_bad_shares()
911 
912   src/allmydata/mutable/publish.py   |    3 +--
913   src/allmydata/mutable/servermap.py |    9 ++++-----
914   2 files changed, 5 insertions(+), 7 deletions(-)
915 
916  commit 965074a47b3ce1431cb46d9a233840afcf9105f5
917  Author: Brian Warner <warner@lothar.com>
918  Date:   Mon Oct 3 23:26:58 2011 -0400
919 
920      more small cleanups
921 
922   src/allmydata/mutable/publish.py |    6 +++---
923   1 files changed, 3 insertions(+), 3 deletions(-)
924 
925  commit 38020da34f034f8889947dd3dc05e087ffff7106
926  Author: Brian Warner <warner@lothar.com>
927  Date:   Mon Oct 3 23:18:47 2011 -0400
928 
929      change Publish.bad_share_checkstrings
930 
931   src/allmydata/mutable/publish.py |    6 +++---
932   1 files changed, 3 insertions(+), 3 deletions(-)
933 
934  commit 5efebcbd2ee0c2f299ea86f7591d856c0f265304
935  Author: Brian Warner <warner@lothar.com>
936  Date:   Mon Oct 3 23:16:31 2011 -0400
937 
938      change internals of Publish.update_goal()
939 
940   src/allmydata/mutable/publish.py |    8 +++-----
941   1 files changed, 3 insertions(+), 5 deletions(-)
942 
943  commit e91b55ff4c2a69165b71f2c7b217ac319ff4c527
944  Author: Brian Warner <warner@lothar.com>
945  Date:   Mon Oct 3 23:11:42 2011 -0400
946 
947      get rid of Publish.connections
948 
949   src/allmydata/mutable/publish.py |   27 +++++----------------------
950   1 files changed, 5 insertions(+), 22 deletions(-)
951 
952  commit 64e9a53b3229ebe2f9ebf7ed502d539311d0e037
953  Author: Brian Warner <warner@lothar.com>
954  Date:   Mon Oct 3 23:05:32 2011 -0400
955 
956      change Publish.bad_servers
957 
958   src/allmydata/mutable/publish.py |   10 +++++-----
959   1 files changed, 5 insertions(+), 5 deletions(-)
960 
961  commit b85a934bef315a06bcfe00c9c12a3627fed2b918
962  Author: Brian Warner <warner@lothar.com>
963  Date:   Mon Oct 3 23:03:07 2011 -0400
964 
965      Publish.bad_servers: fix bug, this should be a set of serverids, not writers
966 
967   src/allmydata/mutable/publish.py |    2 +-
968   1 files changed, 1 insertions(+), 1 deletions(-)
969 
970  commit 605ea15ec15ed671513819003ccd211cdb9761e0
971  Author: Brian Warner <warner@lothar.com>
972  Date:   Mon Oct 3 23:00:21 2011 -0400
973 
974      change .placed
975 
976   src/allmydata/mutable/publish.py |    6 +++---
977   1 files changed, 3 insertions(+), 3 deletions(-)
978 
979  commit f7aba37b1b345d5b6d5cb16e3b3f6f3c1afb658e
980  Author: Brian Warner <warner@lothar.com>
981  Date:   Mon Oct 3 22:59:22 2011 -0400
982 
983      temporarily stash IServer as .server on the "writer" object
984 
985   src/allmydata/mutable/publish.py |    2 ++
986   1 files changed, 2 insertions(+), 0 deletions(-)
987 
988  commit f9b551d788e7db1f187fce5ab98ab5d5fe4e1c36
989  Author: Brian Warner <warner@lothar.com>
990  Date:   Mon Oct 3 22:48:18 2011 -0400
991 
992      change Publish.goal and API of log_goal() to use IServer, not serverid
993 
994   src/allmydata/mutable/publish.py |   48 ++++++++++++++--------------
995   1 files changed, 24 insertions(+), 24 deletions(-)
996 
997  commit 75f20616558e4900b8b1f685dd99aa838de6d452
998  Author: Brian Warner <warner@lothar.com>
999  Date:   Mon Oct 3 15:27:02 2011 -0400
1000 
1001      API of ServerMap.get_known_shares()
1002 
1003   src/allmydata/mutable/publish.py   |   16 ++++++++++------
1004   src/allmydata/mutable/servermap.py |    7 ++-----
1005   2 files changed, 12 insertions(+), 11 deletions(-)
1006 
1007  commit 1c38c9d37bb08221b4418762234b1a62397b3b4b
1008  Author: Brian Warner <warner@lothar.com>
1009  Date:   Mon Oct 3 15:20:29 2011 -0400
1010 
1011      Publish.full_serverlist
1012 
1013   src/allmydata/mutable/publish.py |   10 +++++-----
1014   1 files changed, 5 insertions(+), 5 deletions(-)
1015 
1016  commit b6cbd215a04b9cde31a7d92a97a7f048622b16f1
1017  Author: Brian Warner <warner@lothar.com>
1018  Date:   Mon Oct 3 15:12:31 2011 -0400
1019 
1020      API of ServerMap.all_servers()
1021 
1022   src/allmydata/mutable/servermap.py |   19 ++++++-------------
1023   1 files changed, 6 insertions(+), 13 deletions(-)
1024 
1025  commit e63cd0315fae65357b1727ec6d5ff3c6e0d27c98
1026  Author: Brian Warner <warner@lothar.com>
1027  Date:   Mon Oct 3 15:10:18 2011 -0400
1028 
1029      remove ServerMap.connections, set_rref_for_serverid()
1030 
1031   src/allmydata/mutable/servermap.py |   11 +----------
1032   1 files changed, 1 insertions(+), 10 deletions(-)
1033 
1034  commit 4df52db2f80eb12eefa5d57103c24893cde89553
1035  Author: Brian Warner <warner@lothar.com>
1036  Date:   Mon Oct 3 15:04:06 2011 -0400
1037 
1038      API of ServerMap.mark_server_reachable()
1039 
1040   src/allmydata/mutable/servermap.py |    7 ++-----
1041   1 files changed, 2 insertions(+), 5 deletions(-)
1042 
1043  commit 69c715bde77944dc25181b3dbbeb042c816f9a1b
1044  Author: Brian Warner <warner@lothar.com>
1045  Date:   Mon Oct 3 15:03:21 2011 -0400
1046 
1047      API of ServerMap.mark_server_unreachable()
1048 
1049   src/allmydata/mutable/servermap.py |    9 +++------
1050   1 files changed, 3 insertions(+), 6 deletions(-)
1051 
1052  commit 3d784d60eec1c508858e3a617e4411ffbcc3c1fa
1053  Author: Brian Warner <warner@lothar.com>
1054  Date:   Mon Oct 3 15:02:03 2011 -0400
1055 
1056      API of status.set_privkey_from()
1057 
1058   src/allmydata/mutable/servermap.py |    7 +++----
1059   1 files changed, 3 insertions(+), 4 deletions(-)
1060 
1061  commit 544ed3ea29bed7e66da7fd29ca3f6f076f27a9e6
1062  Author: Brian Warner <warner@lothar.com>
1063  Date:   Mon Oct 3 15:01:15 2011 -0400
1064 
1065      API of status.add_per_server_time()
1066 
1067   src/allmydata/mutable/servermap.py |    7 ++++---
1068   1 files changed, 4 insertions(+), 3 deletions(-)
1069 
1070  commit fffe5008b6320bd1e04c3c68389a2bf2ee383fa8
1071  Author: Brian Warner <warner@lothar.com>
1072  Date:   Mon Oct 3 14:59:02 2011 -0400
1073 
1074      remove unused .versionmap
1075 
1076   src/allmydata/mutable/servermap.py |    7 -------
1077   1 files changed, 0 insertions(+), 7 deletions(-)
1078 
1079  commit 2816562e090d2294179db3588dafcca18de1bc2b
1080  Author: Brian Warner <warner@lothar.com>
1081  Date:   Mon Oct 3 14:57:51 2011 -0400
1082 
1083      remove serverid from all log messages. Also one unused lambda.
1084 
1085   src/allmydata/mutable/servermap.py |   30 +++++++++++++-------------
1086   1 files changed, 15 insertions(+), 15 deletions(-)
1087 
1088  commit 28fa6b1a2738fa98c1f1dbd3d0e01ae98912d11f
1089  Author: Brian Warner <warner@lothar.com>
1090  Date:   Mon Oct 3 14:54:30 2011 -0400
1091 
1092      removed unused _readers
1093 
1094   src/allmydata/mutable/servermap.py |    3 ---
1095   1 files changed, 0 insertions(+), 3 deletions(-)
1096 
1097  commit a8e4ed3d645ab592d1add6a1e69b6d1ebfb77817
1098  Author: Brian Warner <warner@lothar.com>
1099  Date:   Mon Oct 3 14:54:16 2011 -0400
1100 
1101      remove unused _sharemap
1102 
1103   src/allmydata/mutable/servermap.py |    1 -
1104   1 files changed, 0 insertions(+), 1 deletions(-)
1105 
1106  commit 3f072e55cf1d0700f9fffe23f8f3a475725df588
1107  Author: Brian Warner <warner@lothar.com>
1108  Date:   Mon Oct 3 14:49:03 2011 -0400
1109 
1110      _must_query
1111 
1112   src/allmydata/mutable/servermap.py |    8 ++++----
1113   1 files changed, 4 insertions(+), 4 deletions(-)
1114 
1115  commit c599a059b8df3f5785e4bf89fb6ecc6d8dcd708b
1116  Author: Brian Warner <warner@lothar.com>
1117  Date:   Mon Oct 3 14:48:05 2011 -0400
1118 
1119      _queries_outstanding
1120 
1121   src/allmydata/mutable/servermap.py |   16 +++++++---------
1122   1 files changed, 7 insertions(+), 9 deletions(-)
1123 
1124  commit 7743759f98ac2c07926b2fdbd80bf52dfab33085
1125  Author: Brian Warner <warner@lothar.com>
1126  Date:   Mon Oct 3 14:46:17 2011 -0400
1127 
1128      _empty_servers
1129 
1130   src/allmydata/mutable/servermap.py |    5 ++---
1131   1 files changed, 2 insertions(+), 3 deletions(-)
1132 
1133  commit 6bb1825916828a713a32cdf7f7411fa3ea2e1e5d
1134  Author: Brian Warner <warner@lothar.com>
1135  Date:   Mon Oct 3 14:45:39 2011 -0400
1136 
1137      _good_servers
1138 
1139   src/allmydata/mutable/servermap.py |    4 ++--
1140   1 files changed, 2 insertions(+), 2 deletions(-)
1141 
1142  commit 1768fab1b51d8dd93ecabbaaabfadfa20cf6c3d4
1143  Author: Brian Warner <warner@lothar.com>
1144  Date:   Mon Oct 3 14:44:59 2011 -0400
1145 
1146      _bad_servers
1147 
1148   src/allmydata/mutable/servermap.py |   14 +++++++-------
1149   1 files changed, 7 insertions(+), 7 deletions(-)
1150 
1151  commit dccbaef30f0ba714c746bf6d4a1a803c36e17b65
1152  Author: Brian Warner <warner@lothar.com>
1153  Date:   Mon Oct 3 14:41:54 2011 -0400
1154 
1155      API of _try_to_set_pubkey()
1156 
1157   src/allmydata/mutable/servermap.py |    7 ++++---
1158   1 files changed, 4 insertions(+), 3 deletions(-)
1159 
1160  commit 0481ea70042ba3575f15eac7fd0780f8ece580cc
1161  Author: Brian Warner <warner@lothar.com>
1162  Date:   Mon Oct 3 14:35:02 2011 -0400
1163 
1164      API of notify_server_corruption()
1165 
1166   src/allmydata/mutable/servermap.py |    6 +++---
1167   1 files changed, 3 insertions(+), 3 deletions(-)
1168 
1169  commit bea9cba18fb3b9c11bb22f18356a263ecec7351e
1170  Author: Brian Warner <warner@lothar.com>
1171  Date:   Mon Oct 3 14:34:09 2011 -0400
1172 
1173      API of _got_signature_one_share()
1174 
1175   src/allmydata/mutable/servermap.py |    9 +++++----
1176   1 files changed, 5 insertions(+), 4 deletions(-)
1177 
1178  commit 1520123583cf78650706e114b15bb5b0ac1f4a14
1179  Author: Brian Warner <warner@lothar.com>
1180  Date:   Mon Oct 3 14:32:33 2011 -0400
1181 
1182      API of _try_to_validate_privkey()
1183 
1184   src/allmydata/mutable/servermap.py |    9 +++++----
1185   1 files changed, 5 insertions(+), 4 deletions(-)
1186 
1187  commit 938852c9c8519c7a078f58a9b1f4dd8ec8b6715e
1188  Author: Brian Warner <warner@lothar.com>
1189  Date:   Mon Oct 3 14:31:48 2011 -0400
1190 
1191      API and internals of _add_lease_failed()
1192 
1193   src/allmydata/mutable/servermap.py |    8 ++++----
1194   1 files changed, 4 insertions(+), 4 deletions(-)
1195 
1196  commit 3843dba367e3c19e176a622ab853cb51d2472ddf
1197  Author: Brian Warner <warner@lothar.com>
1198  Date:   Mon Oct 3 14:30:37 2011 -0400
1199 
1200      API of _privkey_query_failed()
1201 
1202   src/allmydata/mutable/servermap.py |    5 +++--
1203   1 files changed, 3 insertions(+), 2 deletions(-)
1204 
1205  commit 2219a710e1633cd57d0ca0786490de87b3e19ba7
1206  Author: Brian Warner <warner@lothar.com>
1207  Date:   Mon Oct 3 14:29:43 2011 -0400
1208 
1209      fix bug in call to _privkey_query_failed, unrelated to refactoring
1210 
1211   src/allmydata/mutable/servermap.py |    2 +-
1212   1 files changed, 1 insertions(+), 1 deletions(-)
1213 
1214  commit ae615bec7d0d1b269710b6902797b12f9592ad62
1215  Author: Brian Warner <warner@lothar.com>
1216  Date:   Mon Oct 3 14:27:17 2011 -0400
1217 
1218      API of _got_corrupt_share()
1219 
1220   src/allmydata/mutable/servermap.py |   17 +++++++++--------
1221   1 files changed, 9 insertions(+), 8 deletions(-)
1222 
1223  commit cb51c95a6f4e077278157a77dab060c8c1ad7a81
1224  Author: Brian Warner <warner@lothar.com>
1225  Date:   Mon Oct 3 14:23:16 2011 -0400
1226 
1227      API of _got_results()
1228 
1229   src/allmydata/mutable/servermap.py |    9 +++++----
1230   1 files changed, 5 insertions(+), 4 deletions(-)
1231 
1232  commit bac9154fe0af18f226999a58ffc2362d8cf4b802
1233  Author: Brian Warner <warner@lothar.com>
1234  Date:   Mon Oct 3 14:19:19 2011 -0400
1235 
1236      API of _query_failed()
1237 
1238   src/allmydata/mutable/servermap.py |    5 +++--
1239   1 files changed, 3 insertions(+), 2 deletions(-)
1240 
1241  commit fdc29a8ca95d4b5c503e5382b9e5d4d02141ba12
1242  Author: Brian Warner <warner@lothar.com>
1243  Date:   Mon Oct 3 14:17:20 2011 -0400
1244 
1245      API of _do_read()
1246 
1247   src/allmydata/mutable/servermap.py |    6 ++++--
1248   1 files changed, 4 insertions(+), 2 deletions(-)
1249 
1250  commit e7e9e338f28d004aa4d423d11c65f1e271ac7322
1251  Author: Brian Warner <warner@lothar.com>
1252  Date:   Mon Oct 3 14:20:21 2011 -0400
1253 
1254      API of _do_query()
1255 
1256   src/allmydata/mutable/servermap.py |   15 +++++++--------
1257   1 files changed, 7 insertions(+), 8 deletions(-)
1258 
1259  commit 330625b9dac4cdbe72a11464a893065b9aeed453
1260  Author: Brian Warner <warner@lothar.com>
1261  Date:   Mon Oct 3 14:43:05 2011 -0400
1262 
1263      next step: first batch of updates to ServermapUpdater
1264 
1265      updates:
1266       most method-local variables in update()
1267       API of _build_initial_querylist()
1268       API of _send_initial_requests()
1269       .full_serverlist
1270       .extra_servers
1271 
1272   src/allmydata/mutable/servermap.py |   39 ++++++++++++++------------
1273   1 files changed, 21 insertions(+), 18 deletions(-)
1274 
1275  commit 4aadc584fa7dcb2daa86b048c81dee0049ba26d9
1276  Author: Brian Warner <warner@lothar.com>
1277  Date:   Mon Oct 3 15:07:00 2011 -0400
1278 
1279      internal change: index _bad_shares with IServer
1280 
1281   src/allmydata/mutable/servermap.py |   20 ++++++++++----------
1282   1 files changed, 10 insertions(+), 10 deletions(-)
1283 
1284  commit 16d4e6fa82a9907dbdc92094213387c6a4164e41
1285  Author: Brian Warner <warner@lothar.com>
1286  Date:   Mon Oct 3 18:20:47 2011 +0100
1287 
1288      internal change: index _known_shares with IServer instead of serverid
1289 
1290      callers are unchanged
1291 
1292   src/allmydata/mutable/servermap.py |   42 +++++++++++++++----------
1293   1 files changed, 25 insertions(+), 17 deletions(-)
1294 
1295  commit ceeb5f4938cc814a0c75d1b8f4018aed965c2176
1296  Author: Brian Warner <warner@lothar.com>
1297  Date:   Mon Oct 3 18:11:43 2011 +0100
1298 
1299      accessors and name cleanup for servermap.Servermap.last_update_mode/time
1300 
1301   src/allmydata/mutable/filenode.py  |    6 +++---
1302   src/allmydata/mutable/publish.py   |    4 ++--
1303   src/allmydata/mutable/servermap.py |   17 +++++++++++------
1304   3 files changed, 16 insertions(+), 11 deletions(-)
1305 
1306  commit 8d3cbda82661c0a7e5c3d3b65cf7a5d5ab7e32c0
1307  Author: Brian Warner <warner@lothar.com>
1308  Date:   Mon Oct 3 18:11:14 2011 +0100
1309 
1310      accessors and name cleanup for servermap.Servermap.problems
1311 
1312   src/allmydata/mutable/servermap.py |   21 +++++++++++++--------
1313   src/allmydata/test/test_mutable.py |    6 +++---
1314   2 files changed, 16 insertions(+), 11 deletions(-)
1315 
1316  commit 348f57988f79389db0aab7672e6eaa9a6d8e3219
1317  Author: Brian Warner <warner@lothar.com>
1318  Date:   Mon Oct 3 18:10:41 2011 +0100
1319 
1320      accessors and name cleanup for servermap.Servermap.bad_shares
1321 
1322   src/allmydata/mutable/publish.py   |    2 +-
1323   src/allmydata/mutable/servermap.py |   30 ++++++++++++++-----------
1324   2 files changed, 18 insertions(+), 14 deletions(-)
1325 
1326  commit 520c9368134673cdf76c653c5e1bb91c2ab5d51e
1327  Author: Brian Warner <warner@lothar.com>
1328  Date:   Mon Oct 3 18:10:05 2011 +0100
1329 
1330      accessors and name cleanup for servermap.Servermap.servermap .
1331 
1332   src/allmydata/mutable/publish.py   |   14 +++++----
1333   src/allmydata/mutable/servermap.py |   38 ++++++++++++++-----------
1334   2 files changed, 29 insertions(+), 23 deletions(-)
1335 
1336  commit b8b8dc38287a91dbdf494426ac801d9381ce5841
1337  Author: Brian Warner <warner@lothar.com>
1338  Date:   Mon Oct 3 18:08:02 2011 +0100
1339 
1340      fix reachable_servers
1341 
1342   src/allmydata/mutable/checker.py   |    3 ++-
1343   src/allmydata/mutable/publish.py   |    4 +++-
1344   src/allmydata/mutable/servermap.py |   12 ++++++++++--
1345   3 files changed, 15 insertions(+), 4 deletions(-)
1346 
1347  commit cb0cfd1adfefad357c187aaaf690c3df68b622bc
1348  Author: Brian Warner <warner@lothar.com>
1349  Date:   Mon Oct 3 18:06:03 2011 +0100
1350 
1351      fix Servermap.unreachable_servers
1352 
1353   src/allmydata/mutable/servermap.py |   11 ++++++++---
1354   1 files changed, 8 insertions(+), 3 deletions(-)
1355 
1356  commit 2d9ea79b94bd4db674d40386fda90825785ac495
1357  Author: Brian Warner <warner@lothar.com>
1358  Date:   Mon Oct 3 18:03:48 2011 +0100
1359 
1360      give ServerMap a StorageFarmBroker, temporary
1361 
1362      this makes it possible for the ServerMap to accept bare serverids and still
1363      build data structures with IServers
1364 
1365   src/allmydata/mutable/checker.py   |    2 +-
1366   src/allmydata/mutable/filenode.py  |    2 +-
1367   src/allmydata/mutable/publish.py   |    2 +-
1368   src/allmydata/mutable/servermap.py |    5 +++--
1369   src/allmydata/test/test_mutable.py |    8 ++++----
1370   5 files changed, 10 insertions(+), 9 deletions(-)
1371 
1372  commit 718d1aeff6fded893f65397806d22ece928b0dd4
1373  Author: Brian Warner <warner@lothar.com>
1374  Date:   Mon Oct 3 13:43:30 2011 -0400
1375 
1376      add StorageFarmBroker.get_server_for_id(), temporary helper
1377 
1378      This will go away once we're passing IServers everywhere.
1379 
1380   src/allmydata/storage_client.py  |    2 ++
1381   src/allmydata/test/no_network.py |   13 +++++++++++++
1382   2 files changed, 15 insertions(+), 0 deletions(-)
1383 
1384  commit ece20231d7fda0d503704842a4aa068dfbc2e54e
1385  Author: Brian Warner <warner@lothar.com>
1386  Date:   Sun Oct 2 01:11:50 2011 +0100
1387 
1388      add proper accessors for Servermap.connections, to make refactoring easier
1389 
1390   src/allmydata/mutable/publish.py   |    6 +++---
1391   src/allmydata/mutable/retrieve.py  |   10 +++++-----
1392   src/allmydata/mutable/servermap.py |   17 +++++++++++------
1393   3 files changed, 19 insertions(+), 14 deletions(-)
1394 
1395  commit 3b943d6bf302ff702668081a612fc4fe2604cf9c
1396  Author: Brian Warner <warner@lothar.com>
1397  Date:   Fri Sep 23 10:34:30 2011 -0700
1398 
1399      mutable/servermap.py and neighbors: s/peer/server/
1400 
1401   src/allmydata/mutable/checker.py   |   22 +-
1402   src/allmydata/mutable/publish.py   |  204 +++++++-------
1403   src/allmydata/mutable/servermap.py |  402 +++++++++++++-------------
1404   src/allmydata/test/test_mutable.py |   18 +-
1405   4 files changed, 323 insertions(+), 323 deletions(-)
1406 IServer refactoring: pass IServer instances around, instead of peerids
1407 
1408 refs #1363
1409 
1410 This collapses 88 small incremental changes (each of which passes all tests)
1411 into one big patch. The development process for the long path started with
1412 adding some temporary scaffolding, changing one method at a time, then
1413 removing the scaffolding. The individual pieces are as follows, in reverse
1414 chronological order (the first patch is at the end of this comment):
1415 
1416  commit 9bbe4174fd0d98a6cf47a8ef96e85d9ef34b2f9a
1417  Author: Brian Warner <warner@lothar.com>
1418  Date:   Tue Oct 4 16:05:00 2011 -0400
1419 
1420      immutable/downloader/status.py: correct comment
1421 
1422   src/allmydata/immutable/downloader/status.py |    2 +-
1423   1 files changed, 1 insertions(+), 1 deletions(-)
1424 
1425  commit 72146a7c7c91eac2f7c3ceb801eb7a1721376889
1426  Author: Brian Warner <warner@lothar.com>
1427  Date:   Tue Oct 4 15:46:20 2011 -0400
1428 
1429      remove temporary ServerMap._storage_broker
1430 
1431   src/allmydata/mutable/checker.py   |    2 +-
1432   src/allmydata/mutable/filenode.py  |    2 +-
1433   src/allmydata/mutable/publish.py   |    2 +-
1434   src/allmydata/mutable/servermap.py |    5 ++---
1435   src/allmydata/test/test_mutable.py |    8 ++++----
1436   5 files changed, 9 insertions(+), 10 deletions(-)
1437 
1438  commit d703096b41632c47d76414b12672e076a422ff5c
1439  Author: Brian Warner <warner@lothar.com>
1440  Date:   Tue Oct 4 15:37:05 2011 -0400
1441 
1442      remove temporary storage_broker.get_server_for_id()
1443 
1444   src/allmydata/storage_client.py  |    3 ---
1445   src/allmydata/test/no_network.py |   13 -------------
1446   2 files changed, 0 insertions(+), 16 deletions(-)
1447 
1448  commit 620cc5d80882ef6f7decfd26af8a6c7c1ddf80d1
1449  Author: Brian Warner <warner@lothar.com>
1450  Date:   Tue Oct 4 12:50:06 2011 -0400
1451 
1452      API of Retrieve._try_to_validate_privkey(), trying to remove reader.server
1453 
1454   src/allmydata/mutable/retrieve.py |   10 +++++-----
1455   1 files changed, 5 insertions(+), 5 deletions(-)
1456 
1457  commit 92f43f856f4a8b36c207d1b190ed8699b5a4ecb4
1458  Author: Brian Warner <warner@lothar.com>
1459  Date:   Tue Oct 4 12:48:08 2011 -0400
1460 
1461      API of Retrieve._validate_block(), trying to remove reader.server
1462 
1463   src/allmydata/mutable/retrieve.py |   14 +++++++-------
1464   1 files changed, 7 insertions(+), 7 deletions(-)
1465 
1466  commit 572d5070761861a2190349d1ed8d85dbc25698a5
1467  Author: Brian Warner <warner@lothar.com>
1468  Date:   Tue Oct 4 12:36:58 2011 -0400
1469 
1470      API of Retrieve._mark_bad_share(), trying to remove reader.server
1471 
1472   src/allmydata/mutable/retrieve.py |   21 +++++++++------------
1473   1 files changed, 9 insertions(+), 12 deletions(-)
1474 
1475  commit a793ff00c0de1e2eec7b46288fdf388c7a2bec89
1476  Author: Brian Warner <warner@lothar.com>
1477  Date:   Tue Oct 4 12:06:13 2011 -0400
1478 
1479      remove now-unused get_rref_for_serverid()
1480 
1481   src/allmydata/mutable/servermap.py |    3 ---
1482   1 files changed, 0 insertions(+), 3 deletions(-)
1483 
1484  commit 1b9827cc9366bf90b93297fdd6832f2ad0480ce7
1485  Author: Brian Warner <warner@lothar.com>
1486  Date:   Tue Oct 4 12:03:09 2011 -0400
1487 
1488      Retrieve: stop adding .serverid attributes to readers
1489 
1490   src/allmydata/mutable/retrieve.py |    1 -
1491   1 files changed, 0 insertions(+), 1 deletions(-)
1492 
1493  commit 5d4e9d491b19e49d2e443a1dfff2c672842c36ef
1494  Author: Brian Warner <warner@lothar.com>
1495  Date:   Tue Oct 4 12:03:34 2011 -0400
1496 
1497      return value of Retrieve(verify=True)
1498 
1499   src/allmydata/mutable/checker.py  |   11 ++++++-----
1500   src/allmydata/mutable/retrieve.py |    3 +--
1501   2 files changed, 7 insertions(+), 7 deletions(-)
1502 
1503  commit e9ab7978c384e1f677cb7779dc449b1044face82
1504  Author: Brian Warner <warner@lothar.com>
1505  Date:   Tue Oct 4 11:54:23 2011 -0400
1506 
1507      Retrieve._bad_shares (but not return value, used by Verifier)
1508 
1509   src/allmydata/mutable/retrieve.py |    7 ++++---
1510   1 files changed, 4 insertions(+), 3 deletions(-)
1511 
1512  commit 2d91926de233ec5c881f30e36b4a30ad92ab42a9
1513  Author: Brian Warner <warner@lothar.com>
1514  Date:   Tue Oct 4 11:51:23 2011 -0400
1515 
1516      Publish: stop adding .serverid attributes to writers
1517 
1518   src/allmydata/mutable/publish.py |    9 ++-------
1519   1 files changed, 2 insertions(+), 7 deletions(-)
1520 
1521  commit 47c7a0105dec7cbf4f7e0a3ce800bbb85b15df4a
1522  Author: Brian Warner <warner@lothar.com>
1523  Date:   Tue Oct 4 11:56:33 2011 -0400
1524 
1525      API of get_write_enabler()
1526 
1527   src/allmydata/mutable/filenode.py |    7 ++++---
1528   src/allmydata/mutable/publish.py  |    4 ++--
1529   src/allmydata/test/no_network.py  |    3 +++
1530   3 files changed, 9 insertions(+), 5 deletions(-)
1531 
1532  commit 9196a5c6590fdbfd660325ea8358b345887d3db0
1533  Author: Brian Warner <warner@lothar.com>
1534  Date:   Tue Oct 4 11:46:24 2011 -0400
1535 
1536      API of get_(renewal|cancel)_secret()
1537 
1538   src/allmydata/mutable/filenode.py  |   14 ++++++++------
1539   src/allmydata/mutable/publish.py   |    8 ++++----
1540   src/allmydata/mutable/servermap.py |    5 ++---
1541   3 files changed, 14 insertions(+), 13 deletions(-)
1542 
1543  commit de7c1552f8c163eff5b6d820b5fb3b21c1b47cb5
1544  Author: Brian Warner <warner@lothar.com>
1545  Date:   Tue Oct 4 11:41:52 2011 -0400
1546 
1547      API of CorruptShareError. Also comment out some related+unused test_web.py code
1548 
1549   src/allmydata/mutable/common.py    |   13 +++++--------
1550   src/allmydata/mutable/retrieve.py  |   10 +++++-----
1551   src/allmydata/mutable/servermap.py |    8 +++-----
1552   src/allmydata/test/common.py       |   13 ++++++++-----
1553   4 files changed, 21 insertions(+), 23 deletions(-)
1554 
1555  commit 2c1c314046b620c16f1e66d030c150d768b7d01e
1556  Author: Brian Warner <warner@lothar.com>
1557  Date:   Tue Oct 4 12:01:46 2011 -0400
1558 
1559      API of ServerMap.mark_bad_share()
1560 
1561   src/allmydata/mutable/publish.py   |    2 +-
1562   src/allmydata/mutable/retrieve.py  |    6 +++---
1563   src/allmydata/mutable/servermap.py |    6 ++----
1564   src/allmydata/test/test_mutable.py |    3 +--
1565   4 files changed, 7 insertions(+), 10 deletions(-)
1566 
1567  commit 1bed349030779fd0c378ae4e821384f953c6f6ff
1568  Author: Brian Warner <warner@lothar.com>
1569  Date:   Tue Oct 4 11:11:17 2011 -0400
1570 
1571      API+name of ServerMap.shares_on_server() : only for tests, so debug_ prefix
1572 
1573   src/allmydata/mutable/servermap.py |    7 ++-----
1574   src/allmydata/test/test_mutable.py |    6 +++---
1575   2 files changed, 5 insertions(+), 8 deletions(-)
1576 
1577  commit 2d32e448677d6b818692e801045d4115b29abf21
1578  Author: Brian Warner <warner@lothar.com>
1579  Date:   Tue Oct 4 11:07:10 2011 -0400
1580 
1581      API of ServerMap.all_servers_for_version()
1582 
1583   src/allmydata/mutable/servermap.py |    4 ++--
1584   1 files changed, 2 insertions(+), 2 deletions(-)
1585 
1586  commit 48f3204d1889c3e7179578125c4bdef515af3d6a
1587  Author: Brian Warner <warner@lothar.com>
1588  Date:   Tue Oct 4 11:04:50 2011 -0400
1589 
1590      internals of ServerMap methods that use make_versionmap(), remove temp copy
1591 
1592   src/allmydata/mutable/servermap.py |   28 +++++++++----------------
1593   1 files changed, 10 insertions(+), 18 deletions(-)
1594 
1595  commit 5c3da77b6c777a145bd5ddfaa4db849dc9495548
1596  Author: Brian Warner <warner@lothar.com>
1597  Date:   Tue Oct 4 11:01:28 2011 -0400
1598 
1599      API of ServerMap.make_versionmap()
1600 
1601   src/allmydata/mutable/checker.py   |    4 ++--
1602   src/allmydata/mutable/retrieve.py  |    5 ++---
1603   src/allmydata/mutable/servermap.py |    4 ++--
1604   src/allmydata/test/test_mutable.py |    7 ++++---
1605   4 files changed, 10 insertions(+), 10 deletions(-)
1606 
1607  commit b6882ece49afb4c507d118af2db346fa329209dc
1608  Author: Brian Warner <warner@lothar.com>
1609  Date:   Tue Oct 4 10:53:38 2011 -0400
1610 
1611      make a copy of ServerMap.make_versionmap() (_make_versionmap2) for internal use
1612 
1613   src/allmydata/mutable/servermap.py |   18 +++++++++++++-----
1614   1 files changed, 13 insertions(+), 5 deletions(-)
1615 
1616  commit 963f8e63faf32b950eb1b8103cd2ff16fe8f0151
1617  Author: Brian Warner <warner@lothar.com>
1618  Date:   Tue Oct 4 00:45:58 2011 -0400
1619 
1620      API of RetrieveStatus.add_problem()
1621 
1622   src/allmydata/mutable/retrieve.py |    5 +++--
1623   1 files changed, 3 insertions(+), 2 deletions(-)
1624 
1625  commit 4976d29ffae565a048851601c29013bbae2976d8
1626  Author: Brian Warner <warner@lothar.com>
1627  Date:   Tue Oct 4 00:45:05 2011 -0400
1628 
1629      API of RetrieveStatus.add_fetch_timing()
1630 
1631   src/allmydata/mutable/retrieve.py |    5 +++--
1632   1 files changed, 3 insertions(+), 2 deletions(-)
1633 
1634  commit d057d3bbba72663ee148a8b916bc2d52be2e3982
1635  Author: Brian Warner <warner@lothar.com>
1636  Date:   Tue Oct 4 00:44:04 2011 -0400
1637 
1638      API of Retrieve.notify_server_corruption()
1639 
1640   src/allmydata/mutable/retrieve.py |    6 +++---
1641   1 files changed, 3 insertions(+), 3 deletions(-)
1642 
1643  commit 8a2a81e46671c860610e0e96d6add1a57551f22d
1644  Author: Brian Warner <warner@lothar.com>
1645  Date:   Tue Oct 4 00:42:32 2011 -0400
1646 
1647      remove unused _outstanding_queries
1648 
1649   src/allmydata/mutable/retrieve.py |    1 -
1650   1 files changed, 0 insertions(+), 1 deletions(-)
1651 
1652  commit 56d12cc9968d03ccd53764455c671122c4f391d1
1653  Author: Brian Warner <warner@lothar.com>
1654  Date:   Tue Oct 4 00:40:57 2011 -0400
1655 
1656      change Retrieve.remaining_sharemap
1657 
1658   src/allmydata/mutable/retrieve.py |    4 ++--
1659   1 files changed, 2 insertions(+), 2 deletions(-)
1660 
1661  commit 4f0b7af4821f43290bfc70f2b1fc30149ad81281
1662  Author: Brian Warner <warner@lothar.com>
1663  Date:   Tue Oct 4 10:40:18 2011 -0400
1664 
1665      accessor for PublishStatus._problems
1666 
1667   src/allmydata/mutable/publish.py |    4 +++-
1668   src/allmydata/web/status.py      |    2 +-
1669   2 files changed, 4 insertions(+), 2 deletions(-)
1670 
1671  commit 627087cf66d0b8cc519f4d551a967a7bd9b6a741
1672  Author: Brian Warner <warner@lothar.com>
1673  Date:   Tue Oct 4 10:36:39 2011 -0400
1674 
1675      accessor for RetrieveStatus._problems
1676 
1677   src/allmydata/mutable/retrieve.py |    8 ++++++--
1678   src/allmydata/web/status.py       |    2 +-
1679   2 files changed, 7 insertions(+), 3 deletions(-)
1680 
1681  commit ca7dea81f03801b1c7353fc00ecba689268109cf
1682  Author: Brian Warner <warner@lothar.com>
1683  Date:   Tue Oct 4 00:35:32 2011 -0400
1684 
1685      add .server to "reader", so we can get at it later
1686 
1687   src/allmydata/mutable/retrieve.py |    5 +++--
1688   1 files changed, 3 insertions(+), 2 deletions(-)
1689 
1690  commit 6ef516e24908ec195af084a7550d1921a5e983b0
1691  Author: Brian Warner <warner@lothar.com>
1692  Date:   Tue Oct 4 00:32:32 2011 -0400
1693 
1694      temporarily give Retrieve a _storage_broker, so it can map serverids to servers
1695 
1696   src/allmydata/mutable/checker.py   |    3 ++-
1697   src/allmydata/mutable/filenode.py  |    6 ++++--
1698   src/allmydata/mutable/retrieve.py  |    5 +++--
1699   src/allmydata/test/test_mutable.py |    4 ++--
1700   4 files changed, 11 insertions(+), 7 deletions(-)
1701 
1702  commit afe08e4dd3f4ff9ff7e8a2a8d28b181e3625bcc9
1703  Author: Brian Warner <warner@lothar.com>
1704  Date:   Tue Oct 4 00:21:51 2011 -0400
1705 
1706      mutable/retrieve.py: s/peer/server/
1707 
1708   src/allmydata/mutable/retrieve.py  |   82 +++++++++++++-------------
1709   src/allmydata/test/test_mutable.py |    6 +-
1710   2 files changed, 44 insertions(+), 44 deletions(-)
1711 
1712  commit 910afcb5d7f274880f68dd6cdb5b05f2bbc29adc
1713  Author: Brian Warner <warner@lothar.com>
1714  Date:   Tue Oct 4 00:16:01 2011 -0400
1715 
1716      web.status.PublishStatusPage: add comment, I think .problems isn't exercised
1717 
1718   src/allmydata/web/status.py |    2 ++
1719   1 files changed, 2 insertions(+), 0 deletions(-)
1720 
1721  commit 311466dd8c931bbba40d590ade867704282e7f1a
1722  Author: Brian Warner <warner@lothar.com>
1723  Date:   Mon Oct 3 23:48:16 2011 -0400
1724 
1725      API of PublishStatus.add_per_server_time()
1726 
1727   src/allmydata/mutable/publish.py |    5 +++--
1728   1 files changed, 3 insertions(+), 2 deletions(-)
1729 
1730  commit 2df5faa1b6cbfbaded520d2320305a62fe961118
1731  Author: Brian Warner <warner@lothar.com>
1732  Date:   Mon Oct 3 23:46:37 2011 -0400
1733 
1734      more simplifications
1735 
1736   src/allmydata/mutable/publish.py |    4 +---
1737   1 files changed, 1 insertions(+), 3 deletions(-)
1738 
1739  commit 6ac4544a3da385f2aad9392f906b90192f4f919a
1740  Author: Brian Warner <warner@lothar.com>
1741  Date:   Mon Oct 3 23:44:08 2011 -0400
1742 
1743      API of ServerMap.version_on_server()
1744 
1745   src/allmydata/mutable/publish.py   |    2 +-
1746   src/allmydata/mutable/servermap.py |    4 ++--
1747   src/allmydata/test/test_mutable.py |    5 ++---
1748   3 files changed, 5 insertions(+), 6 deletions(-)
1749 
1750  commit 3e187e322511072e4683329df6b2c6c733a66dba
1751  Author: Brian Warner <warner@lothar.com>
1752  Date:   Tue Oct 4 00:16:32 2011 -0400
1753 
1754      API of ServerMap.make_sharemap()
1755 
1756   src/allmydata/mutable/servermap.py |    4 ++--
1757   src/allmydata/test/test_mutable.py |    7 ++++---
1758   src/allmydata/web/status.py        |    4 ++--
1759   3 files changed, 8 insertions(+), 7 deletions(-)
1760 
1761  commit 318feed8437bdd8d4943c6569d38f7b54b6313cc
1762  Author: Brian Warner <warner@lothar.com>
1763  Date:   Mon Oct 3 23:36:19 2011 -0400
1764 
1765      small cleanups
1766 
1767   src/allmydata/mutable/publish.py |    4 ++--
1768   1 files changed, 2 insertions(+), 2 deletions(-)
1769 
1770  commit bd459ed5714e1db5a7163935c54b7b0b56db8349
1771  Author: Brian Warner <warner@lothar.com>
1772  Date:   Mon Oct 3 23:33:39 2011 -0400
1773 
1774      API of ServerMap.add_new_share()
1775 
1776   src/allmydata/mutable/publish.py   |    4 ++--
1777   src/allmydata/mutable/servermap.py |    6 ++----
1778   2 files changed, 4 insertions(+), 6 deletions(-)
1779 
1780  commit f2804fb6ed11d80088e0da8ed48e6c2922f2ffef
1781  Author: Brian Warner <warner@lothar.com>
1782  Date:   Mon Oct 3 23:30:26 2011 -0400
1783 
1784      API of ServerMap.get_bad_shares()
1785 
1786   src/allmydata/mutable/publish.py   |    3 +--
1787   src/allmydata/mutable/servermap.py |    9 ++++-----
1788   2 files changed, 5 insertions(+), 7 deletions(-)
1789 
1790  commit 965074a47b3ce1431cb46d9a233840afcf9105f5
1791  Author: Brian Warner <warner@lothar.com>
1792  Date:   Mon Oct 3 23:26:58 2011 -0400
1793 
1794      more small cleanups
1795 
1796   src/allmydata/mutable/publish.py |    6 +++---
1797   1 files changed, 3 insertions(+), 3 deletions(-)
1798 
1799  commit 38020da34f034f8889947dd3dc05e087ffff7106
1800  Author: Brian Warner <warner@lothar.com>
1801  Date:   Mon Oct 3 23:18:47 2011 -0400
1802 
1803      change Publish.bad_share_checkstrings
1804 
1805   src/allmydata/mutable/publish.py |    6 +++---
1806   1 files changed, 3 insertions(+), 3 deletions(-)
1807 
1808  commit 5efebcbd2ee0c2f299ea86f7591d856c0f265304
1809  Author: Brian Warner <warner@lothar.com>
1810  Date:   Mon Oct 3 23:16:31 2011 -0400
1811 
1812      change internals of Publish.update_goal()
1813 
1814   src/allmydata/mutable/publish.py |    8 +++-----
1815   1 files changed, 3 insertions(+), 5 deletions(-)
1816 
1817  commit e91b55ff4c2a69165b71f2c7b217ac319ff4c527
1818  Author: Brian Warner <warner@lothar.com>
1819  Date:   Mon Oct 3 23:11:42 2011 -0400
1820 
1821      get rid of Publish.connections
1822 
1823   src/allmydata/mutable/publish.py |   27 +++++----------------------
1824   1 files changed, 5 insertions(+), 22 deletions(-)
1825 
1826  commit 64e9a53b3229ebe2f9ebf7ed502d539311d0e037
1827  Author: Brian Warner <warner@lothar.com>
1828  Date:   Mon Oct 3 23:05:32 2011 -0400
1829 
1830      change Publish.bad_servers
1831 
1832   src/allmydata/mutable/publish.py |   10 +++++-----
1833   1 files changed, 5 insertions(+), 5 deletions(-)
1834 
1835  commit b85a934bef315a06bcfe00c9c12a3627fed2b918
1836  Author: Brian Warner <warner@lothar.com>
1837  Date:   Mon Oct 3 23:03:07 2011 -0400
1838 
1839      Publish.bad_servers: fix bug, this should be a set of serverids, not writers
1840 
1841   src/allmydata/mutable/publish.py |    2 +-
1842   1 files changed, 1 insertions(+), 1 deletions(-)
1843 
1844  commit 605ea15ec15ed671513819003ccd211cdb9761e0
1845  Author: Brian Warner <warner@lothar.com>
1846  Date:   Mon Oct 3 23:00:21 2011 -0400
1847 
1848      change .placed
1849 
1850   src/allmydata/mutable/publish.py |    6 +++---
1851   1 files changed, 3 insertions(+), 3 deletions(-)
1852 
1853  commit f7aba37b1b345d5b6d5cb16e3b3f6f3c1afb658e
1854  Author: Brian Warner <warner@lothar.com>
1855  Date:   Mon Oct 3 22:59:22 2011 -0400
1856 
1857      temporarily stash IServer as .server on the "writer" object
1858 
1859   src/allmydata/mutable/publish.py |    2 ++
1860   1 files changed, 2 insertions(+), 0 deletions(-)
1861 
1862  commit f9b551d788e7db1f187fce5ab98ab5d5fe4e1c36
1863  Author: Brian Warner <warner@lothar.com>
1864  Date:   Mon Oct 3 22:48:18 2011 -0400
1865 
1866      change Publish.goal and API of log_goal() to use IServer, not serverid
1867 
1868   src/allmydata/mutable/publish.py |   48 ++++++++++++++--------------
1869   1 files changed, 24 insertions(+), 24 deletions(-)
1870 
1871  commit 75f20616558e4900b8b1f685dd99aa838de6d452
1872  Author: Brian Warner <warner@lothar.com>
1873  Date:   Mon Oct 3 15:27:02 2011 -0400
1874 
1875      API of ServerMap.get_known_shares()
1876 
1877   src/allmydata/mutable/publish.py   |   16 ++++++++++------
1878   src/allmydata/mutable/servermap.py |    7 ++-----
1879   2 files changed, 12 insertions(+), 11 deletions(-)
1880 
1881  commit 1c38c9d37bb08221b4418762234b1a62397b3b4b
1882  Author: Brian Warner <warner@lothar.com>
1883  Date:   Mon Oct 3 15:20:29 2011 -0400
1884 
1885      Publish.full_serverlist
1886 
1887   src/allmydata/mutable/publish.py |   10 +++++-----
1888   1 files changed, 5 insertions(+), 5 deletions(-)
1889 
1890  commit b6cbd215a04b9cde31a7d92a97a7f048622b16f1
1891  Author: Brian Warner <warner@lothar.com>
1892  Date:   Mon Oct 3 15:12:31 2011 -0400
1893 
1894      API of ServerMap.all_servers()
1895 
1896   src/allmydata/mutable/servermap.py |   19 ++++++-------------
1897   1 files changed, 6 insertions(+), 13 deletions(-)
1898 
1899  commit e63cd0315fae65357b1727ec6d5ff3c6e0d27c98
1900  Author: Brian Warner <warner@lothar.com>
1901  Date:   Mon Oct 3 15:10:18 2011 -0400
1902 
1903      remove ServerMap.connections, set_rref_for_serverid()
1904 
1905   src/allmydata/mutable/servermap.py |   11 +----------
1906   1 files changed, 1 insertions(+), 10 deletions(-)
1907 
1908  commit 4df52db2f80eb12eefa5d57103c24893cde89553
1909  Author: Brian Warner <warner@lothar.com>
1910  Date:   Mon Oct 3 15:04:06 2011 -0400
1911 
1912      API of ServerMap.mark_server_reachable()
1913 
1914   src/allmydata/mutable/servermap.py |    7 ++-----
1915   1 files changed, 2 insertions(+), 5 deletions(-)
1916 
1917  commit 69c715bde77944dc25181b3dbbeb042c816f9a1b
1918  Author: Brian Warner <warner@lothar.com>
1919  Date:   Mon Oct 3 15:03:21 2011 -0400
1920 
1921      API of ServerMap.mark_server_unreachable()
1922 
1923   src/allmydata/mutable/servermap.py |    9 +++------
1924   1 files changed, 3 insertions(+), 6 deletions(-)
1925 
1926  commit 3d784d60eec1c508858e3a617e4411ffbcc3c1fa
1927  Author: Brian Warner <warner@lothar.com>
1928  Date:   Mon Oct 3 15:02:03 2011 -0400
1929 
1930      API of status.set_privkey_from()
1931 
1932   src/allmydata/mutable/servermap.py |    7 +++----
1933   1 files changed, 3 insertions(+), 4 deletions(-)
1934 
1935  commit 544ed3ea29bed7e66da7fd29ca3f6f076f27a9e6
1936  Author: Brian Warner <warner@lothar.com>
1937  Date:   Mon Oct 3 15:01:15 2011 -0400
1938 
1939      API of status.add_per_server_time()
1940 
1941   src/allmydata/mutable/servermap.py |    7 ++++---
1942   1 files changed, 4 insertions(+), 3 deletions(-)
1943 
1944  commit fffe5008b6320bd1e04c3c68389a2bf2ee383fa8
1945  Author: Brian Warner <warner@lothar.com>
1946  Date:   Mon Oct 3 14:59:02 2011 -0400
1947 
1948      remove unused .versionmap
1949 
1950   src/allmydata/mutable/servermap.py |    7 -------
1951   1 files changed, 0 insertions(+), 7 deletions(-)
1952 
1953  commit 2816562e090d2294179db3588dafcca18de1bc2b
1954  Author: Brian Warner <warner@lothar.com>
1955  Date:   Mon Oct 3 14:57:51 2011 -0400
1956 
1957      remove serverid from all log messages. Also one unused lambda.
1958 
1959   src/allmydata/mutable/servermap.py |   30 +++++++++++++-------------
1960   1 files changed, 15 insertions(+), 15 deletions(-)
1961 
1962  commit 28fa6b1a2738fa98c1f1dbd3d0e01ae98912d11f
1963  Author: Brian Warner <warner@lothar.com>
1964  Date:   Mon Oct 3 14:54:30 2011 -0400
1965 
1966      removed unused _readers
1967 
1968   src/allmydata/mutable/servermap.py |    3 ---
1969   1 files changed, 0 insertions(+), 3 deletions(-)
1970 
1971  commit a8e4ed3d645ab592d1add6a1e69b6d1ebfb77817
1972  Author: Brian Warner <warner@lothar.com>
1973  Date:   Mon Oct 3 14:54:16 2011 -0400
1974 
1975      remove unused _sharemap
1976 
1977   src/allmydata/mutable/servermap.py |    1 -
1978   1 files changed, 0 insertions(+), 1 deletions(-)
1979 
1980  commit 3f072e55cf1d0700f9fffe23f8f3a475725df588
1981  Author: Brian Warner <warner@lothar.com>
1982  Date:   Mon Oct 3 14:49:03 2011 -0400
1983 
1984      _must_query
1985 
1986   src/allmydata/mutable/servermap.py |    8 ++++----
1987   1 files changed, 4 insertions(+), 4 deletions(-)
1988 
1989  commit c599a059b8df3f5785e4bf89fb6ecc6d8dcd708b
1990  Author: Brian Warner <warner@lothar.com>
1991  Date:   Mon Oct 3 14:48:05 2011 -0400
1992 
1993      _queries_outstanding
1994 
1995   src/allmydata/mutable/servermap.py |   16 +++++++---------
1996   1 files changed, 7 insertions(+), 9 deletions(-)
1997 
1998  commit 7743759f98ac2c07926b2fdbd80bf52dfab33085
1999  Author: Brian Warner <warner@lothar.com>
2000  Date:   Mon Oct 3 14:46:17 2011 -0400
2001 
2002      _empty_servers
2003 
2004   src/allmydata/mutable/servermap.py |    5 ++---
2005   1 files changed, 2 insertions(+), 3 deletions(-)
2006 
2007  commit 6bb1825916828a713a32cdf7f7411fa3ea2e1e5d
2008  Author: Brian Warner <warner@lothar.com>
2009  Date:   Mon Oct 3 14:45:39 2011 -0400
2010 
2011      _good_servers
2012 
2013   src/allmydata/mutable/servermap.py |    4 ++--
2014   1 files changed, 2 insertions(+), 2 deletions(-)
2015 
2016  commit 1768fab1b51d8dd93ecabbaaabfadfa20cf6c3d4
2017  Author: Brian Warner <warner@lothar.com>
2018  Date:   Mon Oct 3 14:44:59 2011 -0400
2019 
2020      _bad_servers
2021 
2022   src/allmydata/mutable/servermap.py |   14 +++++++-------
2023   1 files changed, 7 insertions(+), 7 deletions(-)
2024 
2025  commit dccbaef30f0ba714c746bf6d4a1a803c36e17b65
2026  Author: Brian Warner <warner@lothar.com>
2027  Date:   Mon Oct 3 14:41:54 2011 -0400
2028 
2029      API of _try_to_set_pubkey()
2030 
2031   src/allmydata/mutable/servermap.py |    7 ++++---
2032   1 files changed, 4 insertions(+), 3 deletions(-)
2033 
2034  commit 0481ea70042ba3575f15eac7fd0780f8ece580cc
2035  Author: Brian Warner <warner@lothar.com>
2036  Date:   Mon Oct 3 14:35:02 2011 -0400
2037 
2038      API of notify_server_corruption()
2039 
2040   src/allmydata/mutable/servermap.py |    6 +++---
2041   1 files changed, 3 insertions(+), 3 deletions(-)
2042 
2043  commit bea9cba18fb3b9c11bb22f18356a263ecec7351e
2044  Author: Brian Warner <warner@lothar.com>
2045  Date:   Mon Oct 3 14:34:09 2011 -0400
2046 
2047      API of _got_signature_one_share()
2048 
2049   src/allmydata/mutable/servermap.py |    9 +++++----
2050   1 files changed, 5 insertions(+), 4 deletions(-)
2051 
2052  commit 1520123583cf78650706e114b15bb5b0ac1f4a14
2053  Author: Brian Warner <warner@lothar.com>
2054  Date:   Mon Oct 3 14:32:33 2011 -0400
2055 
2056      API of _try_to_validate_privkey()
2057 
2058   src/allmydata/mutable/servermap.py |    9 +++++----
2059   1 files changed, 5 insertions(+), 4 deletions(-)
2060 
2061  commit 938852c9c8519c7a078f58a9b1f4dd8ec8b6715e
2062  Author: Brian Warner <warner@lothar.com>
2063  Date:   Mon Oct 3 14:31:48 2011 -0400
2064 
2065      API and internals of _add_lease_failed()
2066 
2067   src/allmydata/mutable/servermap.py |    8 ++++----
2068   1 files changed, 4 insertions(+), 4 deletions(-)
2069 
2070  commit 3843dba367e3c19e176a622ab853cb51d2472ddf
2071  Author: Brian Warner <warner@lothar.com>
2072  Date:   Mon Oct 3 14:30:37 2011 -0400
2073 
2074      API of _privkey_query_failed()
2075 
2076   src/allmydata/mutable/servermap.py |    5 +++--
2077   1 files changed, 3 insertions(+), 2 deletions(-)
2078 
2079  commit 2219a710e1633cd57d0ca0786490de87b3e19ba7
2080  Author: Brian Warner <warner@lothar.com>
2081  Date:   Mon Oct 3 14:29:43 2011 -0400
2082 
2083      fix bug in call to _privkey_query_failed, unrelated to refactoring
2084 
2085   src/allmydata/mutable/servermap.py |    2 +-
2086   1 files changed, 1 insertions(+), 1 deletions(-)
2087 
2088  commit ae615bec7d0d1b269710b6902797b12f9592ad62
2089  Author: Brian Warner <warner@lothar.com>
2090  Date:   Mon Oct 3 14:27:17 2011 -0400
2091 
2092      API of _got_corrupt_share()
2093 
2094   src/allmydata/mutable/servermap.py |   17 +++++++++--------
2095   1 files changed, 9 insertions(+), 8 deletions(-)
2096 
2097  commit cb51c95a6f4e077278157a77dab060c8c1ad7a81
2098  Author: Brian Warner <warner@lothar.com>
2099  Date:   Mon Oct 3 14:23:16 2011 -0400
2100 
2101      API of _got_results()
2102 
2103   src/allmydata/mutable/servermap.py |    9 +++++----
2104   1 files changed, 5 insertions(+), 4 deletions(-)
2105 
2106  commit bac9154fe0af18f226999a58ffc2362d8cf4b802
2107  Author: Brian Warner <warner@lothar.com>
2108  Date:   Mon Oct 3 14:19:19 2011 -0400
2109 
2110      API of _query_failed()
2111 
2112   src/allmydata/mutable/servermap.py |    5 +++--
2113   1 files changed, 3 insertions(+), 2 deletions(-)
2114 
2115  commit fdc29a8ca95d4b5c503e5382b9e5d4d02141ba12
2116  Author: Brian Warner <warner@lothar.com>
2117  Date:   Mon Oct 3 14:17:20 2011 -0400
2118 
2119      API of _do_read()
2120 
2121   src/allmydata/mutable/servermap.py |    6 ++++--
2122   1 files changed, 4 insertions(+), 2 deletions(-)
2123 
2124  commit e7e9e338f28d004aa4d423d11c65f1e271ac7322
2125  Author: Brian Warner <warner@lothar.com>
2126  Date:   Mon Oct 3 14:20:21 2011 -0400
2127 
2128      API of _do_query()
2129 
2130   src/allmydata/mutable/servermap.py |   15 +++++++--------
2131   1 files changed, 7 insertions(+), 8 deletions(-)
2132 
2133  commit 330625b9dac4cdbe72a11464a893065b9aeed453
2134  Author: Brian Warner <warner@lothar.com>
2135  Date:   Mon Oct 3 14:43:05 2011 -0400
2136 
2137      next step: first batch of updates to ServermapUpdater
2138 
2139      updates:
2140       most method-local variables in update()
2141       API of _build_initial_querylist()
2142       API of _send_initial_requests()
2143       .full_serverlist
2144       .extra_servers
2145 
2146   src/allmydata/mutable/servermap.py |   39 ++++++++++++++------------
2147   1 files changed, 21 insertions(+), 18 deletions(-)
2148 
2149  commit 4aadc584fa7dcb2daa86b048c81dee0049ba26d9
2150  Author: Brian Warner <warner@lothar.com>
2151  Date:   Mon Oct 3 15:07:00 2011 -0400
2152 
2153      internal change: index _bad_shares with IServer
2154 
2155   src/allmydata/mutable/servermap.py |   20 ++++++++++----------
2156   1 files changed, 10 insertions(+), 10 deletions(-)
2157 
2158  commit 16d4e6fa82a9907dbdc92094213387c6a4164e41
2159  Author: Brian Warner <warner@lothar.com>
2160  Date:   Mon Oct 3 18:20:47 2011 +0100
2161 
2162      internal change: index _known_shares with IServer instead of serverid
2163 
2164      callers are unchanged
2165 
2166   src/allmydata/mutable/servermap.py |   42 +++++++++++++++----------
2167   1 files changed, 25 insertions(+), 17 deletions(-)
2168 
2169  commit ceeb5f4938cc814a0c75d1b8f4018aed965c2176
2170  Author: Brian Warner <warner@lothar.com>
2171  Date:   Mon Oct 3 18:11:43 2011 +0100
2172 
2173      accessors and name cleanup for servermap.Servermap.last_update_mode/time
2174 
2175   src/allmydata/mutable/filenode.py  |    6 +++---
2176   src/allmydata/mutable/publish.py   |    4 ++--
2177   src/allmydata/mutable/servermap.py |   17 +++++++++++------
2178   3 files changed, 16 insertions(+), 11 deletions(-)
2179 
2180  commit 8d3cbda82661c0a7e5c3d3b65cf7a5d5ab7e32c0
2181  Author: Brian Warner <warner@lothar.com>
2182  Date:   Mon Oct 3 18:11:14 2011 +0100
2183 
2184      accessors and name cleanup for servermap.Servermap.problems
2185 
2186   src/allmydata/mutable/servermap.py |   21 +++++++++++++--------
2187   src/allmydata/test/test_mutable.py |    6 +++---
2188   2 files changed, 16 insertions(+), 11 deletions(-)
2189 
2190  commit 348f57988f79389db0aab7672e6eaa9a6d8e3219
2191  Author: Brian Warner <warner@lothar.com>
2192  Date:   Mon Oct 3 18:10:41 2011 +0100
2193 
2194      accessors and name cleanup for servermap.Servermap.bad_shares
2195 
2196   src/allmydata/mutable/publish.py   |    2 +-
2197   src/allmydata/mutable/servermap.py |   30 ++++++++++++++-----------
2198   2 files changed, 18 insertions(+), 14 deletions(-)
2199 
2200  commit 520c9368134673cdf76c653c5e1bb91c2ab5d51e
2201  Author: Brian Warner <warner@lothar.com>
2202  Date:   Mon Oct 3 18:10:05 2011 +0100
2203 
2204      accessors and name cleanup for servermap.Servermap.servermap .
2205 
2206   src/allmydata/mutable/publish.py   |   14 +++++----
2207   src/allmydata/mutable/servermap.py |   38 ++++++++++++++-----------
2208   2 files changed, 29 insertions(+), 23 deletions(-)
2209 
2210  commit b8b8dc38287a91dbdf494426ac801d9381ce5841
2211  Author: Brian Warner <warner@lothar.com>
2212  Date:   Mon Oct 3 18:08:02 2011 +0100
2213 
2214      fix reachable_servers
2215 
2216   src/allmydata/mutable/checker.py   |    3 ++-
2217   src/allmydata/mutable/publish.py   |    4 +++-
2218   src/allmydata/mutable/servermap.py |   12 ++++++++++--
2219   3 files changed, 15 insertions(+), 4 deletions(-)
2220 
2221  commit cb0cfd1adfefad357c187aaaf690c3df68b622bc
2222  Author: Brian Warner <warner@lothar.com>
2223  Date:   Mon Oct 3 18:06:03 2011 +0100
2224 
2225      fix Servermap.unreachable_servers
2226 
2227   src/allmydata/mutable/servermap.py |   11 ++++++++---
2228   1 files changed, 8 insertions(+), 3 deletions(-)
2229 
2230  commit 2d9ea79b94bd4db674d40386fda90825785ac495
2231  Author: Brian Warner <warner@lothar.com>
2232  Date:   Mon Oct 3 18:03:48 2011 +0100
2233 
2234      give ServerMap a StorageFarmBroker, temporary
2235 
2236      this makes it possible for the ServerMap to accept bare serverids and still
2237      build data structures with IServers
2238 
2239   src/allmydata/mutable/checker.py   |    2 +-
2240   src/allmydata/mutable/filenode.py  |    2 +-
2241   src/allmydata/mutable/publish.py   |    2 +-
2242   src/allmydata/mutable/servermap.py |    5 +++--
2243   src/allmydata/test/test_mutable.py |    8 ++++----
2244   5 files changed, 10 insertions(+), 9 deletions(-)
2245 
2246  commit 718d1aeff6fded893f65397806d22ece928b0dd4
2247  Author: Brian Warner <warner@lothar.com>
2248  Date:   Mon Oct 3 13:43:30 2011 -0400
2249 
2250      add StorageFarmBroker.get_server_for_id(), temporary helper
2251 
2252      This will go away once we're passing IServers everywhere.
2253 
2254   src/allmydata/storage_client.py  |    2 ++
2255   src/allmydata/test/no_network.py |   13 +++++++++++++
2256   2 files changed, 15 insertions(+), 0 deletions(-)
2257 
2258  commit ece20231d7fda0d503704842a4aa068dfbc2e54e
2259  Author: Brian Warner <warner@lothar.com>
2260  Date:   Sun Oct 2 01:11:50 2011 +0100
2261 
2262      add proper accessors for Servermap.connections, to make refactoring easier
2263 
2264   src/allmydata/mutable/publish.py   |    6 +++---
2265   src/allmydata/mutable/retrieve.py  |   10 +++++-----
2266   src/allmydata/mutable/servermap.py |   17 +++++++++++------
2267   3 files changed, 19 insertions(+), 14 deletions(-)
2268 
2269  commit 3b943d6bf302ff702668081a612fc4fe2604cf9c
2270  Author: Brian Warner <warner@lothar.com>
2271  Date:   Fri Sep 23 10:34:30 2011 -0700
2272 
2273      mutable/servermap.py and neighbors: s/peer/server/
2274 
2275   src/allmydata/mutable/checker.py   |   22 +-
2276   src/allmydata/mutable/publish.py   |  204 +++++++-------
2277   src/allmydata/mutable/servermap.py |  402 +++++++++++++-------------
2278   src/allmydata/test/test_mutable.py |   18 +-
2279   4 files changed, 323 insertions(+), 323 deletions(-)
2280]
2281[.gitignore: ignore generated test-coverage files too
2282Brian Warner <warner@lothar.com>**20120113065629
2283 Ignore-this: 4411c7d620f5865b8c4dedef7e5a8c33
2284]
2285[merge relnotes, quickstart.rst from 1.9.1 release
2286Brian Warner <warner@lothar.com>**20120112232420
2287 Ignore-this: 6b535bb1a3bd5ea87ee12cc6b17eeb5c
2288]
2289[.gitignore: also ignore tahoe-deps and .tgz, to fix 'make tarballs'
2290Brian Warner <warner@lothar.com>**20120112210925
2291 Ignore-this: e8a7d942f123ee6bf4f2966ddc2742a3
2292 
2293 Otherwise, the get-version-from-git code thinks the tree is dirty, and
2294 creates SUMO tarballs with -dirty in the name.
2295]
2296[Makefile: fix 'make-version' to use git-or-darcs, not just darcs
2297Brian Warner <warner@lothar.com>**20120112210654
2298 Ignore-this: ae32660458b5ab036ab98f0d1cf4e414
2299]
2300[_auto_deps.py: don't allow pycrypto 2.0.1. fixes #1631
2301david-sarah@jacaranda.org**20120110195758
2302 Ignore-this: de409a745c93a78b095dc72edd13a15d
2303]
2304[MANIFEST.in: make git-based 'setup.py sdist' match darcs
2305Brian Warner <warner@lothar.com>**20120109234637
2306 Ignore-this: 92bf7d679e9d5696994efe39c40ae216
2307 
2308 Previously, tarballs generated from a git tree were lacking a lot of
2309 important non-code files, like docs/
2310]
2311[restore .gitignore, stop .darcs-boringfile it
2312warner@lothar.com**20120109025243
2313 Ignore-this: b37efcdab8662fe85660d68e3662b4b9
2314]
2315[remove setuptools_darcs.egg
2316warner@lothar.com**20120108225545
2317 Ignore-this: 39711cf7a9856acd5a136038d58ca5ff
2318]
2319[fix bundled data under git, remove setuptools_darcs
2320Brian Warner <warner@lothar.com>**20120108221250
2321 Ignore-this: ebfc0b267961523edd7e26c761b2554f
2322 
2323 This uses explicitly enumerated packages= and package_data= arguments to
2324 setup(), rather than relying upon the convenient (but darcs-specific)
2325 functions which would determine these values by asking the revision-control
2326 system.
2327 
2328 Note that darcsver is still used, when building from a darcs tree.
2329]
2330[Resolve minor conflicts in node.py and test_client.py.
2331david-sarah@jacaranda.org**20120220185651
2332 Ignore-this: f4909efe0157c44e96dc8ae9431c7040
2333]
2334[mutable: add comments about the tricky DeferredList structures in retrieve
2335Brian Warner <warner@lothar.com>**20120108221238
2336 Ignore-this: da47db692fbdf11a3ce01a952a60d1a0
2337]
2338[add test-git-ignore.py, to port the 'clean' buildbot test to git
2339Brian Warner <warner@lothar.com>**20120108221232
2340 Ignore-this: 442efa1eacc27b7ae2690645ed997894
2341 
2342 add .gitignore to match .darcs-boringfile, mostly
2343]
2344[Use a private/drop_upload_dircap file instead of the [drop_upload]upload.dircap option in tahoe.cfg. Fail if the upload.dircap option is used, or options are missing. Also updates tests and docs. fixes #1593
2345david-sarah@jacaranda.org**20111120232426
2346 Ignore-this: d4ea9154e98902c5de055b6de23c48f9
2347]
2348[docs: how_to_make_a_tahoe-lafs_release.rst add Google+ page to publicity list, change to cute unicode checkboxes
2349zooko@zooko.com**20111226151905
2350 Ignore-this: c7c1e67761df48fa11c0dad1847c2d8
2351]
2352[doc: about.rst: use unicode emdash, use non-embedded URIs, add clarificaiton of when a file gets its mutable-or-immutable nature
2353zooko@zooko.com**20111206171908
2354 Ignore-this: 61bc3f1582c68dcc9867da964fc9bb3a
2355 embedded URIs, although documented here:
2356 http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#embedded-uris
2357 generate messages like this from rst2html --verbose:
2358 
2359 quickstart.rst:3: (INFO/1) Duplicate explicit target name: "the tahoe-dev mailing list".
2360 
2361 Also this patch prepends a "utf-8 BOM" to the beginning of the file.
2362]
2363[minor cleanup: remove trailing spaces in misc/
2364Brian Warner <warner@lothar.com>**20111218201841
2365 Ignore-this: 69a8904c17d8fd930442d00e24b7b188
2366]
2367[Tests for ref #1592.
2368david-sarah@jacaranda.org**20111217043130
2369 Ignore-this: a6713500ebe2d686581c6743b8a88f60
2370]
2371[test_web.py cleanup: use failUnlessIn/failIfIn in preference to 'in' operator.
2372david-sarah@jacaranda.org**20111217042710
2373 Ignore-this: c351f4b1d162eca545ba657dc3c70c19
2374]
2375[Marcus Wanner's favicon patch. fixes #1592
2376david-sarah@jacaranda.org**20111217033201
2377 Ignore-this: 3528c920379fe0d157441dafe9a7c5a8
2378]
2379[setup.py: stop putting pyutil.version_class/etc in _version.py
2380Brian Warner <warner@lothar.com>**20111205055049
2381 Ignore-this: 926fa9a8a34a04f24ee6e006423e9c1
2382 
2383 allmydata.__version__ can just be a string, it doesn't need to be an instance
2384 of some fancy NormalizedVersion class. Everything inside Tahoe uses
2385 str(__version__) anyways.
2386 
2387 Also add .dev0 when a git tree is dirty.
2388 
2389 Closes #1466
2390]
2391[setup.py: get version from git or darcs
2392Brian Warner <warner@lothar.com>**20111205044001
2393 Ignore-this: 5a406b33000446d85edc722298391220
2394 
2395 This replaces the setup.cfg aliases that run "darcsver" before each major
2396 command with the new "update_version". update_version is defined in setup.py,
2397 and tries to get a version string from either darcs or git (or leaves the
2398 existing _version.py alone if neither VC metadata is available).
2399 
2400 Also clean up a tiny typo in verlib.py that messed up syntax hilighting.
2401]
2402[docs/known_issues.rst: describe when the unauthorized access attack is known to be possible, and fix a link.
2403david-sarah@jacaranda.org**20111118002013
2404 Ignore-this: d89b1f1040a0a7ee0bde893d23612049
2405]
2406[more tiny buildbot-testing whitespace changes
2407warner@lothar.com**20111118002041
2408 Ignore-this: e816e2a5ab939e2f7a89ef12b8a157d8
2409]
2410[more tiny buildbot-testing whitespace changes
2411warner@lothar.com**20111118001828
2412 Ignore-this: 57bb52cba83ea9a19728ba0a8ffadb69
2413]
2414[tiny change to exercise the buildbot hook
2415warner@lothar.com**20111118001511
2416 Ignore-this: 7220b7790b39f19f9721d9e93b755030
2417]
2418[1585-webui.darcs.patch
2419Marcus Wanner <marcus@wanners.net>**20111117214923
2420 Ignore-this: 23cf2a06c545be5f821c071d652178ee
2421]
2422[Rewrite download-status-timeline visualizer ('viz') with d3.js
2423Brian Warner <warner@lothar.com>**20111101061821
2424 Ignore-this: 6149b027bbae52c559ef5a8167240cab
2425 
2426 * use d3.js v2.4.6
2427 * add a "toggle misc events" button, to get hash/bitmap-checking details
2428 * only draw data that's on screen, for speed
2429 * add fragment-arg to fetch timeline data.json from somewhere else
2430]
2431[TAG allmydata-tahoe-1.9.0
2432warner@lothar.com**20111031052301
2433 Ignore-this: cf598210dd1f314a1a121bf29a3d5918
2434]
2435[Resolve a conflict in docs/configuration.rst ([storage]readonly setting only applies to the disk backend).
2436david-sarah@jacaranda.org**20120220184452
2437 Ignore-this: 87f6ae4ad1b6bb59173654314870ffb
2438]
2439[Strengthen description of unauthorized access attack in known_issues.rst.
2440david-sarah@jacaranda.org**20111118000030
2441 Ignore-this: e2f68f621fe666b6201542623aa4d182
2442]
2443[remove remaining uses of nevow's "formless" module
2444Brian Warner <warner@lothar.com>**20111117225423
2445 Ignore-this: a128dea91a1c63b3bbefa34729344d69
2446 
2447 We're slowly moving away from Nevow, and marcusw's previous patch removed
2448 uses of the formless CSS file, so now we can stop testing that nevow can find
2449 that file, and remove the lingering unused "import formless" call.
2450]
2451[Remove duplicate tahoe_css links from manifest.xhtml and rename-form.xhtml
2452Brian Warner <warner@lothar.com>**20111116224225
2453 Ignore-this: 12024fff17964607799928928b9aadf3
2454 
2455 They were probably meant to be links to webform_css, but we aren't really
2456 using Nevow's form-generation code anyways, so they can just be removed.
2457 Thanks to 'marcusw' for the catch.
2458]
2459[iputil: handle openbsd5 (just like openbsd4)
2460Brian Warner <warner@lothar.com>**20111115220423
2461 Ignore-this: 64b28bd2fd06eb5230ea41d91540dd05
2462 
2463 Patch by 'sickness'. Closes #1584
2464]
2465[Makefile count-lines: let it work on OS-X (-l not --lines), add XXX
2466Brian Warner <warner@lothar.com>**20111109184227
2467 Ignore-this: 204ace1dadc9ed27543c62965b4e6757
2468 
2469 OS-X's simple-minded /usr/bin/wc doesn't understand --lines, but everyone
2470 understands -l .
2471]
2472[setup.py: umask=022 for 'sdist', to avoid depending on environment
2473Brian Warner <warner@lothar.com>**20111109183632
2474 Ignore-this: acd5db88ba8f1972d618b14f9e5b803c
2475 
2476 The new tarball-building buildslave had a bogus umask set, causing the 1.9.0
2477 tarballs to be non-other-user-readable (go-rwx), which is a hassle for
2478 packaging. (The umask was correct on the old buildslave, but it was moved to
2479 a new host shortly before the release). This should make sure tarballs are
2480 correct despite the host's setting.
2481 
2482 Note to others: processes run under twistd get umask=077 unless you arrange
2483 otherwise.
2484]
2485[_auto_deps.py: blacklist PyCrypto 2.4.
2486david-sarah@jacaranda.org**20111105022457
2487 Ignore-this: 876cb24bc71589e735f48bf449cad81e
2488]
2489[show-tool-versions: tolerate missing setuptools
2490Brian Warner <warner@lothar.com>**20111101080010
2491 Ignore-this: 72d4e440565273992beb4f010cbca699
2492]
2493[show-tool-versions.py: condense output, hide file-not-found exceptions
2494Brian Warner <warner@lothar.com>**20111101074532
2495 Ignore-this: a15381a76077ef46a74a4ac40c9ae956
2496]
2497[relnotes.txt: fix footnotes
2498Brian Warner <warner@lothar.com>**20111101071935
2499 Ignore-this: 668c1bd8618e21beed9bc6b23f048189
2500]
2501[and configuration.rst
2502warner@lothar.com**20111029205157
2503 Ignore-this: 48d95e17eb7c24bd43c137eb6c8a22a0
2504 
2505 I'm doing these one-at-a-time because I'm also debugging buildbot
2506 problems, and it's handy to trigger builds this way.
2507]
2508[Fix an unused import.
2509david-sarah@jacaranda.org**20120220175954
2510 Ignore-this: fdc32865a5df13e3126c6925e2a8d00e
2511]
2512[test_storage: disable test_abort and test_disconnect for S3 backend.
2513david-sarah@jacaranda.org**20120220175914
2514 Ignore-this: 67fdb8f73267d69aefa5f53cf67c4d1d
2515]
2516[Test that a truncated bucket listing triggers an incident. refs #1678
2517david-sarah@jacaranda.org**20120220175757
2518 Ignore-this: f78d11c6803bb2b488460d05ced22ae8
2519]
2520[S3 backend: make truncated GET Bucket responses trigger an incident. Does not include tests. refs #1678
2521david-sarah@jacaranda.org**20120216184808
2522 Ignore-this: 932e3ae0279cb335d5e337823db89ade
2523]
2524[Make S3 error tracebacks include the status code and response, and trigger an incident. fixes #1589
2525david-sarah@jacaranda.org**20120216041732
2526 Ignore-this: 8a9be026e9db19ae9325760aee139687
2527]
2528[Correct some cases where it was incorrectly assumed that FilePath.basename always returns a str, rather than unicode.
2529david-sarah@jacaranda.org**20111120044556
2530 Ignore-this: d0dc8bafe4820d7a155100962a98f3e0
2531]
2532[Changes to support desktop products (allowing to use less powerful credentials on the storage server).
2533david-sarah@jacaranda.org**20111103222422
2534 Ignore-this: 9702bdf288f58bc9130dfe59c2b04e4b
2535]
2536[update NEWS for the 1.9.0 release
2537warner@lothar.com**20111031052252
2538 Ignore-this: df9d16c29e54803869e7172c90f96972
2539]
2540[more docs updates
2541warner@lothar.com**20111031050831
2542 Ignore-this: af8c82696b1b1c712238dd631342f8c7
2543]
2544[improve relnotes
2545warner@lothar.com**20111031033704
2546 Ignore-this: 904c768314dfcb34581b9d585df8dc13
2547]
2548[update relnotes, rotate known_issues, for 1.9
2549Brian Warner <warner@lothar.com>**20111031032439
2550 Ignore-this: e2f63298b7665fd7d7460e2ebc70699d
2551]
2552[add user-oriented notes to NEWS and mutable.rst about SDMF-vs-MDMF
2553Brian Warner <warner@lothar.com>**20111031030512
2554 Ignore-this: 78e5518b8f8c5d529329f291537c9b07
2555]
2556[show-tool-versions.py: remove setuptools_trial, unused
2557Brian Warner <warner@lothar.com>**20111031004742
2558 Ignore-this: c1dc9dd7138f0a59c633340520f6d783
2559]
2560[Makefile/upload-tarballs: remove bash-ism in shell conditional
2561Brian Warner <warner@lothar.com>**20111031004721
2562 Ignore-this: 9ffe81a2cfafac5a53fc0503e0141c0d
2563 
2564 The "[" command is defined to accept "=" as an is-equal test. Bash extends
2565 this to accept "==" too, but normal /bin/sh does not. I think this command
2566 was developed on a box where /bin/sh is bash, but on standard ubuntu boxes,
2567 /bin/sh is a smaller+faster non-Bash shell, and this gave "[: 1: X:
2568 unexpected operator" errors.
2569]
2570[update project-home URLs: /trac/tahoe/ was replaced by /trac/tahoe-lafs/
2571Brian Warner <warner@lothar.com>**20111030191428
2572 Ignore-this: cb37679ad62845787064d94587caa48e
2573]
2574[quickstart.rst: remove trailing whitespace
2575Brian Warner <warner@lothar.com>**20111030174411
2576 Ignore-this: 4c2738c023916de8cd3ad77bf9a9dcc7
2577]
2578[quickstart.rst: update the release URL in preparation for 1.9
2579Brian Warner <warner@lothar.com>**20111030173318
2580 Ignore-this: f00af87789bbbdc4c520c486367cebd6
2581]
2582[and about.rst
2583warner@lothar.com**20111029195816
2584 Ignore-this: 1cddc3c3cf57cf7f588a660ba0b065c1
2585]
2586[update README for HTTPS too
2587warner@lothar.com**20111029194240
2588 Ignore-this: 37c5f34927ef5aaa46e111563fa5d14a
2589]
2590[small changes to test migrated trac and posthook
2591warner@lothar.com**20111029191807
2592 Ignore-this: 8110a6c1b4ea318528e8023ce1f75fae
2593]
2594[more http->https changes
2595warner@lothar.com**20111029190905
2596 Ignore-this: 9d0e6ed5f24858f7742f584da50cadc0
2597]
2598[tahoe-lafs.org is now HTTPS-always. Update most URLs.
2599warner@lothar.com**20111029183946
2600 Ignore-this: 1d490ee1983b1ef30045a545250f18a8
2601]
2602[undo the effects of a patch I hadn't intended to commit, named "debugprint the values of blocks and hashes thereof; make the test data and the seg size small in order to make the debugprints easy to look at"
2603zooko@zooko.com**20111028220349
2604 Ignore-this: 6390dd943f87d4340368b1e174cba6be
2605 
2606 rolling back:
2607 
2608 Thu Sep 29 23:46:28 MDT 2011  zooko@zooko.com
2609   * debugprint the values of blocks and hashes thereof; make the test data and the seg size small in order to make the debugprints easy to look at
2610 
2611     M ./src/allmydata/mutable/publish.py -1 +2
2612     M ./src/allmydata/mutable/retrieve.py +3
2613     M ./src/allmydata/test/test_mutable.py -2 +2
2614]
2615[docs/about.rst: correct the description of availability to take into account that shares may not be stored on distinct servers.
2616david-sarah@jacaranda.org**20111025132550
2617 Ignore-this: 975fde31c73512c4c0f278182d576861
2618]
2619[debugprint the values of blocks and hashes thereof; make the test data and the seg size small in order to make the debugprints easy to look at
2620zooko@zooko.com**20110930054628
2621 Ignore-this: bcfedc06aeedb090dfb02440f6e6c3bc
2622]
2623[S3 backend: support DevPay. Includes tests of config option, but interoperability with S3 has not been tested yet. refs #999
2624david-sarah@jacaranda.org**20111027215314
2625 Ignore-this: 554870770ce7ce393d8cea195d365ab9
2626]
2627[docs/backends/S3.rst: document the requirement for the storage server to have the correct time to within 15 minutes. refs #999
2628david-sarah@jacaranda.org**20111025100827
2629 Ignore-this: dee22e41bee85abe107c4a8457321ce6
2630]
2631[S3 backend: the s3.region option is unnecessary; it is only used for EC2 endpoints, and we only need an S3 one. Also simplify wording in S3.rst. refs #999
2632david-sarah@jacaranda.org**20111023235033
2633 Ignore-this: b28b72e9047f996b7774e9279daadd9
2634]
2635[S3 backend: remove support for [storage]readonly option. refs #999, #1568
2636david-sarah@jacaranda.org**20111022045644
2637 Ignore-this: 546eee72a9c708a7f101178fcc044261
2638]
2639[mock_s3.py: remove bucketname argument to MockS3Bucket constructor, since it is not needed. refs #999
2640david-sarah@jacaranda.org**20111022045341
2641 Ignore-this: 872d91c8475e1fbbccb6fd580aad8c4e
2642]
2643[test_system.py: check that there is no error output from invocations of 'tahoe debug'. refs #999
2644david-sarah@jacaranda.org**20111021044102
2645 Ignore-this: 8dfb3a668bfebdcbf7f3f295d345fb98
2646]
2647[scripts/debug.py: in catalog-shares, gracefully handle the case where a share has no leases (for example because it is an S3 share). refs #999
2648david-sarah@jacaranda.org**20111021034138
2649 Ignore-this: 28ce846977095e9bfcb55364e2388e70
2650]
2651[test_system.py: fix SystemWithS3Backend.test_mutable by only requiring the line specifying which nodeid the lease secrets are for when the node has a disk backend. refs #999
2652david-sarah@jacaranda.org**20111021032106
2653 Ignore-this: dc5e6e6f9f7d5a898408f2070afca4a2
2654]
2655[test_system.py: ensure that subclasses of SystemTest use different test directories. refs #999
2656david-sarah@jacaranda.org**20111021014630
2657 Ignore-this: 938ab8addc92dcd14fccc179ae095feb
2658]
2659[test_system.py: make checks in _test_runner more picky about field names to avoid accidental suffix matches. refs #999
2660david-sarah@jacaranda.org**20111021014527
2661 Ignore-this: f46c364efd86b0b40f6448bc0a95c495
2662]
2663[test_system.py: rename ServerTestWith*Backend to ServerWith*Backend, for consistency with tst_storage.py. refs #999
2664david-sarah@jacaranda.org**20111021011001
2665 Ignore-this: 47435b4ef02d4267d528b3a99bb2ec07
2666]
2667[test_system.py: fix a typo. refs #999
2668david-sarah@jacaranda.org**20111021010846
2669 Ignore-this: f8daf272b0266d6df6a13f88f2dd67
2670]
2671[test_system.py: enable system tests to run against S3 backend as well as disk backend. refs #999
2672david-sarah@jacaranda.org**20111021001632
2673 Ignore-this: bbe5c7479a05db40165800211c68ce54
2674]
2675[Add a '[storage]backend = mock_s3' option for use by tests. Move mock_s3.py to src/allmydataa/storage/backends/s3 since it is now imported by non-test code. refs #999
2676david-sarah@jacaranda.org**20111021001518
2677 Ignore-this: 8e0643a81a55b319b0f757f7da9acfd6
2678]
2679[mutable/retrieve: don't write() after we've been pauseProducer'ed
2680Brian Warner <warner@lothar.com>**20111017002400
2681 Ignore-this: 417880ec53285c4887f8080e1ddeedc8
2682 
2683 This fixes a test failure found against current Twisted trunk in
2684 test_mutable.Filenode.test_retrieve_producer_mdmf (when it uses
2685 PausingAndStoppingConsumer). There must be some sort of race: I could
2686 make it fail against Twisted-11.0 if I just increased the 0.5s delay in
2687 test_download.PausingAndStoppingConsumer to about 0.6s, and could make
2688 Twisted-trunk pass by reducing it to about 0.3s .
2689 
2690 I fixed the test (as opposed to the bug) by replacing the delay with a
2691 simple reliable eventually(), and adding extra asserts to fail the test
2692 if the consumer's write() method is called while the producer is
2693 supposed to be paused
2694 
2695 The bug itself was that mutable.retrieve.Retrieve wasn't checking the
2696 "stopped" flag after resuming from a pause, and thus delivered one
2697 segment to a consumer that wasn't expecting it. I split out
2698 stopped-flag-checking to separate function, which is now called
2699 immediately after _check_for_paused(). I also cleaned up some Deferred
2700 usage and whitespace.
2701]
2702[remove interpreter shbang lines from non-executables
2703Brian Warner <warner@lothar.com>**20111014172301
2704 Ignore-this: a1ad931ed2e4379fed9bf480382ad801
2705 
2706 thanks to Greg Troxel for the catch
2707]
2708[TAG allmydata-tahoe-1.9.0b1
2709warner@lothar.com**20111014055532
2710 Ignore-this: f00238ed3d8d1f5e15b0262c4373a3c3
2711]
2712[NEWS: mention --format, bring up-to-date
2713warner@lothar.com**20111014055500
2714 Ignore-this: 6c70a87cd8894cee954fd2deeada61f6
2715]
2716[CLI: don't deprecate --mutable, small docs fixes. refs #1561
2717Brian Warner <warner@lothar.com>**20111014040002
2718 Ignore-this: 6133c130e7060fc4240194bc08ed9c9d
2719 
2720 Also don't accept 'tahoe mkdir --format=chk'.
2721]
2722[add --format= to 'tahoe put'/'mkdir', remove --mutable-type. Closes #1561
2723Brian Warner <warner@lothar.com>**20111014031500
2724 Ignore-this: ac38ac429847942e6383e7374bf0e1bf
2725]
2726[web/filenode.py: rely on Request.notifyFinish. Closes #1366.
2727Brian Warner <warner@lothar.com>**20111013201219
2728 Ignore-this: cf7677bf15cb8e469ec16c3372fdfa35
2729 
2730 This is safe now that tahoe depends upon Twisted>=10.1, since notifyFinish
2731 first appeared in Twisted-9.0
2732]
2733[docs: fix several imprecise or inaccurate values in performance.rst
2734zooko@zooko.com**20110508124228
2735 Ignore-this: f1ecc5cb32eebec9760c8fc437799eb4
2736 add cpu values for each operation
2737 sort the list of values into the same order in each operation
2738 refs #1398
2739]
2740[oops, missed a test failure
2741Brian Warner <warner@lothar.com>**20111013163713
2742 Ignore-this: d8cb188d8dd664e335f19b9fa342da4a
2743]
2744[misc mutable-type fixes:
2745warner@lothar.com**20111013163229
2746 Ignore-this: ab62dc2f27aa1f793e7bd02e360ee471
2747 
2748 * fix tahoe.cfg control of default mutable type
2749 * tolerate arbitrary case in [client]mutable.format value
2750 * small docs improvements
2751 * use get_mutable_type() as a format-is-mutable predicate
2752 * tighten up error message
2753]
2754[webapi: use all-caps "SDMF"/"MDMF" acronyms in t=json response
2755warner@lothar.com**20111013163143
2756 Ignore-this: 945eaa5ce7f108793b0bb6cae0239965
2757 
2758 docs: upcase examples of t=json output and format= input
2759]
2760[webapi.rst: fix whitespace (detabify) t=json examples
2761warner@lothar.com**20111013163056
2762 Ignore-this: c095687413876507c5cc46864459c054
2763]
2764[webapi: handle format=, remove mutable-type=
2765warner@lothar.com**20111013162951
2766 Ignore-this: de7d9c5516385d002dbc21f31c23204c
2767 
2768 * fix CLI commands (put, mkdir) to send format=, not mutable-type=
2769 * fix tests
2770 * test_cli: fix tests that observe t=json output, don't ignore failures in
2771   'tahoe put'
2772 * fix handling of version= to make it easier to use the default
2773 * interpret ?mutable=true&format=MDMF as MDMF, not SDMF
2774]
2775[docs/frontends/webapi.rst: document the format argument
2776kevan@isnotajoke.com**20111010025529
2777 Ignore-this: 2a7b8d711dc369bd9a23e2853824cfb0
2778]
2779[Tests for ref #1547
2780david-sarah@jacaranda.org**20111002035316
2781 Ignore-this: 933f2b6ff148523f40475fe2d2578170
2782]
2783[Change the file upload forms on directory and welcome pages to use a 3-way radio button to select immutable, SDMF, or MDMF. Add '(experimental)' to the label for creating an MDMF directory. Also improve the spacing of form elements. refs #1547
2784david-sarah@jacaranda.org**20111002034503
2785 Ignore-this: 46a8b966fddc8ccaa7e70bffbd68b52f
2786]
2787[test_web.py: minor cleanups, mainly to make the first argument to shouldFail tests consistent
2788david-sarah@jacaranda.org**20111002040332
2789 Ignore-this: 234ba793f78f112717e02755e1fa81b5
2790]
2791[Tests for ref #1552
2792david-sarah@jacaranda.org**20111002040036
2793 Ignore-this: abdc5c39d90ea7f314834fff7ecd6784
2794]
2795[test_storage.py: the part of test_remove that checks non-existence of the share directory after deleting a share, is only applicable to the disk backend; but, we can check that the shareset has no overhead at that point. refs #999
2796david-sarah@jacaranda.org**20111020173349
2797 Ignore-this: 8c7b93afeabf090d2615db81a4556fd6
2798]
2799[test_storage.py: reenable MutableServer.test_container_size for the S3 backend. refs #999
2800david-sarah@jacaranda.org**20111020115355
2801 Ignore-this: 33a2e41ec2d3b917dc5be897ce50c152
2802]
2803[Disk backend: make sure that the size limit is checked before writing. Also, the size limit is on the data length, not the container size. refs #999
2804david-sarah@jacaranda.org**20111020114919
2805 Ignore-this: 32a278af8e2a6464e193b635c7f17ff4
2806]
2807[S3 backend: the mutable size limit should be on the data length, not the container size. Also simplify by removing _check_size_limit. refs #999
2808david-sarah@jacaranda.org**20111020114529
2809 Ignore-this: ef64c7f68969ff550f81af2f17e5b14a
2810]
2811[S3 backend: new_length argument to MutableS3Share.writev should only be able to truncate the share (after applying writes), not extend it. refs #999
2812david-sarah@jacaranda.org**20111020114356
2813 Ignore-this: 3da64b01af2ea86aa1b73d9e3af65024
2814]
2815[S3 backend: make precondition failures show more information. refs #999
2816david-sarah@jacaranda.org**20111020111611
2817 Ignore-this: bb2fc7ad6962e2a4f394eaf5cde1795d
2818]
2819[S3 backend: make sure that the container size limit is checked before writing. refs #999
2820david-sarah@jacaranda.org**20111020111519
2821 Ignore-this: add18e2273a84d75bd491a13c6f6451a
2822]
2823[test_storage.py: reduce duplicated code by factoring 'create' methods into CreateS3Backend and CreateDiskBackend classes. refs #999
2824david-sarah@jacaranda.org**20111020111350
2825 Ignore-this: 1362efb0293bc7e62fafd9f1227c47d9
2826]
2827[S3 backend: finish implementation of mutable shares. refs #999
2828david-sarah@jacaranda.org**20111020030522
2829 Ignore-this: 53bf3fdc4d243069880b39295601af06
2830]
2831[test_storage.py: move the test_container_size test to MutableServerWithDiskBackend for now, because it tries to create a very large container which will wedge your machine. refs #999
2832david-sarah@jacaranda.org**20111020030447
2833 Ignore-this: 62f2b5df800bf1ab631853e8ad4a4267
2834]
2835[Disk backend: fix incorrect arguments in a call to create_mutable_disk_share. refs #999
2836david-sarah@jacaranda.org**20111020030301
2837 Ignore-this: ec4496f4a0cbb32eb5f9d6d32cc0221d
2838]
2839[storage/backends/disk/mutable.py: correct a typo. refs #999
2840david-sarah@jacaranda.org**20111020012427
2841 Ignore-this: af896e2496c15e06d1eec6c0af49b695
2842]
2843[Enable mutable tests for S3 backend (they all fail, as expected). refs #999
2844david-sarah@jacaranda.org**20111019061735
2845 Ignore-this: f058dba13bd4f1d4273739d2823605f
2846]
2847[S3 backend: remove max_space option. refs #999
2848david-sarah@jacaranda.org**20111018224057
2849 Ignore-this: 6fc56d5ea43dae4ac9604a7cf15e7ce6
2850]
2851[test_storage.py, test_crawler.py: change 'bucket' terminology to 'shareset' where appropriate. refs #999
2852david-sarah@jacaranda.org**20111018183242
2853 Ignore-this: b8cf782836d1558fc99ff13fa08b2b9f
2854]
2855[Add some __repr__ methods. refs #999
2856david-sarah@jacaranda.org**20111018064409
2857 Ignore-this: 9b901ee8aaaa9f9895f6a3b4e5f41a21
2858]
2859[Fix race conditions in crawler tests. (storage.LeaseCrawler.test_unpredictable_future may still be racy.) refs #999
2860david-sarah@jacaranda.org**20111018064303
2861 Ignore-this: 58b2791250d14f7e8a6284190d7872e8
2862]
2863[Allow crawlers and storage servers to use a deterministic clock, for testing. We do not yet take advantage of this in tests. refs #999
2864david-sarah@jacaranda.org**20111018063926
2865 Ignore-this: 171bf7275a978a93108b0835d06834ea
2866]
2867[Change IShareSet.get_shares[_synchronous] to return a pair (list of share objects, set of corrupt shnums). This is necessary to allow crawlers to record but skip over corrupt shares. This patch also changes the behaviour of storage servers to ignore corrupt shares on read, which may or may not be what we want. Note that the S3 backend does not yet report corrupt shares. refs #999
2868david-sarah@jacaranda.org**20111018063423
2869 Ignore-this: 35abee65334aa3a92471266f5789f452
2870]
2871[test_storage.py: cleanup to style of test_limited_history to match other tests. refs #999
2872david-sarah@jacaranda.org**20111016044311
2873 Ignore-this: 3024764ffb419917eeeb3ecd554fb421
2874]
2875[Change accesses of ._sharehomedir on a disk shareset to _get_sharedir(). refs #999
2876david-sarah@jacaranda.org**20111016044229
2877 Ignore-this: 5b2b9e11f56f0af0588c69ca930f60fd
2878]
2879[Disk backend: make sure that disk shares with a storageindex of None (as sometimes created by test code) can be printed using __repr__. refs #999
2880david-sarah@jacaranda.org**20111016035131
2881 Ignore-this: a811b53c20fdde5ad60471c5e4961a24
2882]
2883[scripts/debug.py: fix stale code in describe_share that had not been updated for changes in share interfaces. refs #999
2884david-sarah@jacaranda.org**20111016034913
2885 Ignore-this: 7f2469392b9e6fc64c354ce5a5568a68
2886]
2887[test_storage.py: fix a bug in _backdate_leases (it was returning too early). refs #999
2888david-sarah@jacaranda.org**20111016014038
2889 Ignore-this: 658cf2e2c0dc87032988f1d4db62f267
2890]
2891[Undo partial asyncification of crawlers, and enable crawlers only for the disk backend. refs #999
2892david-sarah@jacaranda.org**20111014061902
2893 Ignore-this: ce7303610878b1b051cf54604796bdde
2894]
2895[test_storage.py: fix two bugs in test_no_st_blocks -- the _cleanup function was being called too early, and we needed to treat directories as using no space in order for the configured-sharebytes == configured-diskbytes check to be correct. refs #999
2896david-sarah@jacaranda.org**20111014025840
2897 Ignore-this: a20434e28eda165bed2021f0dafa676c
2898]
2899[test_storage.py: print more info when checks fail. refs #999
2900david-sarah@jacaranda.org**20111013234159
2901 Ignore-this: 2989f30c24362ee6a80a7f8f3d5aad9
2902]
2903[test_storage.py: remove some redundant coercions to bool. refs #999
2904david-sarah@jacaranda.org**20111013233520
2905 Ignore-this: 3fa9baaf7e41831a24b8cfa0ef5ec5e4
2906]
2907[test_storage: in test_no_st_blocks, print the rec 'dict' if checking one of its fields fails. refs #999
2908david-sarah@jacaranda.org**20111013232802
2909 Ignore-this: cf18a119d80f11b1ba8681c4285c0198
2910]
2911[test_storage: fix some typos introduced when asyncifying test_immutable_leases. refs #999
2912david-sarah@jacaranda.org**20111013232618
2913 Ignore-this: 28a5e1377d7198191d5771e09826af5b
2914]
2915[test_storage: rename the two test_leases methods to ServerTest.test_immutable_leases and MutableServer.test_mutable_leases. refs #999
2916david-sarah@jacaranda.org**20111013232538
2917 Ignore-this: 7a3ccfd237db7a3c5053fe90c3bed1f3
2918]
2919[test_storage.py: fix a typo (d vs d2) in test_remove_incoming. refs #999
2920david-sarah@jacaranda.org**20111013222822
2921 Ignore-this: 71ad69489698865748cd32bc2c8b2fc1
2922]
2923[docs/backends/S3.rst: note that storage servers should use different buckets. refs #999
2924david-sarah@jacaranda.org**20111013050647
2925 Ignore-this: fec8d3bf114bbcf20165a5850aa25aac
2926]
2927[S3 backend: keep track of incoming shares, so that the storage server can avoid creating BucketWriters for shnums that have an incoming share. refs #999
2928david-sarah@jacaranda.org**20111013035040
2929 Ignore-this: f1c33357553d68748f970c0c9e19d538
2930]
2931[test_storage.py: test_read_old_share and test_write_and_read_share should only expect to be able to read input share data. refs #999
2932david-sarah@jacaranda.org**20111013032825
2933 Ignore-this: bec4a26f13f105cc84261f2e1b028302
2934]
2935[misc/check-interfaces.py: print a warning if a .pyc or .pyo file exists without a corresponding .py file.
2936david-sarah@jacaranda.org**20111012233609
2937 Ignore-this: 35f04939360c6d3b1e8e0c2e9e712d80
2938]
2939[storage/backends/base.py: allow readv to work for both mutable and immutable shares. refs #999
2940david-sarah@jacaranda.org**20111012232802
2941 Ignore-this: a266704981739e7c1217f352aee153fe
2942]
2943[S3 backend: correct list_objects to list_all_objects in IS3Bucket. refs #999
2944david-sarah@jacaranda.org**20111012232713
2945 Ignore-this: 7f9dc7946e9866f71e16f3a595f0218e
2946]
2947[Null backend: make NullShareSet inherit from ShareSet, which should implement readv correctly. Remove its implementation of testv_and_readv_and_writev since the one from ShareSet should work (if it doesn't that would be a separate bug). refs #999
2948david-sarah@jacaranda.org**20111012232600
2949 Ignore-this: 404757cc6f7e29c2b927258af31d55ce
2950]
2951[Remove test_backends.py, since all its tests are now redundant with tests in test_storage.py or test_client.py. refs #999
2952david-sarah@jacaranda.org**20111012232316
2953 Ignore-this: f601a8165058773075ce80d96586b0d9
2954]
2955[test_storage.py: add test_write_and_read_share and test_read_old_share originally from test_backends.py. refs #999
2956david-sarah@jacaranda.org**20111012232124
2957 Ignore-this: 805cd42094d3948ffdf957f44e0d146d
2958]
2959[test_download.py: fix and reenable Corruption.test_each_byte. Add a comment noting that catalog_detection = True has bitrotted. refs #999
2960david-sarah@jacaranda.org**20111012041219
2961 Ignore-this: b9fa9ce7406811cd5a9d4a49666b1ab0
2962]
2963[no_network.py: fix delete_all_shares. refs #999
2964david-sarah@jacaranda.org**20111012033458
2965 Ignore-this: bfe9225562454f153a921277b43ac848
2966]
2967[S3 backend: fix corruption advisories and listing of shares for mock S3 bucket. refs #999
2968david-sarah@jacaranda.org**20111012033443
2969 Ignore-this: 9d655501062888be6ee391e426c90a13
2970]
2971[test_storage.py: asyncify some more tests, and fix create methods. refs #999
2972david-sarah@jacaranda.org**20111012025739
2973 Ignore-this: 1574d8175917665f44d278d13f815bb9
2974]
2975[test_storage.py: add a test that we can create a share, exercising the backend's get_share and get_shares methods. This may explicate particular kinds of backend failure better than the existing tests. refs #999
2976david-sarah@jacaranda.org**20111012025514
2977 Ignore-this: f52983e4f3d96ea26ef25856d4cc92ce
2978]
2979[test_storage.py: Move test_seek to its own class, since it is independent of the backend. Also move test_reserved_space to ServerWithDiskBackend, since reserved_space is specific to that backend. refs #999
2980david-sarah@jacaranda.org**20111012025149
2981 Ignore-this: 281de8befe51e24cd638886fb5063cd2
2982]
2983[util/deferredutil.py: remove unneeded utility functions. refs #999
2984david-sarah@jacaranda.org**20111012024440
2985 Ignore-this: 17380afd9079442785d0cb78876c7fd5
2986]
2987[Move configuration of each backend into the backend itself. refs #999
2988david-sarah@jacaranda.org**20111012014004
2989 Ignore-this: c337c43e4c4a05617de62f4acf7119d0
2990]
2991[test_storage.py: fix test failures in MDMFProxies. refs #999
2992david-sarah@jacaranda.org**20111012000848
2993 Ignore-this: 798f2a4e960ee444e401a10748afeb08
2994]
2995[test_storage.py: cosmetics. refs #999
2996david-sarah@jacaranda.org**20111012000442
2997 Ignore-this: d3514fa8d69f38d3b45204e2224152d5
2998]
2999[storage/backends/disk/disk_backend.py: trivial fix to a comment. #refs 999
3000david-sarah@jacaranda.org**20111011165704
3001 Ignore-this: b9031b01ef643cb973a41af277d941c0
3002]
3003[check-miscaptures.py: report the number of files that were not analysed due to syntax errors (and don't count them in the number of suspicious captures). refs #1555
3004david-sarah@jacaranda.org**20111009050301
3005 Ignore-this: 62ee03f4b8a96c292e75c097ad87d52e
3006]
3007[check-miscaptures.py: handle corner cases around default arguments correctly. Also make a minor optimization when there are no assigned variables to consider. refs #1555
3008david-sarah@jacaranda.org**20111009045023
3009 Ignore-this: f49ece515620081da1d745ae6da19d21
3010]
3011[check-miscaptures.py: Python doesn't really have declarations; report the topmost assignment. refs #1555
3012david-sarah@jacaranda.org**20111009044800
3013 Ignore-this: 4905c9dfe7726f433333e216a6760a4b
3014]
3015[check-miscaptures.py: handle destructuring function arguments correctly. refs #1555
3016david-sarah@jacaranda.org**20111009044710
3017 Ignore-this: f9de7d95e94446507a206c88d3f98a23
3018]
3019[check-miscaptures.py: check while loops and list comprehensions as well as for loops. Also fix a pyflakes warning. refs #1555
3020david-sarah@jacaranda.org**20111009044022
3021 Ignore-this: 6526e4e315ca6461b1fbc2da5568e444
3022]
3023[Fix pyflakes warnings in misc/ directories other than misc/build_helpers. refs #1557
3024david-sarah@jacaranda.org**20111007033031
3025 Ignore-this: 7daf5862469732d8cabc355266622b74
3026]
3027[Makefile: include misc/ directories other than misc/build_helpers in SOURCES. refs #1557
3028david-sarah@jacaranda.org**20111007032958
3029 Ignore-this: 31376ec01401df7972e83341dc65aa05
3030]
3031[util/happinessutil.py: suppress a warning from check-miscaptures. (It is not a bug because the capturing function is only used by a 'map' in the same iteration.) refs #1556
3032david-sarah@jacaranda.org**20111009052106
3033 Ignore-this: 16a62844bae083800d6b6a7334abc9bc
3034]
3035[misc/coding_tools/make-canary-files.py: fix a suspicious capture reported by check-miscaptures (although it happens not to be a bug because the callback will be processed synchronously). refs #1556
3036david-sarah@jacaranda.org**20111009050531
3037 Ignore-this: 2d1a696955a4c1f7d9c649d4ecefd7de
3038]
3039[Fix two pyflakes warnings about unused imports. refs #999
3040david-sarah@jacaranda.org**20111011051745
3041 Ignore-this: 23c17f8eb36a30f4e3b662a778bc4bb7
3042]
3043[test_storage.py: fix asyncification of three tests in MDMFProxies. refs #999
3044david-sarah@jacaranda.org**20111011051319
3045 Ignore-this: a746cc2ed1f4fbcf95bad7624a0544e9
3046]
3047[test_storage.py: fix a trivial bug in MDMFProxies.test_write. refs #999
3048david-sarah@jacaranda.org**20111011045645
3049 Ignore-this: 943c6da82eca7b2d247cfb7d75afc9b7
3050]
3051[test_storage.py: fix a typo in test_null_backend. refs #999
3052david-sarah@jacaranda.org**20111011045133
3053 Ignore-this: ddf00d1d65182d520904168827c792c4
3054]
3055[test_storage.py: fix a bug introduced by asyncification of test_allocate. refs #999
3056david-sarah@jacaranda.org**20111011044131
3057 Ignore-this: 1460b8a713081c8bbe4d298ab39f264f
3058]
3059[test_storage.py: make MutableServer.test_leases pass. refs #999
3060david-sarah@jacaranda.org**20111011002917
3061 Ignore-this: dce275f6508a7cfe31c0af82483eea97
3062]
3063[test/common.py: in shouldFail and shouldHTTPError, when the raised exception does not include the expected substring (or, for shouldHTTPError, when the status code is wrong), mention which test that happened in.
3064david-sarah@jacaranda.org**20111011002227
3065 Ignore-this: 836cabe9ef774617122905b214a0b8e8
3066]
3067[test/mock_s3.py: fix a bug that was causing us to use the wrong directory for share files. refs #999
3068david-sarah@jacaranda.org**20111010231344
3069 Ignore-this: bc63757f5dd8d31643bd9919f2ecd98c
3070]
3071[Add fileutil.fp_list(fp) which is like fp.children(), but returns [] in case of a directory that does not exist. Use it to simplify the disk backend and mock S3 bucket implementations. refs #999
3072david-sarah@jacaranda.org**20111010231146
3073 Ignore-this: fd4fa8b1446fc7e5c03631b4092c20cc
3074]
3075[S3 backend: move the implementation of list_objects from s3_bucket.py to s3_common.py, making s3_bucket.py simpler and list_objects easier to test independently. refs #999
3076david-sarah@jacaranda.org**20111010230751
3077 Ignore-this: 2f9a8f75671e87d2caba2ac6c6d4bdfd
3078]
3079[Make unlink() on share objects consistently idempotent. refs #999
3080david-sarah@jacaranda.org**20111010204417
3081 Ignore-this: 1dc559fdd89b7135cec64ffca62fc96a
3082]
3083[Null backend: implement unlink and readv more correctly. refs #999
3084david-sarah@jacaranda.org**20111010204404
3085 Ignore-this: 3386bc2a1cd0ff6268def31c5c5ce3a1
3086]
3087[test_download.py: fix test_download_failover (it should tolerate non-existing shares in _clobber_most_shares). refs #999
3088david-sarah@jacaranda.org**20111010204142
3089 Ignore-this: db648ffcbd5e37cf236f49ecc1e720fc
3090]
3091[interfaces.py: resolve another conflict with trunk. refs #999
3092david-sarah@jacaranda.org**20111010200903
3093 Ignore-this: 163067eab9a5c71e12c6cac058a03832
3094]
3095[interfaces.py: fix a typo in the name of IMutableSlotWriter.put_encprivkey. refs #393
3096david-sarah@jacaranda.org**20111010194642
3097 Ignore-this: eb65439e8dd891c169b43b1679c29238
3098]
3099[interfaces.py: resolve conflicts with trunk. refs #999
3100david-sarah@jacaranda.org**20111010195634
3101 Ignore-this: 8e02c7933392491ba3deb678c5bc5876
3102]
3103[interfaces.py: remove get_extension_params and set_extension_params methods from IMutableFileURI. refs #393, #1526
3104david-sarah@jacaranda.org**20111010194842
3105 Ignore-this: 6012be6fcc12f560aeeeac0be2d337d1
3106]
3107[Instrument some assertions to report the failed values. refs #999
3108david-sarah@jacaranda.org**20111010191733
3109 Ignore-this: 4e886faa5909bf703af8228194ae759c
3110]
3111[test_storage.py: move some tests that were not applicable to all backends out of ServerTest. refs #999
3112david-sarah@jacaranda.org**20111010181214
3113 Ignore-this: d2310591c71c4d2d2c5ff4e316f15542
3114]
3115[storage/backends/disk/mutable.py: put back a correct assertion that had been disabled. storage/base.py: fix the bug that was causing that assertion to fail. refs #999
3116david-sarah@jacaranda.org**20111009232142
3117 Ignore-this: dbb644f596bf3c42575b9d9fadc2c9d9
3118]
3119[test_storage.py: fix a trivial bug in LeaseCrawler.test_unpredictable_future. refs #999
3120david-sarah@jacaranda.org**20111007195753
3121 Ignore-this: 357539b4cf8b7455c1787ac591b0ee23
3122]
3123[Asyncification, and resolution of conflicts. #999
3124david-sarah@jacaranda.org**20111007193418
3125 Ignore-this: 29b15345aecd3adeef2c2392ca90d4ff
3126]
3127[disk backend: size methods should no longer return Deferreds. refs #999
3128david-sarah@jacaranda.org**20111007193327
3129 Ignore-this: 8d32ffdbb81d88a30352f344e385feff
3130]
3131[Ensure that helper classes are not treated as test cases. Also fix a missing mixin. refs #999
3132david-sarah@jacaranda.org**20111007081439
3133 Ignore-this: a222110248f378d91c232799bcd5d3a6
3134]
3135[More miscapture fixes. refs #999
3136david-sarah@jacaranda.org**20111007080916
3137 Ignore-this: 85004d4e3a609a2ef70a38164897ff02
3138]
3139[Partially asyncify crawlers. refs #999
3140david-sarah@jacaranda.org**20111007080657
3141 Ignore-this: f6a15b81592bfff33ccf09301dbdfca1
3142]
3143[unlink() on share objects should be idempotent. refs #999
3144david-sarah@jacaranda.org**20111007080615
3145 Ignore-this: ff87d0b30fc81dd8e90bc5c6852955eb
3146]
3147[Make sure that get_size etc. work correctly on an ImmutableS3ShareForWriting after it has been closed. Also simplify by removing the _end_offset attribute. refs #999
3148david-sarah@jacaranda.org**20111007080342
3149 Ignore-this: 9d8ce463daee2ef1b7dc33aca70a0379
3150]
3151[Remove an inapplicable comment. refs #999
3152david-sarah@jacaranda.org**20111007080128
3153 Ignore-this: 1c7fae3ffc9ac412ad9ab6e411ef9be7
3154]
3155[Remove unused load method and _loaded attribute from s3/mutable.py. refs #999
3156david-sarah@jacaranda.org**20111007080051
3157 Ignore-this: b92ed543f7dcf56df0510de8515230e1
3158]
3159[Fix a duplicate umid. refs #999
3160david-sarah@jacaranda.org**20111007080001
3161 Ignore-this: bb9519d15220ab7350731abf19038c2e
3162]
3163[Fix some miscapture bugs. refs #999
3164david-sarah@jacaranda.org**20111007075915
3165 Ignore-this: 88dc8ec49e93e5d62c2abb8f496706cb
3166]
3167[Add a _get_sharedir() method on IShareSet, implemented by the disk and mock S3 backends, for use by tests. refs #999
3168david-sarah@jacaranda.org**20111007075645
3169 Ignore-this: 9e9ce0d244785da8ac4a3c0aa948ddce
3170]
3171[Add misc/coding_tools/check-miscaptures.py to detect incorrect captures of variables declared in a for loop, and a 'make check-miscaptures' Makefile target to run it. (It is also run by 'make code-checks'.) This is a rewritten version that reports much fewer false positives, by determining captured variables more accurately. fixes #1555
3172david-sarah@jacaranda.org**20111007074121
3173 Ignore-this: 51318e9678d132c374ea557ab955e79e
3174]
3175[Add a get_share method to IShareSet, to get a specific share. refs #999
3176david-sarah@jacaranda.org**20111007075426
3177 Ignore-this: 493ddfe83414208f08a22b9f327d6b69
3178]
3179[Fix some more potential bugs in test code exposed by check-miscaptures.py. refs #1556
3180david-sarah@jacaranda.org**20111007033847
3181 Ignore-this: aec8a543e9b5c3563b60692c647439a8
3182]
3183[Fix some potential bugs (in non-test code) exposed by check-miscaptures.py. refs #1556
3184david-sarah@jacaranda.org**20111007032444
3185 Ignore-this: bac9ed65b21c2136c4db2482b3c093f7
3186]
3187[Fix some potential bugs in test code exposed by check-miscaptures.py. refs #1556
3188david-sarah@jacaranda.org**20111007023443
3189 Ignore-this: e48b2c2d200521d6f28c737994ce3a2a
3190]
3191[misc/simulators/hashbasedsig.py: simplify by removing unnecessary local function that captured a variable declared in a for loop (this was not a bug, but the code was unclear). Also fix a pyflakes warning about an import. refs #1556
3192david-sarah@jacaranda.org**20111007023001
3193 Ignore-this: 446c94efae02ded5e85eb3335ca5e69
3194]
3195[immutable/literal.py: add pauseProducing method to LiteralProducer. refs #1537
3196david-sarah@jacaranda.org**20111003195239
3197 Ignore-this: 385ee3379a2819381937357f1eac457
3198]
3199[docs: fix the rst formatting of COPYING.TGPPL.rst
3200zooko@zooko.com**20111003043333
3201 Ignore-this: c5fbc83f4a3db81a0c95b27053c463c5
3202 Now it renders correctly both on trac and with rst2html --verbose from docutils v0.8.1.
3203]
3204[MDMF: remove extension fields from caps, tolerate arbitrary ones. Fixes #1526
3205Brian Warner <warner@lothar.com>**20111001233553
3206 Ignore-this: 335e1690aef1146a2c0b8d8c18c1cb21
3207 
3208 The filecaps used to be produced with hints for 'k' and segsize, but they
3209 weren't actually used, and doing so had the potential to limit how we change
3210 those filecaps in the future. Also the parsing code had some problems dealing
3211 with other numbers of extensions. Removing the existing fields and making the
3212 parser tolerate (and ignore) extra ones makes MDMF more future-proof.
3213]
3214[More asyncification of tests. Also fix some bugs due to capture of slots in for loops. refs #999
3215david-sarah@jacaranda.org**20111004010813
3216 Ignore-this: 15bf68748ab737d1edc24552ce192f8b
3217]
3218[s3/s3_common.py: remove incorrect 'self' arguments from interface methods in IS3Bucket. refs #999
3219david-sarah@jacaranda.org**20111004010745
3220 Ignore-this: d5f66be90062292164d3f017aef3d6f4
3221]
3222[no_network.py: Clean up whitespace around code changed by previous patch.
3223david-sarah@jacaranda.org**20111004010407
3224 Ignore-this: 647ec8a9346dca1a41212ab250619b72
3225]
3226[no_network.py: Fix potential bugs in some tests due to capture of slots in for loops.
3227david-sarah@jacaranda.org**20111004010231
3228 Ignore-this: 9c496877613a3befd54979e5de6e63d2
3229]
3230[Add a share._get_filepath() method used by tests to get the FilePath for a share, rather than accessing the _home attribute. refs #999
3231david-sarah@jacaranda.org**20111004004604
3232 Ignore-this: ec873e356b7ebd74f52336dd92dea8aa
3233]
3234[s3/immutable.py: minor simplification in ImmutableS3ShareForReading. refs #999
3235david-sarah@jacaranda.org**20110930212714
3236 Ignore-this: d71e2466231f695891a6b8d1df945687
3237]
3238[free up the buffer used to hold data while it is being written to ImmutableS3ShareForWriting
3239zooko@zooko.com**20110930060238
3240 Ignore-this: 603b2c8bb1f4656bdde5876ac95aa5c9
3241]
3242[FIX THE BUG!
3243zooko@zooko.com**20110930032140
3244 Ignore-this: fd32c4ac3054ae6fc2b9433f113b2fd6
3245]
3246[fix another bug in ImmutableShareS3ForWriting
3247zooko@zooko.com**20110930025701
3248 Ignore-this: 6ad7bd17111b12d96991172fbe04d76
3249]
3250[really fix the bug in ImmutableS3ShareForWriting
3251zooko@zooko.com**20110930023501
3252 Ignore-this: 36a7804433cab667566d119af7223425
3253]
3254[Add dummy lease methods to immutable S3 share objects. refs #999
3255david-sarah@jacaranda.org**20110930021703
3256 Ignore-this: 7c21f140020edd64027c71be0f32c2b2
3257]
3258[fix bug in ImmutableS3ShareForWriting
3259zooko@zooko.com**20110930020535
3260 Ignore-this: f7f63d2fc2086903a195cc000f306b88
3261]
3262[test_storage.py: Server class uses ShouldFailMixin. refs #999
3263david-sarah@jacaranda.org**20110930001349
3264 Ignore-this: 4cf1ef21bbf85d7fe52ab660f59ff237
3265]
3266[mock_s3.py: fix bug in MockS3Error constructor. refs #999
3267david-sarah@jacaranda.org**20110930001326
3268 Ignore-this: 4d0ebd9120fc8e99b15924c671cd0927
3269]
3270[return res
3271zooko@zooko.com**20110930000446
3272 Ignore-this: 6f73b3e389612c73c6590007229ad8e
3273]
3274[fix doc to say that secret access key goes into private/s3secret
3275zooko@zooko.com**20110930000256
3276 Ignore-this: c054ff78041a05b3177b3c1b3e9d4ae7
3277]
3278[s3_bucket.py: fix an incorrect argument signature for list_objects. refs #999
3279david-sarah@jacaranda.org**20110929235646
3280 Ignore-this: f02e3a23f28fadef71c70fd0b1592ba6
3281]
3282[Make sure that the statedir is created before trying to use it. refs #999
3283david-sarah@jacaranda.org**20110929234845
3284 Ignore-this: b5f0529b1f2a5b5250c2ee2091cbe24b
3285]
3286[test/mock_s3.py: fix a typo. refs #999
3287david-sarah@jacaranda.org**20110929234808
3288 Ignore-this: ccdff591f9b301f7f486454a4366c2b3
3289]
3290[test_storage.py: only run test_large_share on the disk backend. (It will wedge your machine if run on the S3 backend with MockS3Bucket.) refs #999
3291david-sarah@jacaranda.org**20110929234725
3292 Ignore-this: ffa7c08458ee0159455b6f1cd1c3ff48
3293]
3294[Fixes to S3 config parsing, with tests. refs #999
3295david-sarah@jacaranda.org**20110929225014
3296 Ignore-this: 19aa5a3e9575b0c2f77b19fe1bcbafcb
3297]
3298[Add missing src/allmydata/test/mock_s3.py (mock implementation of an S3 bucket). refs #999
3299david-sarah@jacaranda.org**20110929212229
3300 Ignore-this: a1433555d4bb0b8b36fb80feb122187b
3301]
3302[Make the s3.region option case-insensitive (txaws expects uppercase). refs #999
3303david-sarah@jacaranda.org**20110929211606
3304 Ignore-this: def83d3fa368c315573e5f1bad5ee7f9
3305]
3306[Fix missing add_lease method on ImmutableS3ShareForWriting. refs #999
3307david-sarah@jacaranda.org**20110929211524
3308 Ignore-this: 832f0d94f912b17006b0dbaab94846b6
3309]
3310[Add missing src/allmydata/storage/backends/s3/s3_bucket.py. refs #999
3311david-sarah@jacaranda.org**20110929211416
3312 Ignore-this: aa783c5d7c32af172b5c5a3d62c3faf2
3313]
3314[scripts/debug.py: repair stale code, and use the get_disk_share function defined by disk_backend instead of duplicating it. refs #999
3315david-sarah@jacaranda.org**20110929211252
3316 Ignore-this: 5dda548e8703e35f0c103467346627ef
3317]
3318[Fix a bug in the new config parsing code when reserved_space is not present for a disk backend. refs #999
3319david-sarah@jacaranda.org**20110929211106
3320 Ignore-this: b05bd3c4ff7d90b5ecb1e6a54717b735
3321]
3322[test_storage.py: Avoid using the same working directory for different test classes. refs #999
3323david-sarah@jacaranda.org**20110929210954
3324 Ignore-this: 3a01048e941c61c603eec603d064bebb
3325]
3326[More asycification of tests. refs #999
3327david-sarah@jacaranda.org**20110929210727
3328 Ignore-this: 87690a62f89a07e63b859c24948d262d
3329]
3330[Fix a bug in disk_backend.py. refs #999
3331david-sarah@jacaranda.org**20110929182511
3332 Ignore-this: 4f9a62adf03fc3221e46b54f7a4a960b
3333]
3334[docs/backends/S3.rst: add s3.region option. Also minor changes to configuration.rst. refs #999
3335david-sarah@jacaranda.org**20110929182442
3336 Ignore-this: 2992ead5f8d9357a0d9b912b1e0bd932
3337]
3338[Updates to test_backends.py. refs #999
3339david-sarah@jacaranda.org**20110929182016
3340 Ignore-this: 3bac19179308e6f27e54c45c7cad4dc6
3341]
3342[Implement selection of backends from tahoe.cfg options. Also remove the discard_storage parameter from the disk backend. refs #999
3343david-sarah@jacaranda.org**20110929181754
3344 Ignore-this: c7f78e7db98326723033f44e56858683
3345]
3346[test_storage.py: fix an incorrect argument in construction of S3Backend. refs #999
3347david-sarah@jacaranda.org**20110929081331
3348 Ignore-this: 33ad68e0d3a15e3fa1dda90df1b8365c
3349]
3350[Move the implementation of lease methods to disk_backend.py, and add stub implementations in s3_backend.py that raise NotImplementedError. Fix the lease methods in the disk backend to be synchronous. Also make sure that get_shares() returns a Deferred list sorted by shnum. refs #999
3351david-sarah@jacaranda.org**20110929081132
3352 Ignore-this: 32cbad21c7236360e2e8e84a07f88597
3353]
3354[Make the make_bucket_writer method synchronous. refs #999
3355david-sarah@jacaranda.org**20110929080712
3356 Ignore-this: 1de299e791baf1cf1e2a8d4b593e8ba1
3357]
3358[Add get_s3_share function in place of S3ShareSet._load_shares. refs #999
3359david-sarah@jacaranda.org**20110929080530
3360 Ignore-this: f99665979612e42ecefa293bda0db5de
3361]
3362[Complete the splitting of the immutable IStoredShare interface into IShareForReading and IShareForWriting. Also remove the 'load' method from shares, and other minor interface changes. refs #999
3363david-sarah@jacaranda.org**20110929075544
3364 Ignore-this: 8c923051869cf162d9840770b4a08573
3365]
3366[split Immutable S3 Share into for-reading and for-writing classes, remove unused (as far as I can tell) methods, use cStringIO for buffering the writes
3367zooko@zooko.com**20110929055038
3368 Ignore-this: 82d8c4488a8548936285a975ef5a1559
3369 TODO: define the interfaces that the new classes claim to implement
3370]
3371[Comment out an assertion that was causing all mutable tests to fail. THIS IS PROBABLY WRONG. refs #999
3372david-sarah@jacaranda.org**20110929041110
3373 Ignore-this: 1e402d51ec021405b191757a37b35a94
3374]
3375[Fix some incorrect or incomplete asyncifications. refs #999
3376david-sarah@jacaranda.org**20110929040800
3377 Ignore-this: ed70e9af2190217c84fd2e8c41de4c7e
3378]
3379[Add some debugging assertions that share objects are not Deferred. refs #999
3380david-sarah@jacaranda.org**20110929040657
3381 Ignore-this: 5c7f56a146f5a3c353c6fe5b090a7dc5
3382]
3383[scripts/debug.py: take account of some API changes. refs #999
3384david-sarah@jacaranda.org**20110929040539
3385 Ignore-this: 933c3d44b993c041105038c7d4514386
3386]
3387[Make get_sharesets_for_prefix synchronous for the time being (returning a Deferred breaks crawlers). refs #999
3388david-sarah@jacaranda.org**20110929040136
3389 Ignore-this: e94b93d4f3f6173d9de80c4121b68748
3390]
3391[More asyncification of tests. refs #999
3392david-sarah@jacaranda.org**20110929035644
3393 Ignore-this: 28b650a9ef593b3fd7524f6cb562ad71
3394]
3395[no_network.py: add some assertions that the things we wrap using LocalWrapper are not Deferred (which is not supported and causes hard-to-debug failures). refs #999
3396david-sarah@jacaranda.org**20110929035537
3397 Ignore-this: fd103fbbb54fbbc17b9517c78313120e
3398]
3399[Add some debugging code (switched off) to no_network.py. When switched on (PRINT_TRACEBACKS = True), this prints the stack trace associated with the caller of a remote method, mitigating the problem that the traceback normally gets lost at that point. TODO: think of a better way to preserve the traceback that can be enabled by default. refs #999
3400david-sarah@jacaranda.org**20110929035341
3401 Ignore-this: 2a593ec3ee450719b241ea8d60a0f320
3402]
3403[Use factory functions to create share objects rather than their constructors, to allow the factory to return a Deferred. Also change some methods on IShareSet and IStoredShare to return Deferreds. Refactor some constants associated with mutable shares. refs #999
3404david-sarah@jacaranda.org**20110928052324
3405 Ignore-this: bce0ac02f475bcf31b0e3b340cd91198
3406]
3407[Work in progress for asyncifying the backend interface (necessary to call txaws methods that return Deferreds). This is incomplete so lots of tests fail. refs #999
3408david-sarah@jacaranda.org**20110927073903
3409 Ignore-this: ebdc6c06c3baa9460af128ec8f5b418b
3410]
3411[mutable/publish.py: don't crash if there are no writers in _report_verinfo. refs #999
3412david-sarah@jacaranda.org**20110928014126
3413 Ignore-this: 9999c82bb3057f755a6e86baeafb8a39
3414]
3415[scripts/debug.py: fix incorrect arguments to dump_immutable_share. refs #999
3416david-sarah@jacaranda.org**20110928014049
3417 Ignore-this: 1078ee3f06a2f36b29e0cf694d2851cd
3418]
3419[test_system.py: more debug output for a failing check in test_filesystem. refs #999
3420david-sarah@jacaranda.org**20110928014019
3421 Ignore-this: e8bb77b8f7db12db7cd69efb6e0ed130
3422]
3423[test_system.py: incorrect arguments were being passed to the constructor for MutableDiskShare. refs #999
3424david-sarah@jacaranda.org**20110928013857
3425 Ignore-this: e9719f74e7e073e37537f9a71614b8a0
3426]
3427[Undo an incompatible change to RIStorageServer. refs #999
3428david-sarah@jacaranda.org**20110928013729
3429 Ignore-this: bea4c0f6cb71202fab942cd846eab693
3430]
3431[mutable/publish.py: resolve conflicting patches. refs #999
3432david-sarah@jacaranda.org**20110927073530
3433 Ignore-this: 6154a113723dc93148151288bd032439
3434]
3435[test_storage.py: fix test_no_st_blocks. refs #999
3436david-sarah@jacaranda.org**20110927072848
3437 Ignore-this: 5f12b784920f87d09c97c676d0afa6f8
3438]
3439[Cleanups to S3 backend (not including Deferred changes). refs #999
3440david-sarah@jacaranda.org**20110927071855
3441 Ignore-this: f0dca788190d92b1edb1ee1498fb34dc
3442]
3443[Cleanups to disk backend. refs #999
3444david-sarah@jacaranda.org**20110927071544
3445 Ignore-this: e9d3fd0e85aaf301c04342fffdc8f26
3446]
3447[test_storage.py: fix test_status_bad_disk_stats. refs #999
3448david-sarah@jacaranda.org**20110927071403
3449 Ignore-this: 6108fee69a60962be2df2ad11b483a11
3450]
3451[util/deferredutil.py: add some utilities for asynchronous iteration. refs #999
3452david-sarah@jacaranda.org**20110927070947
3453 Ignore-this: ac4946c1e5779ea64b85a1a420d34c9e
3454]
3455[Add 'has-immutable-readv' to server version information. refs #999
3456david-sarah@jacaranda.org**20110923220935
3457 Ignore-this: c3c4358f2ab8ac503f99c968ace8efcf
3458]
3459[Minor cleanup to disk backend. refs #999
3460david-sarah@jacaranda.org**20110923205510
3461 Ignore-this: 79f92d7c2edb14cfedb167247c3f0d08
3462]
3463[Update the S3 backend. refs #999
3464david-sarah@jacaranda.org**20110923205345
3465 Ignore-this: 5ca623a17e09ddad4cab2f51b49aec0a
3466]
3467[Update the null backend to take into account interface changes. Also, it now records which shares are present, but not their contents. refs #999
3468david-sarah@jacaranda.org**20110923205219
3469 Ignore-this: 42a23d7e253255003dc63facea783251
3470]
3471[Make EmptyShare.check_testv a simple function. refs #999
3472david-sarah@jacaranda.org**20110923204945
3473 Ignore-this: d0132c085f40c39815fa920b77fc39ab
3474]
3475[The cancel secret needs to be unique, even if it isn't explicitly provided. refs #999
3476david-sarah@jacaranda.org**20110923204914
3477 Ignore-this: 6c44bb908dd4c0cdc59506b2d87a47b0
3478]
3479[Implement readv for immutable shares. refs #999
3480david-sarah@jacaranda.org**20110923204611
3481 Ignore-this: 24f14b663051169d66293020e40c5a05
3482]
3483[Remove redundant si_s argument from check_write_enabler. refs #999
3484david-sarah@jacaranda.org**20110923204425
3485 Ignore-this: 25be760118dbce2eb661137f7d46dd20
3486]
3487[interfaces.py: add fill_in_space_stats method to IStorageBackend. refs #999
3488david-sarah@jacaranda.org**20110923203723
3489 Ignore-this: 59371c150532055939794fed6c77dcb6
3490]
3491[Add incomplete S3 backend. refs #999
3492david-sarah@jacaranda.org**20110923041314
3493 Ignore-this: b48df65699e3926dcbb87b5f755cdbf1
3494]
3495[Move advise_corrupt_share to allmydata/storage/backends/base.py, since it will be common to the disk and S3 backends. refs #999
3496david-sarah@jacaranda.org**20110923041115
3497 Ignore-this: 782b49f243bd98fcb6c249f8e40fd9f
3498]
3499[A few comment cleanups. refs #999
3500david-sarah@jacaranda.org**20110923041003
3501 Ignore-this: f574b4a3954b6946016646011ad15edf
3502]
3503[mutable/publish.py: elements should not be removed from a dictionary while it is being iterated over. refs #393
3504david-sarah@jacaranda.org**20110923040825
3505 Ignore-this: 135da94bd344db6ccd59a576b54901c1
3506]
3507[Blank line cleanups.
3508david-sarah@jacaranda.org**20110923012044
3509 Ignore-this: 8e1c4ecb5b0c65673af35872876a8591
3510]
3511[Reinstate the cancel_lease methods of ImmutableDiskShare and MutableDiskShare, since they are needed for lease expiry. refs #999
3512david-sarah@jacaranda.org**20110922183323
3513 Ignore-this: a11fb0dd0078ff627cb727fc769ec848
3514]
3515[Fix most of the crawler tests. refs #999
3516david-sarah@jacaranda.org**20110922183008
3517 Ignore-this: 116c0848008f3989ba78d87c07ec783c
3518]
3519[Fix some more test failures. refs #999
3520david-sarah@jacaranda.org**20110922045451
3521 Ignore-this: b726193cbd03a7c3d343f6e4a0f33ee7
3522]
3523[uri.py: resolve a conflict between trunk and the pluggable-backends patches. refs #999
3524david-sarah@jacaranda.org**20110921222038
3525 Ignore-this: ffeeab60d8e71a6a29a002d024d76fcf
3526]
3527[Fix more shallow bugs, mainly FilePathification. Also, remove the max_space_per_bucket parameter from BucketWriter since it can be obtained from the _max_size attribute of the share (via a new get_allocated_size() accessor). refs #999
3528david-sarah@jacaranda.org**20110921221421
3529 Ignore-this: 600e3ccef8533aa43442fa576c7d88cf
3530]
3531[More fixes to tests needed for pluggable backends. refs #999
3532david-sarah@jacaranda.org**20110921184649
3533 Ignore-this: 9be0d3a98e350fd4e17a07d2c00bb4ca
3534]
3535[docs/backends/S3.rst, disk.rst: describe type of space settings as 'quantity of space', not 'str'. refs #999
3536david-sarah@jacaranda.org**20110921031705
3537 Ignore-this: a74ed8e01b0a1ab5f07a1487d7bf138
3538]
3539[docs/backends/S3.rst: remove Issues section. refs #999
3540david-sarah@jacaranda.org**20110921031625
3541 Ignore-this: c83d8f52b790bc32488869e6ee1df8c2
3542]
3543[Fix some incorrect attribute accesses. refs #999
3544david-sarah@jacaranda.org**20110921031207
3545 Ignore-this: f1ea4c3ea191f6d4b719afaebd2b2bcd
3546]
3547[docs/backends: document the configuration options for the pluggable backends scheme. refs #999
3548david-sarah@jacaranda.org**20110920171737
3549 Ignore-this: 5947e864682a43cb04e557334cda7c19
3550]
3551[Work-in-progress, includes fix to bug involving BucketWriter. refs #999
3552david-sarah@jacaranda.org**20110920033803
3553 Ignore-this: 64e9e019421454e4d08141d10b6e4eed
3554]
3555[Pluggable backends -- all other changes. refs #999
3556david-sarah@jacaranda.org**20110919233256
3557 Ignore-this: 1a77b6b5d178b32a9b914b699ba7e957
3558]
3559[Pluggable backends -- new and moved files, changes to moved files. refs #999
3560david-sarah@jacaranda.org**20110919232926
3561 Ignore-this: ec5d2d1362a092d919e84327d3092424
3562]
3563[interfaces.py: 'which -> that' grammar cleanup.
3564david-sarah@jacaranda.org**20110825003217
3565 Ignore-this: a3e15f3676de1b346ad78aabdfb8cac6
3566]
3567[test/test_runner.py: BinTahoe.test_path has rare nondeterministic failures; this patch probably fixes a problem where the actual cause of failure is masked by a string conversion error.
3568david-sarah@jacaranda.org**20110927225336
3569 Ignore-this: 6f1ad68004194cc9cea55ace3745e4af
3570]
3571[docs/configuration.rst: add section about the types of node, and clarify when setting web.port enables web-API service. fixes #1444
3572zooko@zooko.com**20110926203801
3573 Ignore-this: ab94d470c68e720101a7ff3c207a719e
3574]
3575[TAG allmydata-tahoe-1.9.0a2
3576warner@lothar.com**20110925234811
3577 Ignore-this: e9649c58f9c9017a7d55008938dba64f
3578]
3579Patch bundle hash:
3580b1b0675d02811fe9a093152815174cd8239bd24a