Ticket #1807: fix-1807.darcs.patch

File fix-1807.darcs.patch, 152.2 KB (added by davidsarah, at 2012-09-15T03:38:24Z)

src/allmydata/uri.py: Remove unused 'human encoding' methods, and associated tests. fixes #1807

Line 
11 patch for repository /home/davidsarah/tahoe/current:
2
3Sat Sep 15 04:36:26 BST 2012  david-sarah@jacaranda.org
4  * src/allmydata/uri.py: Remove unused 'human encoding' methods, and associated tests. fixes #1807
5
6New patches:
7
8[src/allmydata/uri.py: Remove unused 'human encoding' methods, and associated tests. fixes #1807
9david-sarah@jacaranda.org**20120915033626
10 Ignore-this: 9fcb5e99125678789ba3ea2b19d2b3da
11] {
12hunk ./src/allmydata/test/test_uri.py 42
13         self.failUnlessIdentical(u, u3)
14         self.failUnlessReallyEqual(u.get_verify_cap(), None)
15 
16-        he = u.to_human_encoding()
17-        u_h = uri.LiteralFileURI.init_from_human_encoding(he)
18-        self.failUnlessReallyEqual(u, u_h)
19-
20     def test_empty(self):
21         data = "" # This data is some *very* small data!
22         return self._help_test(data)
23hunk ./src/allmydata/test/test_uri.py 118
24 
25         u_ro = u.get_readonly()
26         self.failUnlessIdentical(u, u_ro)
27-        he = u.to_human_encoding()
28-        self.failUnlessReallyEqual(he, "http://127.0.0.1:3456/uri/" + u.to_string())
29-        self.failUnlessReallyEqual(uri.CHKFileURI.init_from_human_encoding(he), u)
30 
31         u2 = uri.from_string(u.to_string())
32         self.failUnlessReallyEqual(u2.get_storage_index(), storage_index)
33hunk ./src/allmydata/test/test_uri.py 147
34 
35         v2 = uri.from_string(v.to_string())
36         self.failUnlessReallyEqual(v, v2)
37-        he = v.to_human_encoding()
38-        v2_h = uri.CHKFileVerifierURI.init_from_human_encoding(he)
39-        self.failUnlessReallyEqual(v2, v2_h)
40 
41         v3 = uri.CHKFileVerifierURI(storage_index="\x00"*16,
42                                     uri_extension_hash="\x00"*32,
43hunk ./src/allmydata/test/test_uri.py 239
44 
45 class Constraint(testutil.ReallyEqualMixin, unittest.TestCase):
46     def test_constraint(self):
47-        good="http://127.0.0.1:3456/uri/URI%3ADIR2%3Agh3l5rbvnv2333mrfvalmjfr4i%3Alz6l7u3z3b7g37s4zkdmfpx5ly4ib4m6thrpbusi6ys62qtc6mma/"
48-        uri.DirectoryURI.init_from_human_encoding(good)
49-        self.failUnlessRaises(uri.BadURIError, uri.DirectoryURI.init_from_string, good)
50-        bad = good + '==='
51-        self.failUnlessRaises(uri.BadURIError, uri.DirectoryURI.init_from_human_encoding, bad)
52+        bad = "http://127.0.0.1:3456/uri/URI%3ADIR2%3Agh3l5rbvnv2333mrfvalmjfr4i%3Alz6l7u3z3b7g37s4zkdmfpx5ly4ib4m6thrpbusi6ys62qtc6mma/"
53         self.failUnlessRaises(uri.BadURIError, uri.DirectoryURI.init_from_string, bad)
54hunk ./src/allmydata/test/test_uri.py 241
55+
56         fileURI = 'URI:CHK:gh3l5rbvnv2333mrfvalmjfr4i:lz6l7u3z3b7g37s4zkdmfpx5ly4ib4m6thrpbusi6ys62qtc6mma:3:10:345834'
57         uri.CHKFileURI.init_from_string(fileURI)
58 
59hunk ./src/allmydata/test/test_uri.py 263
60         self.failIf(IDirnodeURI.providedBy(u))
61         self.failUnless("WriteableSSKFileURI" in str(u))
62 
63-        he = u.to_human_encoding()
64-        u_h = uri.WriteableSSKFileURI.init_from_human_encoding(he)
65-        self.failUnlessReallyEqual(u, u_h)
66-
67         u2 = uri.from_string(u.to_string())
68         self.failUnlessReallyEqual(u2.writekey, self.writekey)
69         self.failUnlessReallyEqual(u2.fingerprint, self.fingerprint)
70hunk ./src/allmydata/test/test_uri.py 296
71         u3imm = uri.from_string(uri.ALLEGED_IMMUTABLE_PREFIX + u3.to_string())
72         self.failUnless(isinstance(u3imm, uri.UnknownURI), u3imm)
73 
74-        he = u3.to_human_encoding()
75-        u3_h = uri.ReadonlySSKFileURI.init_from_human_encoding(he)
76-        self.failUnlessReallyEqual(u3, u3_h)
77-
78         u4 = uri.ReadonlySSKFileURI(readkey, self.fingerprint)
79         self.failUnlessReallyEqual(u4.fingerprint, self.fingerprint)
80         self.failUnlessReallyEqual(u4.readkey, readkey)
81hunk ./src/allmydata/test/test_uri.py 324
82         self.failUnless(IVerifierURI.providedBy(u7))
83         self.failUnlessReallyEqual(u7.get_storage_index(), u.get_storage_index())
84 
85-        he = u5.to_human_encoding()
86-        u5_h = uri.SSKVerifierURI.init_from_human_encoding(he)
87-        self.failUnlessReallyEqual(u5, u5_h)
88-
89-
90     def test_writeable_mdmf_cap(self):
91         u1 = uri.WriteableMDMFFileURI(self.writekey, self.fingerprint)
92         cap = u1.to_string()
93hunk ./src/allmydata/test/test_uri.py 442
94         self.failUnless(u5.is_readonly())
95         self.failIf(u5.is_mutable())
96 
97-
98-    def test_mdmf_valid_human_encoding(self):
99-        # What's a human encoding? Well, it's of the form:
100-        base = "https://127.0.0.1:3456/uri/"
101-        # With a cap on the end. For each of the cap types, we need to
102-        # test that a valid cap (with and without the traditional
103-        # separators) is recognized and accepted by the classes.
104-        w1 = uri.WriteableMDMFFileURI(self.writekey, self.fingerprint)
105-        r1 = uri.ReadonlyMDMFFileURI(self.readkey, self.fingerprint)
106-        v1 = uri.MDMFVerifierURI(self.storage_index, self.fingerprint)
107-
108-        # These will yield three different caps.
109-        for o in (w1, r1, v1):
110-            url = base + o.to_string()
111-            o1 = o.__class__.init_from_human_encoding(url)
112-            self.failUnlessReallyEqual(o1, o)
113-
114-            # Note that our cap will, by default, have : as separators.
115-            # But it's expected that users from, e.g., the WUI, will
116-            # have %3A as a separator. We need to make sure that the
117-            # initialization routine handles that, too.
118-            cap = o.to_string()
119-            cap = re.sub(":", "%3A", cap)
120-            url = base + cap
121-            o2 = o.__class__.init_from_human_encoding(url)
122-            self.failUnlessReallyEqual(o2, o)
123-
124-
125-    def test_mdmf_human_encoding_invalid_base(self):
126-        # What's a human encoding? Well, it's of the form:
127-        base = "https://127.0.0.1:3456/foo/bar/bazuri/"
128-        # With a cap on the end. For each of the cap types, we need to
129-        # test that a valid cap (with and without the traditional
130-        # separators) is recognized and accepted by the classes.
131-        w1 = uri.WriteableMDMFFileURI(self.writekey, self.fingerprint)
132-        r1 = uri.ReadonlyMDMFFileURI(self.readkey, self.fingerprint)
133-        v1 = uri.MDMFVerifierURI(self.storage_index, self.fingerprint)
134-
135-        # These will yield three different caps.
136-        for o in (w1, r1, v1):
137-            url = base + o.to_string()
138-            self.failUnlessRaises(uri.BadURIError,
139-                                  o.__class__.init_from_human_encoding,
140-                                  url)
141-
142-    def test_mdmf_human_encoding_invalid_cap(self):
143-        base = "https://127.0.0.1:3456/uri/"
144-        # With a cap on the end. For each of the cap types, we need to
145-        # test that a valid cap (with and without the traditional
146-        # separators) is recognized and accepted by the classes.
147-        w1 = uri.WriteableMDMFFileURI(self.writekey, self.fingerprint)
148-        r1 = uri.ReadonlyMDMFFileURI(self.readkey, self.fingerprint)
149-        v1 = uri.MDMFVerifierURI(self.storage_index, self.fingerprint)
150-
151-        # These will yield three different caps.
152-        for o in (w1, r1, v1):
153-            # not exhaustive, obviously...
154-            url = base + o.to_string() + "foobarbaz"
155-            url2 = base + "foobarbaz" + o.to_string()
156-            url3 = base + o.to_string()[:25] + "foo" + o.to_string()[:25]
157-            for u in (url, url2, url3):
158-                self.failUnlessRaises(uri.BadURIError,
159-                                      o.__class__.init_from_human_encoding,
160-                                      u)
161-
162     def test_mdmf_from_string(self):
163         # Make sure that the from_string utility function works with
164         # MDMF caps.
165hunk ./src/allmydata/uri.py 2
166 
167-import re, urllib
168+import re
169 from zope.interface import implements
170 from twisted.python.components import registerAdapter
171 from allmydata.storage.server import si_a2b, si_b2a
172hunk ./src/allmydata/uri.py 23
173 #  - rename all of the *URI classes/interfaces to *Cap
174 #  - make variable and method names consistently use _uri for an URI string,
175 #    and _cap for a Cap object (decoded URI)
176-#  - remove the human_encoding methods?
177 
178 BASE32STR_128bits = '(%s{25}%s)' % (base32.BASE32CHAR, base32.BASE32CHAR_3bits)
179 BASE32STR_256bits = '(%s{51}%s)' % (base32.BASE32CHAR, base32.BASE32CHAR_1bits)
180hunk ./src/allmydata/uri.py 27
181 
182-SEP='(?::|%3A)'
183 NUMBER='([0-9]+)'
184hunk ./src/allmydata/uri.py 28
185-NUMBER_IGNORE='(?:[0-9]+)'
186-
187-# "human-encoded" URIs are allowed to come with a leading
188-# 'http://127.0.0.1:(8123|3456)/uri/' that will be ignored.
189-# Note that nothing in the Tahoe code currently uses the human encoding.
190-OPTIONALHTTPLEAD=r'(?:https?://(?:[^:/]+)(?::%s)?/uri/)?' % NUMBER_IGNORE
191 
192 
193 class _BaseURI:
194hunk ./src/allmydata/uri.py 60
195     STRING_RE=re.compile('^URI:CHK:'+BASE32STR_128bits+':'+
196                          BASE32STR_256bits+':'+NUMBER+':'+NUMBER+':'+NUMBER+
197                          '$')
198-    HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'CHK'+SEP+
199-                     BASE32STR_128bits+SEP+BASE32STR_256bits+SEP+NUMBER+
200-                     SEP+NUMBER+SEP+NUMBER+'$')
201 
202     def __init__(self, key, uri_extension_hash, needed_shares, total_shares,
203                  size):
204hunk ./src/allmydata/uri.py 72
205         if not len(self.storage_index) == 16: # sha256 hash truncated to 128
206             raise BadURIError("storage index must be 16 bytes long")
207 
208-    @classmethod
209-    def init_from_human_encoding(cls, uri):
210-        mo = cls.HUMAN_RE.search(uri)
211-        if not mo:
212-            raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls))
213-        return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)),
214-                   int(mo.group(3)), int(mo.group(4)), int(mo.group(5)))
215-
216     @classmethod
217     def init_from_string(cls, uri):
218         mo = cls.STRING_RE.search(uri)
219hunk ./src/allmydata/uri.py 117
220     BASE_STRING='URI:CHK-Verifier:'
221     STRING_RE=re.compile('^URI:CHK-Verifier:'+BASE32STR_128bits+':'+
222                          BASE32STR_256bits+':'+NUMBER+':'+NUMBER+':'+NUMBER)
223-    HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'CHK-Verifier'+SEP+
224-                        BASE32STR_128bits+SEP+BASE32STR_256bits+SEP+NUMBER+
225-                        SEP+NUMBER+SEP+NUMBER)
226 
227     def __init__(self, storage_index, uri_extension_hash,
228                  needed_shares, total_shares, size):
229hunk ./src/allmydata/uri.py 127
230         self.total_shares = total_shares
231         self.size = size
232 
233-    @classmethod
234-    def init_from_human_encoding(cls, uri):
235-        mo = cls.HUMAN_RE.search(uri)
236-        if not mo:
237-            raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls))
238-        return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)),
239-                   int(mo.group(3)), int(mo.group(4)), int(mo.group(5)))
240-
241     @classmethod
242     def init_from_string(cls, uri):
243         mo = cls.STRING_RE.search(uri)
244hunk ./src/allmydata/uri.py 165
245 
246     BASE_STRING='URI:LIT:'
247     STRING_RE=re.compile('^URI:LIT:'+base32.BASE32STR_anybytes+'$')
248-    HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'LIT'+SEP+base32.BASE32STR_anybytes+'$')
249 
250     def __init__(self, data=None):
251         if data is not None:
252hunk ./src/allmydata/uri.py 171
253             assert isinstance(data, str)
254             self.data = data
255 
256-    @classmethod
257-    def init_from_human_encoding(cls, uri):
258-        mo = cls.HUMAN_RE.search(uri)
259-        if not mo:
260-            raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls))
261-        return cls(base32.a2b(mo.group(1)))
262-
263     @classmethod
264     def init_from_string(cls, uri):
265         mo = cls.STRING_RE.search(uri)
266hunk ./src/allmydata/uri.py 207
267     BASE_STRING='URI:SSK:'
268     STRING_RE=re.compile('^'+BASE_STRING+BASE32STR_128bits+':'+
269                          BASE32STR_256bits+'$')
270-    HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'SSK'+SEP+
271-                        BASE32STR_128bits+SEP+BASE32STR_256bits+'$')
272 
273     def __init__(self, writekey, fingerprint):
274         self.writekey = writekey
275hunk ./src/allmydata/uri.py 215
276         assert len(self.storage_index) == 16
277         self.fingerprint = fingerprint
278 
279-    @classmethod
280-    def init_from_human_encoding(cls, uri):
281-        mo = cls.HUMAN_RE.search(uri)
282-        if not mo:
283-            raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls))
284-        return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
285-
286     @classmethod
287     def init_from_string(cls, uri):
288         mo = cls.STRING_RE.search(uri)
289hunk ./src/allmydata/uri.py 254
290 
291     BASE_STRING='URI:SSK-RO:'
292     STRING_RE=re.compile('^URI:SSK-RO:'+BASE32STR_128bits+':'+BASE32STR_256bits+'$')
293-    HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'SSK-RO'+SEP+BASE32STR_128bits+SEP+BASE32STR_256bits+'$')
294 
295     def __init__(self, readkey, fingerprint):
296         self.readkey = readkey
297hunk ./src/allmydata/uri.py 261
298         assert len(self.storage_index) == 16
299         self.fingerprint = fingerprint
300 
301-    @classmethod
302-    def init_from_human_encoding(cls, uri):
303-        mo = cls.HUMAN_RE.search(uri)
304-        if not mo:
305-            raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls))
306-        return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
307-
308     @classmethod
309     def init_from_string(cls, uri):
310         mo = cls.STRING_RE.search(uri)
311hunk ./src/allmydata/uri.py 300
312 
313     BASE_STRING='URI:SSK-Verifier:'
314     STRING_RE=re.compile('^'+BASE_STRING+BASE32STR_128bits+':'+BASE32STR_256bits+'$')
315-    HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'SSK-Verifier'+SEP+BASE32STR_128bits+SEP+BASE32STR_256bits+'$')
316 
317     def __init__(self, storage_index, fingerprint):
318         assert len(storage_index) == 16
319hunk ./src/allmydata/uri.py 306
320         self.storage_index = storage_index
321         self.fingerprint = fingerprint
322 
323-    @classmethod
324-    def init_from_human_encoding(cls, uri):
325-        mo = cls.HUMAN_RE.search(uri)
326-        if not mo:
327-            raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls))
328-        return cls(si_a2b(mo.group(1)), base32.a2b(mo.group(2)))
329-
330     @classmethod
331     def init_from_string(cls, uri):
332         mo = cls.STRING_RE.search(uri)
333hunk ./src/allmydata/uri.py 336
334 
335     BASE_STRING='URI:MDMF:'
336     STRING_RE=re.compile('^'+BASE_STRING+BASE32STR_128bits+':'+BASE32STR_256bits+'(:|$)')
337-    HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'MDMF'+SEP+BASE32STR_128bits+SEP+BASE32STR_256bits+'(:|$)')
338 
339     def __init__(self, writekey, fingerprint):
340         self.writekey = writekey
341hunk ./src/allmydata/uri.py 344
342         assert len(self.storage_index) == 16
343         self.fingerprint = fingerprint
344 
345-    @classmethod
346-    def init_from_human_encoding(cls, uri):
347-        mo = cls.HUMAN_RE.search(uri)
348-        if not mo:
349-            raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls))
350-        return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
351-
352     @classmethod
353     def init_from_string(cls, uri):
354         mo = cls.STRING_RE.search(uri)
355hunk ./src/allmydata/uri.py 384
356 
357     BASE_STRING='URI:MDMF-RO:'
358     STRING_RE=re.compile('^' +BASE_STRING+BASE32STR_128bits+':'+BASE32STR_256bits+'(:|$)')
359-    HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'MDMF-RO'+SEP+BASE32STR_128bits+SEP+BASE32STR_256bits+'(:|$)')
360 
361     def __init__(self, readkey, fingerprint):
362         self.readkey = readkey
363hunk ./src/allmydata/uri.py 391
364         assert len(self.storage_index) == 16
365         self.fingerprint = fingerprint
366 
367-    @classmethod
368-    def init_from_human_encoding(cls, uri):
369-        mo = cls.HUMAN_RE.search(uri)
370-        if not mo:
371-            raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls))
372-        return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
373-
374     @classmethod
375     def init_from_string(cls, uri):
376         mo = cls.STRING_RE.search(uri)
377hunk ./src/allmydata/uri.py 432
378 
379     BASE_STRING='URI:MDMF-Verifier:'
380     STRING_RE=re.compile('^'+BASE_STRING+BASE32STR_128bits+':'+BASE32STR_256bits+'(:|$)')
381-    HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'MDMF-Verifier'+SEP+BASE32STR_128bits+SEP+BASE32STR_256bits+'(:|$)')
382 
383     def __init__(self, storage_index, fingerprint):
384         assert len(storage_index) == 16
385hunk ./src/allmydata/uri.py 438
386         self.storage_index = storage_index
387         self.fingerprint = fingerprint
388 
389-    @classmethod
390-    def init_from_human_encoding(cls, uri):
391-        mo = cls.HUMAN_RE.search(uri)
392-        if not mo:
393-            raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls))
394-        return cls(si_a2b(mo.group(1)), base32.a2b(mo.group(2)))
395-
396     @classmethod
397     def init_from_string(cls, uri):
398         mo = cls.STRING_RE.search(uri)
399hunk ./src/allmydata/uri.py 482
400             cls.INNER_URI_CLASS.BASE_STRING+bits)
401         return cls(fn)
402 
403-    @classmethod
404-    def init_from_human_encoding(cls, uri):
405-        mo = cls.BASE_HUMAN_RE.search(uri)
406-        if not mo:
407-            raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls))
408-        bits = uri[mo.end():]
409-        while bits and bits[-1] == '/':
410-            bits = bits[:-1]
411-        fn = cls.INNER_URI_CLASS.init_from_string(
412-            cls.INNER_URI_CLASS.BASE_STRING+urllib.unquote(bits))
413-        return cls(fn)
414-
415     def to_string(self):
416         fnuri = self._filenode_uri.to_string()
417         mo = re.match(self.INNER_URI_CLASS.BASE_STRING, fnuri)
418hunk ./src/allmydata/uri.py 515
419 
420     BASE_STRING='URI:DIR2:'
421     BASE_STRING_RE=re.compile('^'+BASE_STRING)
422-    BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2'+SEP)
423     INNER_URI_CLASS=WriteableSSKFileURI
424 
425     def __init__(self, filenode_uri=None):
426hunk ./src/allmydata/uri.py 534
427 
428     BASE_STRING='URI:DIR2-RO:'
429     BASE_STRING_RE=re.compile('^'+BASE_STRING)
430-    BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-RO'+SEP)
431     INNER_URI_CLASS=ReadonlySSKFileURI
432 
433     def __init__(self, filenode_uri=None):
434hunk ./src/allmydata/uri.py 568
435 class ImmutableDirectoryURI(_ImmutableDirectoryBaseURI):
436     BASE_STRING='URI:DIR2-CHK:'
437     BASE_STRING_RE=re.compile('^'+BASE_STRING)
438-    BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-CHK'+SEP)
439     INNER_URI_CLASS=CHKFileURI
440 
441     def get_verify_cap(self):
442hunk ./src/allmydata/uri.py 578
443 class LiteralDirectoryURI(_ImmutableDirectoryBaseURI):
444     BASE_STRING='URI:DIR2-LIT:'
445     BASE_STRING_RE=re.compile('^'+BASE_STRING)
446-    BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-LIT'+SEP)
447     INNER_URI_CLASS=LiteralFileURI
448 
449     def get_verify_cap(self):
450hunk ./src/allmydata/uri.py 590
451 
452     BASE_STRING='URI:DIR2-MDMF:'
453     BASE_STRING_RE=re.compile('^'+BASE_STRING)
454-    BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-MDMF'+SEP)
455     INNER_URI_CLASS=WriteableMDMFFileURI
456 
457     def __init__(self, filenode_uri=None):
458hunk ./src/allmydata/uri.py 612
459 
460     BASE_STRING='URI:DIR2-MDMF-RO:'
461     BASE_STRING_RE=re.compile('^'+BASE_STRING)
462-    BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-MDMF-RO'+SEP)
463     INNER_URI_CLASS=ReadonlyMDMFFileURI
464 
465     def __init__(self, filenode_uri=None):
466hunk ./src/allmydata/uri.py 648
467 
468     BASE_STRING='URI:DIR2-MDMF-Verifier:'
469     BASE_STRING_RE=re.compile('^'+BASE_STRING)
470-    BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-MDMF-Verifier'+SEP)
471     INNER_URI_CLASS=MDMFVerifierURI
472 
473     def __init__(self, filenode_uri=None):
474hunk ./src/allmydata/uri.py 673
475 
476     BASE_STRING='URI:DIR2-Verifier:'
477     BASE_STRING_RE=re.compile('^'+BASE_STRING)
478-    BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-Verifier'+SEP)
479     INNER_URI_CLASS=SSKVerifierURI
480 
481     def __init__(self, filenode_uri=None):
482hunk ./src/allmydata/uri.py 697
483     implements(IVerifierURI)
484     BASE_STRING='URI:DIR2-CHK-Verifier:'
485     BASE_STRING_RE=re.compile('^'+BASE_STRING)
486-    BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-CHK-VERIFIER'+SEP)
487     INNER_URI_CLASS=CHKFileVerifierURI
488 
489 
490}
491
492Context:
493
494[src/allmydata/__init__.py: ensure that if a dependency cannot be imported, we will report that rather than reporting a confusing message about the version and location being None. fixes #1804
495david-sarah@jacaranda.org**20120914021448
496 Ignore-this: b7462521f6884ac03c9d22d7d3680f89
497]
498[docs/quickstart.rst: swap two paragraphs to make it more likely a user will report import and versioning errors from 'bin/tahoe --version' if there are any, before trying to run tests. Also, change 'python setup.py test' to 'python setup.py trial' to avoid a rebuild that might change the dependencies (if setuptools decides to throw a spanner in the works).
499david-sarah@jacaranda.org**20120914021012
500 Ignore-this: f27b372a18a023f2344ed6b2d9dbeb18
501]
502[Apply David-Sarah's recommended changes. Closes #974
503Brian Warner <warner@lothar.com>**20120904224538
504 Ignore-this: 98a7c619609c1f80fb09d47456fbb31f
505]
506[When the CLI cannot connect to the gateway, it prints an error message rather than raising a python exception. Includes a unit test
507Brian Warner <warner@lothar.com>**20120904214850
508 Ignore-this: 514293de38f89880b1e2b4867086c4b6
509 
510 Signed-off-by: Andrew Miller <amiller@dappervision.com>
511]
512[Cosmetic changes to match cloud backend branch.
513david-sarah@jacaranda.org**20120724034049
514 Ignore-this: b17d9f5d00db51769d1c59f7095e0a89
515]
516[interfaces.py: corrections to take into account that lease cancel secrets are no longer honoured.
517david-sarah@jacaranda.org**20120724034006
518 Ignore-this: ee8369e92c8286d6a70d6e161ada2d7a
519]
520[interfaces.py: corrections to interfaces to make more of them checkable.
521david-sarah@jacaranda.org**20120724033924
522 Ignore-this: d98cfffc1017c7b9cb22bccb3aa2e270
523]
524[interfaces.py: which -> that.
525david-sarah@jacaranda.org**20120724033707
526 Ignore-this: db9f83d7550b38e1c4f77deaaf30634e
527]
528[Default arguments in interface declarations should only be used to specify a default, not to specify the type, in order to be checkable.
529david-sarah@jacaranda.org**20120724033446
530 Ignore-this: ce104c65f6f1acef6f686cec89d7c98e
531]
532[Remove spurious 'self' arguments that should not be included in interface declarations.
533david-sarah@jacaranda.org**20120724033256
534 Ignore-this: d2021a7f829d3b9c21af452ef7ae91e6
535]
536[interfaces.py: whitespace
537david-sarah@jacaranda.org**20120724032914
538 Ignore-this: e67916b40b6e2312568e73cfd2753c70
539]
540[docs: fix link to mutable.rst. Thanks to TimothyA for noticing the broken link
541zooko@zooko.com**20120720192402
542 Ignore-this: f15a6d503c9e77fefbf1d1451de5d38f
543]
544[docs/configuration.rst: clarify statement about lack of redundancy when shares.happy <= k. fixes #1793
545david-sarah@jacaranda.org**20120712203026
546 Ignore-this: da28a09f38bb8899a952b5d5588671f0
547]
548[Update release date for 1.9.2.
549david-sarah@jacaranda.org**20120703163010
550 Ignore-this: a9d5279f633dd56525ab497064361fe8
551]
552[Slightly improve the error message when a stats.pickle file cannot be read.
553david-sarah@jacaranda.org**20120703144522
554 Ignore-this: c7a2f5fdf8000d742d8dafd04dfa1b07
555]
556[Relnotes, NEWS and quickstart updates for 1.9.2, with updated release date. refs #1776
557david-sarah@jacaranda.org**20120701231921
558 Ignore-this: 54596027cf95d44efd86bb2b645b98d2
559]
560[Failing to load a crawler state pickle uses default values, but the exception clause to detect this failure is too narrow; it can also fail with EOFError or KeyError for example.
561david-sarah@jacaranda.org**20120702181847
562 Ignore-this: 6082783f5ab8151695c4c06bce0e383a
563]
564[If a stats.pickle file cannot be read, print a better error message.
565david-sarah@jacaranda.org**20120702181555
566 Ignore-this: 43622b9e7bf7ca27e2b5711452a3d6d0
567]
568[Makefile: in check-umids, exclude 'old.py' to avoid false positives.
569david-sarah@jacaranda.org**20120701201711
570 Ignore-this: d3f7b18acc2547b3b1d73ee69fa2ce2e
571]
572[src/allmydata/__init__.py: head off a possible warning on platforms where twisted-conch is a separate package.
573david-sarah@jacaranda.org**20110808182013
574 Ignore-this: 2e4345d7d3c682737dbf98d9e09a3259
575]
576['tahoe --version': remove inconsistent trailing comma, easier to parse
577Brian Warner <warner@lothar.com>**20120626161845
578 Ignore-this: 65d7a62597fdbfe732f3f40f64a9b62b
579]
580[_auto_deps: bump foolscap to >=0.6.3 to tolerate twisted-12.0.0
581Brian Warner <warner@lothar.com>**20120624191024
582 Ignore-this: 871d0be3599decacbfb132b37df50809
583 
584 The current Twisted release is 12.1.0, which (like 12.0.0 before it)
585 isn't compatible with foolscap-0.6.2 and earlier. We previously required
586 foolscap>=0.6.1, since that's all we actually need from foolscap itself.
587 _auto_deps specifies twisted>=11.0.0, so any system that can't meet that
588 will install the current Twisted (12.1.0), which will give them
589 something incompatible with foolscap-0.6.1 and 0.6.2 .
590 
591 If we're limited to setuptools's declarative constraint language (and
592 can't have a function which evaluates the available dependency versions
593 and gives recommendations on which to change), then the only safe
594 approach is to make sure that any acceptable Foolscap version will be
595 compatible with all acceptable Twisted versions. So, bump the foolscap
596 dependency to >=0.6.3, which covers all currently-known
597 incompatibilities.
598]
599[Makefile: Add 'check-rst' target to check .rst files for errors. Also add 'doc-checks' which at the moment just runs check-rst, but might do more in future. fixes #1780
600david-sarah@jacaranda.org**20120623232319
601 Ignore-this: e666fefc0eec37320312d2a3c94a8f87
602]
603[Update docs, notably performance.rst, to include MDMF. fixes #1772
604david-sarah@jacaranda.org**20120623231338
605 Ignore-this: b9840deb111314f1d2f899e968b71b3
606]
607[NEWS.rst: hyperlink reference fixes. refs #1776
608david-sarah@jacaranda.org**20120623220246
609 Ignore-this: 343091cae8d86e7965b30387cad1a691
610]
611[Release notes, NEWS, and quickstart updates for 1.9.2a1. refs #1776
612david-sarah@jacaranda.org**20120623001752
613 Ignore-this: fb86f0c6c7decf78c6ba871e2da9b11
614]
615[Change the maximum mutable share size to 69105 TB, and add a maximum-mutable-share-size field to the version announcement. Includes a test. refs #1778
616david-sarah@jacaranda.org**20120622154354
617 Ignore-this: f93f8a734c1c58dc084572a80af81a8c
618]
619[Release notes and NEWS for 1.9.1. refs #1776
620david-sarah@jacaranda.org**20120621234556
621 Ignore-this: 3d61e522c06efb60c604fe7d22ea7313
622]
623[docs/frontends/FTP-and-SFTP.rst: remove reference to rekeying bug since it does not apply now that we depend on Twisted 11.0. refs #1297 refs #1771
624david-sarah@jacaranda.org**20120618170315
625 Ignore-this: 2fa10cba4677dec9dfc7ee1d86815119
626]
627[_auto_deps.py: bump the Twisted dependency to >= 11.0.0 to avoid Twisted bugs #411 (Deferred recursion limit) and #4395 (SSH server rekeying). refs #1297 fixes #1771
628david-sarah@jacaranda.org**20120617002125
629 Ignore-this: 967826d03c85ce6cd3c91a2238235f1e
630]
631[mutable: fix shape of 'verinfo' tuple returned from MDMFSlotWriteProxy.get_verinfo(). fixes #1669
632david-sarah@jacaranda.org**20120621205221
633 Ignore-this: 15d177d234e2db2945de17ff95051188
634]
635[Tests for ref #1669. Also refactor the existing tests to reduce duplicated code and to fix a cut-and-paste error that caused one case (successful SDMF repair) to go untested.
636david-sarah@jacaranda.org**20120621204627
637 Ignore-this: f77c29ee0cc32469e922712a49879ec2
638]
639[Add assertions to make sure that set_default_encoding_parameters is always called, rather than using hardcoded 3/7/10 defaults. Also update affected tests. Note that this by itself cannot fix the bug mentioned in ticket:1212#comment:41, but it might make it easier to reproduce. refs #1212
640david-sarah@jacaranda.org**20120619020504
641 Ignore-this: 396ff33265981774936851b9970d5dfe
642]
643[docs/frontends/FTP-and-SFTP.rst: listing of directories containing mutable files (but not reading/writing mutable files) is fixed for FTP. Also remove the orphaned trac link to #1688. refs #680
644david-sarah@jacaranda.org**20120618002454
645 Ignore-this: 54a6b44c148c2eda99515f2d54998d39
646]
647[docs: remove mention of #1588 from docs/frontends/FTP-and-SFTP.rst, since it is fixed
648zooko@zooko.com**20120617031404
649 Ignore-this: 99a67ce4680c4ad66e4fe6159e226b80
650]
651[Make the intent of the loop over servers in test_system.Connections.test_rref clearer, and able to be the same in 1.9.2 and trunk. Remove the now-unused node_key_s attribute of Client. refs #1636
652david-sarah@jacaranda.org**20120616181844
653 Ignore-this: b0a769470bc18fd3c45db2f5549bb4ff
654]
655[Fix a bug in mutable publish that could cause an IndexError when a writer is removed in Publish._connection_problem. This version uses DictOfSets as suggested by warner. fixes #1749
656david-sarah@jacaranda.org**20120615034437
657 Ignore-this: 367a37d0fff03c5339296a854ea23e35
658]
659[Skip allmydata.test.test_system.Connections.test_rref unless we have foolscap >= 0.6.4, because of http://foolscap.lothar.com/trac/ticket/196 . refs #1636
660david-sarah@jacaranda.org**20120615232028
661 Ignore-this: 5fdebd85a84b602f44beee9e8b860616
662]
663[After a server disconnects, make the IServer retain the dead RemoteReference, and continue to return it to anyone who calls get_rref(). This removes the need for callers to guard against receiving a None (as long as the server was connected at least once, which is always the case for servers returned by get_servers_for_psi(), which is how all upload/download code gets servers). Includes test. fixes #1636
664david-sarah@jacaranda.org**20120615014855
665 Ignore-this: 55e671d9b7d2fcb45f2249b647e89364
666]
667[Since DeprecationWarning about twisted.internet.interfaces.IFinishableConsumer is suppressed globally, it doesn't need to be suppressed during import. refs #1295
668david-sarah@jacaranda.org**20120614213315
669 Ignore-this: 2a0cded7cab6052e348a3af6d46d0d7a
670]
671[misc/coding_tools/check-interfaces.py: clean-ups (warnings about Windows-specific modules and error stream handling).
672david-sarah@jacaranda.org**20120614212829
673 Ignore-this: 2033d237517525bfdf998a597bc13d13
674]
675[Suppress DeprecationWarning about twisted.internet.interfaces.IFinishableConsumer. This also unifies the handling of DeprecationWarnings that need to be suppressed globally. refs #1295
676david-sarah@jacaranda.org**20120614212308
677 Ignore-this: 44ef1c807f0ffd64712755c82d03a19
678]
679[test/common.py: fix race condition waiting for the helper connection
680Brian Warner <warner@lothar.com>**20120614191835
681 Ignore-this: c2fa3608dec9b1337ae557bd34874d97
682 
683 The wait_for_connections() method, which is used at the start of
684 test_system to make sure that all the clients are connected to all the
685 servers, did not also wait for clients to be connected to their Helpers.
686 Every once in a while, the helper connection would take a bit longer,
687 and then
688 test_system.SystemTest.test_filesystem._test_web._got_welcome_helper
689 would fail, because we'd check for a helper connection before it was
690 ready.
691 
692 The fix is to modify wait_for_connections's polling predicate to look
693 for helper connections (if configured) as well as the regular
694 introducer- and server- connections.
695 
696 Tested by temporarily adding a large (30s) delay to the connectTo() call
697 in Uploader.startService, simulating a long helper
698 connection-establishment delay. This makes the test fail consistently.
699 Then I fixed wait_for_connections(), and the test passed (slowly). Then
700 I removed the delay.
701 
702 Closes #1467
703]
704[Clarify documentation of RIStorageServer.slot_testv_and_readv_and_writev. fixes #1744
705david-sarah@jacaranda.org**20120613165135
706 Ignore-this: d0fca05f06dd9998140d1031bebf8620
707]
708[introweb: the Subscribed Clients list shows tubids, not serverids
709Brian Warner <warner@lothar.com>**20120612213727
710 Ignore-this: a5ff1fd66cfe7b2ee362b7615c8d7ec7
711 
712 Improve the column headers to make it clear that this list shows Tub
713 IDs. (we can't show pubkey-based serverids because clients don't give
714 those to us: only servers provide pubkeys). This should be the only
715 place in the whole webapi that shows TubIDs for modern (V2-introducer)
716 nodes.
717]
718[Display serverids consistently as 8-char pubkey, or 6-char tubid.
719Brian Warner <warner@lothar.com>**20120612213034
720 Ignore-this: 6a6052fc0cd96afbe57b653af3e3c05e
721 
722 This makes it easy to distinguish between old V1-Introducer
723 nodes (identified by their Foolscap TubID) and new V2 nodes (identified
724 by their ed25519 pubkey).
725 
726 This fixes a few places where we used to display a tubid even if we had
727 a pubkey, making it hard to visually correlate servers in two different
728 displays. It also cleans up the way we pass serverids to the JS-based
729 download timeline.
730 
731 The "introweb" subscribed-clients list still shows tubids.
732]
733[test_system.py: wait for the Helper connection properly before uploading
734Brian Warner <warner@lothar.com>**20120612061930
735 Ignore-this: e34a2cce7250e15000bf7a4c2798ccd2
736]
737[test_system.py: clean up control flow, reduce use of stall()
738Brian Warner <warner@lothar.com>**20120612012235
739 Ignore-this: e1bf1aa9bc981df34cd8e0dafce40041
740 
741 The _upload_resumable() test interrupts a Helper upload partway
742 through (by shutting down the Helper), then restarts the Helper and
743 resumes the upload. The control flow is kind of tricky: to do anything
744 "partway through" requires adding a hook to the Uploadable. The previous
745 flow depended upon a (fragile) call to self.stall(), which waits a fixed
746 number of seconds.
747 
748 This removes one of those stall() calls (the remainder is in
749 test/common.py and I'll try removing it in a subsequent revision). It
750 also removes some now-redundant wait_for_connections() calls, since
751 bounce_client() doesn't fire its Deferred until the client has finished
752 coming back up (and uses wait_for_connections() internally to do so).
753]
754[test_system.py: fix minor typo
755Brian Warner <warner@lothar.com>**20120612011636
756 Ignore-this: a7fe88527daa9e6556f9c42d7b7f752e
757]
758[offloaded.py: don't drop the Deferred
759Brian Warner <warner@lothar.com>**20120612011602
760 Ignore-this: fc71d431d616fbbb37946d6d75193485
761 
762 There was one corner case (where the client disconnects at just the
763 wrong time) that could have dropped a Deferred, leading to an Unhandled
764 Error. Clean up the control flow to avoid this case.
765]
766[setup.py and bin/tahoe-script.template: the error when we try to use Python 3 should give the correct minimum Python version (now 2.5). refs #1658
767david-sarah@jacaranda.org**20120611035216
768 Ignore-this: 148f7fb936eca727c54bbc06e48801d7
769]
770[introducer: add sequence-numbers to announcements, ignore replays
771Brian Warner <warner@lothar.com>**20120611021022
772 Ignore-this: 1f0754837df8e48deb314aeff3eefc34
773 
774 This will support revocation of Accounting recommendation records,
775 assuming the gossip-based broadcast channel isn't easily jammed.
776]
777[client.py: rename "server key" to "node key", use old name if present
778Brian Warner <warner@lothar.com>**20120611011455
779 Ignore-this: cf632b9e6925144027dcd453aa4e3e6e
780 
781 This prepares for invitation-based reciprocal-permission Accounting. In
782 the scheme I'm developing, nodes publish "I accept shares from Y"
783 messages, which are assembled into a graph, and server will accept
784 shares from any client node reachable in this graph. For this to work,
785 the serverX->clientY edge must be connectable to the serverY->clientZ
786 edge, which means "clientY" and "serverY" must be connected. If clientY
787 and serverY are two distinct keys, they must be cross-signed. Life is
788 easier if there's just one key "Y", rather than distinct client- and
789 server- keys. Calling this one key "server.privkey" would be confusing.
790 "node.privkey" and "node.pubkey" makes more sense.
791 
792 One-server-per-node is a pretty easy restriction. Originally I was
793 thinking that the client.key should be provided in each webapi call,
794 just like a filecap is, making a single node useable by multiple users
795 (Accounting principals), and not providing any ambient storage
796 authority. But I've been unable to think of a comfortable WUI for
797 that (at least without requiring javascript), nor a friendly way to
798 transfer account authority (e.g. writecaps that include storage
799 authority). So I'm more willing to have one-client-per-node these days.
800 
801 (and note that this rename doesn't seriously preclude
802 many-clients-per-node or zero-clients-per-node anyways, it just makes
803 one-client-per-node less awkward)
804]
805[node.py: add get_private_config()
806Brian Warner <warner@lothar.com>**20120611004638
807 Ignore-this: 29533aedf4e246efa38cbb9bce5b67b7
808 
809 Also add tests for this and the pre-existing private-config methods.
810]
811[Added docs/specifications/backends/raic.rst for ticket #1760
812Brian Warner <warner@lothar.com>**20120610193236
813 Ignore-this: 23eb716a368c0e442d8ce4a5bfa95959
814]
815[Fix text in Publish Status results. Closes #1762.
816Brian Warner <warner@lothar.com>**20120608222146
817 Ignore-this: 69690fc03c93e81e1d66efe77940745f
818]
819[CheckResults corrupt/incompatible shares now return IServers
820Brian Warner <warner@lothar.com>**20120602183912
821 Ignore-this: f8edd8ca693813f311cdc05199c1d2ec
822 
823 DeepResultsBase also has a get_corrupt_shares(), and it is populated
824 from CheckResults.get_corrupt_shares(). It has been updated too, along
825 with get_remaining_corrupt_shares().
826 
827 Remove temporary get_new_corrupt_shares() and
828 get_new_incompatible_shares().
829]
830[CheckResults.get_servers_responding() now returns IServers
831Brian Warner <warner@lothar.com>**20120602183912
832 Ignore-this: 90d55bae8a231dd89f4addee8cb5f2d8
833 
834 Remove temporary get_new_servers_responding().
835]
836[CheckResults.get_sharemap() now returns IServers
837Brian Warner <warner@lothar.com>**20120602183911
838 Ignore-this: 535d6a5416628892ca019f9dafe3e8cb
839 
840 Remove temporary get_new_sharemap().
841]
842[CheckResults: pass IServer to corrupt/incompatible share locators
843Brian Warner <warner@lothar.com>**20120602183911
844 Ignore-this: 11f8930ae6449de33f8d426f70247e8d
845 
846 Getters still return serverid. Adds temporary get_new_corrupt_shares()
847 and get_new_incompatible_shares().
848]
849[CheckResults: pass IServer to servers_responding=, getter returns serverid
850Brian Warner <warner@lothar.com>**20120602183911
851 Ignore-this: c736cf11768bb02633bdabf1612247f4
852 
853 Add temporary get_new_servers_responding().
854]
855[CheckResults: pass IServer to sharemap=, but get_sharemap() returns serverids
856Brian Warner <warner@lothar.com>**20120602183911
857 Ignore-this: 6a03fd26e5e4e6cddda2cec207ec8ed2
858 
859 This changes all code which feeds CheckResults(sharemap=) to provide
860 IServer instances, but CheckResults converts these to old-style
861 serverids during output, so downstream code doesn't have to change yet.
862 
863 It adds a temporary get_new_sharemap(), which *does* return IServer
864 instances, so the immutable repairer can build new CheckResults from an
865 old one. This will go away when get_sharemap() is updated to return
866 IServer (and downstream code is updated too).
867]
868[CheckResults: internal cleanup
869Brian Warner <warner@lothar.com>**20120602183911
870 Ignore-this: fcd1c6918bae4d5ca09014c29a616307
871 
872 replace the one-big-dictionary with normal private attributes
873]
874[CheckResults: privatize remaining attributes
875Brian Warner <warner@lothar.com>**20120602183910
876 Ignore-this: a5e08fd7732255dde8634748d447dbe4
877]
878[CheckResults: use fat init, add type-checking assertions
879Brian Warner <warner@lothar.com>**20120602183910
880 Ignore-this: ac6374aa0da3f510e91bd053aa928780
881 
882 Added assertions for sharemap, servermap, servers_responding,
883 list_corrupt_shares, and list_incompatible_shares.
884]
885[mutable/checker: refactor to make CheckResults easier to change
886Brian Warner <warner@lothar.com>**20120602183910
887 Ignore-this: 36dbc39a32fc1d2b0f4361b29535fa3c
888]
889[CheckResults: replace get_data() with as_dict(), use getters in web status
890Brian Warner <warner@lothar.com>**20120602183910
891 Ignore-this: 217a5b3c63762aef5cbe833e2c318640
892]
893[use the new CheckResult getters almost everywhere
894Brian Warner <warner@lothar.com>**20120602183910
895 Ignore-this: b306cdd9f51184b2826759200cd427ae
896 
897 The remaining get_data() calls are either in
898 web.check_results.json_check_results(), or functioning as repr()s in
899 various unit test failure cases.
900]
901[CheckResults: replace get_data() with a bunch of individual getters
902Brian Warner <warner@lothar.com>**20120602183910
903 Ignore-this: 2e2c976ee12d487d39386d5782991e0d
904]
905[change CheckResults to use a fat set_data()
906Brian Warner <warner@lothar.com>**20120602183910
907 Ignore-this: 24b940b80173dadbfc70ee803574051d
908 
909 i.e. change set_data() to accept lots of parameters, instead of taking
910 a single dictionary with lots of keys. Also Convert all CheckResults
911 creators to use it.
912]
913[CheckResults: simplify self._data
914Brian Warner <warner@lothar.com>**20120602183909
915 Ignore-this: d1fdfb0bcaec56fe0e87c91de87b81a1
916]
917[CheckResults: start hiding .data, first step to clean it up
918Brian Warner <warner@lothar.com>**20120602183909
919 Ignore-this: fdeb1eeeb44f6099cbfdcc80a5060b45
920 
921 The goal is to make CheckResults more strongly typed, and remove the
922 ambiguous ".data" field in favor of a bunch of specific counters and
923 sharelists, so I can changes .sharemap and .servermap to use IServer
924 instances instead of string serverids. By cleaning this up first, I hope
925 to get that task done with less debugging.
926]
927[immutable.CiphertextFileNode.check_and_repair: simplify for refactoring
928Brian Warner <warner@lothar.com>**20120602183909
929 Ignore-this: 28e6a8e8a2d682af4da730908d854143
930 
931 There were too many nested functions here, making some upcoming changes
932 too difficult, so let's refactor it first.
933]
934[docs/quickstart.rst: fix rst warning.
935david-sarah@jacaranda.org**20120601210104
936 Ignore-this: c98d18e2eb028011936ebffd855bf0ea
937]
938[Restore --rterrors option to 'setup.py test' and 'setup.py trial' to keep buildbots happy. refs #1699
939david-sarah@jacaranda.org**20120531222307
940 Ignore-this: 62b8798fa0b50441df64f50ed5f9a117
941]
942[Change 'setup.py test' and 'setup.py trial' to pass --rterrors to trial by default. Suppress using --no-rterrors. Also pass --until-failure/-u to trial. fixes #1699
943david-sarah@jacaranda.org**20120531220000
944 Ignore-this: 78bdfcfb1142ed260197996a3c1b22b1
945]
946[Catch exceptions from CLI in order to prevent the Ubuntu crash monolog from triggering. refs #1746
947david-sarah@jacaranda.org**20120520153529
948 Ignore-this: 1621a76cb85fbb97c241b140557e6d5c
949]
950[node.py: stop stripping whitespace in write_private_config()
951Brian Warner <warner@lothar.com>**20120530071755
952 Ignore-this: 84fe81a4bab679170dffc3e58992ca83
953 
954 It's nice to add newlines to the saved file, so 'cat' is easy to use. We
955 still strip on the input side, in get_or_create_private_config().
956]
957[test_web.py: fix memory leak when run with --until-failure
958Brian Warner <warner@lothar.com>**20120522223949
959 Ignore-this: 17161fd0629fd86d4112220b13e10094
960 
961 The Fake*Node classes in test/common.py were accumulating share data in
962 a class-level dictionary, which persisted from one test run to the next.
963 As a result, running test_web.py over and over (with trial's
964 --until-failure feature) made this dictionary grow without bound,
965 eventually running out of memory.
966 
967 This fix moves that dictionary into the FakeClient built fresh for each
968 test, so it doesn't build up. It does the same thing for "file_types",
969 which was much smaller but still lived at the class level.
970 
971 Closes #1729
972]
973[test/check_memory.py: oops, fix one last ur.uri -> ur.get_uri()
974Brian Warner <warner@lothar.com>**20120522155036
975 Ignore-this: 1f0361a2f9a28e052e02ad4f11463a2b
976]
977[change UploadResults to return IServers, update users to match
978Brian Warner <warner@lothar.com>**20120522041837
979 Ignore-this: 8f553b4e15a739b10db067840d24d794
980 
981 This finally changes all callers of get_servermap()/get_sharemap() to
982 accept IServers, and changes UploadResults to provide them.
983]
984[UploadResults: store IServers internally, but still return serverids
985Brian Warner <warner@lothar.com>**20120522041825
986 Ignore-this: 50f74032f9c4a0b580950e75d36b9151
987 
988 This stores IDisplayableServer-providing instances (StubServers or
989 NativeStorageServers) in the .servermap and .sharemap dictionaries. But
990 get_servermap()/get_sharemap() still return data structures with
991 serverids, not IServers, by translating their data on the way out. This
992 lets us put off changing the callers for a little bit longer.
993]
994[split IDisplayableServer from IServer, add sb.get_stub_server()
995Brian Warner <warner@lothar.com>**20120522041727
996 Ignore-this: d71a29164f7c1651fb2a75391006dea3
997 
998 IDisplayableServer includes just enough functionality to call
999 .get_name() and friends, which is all that the UploadResults really
1000 need. IServer is a superset that includes actual share-manipulation
1001 methods. StubServer instances provide only IDisplayableServer, while
1002 actual NativeStorageServer instances provide the full IServer interface.
1003 
1004 When the Helper sends a serverid (so we know what to call the server but
1005 nothing else about it, and have no corresponding NativeStorageServer
1006 object to reference), but we want to store an IDisplayableServer in the
1007 UploadResults, we create a synthetic StubServer "server" and store that
1008 instead.
1009]
1010[switch UploadResults to use get_uri(), hide internal ._uri
1011Brian Warner <warner@lothar.com>**20120522041444
1012 Ignore-this: 65c9e9fc0ad6f78a782ff11dc834d85c
1013 
1014 Complete the getter-based transformation, by hiding ".uri" and updating
1015 callers to use get_uri(). Also don't set a dummy self._uri, leave it
1016 undefined until someone calls set_uri().
1017]
1018[switch UploadResults to use getters, hide internal data, for all but .uri
1019Brian Warner <warner@lothar.com>**20120522041428
1020 Ignore-this: aa2e8b898d9e3f88a006d46eae109c8
1021 
1022 This hides attributes with e.g. _sharemap, and creates getters like
1023 get_sharemap() to access them, for every field except .uri . This will
1024 make it easier to modify the internal representation of .sharemap
1025 without requiring callers to adjust quite yet.
1026 
1027 ".uri" has so many users that it seemed better to update it in a
1028 subsequent patch.
1029]
1030[convert UploadResults to a fat init
1031Brian Warner <warner@lothar.com>**20120522041414
1032 Ignore-this: 397e665bb8969b7b98e0217b7b0bbee6
1033 
1034 Populate most of UploadResults (except .uri, which is learned later when
1035 using a Helper) in the constructor, instead of allowing creators to
1036 write to attributes later. This will help isolate the fields that we
1037 want to change to use IServers.
1038]
1039[add HelperUploadResults
1040Brian Warner <warner@lothar.com>**20120522041400
1041 Ignore-this: b2043a5adb21d47600d5d0a59ac60879
1042 
1043 This splits the pb.Copyable on-wire object (HelperUploadResults) out
1044 from the local results object (UploadResults). To maintain compatibility
1045 with older Helpers, we have to leave pb.Copyable classes alone and
1046 unmodified, but we want to change UploadResults to use IServers instead
1047 of serverids. So by using a different class on the wire, and translating
1048 to/from it on either end, we can accomplish both.
1049]
1050[Uploader cleanup: create results at end, not beginning
1051Brian Warner <warner@lothar.com>**20120522041347
1052 Ignore-this: 82a8a6d0d32f62f2f7a25f8b8545a2f8
1053 
1054 This will make it easier to populate the UploadResults during __init__,
1055 instead of doing it one-field-at-a-time later.
1056]
1057[clean up Helper to make later changes easier
1058Brian Warner <warner@lothar.com>**20120522041332
1059 Ignore-this: a7ed4d4d1ebbfd5fb5ae04bb2ae3a75b
1060 
1061 Fix up control flow inside the Helper, to make it more friendly for
1062 later refactoring.
1063]
1064[helper: remove timings["existence_check"], aka "Already-In-Grid Check"
1065Brian Warner <warner@lothar.com>**20120522041311
1066 Ignore-this: e0de1fb6a36399135dfc9530e702f669
1067 
1068 This measured how long the Helper took to do a filecheck before asking
1069 for ciphertext. The "Contacting Helper" report includes both
1070 existence_check and the client-helper RTT.
1071 
1072 For non-overlapping uploads, it was being returned correctly. But when
1073 multiple upload requests overlapped, and the file was not already in the
1074 grid, the filecheck would only run once, and its existence_check time
1075 would be reported for all uploaders (even if they didn't have to wait
1076 for that time). Cleaning that up proved too difficult: the only correct
1077 place to report this time is from the initial remote_upload_chk() call,
1078 but the return value of that is too constrained to accomodate it in the
1079 needs-upload case.
1080 
1081 So I'm removing it altogether. Eventually I plan to add a proper
1082 events/times field and record more data, including this check, in a form
1083 that can be drawn on a nice zoomable timeline view.
1084 
1085 Old clients talking to a new Helper (which doesn't supply the value)
1086 will tolerate the loss (they'll just display an empty field on the web
1087 view).
1088]
1089[test_checker: minor improvement in fake-server setup
1090Brian Warner <warner@lothar.com>**20120522024936
1091 Ignore-this: e3d22200a1c7b53e856c5899eb80465
1092 
1093 This prepares for testing the differences between tubid and pubkey-based
1094 name/longname.
1095]
1096[docs/frontends/FTP-and-SFTP.rst: remove outdated allmydata.com reference. fixes #1743
1097david-sarah@jacaranda.org**20120518225618
1098 Ignore-this: a1e38e3f1d2138abd9d32087aeb71b3
1099]
1100[Since we now require Python 2.5, we can use os.SEEK_END.
1101david-sarah@jacaranda.org**20120516213948
1102 Ignore-this: cd9ecbb0c48d79cc7acc5bd27cb99d50
1103]
1104[Simplifications resulting from requiring Python 2.5 and therefore being able to use sqlite3 from the standard library. This also drops sqlite3 from the set of versions and paths we report.
1105david-sarah@jacaranda.org**20120516024725
1106 Ignore-this: c9161f1a95caa85a638aee893361f2cf
1107]
1108[Require Python 2.5.
1109david-sarah@jacaranda.org**20120516024149
1110 Ignore-this: 640715ce841a7a3af92027810baf9e3
1111]
1112[misc/build_helpers/check-interfaces.py: avoid spurious warnings about ignored exceptions on shutdown. Also make the check function able to write errors to an arbitrary stream.
1113david-sarah@jacaranda.org**20120518021252
1114 Ignore-this: 7d6b03286d7b1b4a726ff06f2c07f8c6
1115]
1116[dictutil.DictOfSets: remove .union() method, it was misleading
1117Brian Warner <warner@lothar.com>**20120516235509
1118 Ignore-this: ede3d11bf6de0d01f57b8bd85ff2da22
1119 
1120 Unlike set.union(), which returns a new set, DictOfSets.union() modified
1121 the DictOfSets in-place. The name collision bit me when I changed some
1122 code from using DictOfSets to a normal set, and expected that
1123 set.union() would modify the set in-place. Since there was only one user
1124 of DictOfSets.union, I figured it was safer to just get rid of it.
1125]
1126[immutable repairer: populate servers-responding properly
1127Brian Warner <warner@lothar.com>**20120516235509
1128 Ignore-this: d840f7dc056fa7efeaad1dd3f1c707c6
1129 
1130 If a server did not respond to the pre-repair filecheck, but did respond
1131 to the repair, that server was not correctly added to the
1132 RepairResults.data["servers-responding"] list. (This resulted from a
1133 buggy usage of DictOfSets.union() in filenode.py).
1134 
1135 In addition, servers to which filecheck queries were sent, but did not
1136 respond, were incorrectly added to the servers-responding list
1137 anyawys. (This resulted from code in the checker.py not paying attention
1138 to the 'responded' flag).
1139 
1140 The first bug was neatly masked by the second: it's pretty rare to have
1141 a server suddenly start responding in the one-second window between a
1142 filecheck and a subsequent repair, and if the server was around for the
1143 filecheck, you'd never notice the problem. I only spotted the smelly
1144 code while I was changing it for IServer cleanup purposes.
1145 
1146 I added coverage to test_repairer.py for this. Trying to get that test
1147 to fail before fixing the first bug is what led me to discover the
1148 second bug. I also had to update test_corrupt_file_verno, since it was
1149 incorrectly asserting that 10 servers responded, when in fact one of
1150 them throws an error (but the second bug was causing it to be reported
1151 anyways).
1152]
1153[Update my (davidsarah) gpg fingerprint in CREDITS. Mwahaha! :-)
1154david-sarah@jacaranda.org**20120516231526
1155 Ignore-this: e65336db38ff2227e3d2cce8a31aa397
1156]
1157[fileutil.py: use try/finally to close file in write_atomically.
1158david-sarah@jacaranda.org**20120516230839
1159 Ignore-this: 6bd8cfcedc26ec03acf72334fe0e1ce6
1160]
1161[Change logging.rst to address warner's review comment. refs #1693
1162david-sarah@jacaranda.org**20120516221329
1163 Ignore-this: d578a002b5a0fa117b51981346168148
1164]
1165[write node.url and portnum files atomically, to fix race in test_runner
1166Brian Warner <warner@lothar.com>**20120514220314
1167 Ignore-this: 57eea88ec0efef779769632d43329362
1168 
1169 Previously, test_runner sometimes fails because the _node_has_started()
1170 poller fires after the portnum file has been opened, but before it has
1171 actually been filled, allowing the test process to observe an empty file,
1172 which flunks the test.
1173 
1174 This adds a new fileutil.write_atomically() function (using the usual
1175 write-to-.tmp-then-rename approach), and uses it for both node.url and
1176 client.port . These files are written a bit before the node is really up and
1177 running, but they're late enough for test_runner's purposes, which is to know
1178 when it's safe to read client.port and use 'tahoe restart' (and therefore
1179 SIGINT) to restart the node.
1180 
1181 The current node/client code doesn't offer any better "are you really done
1182 with startup" indicator.. the ideal approach would be to either watch the
1183 logfile, or connect to its flogport, but both are a hassle. Changing the node
1184 to write out a new "all done" file would be intrusive for regular
1185 operations.
1186]
1187[Improve a comment in __init__.py.
1188david-sarah@jacaranda.org**20120514163431
1189 Ignore-this: bbdce3d50dce46e497eba71f9146079e
1190]
1191[Suppress the PowmInsecureWarning from PyCrypto. refs #1586
1192david-sarah@jacaranda.org**20120514032352
1193 Ignore-this: 9cfd6936bc31e320d1ea9d52a495dbaa
1194]
1195[Clarify an ambiguity about which version number is meant in quickstart.rst.
1196david-sarah@jacaranda.org**20120514002637
1197 Ignore-this: afac742bcfb4aba9021b07e7505d4de0
1198]
1199[performance.rst: small updates, mention (lack of) MDMF
1200Brian Warner <warner@lothar.com>**20120513210739
1201 Ignore-this: 8c8beb98b6be5f6b4697cf507798957f
1202 
1203 refs #1398
1204]
1205[CREDITS: add amiller, zooko, rearrange a bit
1206Brian Warner <warner@lothar.com>**20120513173217
1207 Ignore-this: 4db3b71cdaf52e1596532ac9133186ae
1208]
1209[Doc updates and cosmetic fixes for #1115 patch.
1210Brian Warner <warner@lothar.com>**20120513081550
1211 Ignore-this: 87721ec10d0aee1124f2f24bdaea3007
1212 
1213 Removes the caveat from webapi.txt about count-good-share-hosts being wrong.
1214 
1215 This series should close #1115.
1216]
1217[Fixed an error in previous commit where an empty servermap would throw an exception in 'count-good-share-hosts'. Augmented unit test.
1218Brian Warner <warner@lothar.com>**20120513075930
1219 Ignore-this: 8c8937b3b3e15c63d9386628493f394e
1220 
1221 Signed-off-by: Andrew Miller <amiller@dappervision.com>
1222]
1223[Added tests for count-good-share-hosts under check and repair conditions. Patched the incorrect computation in immutable/filenode.py
1224Brian Warner <warner@lothar.com>**20120513075930
1225 Ignore-this: 6a77a5058adf18bca0a3517a77cf6190
1226 
1227 Signed-off-by: Andrew Miller <amiller@dappervision.com>
1228 
1229 Fixed missing import statements
1230 
1231 Signed-off-by: Andrew Miller <amiller@dappervision.com>
1232]
1233[test_web: fix use of headers= that's been wrong for a while
1234Brian Warner <warner@lothar.com>**20120513074512
1235 Ignore-this: 681e1ac6eafd23a0babfe8f182e3ca8
1236]
1237[webapi: don't allow ETags in t=info or t=rename-form, both are variable
1238Brian Warner <warner@lothar.com>**20120513074511
1239 Ignore-this: 40387e1534c9a5c202280d604eddfdcc
1240 
1241 t=info contains randomly-generated ophandles, and t=rename-form contains the
1242 name of the child being renamed, so neither is eligible for a
1243 short-circuiting ETag. Enhanced test_web to exercise this. Had to improve
1244 FakeCHKFileNode slightly to let it participate. Refs #443.
1245]
1246[test_web: improve ETag tests, add If-None-Match test
1247Brian Warner <warner@lothar.com>**20120513074511
1248 Ignore-this: 72702e3237430441a4c98a084ae63df4
1249]
1250[Added unit tests covering #466:comment-15. Refactored the 'etag' behavior for immutable files to respond to all GET '?t=' flags, not just t=None
1251Brian Warner <warner@lothar.com>**20120513074511
1252 Ignore-this: fc3ba31b5678c08752b60fa3dd77fa83
1253 
1254 Signed-off-by: Andrew Miller <amiller@dappervision.com>
1255]
1256[Short circuit GET on ETags match
1257Brian Warner <warner@lothar.com>**20120513074511
1258 Ignore-this: 33d540fbc702c6b43e30d957107ba0b4
1259 
1260 When client does a conditional GET/HEAD with If-none-match:, if the condition
1261 fails (ie, the client's ETag matches the file's) then we can short-circuit
1262 the whole process and immediately return an empty body.
1263]
1264[Add ETags for immutable directories
1265Brian Warner <warner@lothar.com>**20120513074511
1266 Ignore-this: b173e8a1219e5fe906d49edc006da993
1267 
1268 Like immutable files, the ETag is based on the storage index. However, since
1269 a directory is a special interpretation of a file, it is distinguished from
1270 the file by prepending "DIR:" onto the start of the ETag, and adding
1271 -representation on the end (where -representation is the ?t= argument, json,
1272 info, etc).
1273 
1274 It also checks the return of setETag and avoids generating a representation
1275 if the client already has it.
1276]
1277[test-dont-use-too-old-dep.py: fix tarfile timestamps
1278Brian Warner <warner@lothar.com>**20120513063403
1279 Ignore-this: b7acb8e369d768e072f3658b2de9af03
1280 
1281 It turns out that TarFile.addfile() doesn't provide a reasonable default
1282 timestamp, resulting in files dated to 1970 (they're probably wearing
1283 bell-bottoms and listening to disco too). Then, when the bdist_egg command
1284 tries to create a *zip*file with those files, it explodes because zipfiles
1285 cannot handle timestamps before 1980 (it prefers boomboxes and jackets with
1286 straps on the shoulders, thank you very much).
1287 
1288 This puts a modern time.time() on the members of the tarfile, allowing future
1289 cryptocoderarchaeologists the opportunity to make fun of fashion trends from
1290 the user's chosen era, rather than an artificially older one.
1291 
1292 refs #1342
1293]
1294[Add 'tahoe debug flogtool' command, test for --help, and docs. This version gets the help synopses more correct, and changes the doc to say that this command is added in 1.10.0 rather than 1.9.2. fixes #1693
1295david-sarah@jacaranda.org**20120331224122
1296 Ignore-this: 9c2bc2f7b684323515690d658060c3fc
1297]
1298[modify build_helpers files
1299Brian Warner <warner@lothar.com>**20120513034724
1300 Ignore-this: 7f02472b3fbc2bfba4c02acce7d728e7
1301 
1302 Should close #1342. This makes the actual changes to the two test
1303 files (separated from the 'rename' patch to avoid VC complications).
1304]
1305[rename build_helpers files
1306Brian Warner <warner@lothar.com>**20120513034701
1307 Ignore-this: c1e7257dc66d0d35dcbc830fbe04ab9b
1308 
1309 This is from the darcs patch for #1342, which failed to apply on my darcs
1310 tree, so I'm landing it from git. I'm landing the rename-files part
1311 separately from the modify-those-files part to avoid VC complications.
1312]
1313[webapi: remove undocumented t=mkdir-p operation
1314Brian Warner <warner@lothar.com>**20120513021943
1315 Ignore-this: 10bc56cc8bef468881fc7dd5a586bdf9
1316 
1317 Closes #380
1318]
1319[Improve webapi t=move docs.
1320Brian Warner <warner@lothar.com>**20120509234653
1321 Ignore-this: a9342b5cef162c12efec04e2d21ec777
1322]
1323[webui: merge 'move' form with 'rename' form
1324Brian Warner <warner@lothar.com>**20120509212137
1325 Ignore-this: a073958075eb1d041546f68342ec2ba2
1326]
1327[test_web: improve shouldFail2() error reporting
1328Brian Warner <warner@lothar.com>**20120509211837
1329 Ignore-this: 2ab6738d46fead5b49496ba379fd1d98
1330]
1331[webapi 'move'-button cleanups
1332Brian Warner <warner@lothar.com>**20120509211827
1333 Ignore-this: dc3bfe40150969222923f0abcf0ad691
1334 
1335 test_web.py: use shouldFail2(), safer than old shouldFail()
1336 directory.py: forbid slashes in from_name=, return BAD_REQUEST instead of
1337               GONE when trying to move into a non-directory
1338]
1339[Add unit test for moving a directory
1340Brian Warner <warner@lothar.com>**20120509200714
1341 Ignore-this: a915d7ddf007abf8b7d69c8e441d21dd
1342 
1343 My gut tells me this case sould be tested. The rename suite tests it, so
1344 move's will too.
1345]
1346[Change the arbitrary URI support from implied to explicit
1347Brian Warner <warner@lothar.com>**20120509200714
1348 Ignore-this: 1117c90c8f5ea4e4155d3f0ac50e50d9
1349 
1350 The move webapi function now takes a target_type argument which lets it
1351 know whether the target is a subdirectory name or URI. This is an
1352 improvement over the old system in which the move handler tried to guess
1353 whether the target was a name or a URI. Also fixed a little docs
1354 copypaste problem and tweaked some line wrapping.
1355]
1356[Adding 'move' button to web UI, closes #1579
1357Brian Warner <warner@lothar.com>**20120509200713
1358 Ignore-this: d58ce02d31c0683c6859065b8c36f5d6
1359 
1360 This adds "move file" capability to the web UI's directory display. The
1361 support and test framework is heavily based on the similar "rename file"
1362 feature. Unit tests and documentation are included. Multiple in-progress
1363 versions of this patch may be found in ticket 1579. This version
1364 includes arbitrary URI target support and is compatible with the change
1365 from tahoe_css to tahoe.css.
1366]
1367[CREDITS: lebek
1368zooko@zooko.com**20120503173033
1369 Ignore-this: 6c0ff786ce67697f7af7b861593992e3
1370]
1371[Make sure that foolscap.logging.log.setLogDir is called with a str (not unicode) path, v2. Includes test. fixes #1725
1372david-sarah@jacaranda.org**20120429022844
1373 Ignore-this: 1e94ed0c092c5c93c0a4031f8b8df092
1374]
1375[introweb announcements: show serverid, not tubid
1376Brian Warner <warner@lothar.com>**20120424053728
1377 Ignore-this: 4de5d89b06f4f067ec23f879582fdfaa
1378 
1379 'serverid' is the pubkey (for V2 clients), falling back to the tubid (for V1
1380 clients). This also required cleaning up the way the index is created for the
1381 old V1 introducer.
1382]
1383[Fix introweb display for mixed V1/V2 clients. Closes #1721.
1384Brian Warner <warner@lothar.com>**20120423223053
1385 Ignore-this: 766a34730dfce5b2d8c4ee1a411f50fb
1386 
1387 This significantly cleans up the IntroducerServer web-status renderers.
1388 Instead of poking around in the introducer's internals, now the web-status
1389 renderers get clean AnnouncementDescriptor and SubscriberDescriptor
1390 objects. They are still somewhat foolscap-centric, but will provide a clean
1391 abstraction boundary for future improvements.
1392 
1393 The specific #1721 bug was that old (V1) subscribers were handled by
1394 wrapping their RemoteReference in a special WrapV1SubscriberInV2Interface
1395 object, but the web-status display was trying to peek inside the object to
1396 learn what host+port it was associated with, and the wrapper did not proxy
1397 those extra attributes.
1398 
1399 A test was added to test_introducer to make sure the introweb page renders
1400 properly and at least contains the nicknames of both the V1 and V2 clients.
1401]
1402[Updated webapi.rst to list /cap as a synonym for /uri
1403Brian Warner <warner@lothar.com>**20120417184111
1404 Ignore-this: c7dfb12987d883c94948f3fede254fe4
1405]
1406[Adding jg71 to CREDITS
1407markus reichelt <mr@mareichelt.com>**20120414140107
1408 Ignore-this: b69a4c4b5248a7092c550de395192afb
1409]
1410[Fix for ticket #1662
1411Brian Warner <warner@lothar.com>**20120410183314
1412 Ignore-this: b2164418fb1a24cef2bddf1ec3c42eed
1413]
1414[docs/frontends/drop-upload.rst: document more known issues and link to new ticket for an existing one.
1415david-sarah@jacaranda.org**20120406043946
1416 Ignore-this: 72e0a821961fb9137bb6f53742e4ba43
1417]
1418[Change capitalization of WUI and introducer welcome page headings; add test for introducer welcome page. Also fix a typo in a CSS class name. fixes #1708
1419david-sarah@jacaranda.org**20120405235723
1420 Ignore-this: 9b0055847a793528a028679847ab493c
1421]
1422[test/common.py: remove ununsed 'is_bad' mechanism
1423Brian Warner <warner@lothar.com>**20120404191103
1424 Ignore-this: 15b5d8d66e8ee902831b8171a9069763
1425 
1426 This was a premature feature addition to the mock filenode, and gets in the
1427 way of the IServer refactoring I'm trying to do. Best to remove it now and
1428 re-introduce it in a better form later when it's actually needed.
1429]
1430[checker.py: minor simplifications
1431Brian Warner <warner@lothar.com>**20120404190531
1432 Ignore-this: 170f3e70dccd61c1ddb6ea6995ad09ca
1433]
1434[make IServer instances retain identity in copy() and deepcopy()
1435Brian Warner <warner@lothar.com>**20120404181409
1436 Ignore-this: ff39267d0e967cc76591ba5166f63fc7
1437]
1438[move IServer from storage_client.py to interfaces.py
1439Brian Warner <warner@lothar.com>**20120404181359
1440 Ignore-this: 7713ad62faa2841659ce5ed287d0837b
1441]
1442[Rename web CheckResults to -Renderer, to avoid confusion. Closes #1705.
1443Brian Warner <warner@lothar.com>**20120403030451
1444 Ignore-this: 4c3e20d804e70a27d2464f770aec0c2c
1445 
1446 This avoids the name collision between the actual results
1447 objects (defined in allmydata.check_results) and the code that renders
1448 these objects into HTML (defined in allmydata.web.check_results). Only
1449 the web-side objects were renamed.
1450]
1451[webapi.rst: de-tabify
1452Brian Warner <warner@lothar.com>**20120402233205
1453 Ignore-this: 6436168d9073b12e95ff410239bf133f
1454]
1455[servermap.py: oops, fix _done() condition, good catch by davidsarah
1456Brian Warner <warner@lothar.com>**20120401221034
1457 Ignore-this: a5b0f61d83606ebf3493917e69ad4edf
1458]
1459[doc: cross-link known_issues.rst and cautions.rst with one another
1460zooko@zooko.com**20120401214039
1461 Ignore-this: 3873f8807826cb21761cfe65a93955f8
1462]
1463[docs: FTP-and-SFTP.rst: recommend SFTP
1464zooko@zooko.com**20120401212002
1465 Ignore-this: 6459edd6dd0a62a82d3adc62c5656c63
1466 
1467 Add an explicit recommendation of SFTP over FTP. Separate the known issues of
1468 FTP from SFTP. List "SFTP" first in all lists of the two. Use unicode bullet
1469 points and prepend a utf-8 BOM. Use out-of-line rst hyperlinks.
1470 
1471]
1472[interfaces.py: ensure that NoSuchChildError can be converted to str even when it is for a non-ASCII name. fixes #1483
1473david-sarah@jacaranda.org**20110814225959
1474 Ignore-this: d0069952ac7f5a13bdf5e957c7ae78a8
1475]
1476[misc/build_helpers/show-tool-versions.py: s/print_stderr/print_stdout/
1477david-sarah@jacaranda.org**20120401022826
1478 Ignore-this: c69d01081308a8144c9fdb34c4ab40b0
1479]
1480[bin/tahoe-script.template: fix the error message that is displayed when a runner script cannot be found. fixes #1488
1481david-sarah@jacaranda.org**20110817222651
1482 Ignore-this: b92c562e4da9adf63e642512c96eee89
1483]
1484[docs: quickstart: edits
1485zooko@zooko.com**20120401015717
1486 Ignore-this: cb56a1ffedb20d687133ad2ecfd7f8f7
1487 
1488 • use out-of-line links to avoid a warning from rst2html --verbose (fixes #1704)
1489 • reflow to 77 fill-column and prepend utf-8 BOM (fixes #1703)
1490 • recommend Python 2.7 (fixes #1702)
1491 • remove link to wiki:AdvancedInstall (fixes #1701)
1492 
1493]
1494[Spelling error in a comment.
1495david-sarah@jacaranda.org**20120401013655
1496 Ignore-this: 3a5a30be4be27bcfb1fecfd22ccf5327
1497]
1498[test_node.py: test that we tolerate a UTF-8 BOM at the start of tahoe.cfg, and can read UTF-8 option values. refs #1470
1499david-sarah@jacaranda.org**20110808180552
1500 Ignore-this: b4dd630857d192c02acaa6d8b163d5ca
1501]
1502[node.py: tolerate a UTF-8 BOM at the start of tahoe.cfg. fixes #1470
1503david-sarah@jacaranda.org**20110808180204
1504 Ignore-this: 9c859adce5668d7315d0d6e2ed9ddca7
1505]
1506[mutable/layout.py: improve confusing documentation of layout. fixes #1534
1507david-sarah@jacaranda.org**20110914143947
1508 Ignore-this: c5fbd3809ee3f7fc2b46cd23dad6b1c0
1509]
1510[setup: show-tool-versions: report cl only on windows, report buildslave, git, openssl, and lzip, but not 7za
1511zooko@zooko.com**20120401005925
1512 Ignore-this: 2f8d90893271d2f1c2d1185f95d95e86
1513]
1514[Document PYTHONPATH problem when running flogtool. refs #1693
1515david-sarah@jacaranda.org**20120331223934
1516 Ignore-this: 3edb13077119aaee76c1dcc46370e62
1517]
1518[Mutable repair: use new MODE_REPAIR to query all servers *and* get privkey
1519Brian Warner <warner@lothar.com>**20120331183902
1520 Ignore-this: e518c5372afe27331e09f8d70c63764d
1521 
1522 This fixes bug #1689. Repair was using MODE_READ to build the servermap,
1523 which doesn't try hard enough to grab the privkey, and also doesn't guarantee
1524 sending queries to all servers. This patch adds a new MODE_REPAIR which does
1525 both, and does a separate, distinct mapupdate to start wth repair cycle,
1526 instead of relying upon the (MODE_CHECK) mapupdate leftover from the
1527 filecheck that triggered the repair.
1528]
1529[Add test for bug #1689: repairing empty file hits no-privkey assertion
1530Brian Warner <warner@lothar.com>**20120331183902
1531 Ignore-this: e84ead8eb2bfee9c65285b7f9a3a9237
1532]
1533[FTP-and-SFTP.rst: there were two more instances of 'rootcap'. Also made the wording tweak from ticket:1487#comment:4 . fixes #1487
1534david-sarah@jacaranda.org**20120331023247
1535 Ignore-this: 9ce9c37d9aa2b9629b14a001989d51b0
1536]
1537[test_ftp.py: fix a couple of unused imports. refs #1668
1538david-sarah@jacaranda.org**20120331021725
1539 Ignore-this: fc4f24fbc707efe86de9f35b782384ce
1540]
1541[FTP-and-SFTP.rst: directories containing mutable files should now be listable via FTP. refs #680
1542david-sarah@jacaranda.org**20120331013730
1543 Ignore-this: 78e507bd857623e78b32dd0e4da3c59
1544]
1545[ftpd file `size' attribute must be an integer
1546Peter Le Bek <peter@hyperplex.net>**20120322131806
1547 Ignore-this: bcf0047f19226e8dc00cb4995584761a
1548]
1549[unit test for ftpd LIST
1550Peter Le Bek <peter@hyperplex.net>**20120330234139
1551 Ignore-this: dfbb45a030be9840858df6047f21666c
1552]
1553[fix ftpd mtime retrieval
1554Peter Le Bek <peter@hyperplex.net>**20120330234119
1555 Ignore-this: 873cf8d1c28817d7e64565dda43a2ecb
1556]
1557[test_introducer.SystemTest: fix race condition
1558Brian Warner <warner@lothar.com>**20120331002906
1559 Ignore-this: d5cec29c09aca766634b6332c798436f
1560 
1561 SystemTest has a couple of different phases, separated by a poller which
1562 waits for everything to be idle (all messages delivered, none in flight). It
1563 does this by watching some internal "_debug_outstanding" counters in the
1564 server and in each client, and waiting for them to hit zero.
1565 
1566 Just before the last phase, we replace the server with a new one (to make
1567 sure clients re-send their messages properly). Unfortunately, the polling
1568 function closed over the variable holding the original server, and didn't see
1569 the replacement. It kept polling the old server, and failed to notice the
1570 outstanding messages for the new server. The last phase of the test (check3)
1571 was started too early, which failed (since some messages had not yet been
1572 delivered), and then exploded in a flurry of dirty-reactor errors (because
1573 some messages were delivered after test shutdown).
1574 
1575 This replaces the closed-over-variable with a "self.the_introducer", which
1576 seems to fix the race.
1577 
1578 One additional place to look at in the future: the client
1579 announcement-receive path (remote_announce) uses an eventually(). If the
1580 message has been received and the eventual-send posted (but not yet executed)
1581 when the poller sees it, the poller might erroneously conclude that the
1582 client is idle and cause the same problem as above. To fix this, the poller
1583 (probably all pollers) could be enhanced to do a flushEventualQueue before
1584 querying the are-we-done-yet predicate function.
1585]
1586[Cosmetic formatting in docs.
1587david-sarah@jacaranda.org**20120322220534
1588 Ignore-this: 2e3ddb170f45035c4655ce25aaa09977
1589]
1590[Put SFTP before FTP in various docs. fixes #1692
1591david-sarah@jacaranda.org**20120322220453
1592 Ignore-this: 6759fbe5d58a965120b55cf3c1578970
1593]
1594[Correct a link to frontends/drop-upload.rst. fixes #1690
1595david-sarah@jacaranda.org**20120322220118
1596 Ignore-this: dafc6205151545e8095f908dd57c213
1597]
1598[Fix mutable status (mapupdate/retrieve/publish) to use serverids, not tubids
1599Brian Warner <warner@lothar.com>**20120318000135
1600 Ignore-this: 79354457b77fe2d8534fc0b792b6eb0c
1601 
1602 This still leaves immutable-publish results incorrectly using tubids instead
1603 of serverids. That will need some more work, since it might change the Helper
1604 interface.
1605]
1606[IServer.get_name(): remove v0- prefix from displayed server names
1607Brian Warner <warner@lothar.com>**20120318000135
1608 Ignore-this: f3dc25be3ecca5935a4320ca53b70cad
1609 
1610 Don't remove the prefix if it isn't there: that avoids the need to fix tests
1611 which use a bogus key (usually all-zeros).
1612]
1613[Fix a missing comma in the last patch. refs #1295
1614david-sarah@jacaranda.org**20120314235040
1615 Ignore-this: 34327ffeabed65759ad511760f925e47
1616]
1617[Temporarily suppress the DeprecationWarning about IFinishableConsumer; it's irritating, but not in a way that is likely to make me fix the underlying issue (#1525) any sooner :-). refs #1295
1618david-sarah@jacaranda.org**20120314234729
1619 Ignore-this: 2ab43c7893ed305a9d40023ec176d179
1620]
1621[minor: hush pyflakes, move pycryptopp dep to unconditional section
1622Brian Warner <warner@lothar.com>**20120314062035
1623 Ignore-this: 786fae44ad106c7924f8c9644ee0e48d
1624 
1625 Also change Makefile's "pyflakes" rule to emit less output, so buildbot will
1626 count errors properly.
1627]
1628[Update find_links URLs in setup.cfg to https://tahoe-lafs.org. This is not just a doc change; look out for compatibility problems.
1629david-sarah@jacaranda.org**20120313203041
1630 Ignore-this: fd18113695c2a524972c389e8b52e2e8
1631]
1632[Minor updates to URLs.
1633david-sarah@jacaranda.org**20120313202853
1634 Ignore-this: 2e5719e8cf19d7be73fbcba98dc1e5dd
1635]
1636[Update more links from http: to https: in documentation and comments.
1637david-sarah@jacaranda.org**20120313202654
1638 Ignore-this: 2c11cef35639b101412c024896256529
1639]
1640[new introducer: signed extensible dictionary-based messages! refs #466
1641Brian Warner <warner@lothar.com>**20120314012432
1642 Ignore-this: e87de488a26c11711cf6978c9fb1175c
1643 
1644 This introduces new client and server halves to the Introducer (renaming the
1645 old one with a _V1 suffix). Both have fallbacks to accomodate talking to a
1646 different version: the publishing client switches on whether the server's
1647 .get_version() advertises V2 support, the server switches on which
1648 subscription method was invoked by the subscribing client.
1649 
1650 The V2 protocol sends a three-tuple of (serialized announcement dictionary,
1651 signature, pubkey) for each announcement. The V2 server dispatches messages
1652 to subscribers according to the service-name, and throws errors for invalid
1653 signatures, but does not otherwise examine the messages. The V2 receiver's
1654 subscription callback will receive a (serverid, ann_dict) pair. The
1655 'serverid' will be equal to the pubkey if all of the following are true:
1656 
1657   the originating client is V2, and was told a privkey to use
1658   the announcement went through a V2 server
1659   the signature is valid
1660 
1661 If not, 'serverid' will be equal to the tubid portion of the announced FURL,
1662 as was the case for V1 receivers.
1663 
1664 Servers will create a keypair if one does not exist yet, stored in
1665 private/server.privkey .
1666 
1667 The signed announcement dictionary puts the server FURL in a key named
1668 "anonymous-storage-FURL", which anticipates upcoming Accounting-related
1669 changes in the server advertisements. It also provides a key named
1670 "permutation-seed-base32" to tell clients what permutation seed to use. This
1671 is computed at startup, using tubid if there are existing shares, otherwise
1672 the pubkey, to retain share-order compatibility for existing servers.
1673]
1674['tahoe admin generate-keypair/derive-pubkey': add Ed25519 keypair commands
1675Brian Warner <warner@lothar.com>**20120314012432
1676 Ignore-this: 6dff9c61d97f746de338027b72cf1912
1677 
1678 Also add parse_privkey/parse_pubkey tools to util.keyutil
1679]
1680[bump pycryptopp dependency to >=0.6.0, to get ed25519 signatures
1681Brian Warner <warner@lothar.com>**20120314012432
1682 Ignore-this: 6c1cf12a30567880ab2cc53c4282be11
1683 
1684 This is for the upcoming #466 signed-introducer code.
1685]
1686[Update copyright notices. refs #1686
1687david-sarah@jacaranda.org**20120313205057
1688 Ignore-this: a6a4904001412248c4164f002b52f79a
1689]
1690[Make the link on the Welcome page to 'https://tahoe-lafs.org/', not 'http:'. Includes a test. fixes #1682
1691david-sarah@jacaranda.org**20120308231758
1692 Ignore-this: b639c3da453b95ee7edca8090ea1b9aa
1693]
1694[Update various references to allmydata.org or http://tahoe-lafs.org in comments, to https://tahoe-lafs.org. refs #1682
1695david-sarah@jacaranda.org**20120308231719
1696 Ignore-this: a71d00ea46af0a44e5c957df56d02adf
1697]
1698[Suppress a warning from win32eventreactor on Windows (patch v2). fixes #1681
1699david-sarah@jacaranda.org**20120227190317
1700 Ignore-this: c7efe1065d45a00caf182a1de812f4bb
1701]
1702[Add nickname/nodeid to storage-status web page. Closes #1204.
1703Brian Warner <warner@lothar.com>**20120313025736
1704 Ignore-this: 78e533e06c390221edd66c45ec96e34a
1705 
1706 Also add tahoe.css to the page, to make it look slightly prettier.
1707]
1708[add some quick tests of the introducer/web improvements
1709Brian Warner <warner@lothar.com>**20120312193536
1710 Ignore-this: 9e31f368b1dfa586ab6e3f17707d9ec
1711]
1712[introducer web page: add CSS styling, roughly match client Welcome page
1713Brian Warner <warner@lothar.com>**20120307022505
1714 Ignore-this: bfc450f394578a3463f31acc1019862
1715 
1716 Also add /static and the top-level /tahoe.css -type stuff to the introducer's
1717 web server.
1718]
1719[tahoe.css: fix #section typo, update welcome.xhtml to match
1720Brian Warner <warner@lothar.com>**20120307022241
1721 Ignore-this: 4e8a8382234aad017b093f8896b329d6
1722 
1723 The "#section" declaration (which matches id="section") should have been
1724 ".section" (which matches class="section").
1725 
1726 The welcome page has a feature that I actually liked: the little "This
1727 Client" sidebar sits just to the right of the start of the Controls block.
1728 Fixing .section broke that (the clear:both introduces a gap, forcing the
1729 Controls block to start strictly below the bottom of the This Client block).
1730 So I also removed class="section" from the Controls block to allow them to
1731 share the horizontal space again.
1732]
1733[make provisioning/reliability work in the new location, fix tests
1734Brian Warner <warner@lothar.com>**20120216222905
1735 Ignore-this: 8a2923a54ca224fe69fe404e819aaaac
1736]
1737[remove 'provisioning'/'reliability' from WUI, add to misc/operations_helpers
1738Brian Warner <warner@lothar.com>**20120216222905
1739 Ignore-this: 4090c8ac99f139393d9573b65cbbfe0c
1740 
1741 Also remove docs related to reliability/provisioning pages
1742]
1743[provisioning.py: update disk sizes and usage numbers
1744Brian Warner <warner@lothar.com>**20120213155708
1745 Ignore-this: e47ee282bfba4beb2598b227add5250a
1746]
1747[configuration.rst: another attempt to fix formatting of sample tahoe.cfg.
1748david-sarah@jacaranda.org**20120131000949
1749 Ignore-this: bb67b6c9bb191a1335eaadfe9594fa4f
1750]
1751[configuration.rst: remove the obsolete sizelimit option from the sample tahoe.cfg. Also fix the RST formatting of blank lines in the file.
1752david-sarah@jacaranda.org**20120131000643
1753 Ignore-this: 9c5327edf031d8578c19383d950b17b9
1754]
1755[Add a Python 3 blocker to setup.py, to display a better error message when it is run under Python 3.
1756david-sarah@jacaranda.org**20120127015525
1757 Ignore-this: 5f032794ecc8cd6c512a7ab9efffed2
1758]
1759[Ensure that verification proceeds and stops when appropriate.
1760Brian Warner <warner@lothar.com>**20120124205209
1761 Ignore-this: 88278bbd6a3b33cf3b286feaa162ad02
1762 
1763 The removed assertions are appropriate for a download that seeks to
1764 return plaintext to a caller; if we don't have at least k active remote
1765 shares, then we can't hope to do that. They're not appropriate for a
1766 verification operation; a user can try to verify a file that has fewer
1767 than k shares available, so that shouldn't be treated as an error.
1768 Instead, we proceed with fewer than k shares, and ensure that we
1769 terminate the download if we have no shares at all and we're verifying.
1770]
1771[Add test_verify_mdmf_all_bad_sharedata
1772Brian Warner <warner@lothar.com>**20120124205209
1773 Ignore-this: 52acb4f0256af764acb038f7c8344367
1774 
1775 test_verify_mdmf_all_bad_sharedata tests for the regression described
1776 in ticket 1648. In particular, it will trigger the misplaced assertion
1777 in the share activation code. It also tests to make sure that
1778 verification continues with fewer than k shares.
1779]
1780[Added clarification on how interface= works
1781Brian Warner <warner@lothar.com>**20120124203821
1782 Ignore-this: 57f86d178c8e4f3c62d15bf99dec7d0d
1783]
1784[FTP-and-SFTP.rst: minor edits
1785Brian Warner <warner@lothar.com>**20120124203654
1786 Ignore-this: ec21fadb85cf7b3192d32b02c03c3656
1787]
1788[Updated accounts.url directive per warner's suggestions
1789Brian Warner <warner@lothar.com>**20120124203126
1790 Ignore-this: 9297ec6406e11d4e1fe24ba3a06725e3
1791]
1792[Added information on accounts.url directive
1793Brian Warner <warner@lothar.com>**20120124203126
1794 Ignore-this: 6d6142418eabdad789a2fc68f26b3ba1
1795]
1796[docs: an extra newline to separate utf-8 BOF from comment for the sake of trac's rst renderer
1797zooko@zooko.com**20120122212002
1798 Ignore-this: 5c6d0dbfa1430681fa00494937537956
1799]
1800[docs: a newline between the utf-8 BOF and the comment in order to prevent trac from misrendering the comment
1801zooko@zooko.com**20120122211856
1802 Ignore-this: 5e92cb88ba46b82227338522b834b90d
1803 sheesh
1804]
1805[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
1806zooko@zooko.com**20120122211731
1807 Ignore-this: f7912a13ffba60408ec901a9586ce8a4
1808]
1809[docs: insert another newline between utf-8 BOF and title
1810zooko@zooko.com**20120122211427
1811 Ignore-this: 1b3861ef7d4531acfa61fac31e14fe98
1812]
1813[docs: insert newline after utf-8 BOF and before restructuredtext title
1814zooko@zooko.com**20120122182127
1815 Ignore-this: f947afe5bdfc9f44ba9bf7f0e585da7c
1816]
1817[docs: remove utf-8 "BOM" which confuses trac's rst renderer
1818zooko@zooko.com**20120122140052
1819 Ignore-this: ba58c59a314f23c65de5443bd7b6ffcb
1820]
1821[docs: try again to change RestructuredText titles to a format that trac will render
1822zooko@zooko.com**20120122135613
1823 Ignore-this: 588bbb627a95cd8317c809567cfa3e78
1824]
1825[docs: backdoors.rst: fix title formatting
1826zooko@zooko.com**20120122135125
1827 Ignore-this: 5bf980c1a8703ee353cd747ae343176a
1828]
1829[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
1830zooko@zooko.com**20120122134319
1831 Ignore-this: e1b5b3d2809040cfd7f13bb88ee8313d
1832]
1833[update release process: git, not darcs, etc
1834Brian Warner <warner@lothar.com>**20120113071257
1835 Ignore-this: 2eaa1f0e93dc545989bb1e62b2446e1e
1836]
1837[prepare to Org-ify how_to_make_a_tahoe-lafs_release: rename the file
1838Brian Warner <warner@lothar.com>**20120113070153
1839 Ignore-this: d9bb83dfd6c3b4c0ca0efd2adacdf63c
1840]
1841[.gitignore: ignore generated test-coverage files too
1842Brian Warner <warner@lothar.com>**20120113065629
1843 Ignore-this: 4411c7d620f5865b8c4dedef7e5a8c33
1844]
1845[merge relnotes, quickstart.rst from 1.9.1 release
1846Brian Warner <warner@lothar.com>**20120112232420
1847 Ignore-this: 6b535bb1a3bd5ea87ee12cc6b17eeb5c
1848]
1849[retrieve.py: unconditionally check share-hash-tree. Fixes #1654.
1850Brian Warner <warner@lothar.com>**20120112213553
1851 Ignore-this: 7ddc903a382b52bc014262b3b4099165
1852 
1853 Add Kevan's unit test, update known_issues.rst
1854]
1855[.gitignore: also ignore tahoe-deps and .tgz, to fix 'make tarballs'
1856Brian Warner <warner@lothar.com>**20120112210925
1857 Ignore-this: e8a7d942f123ee6bf4f2966ddc2742a3
1858 
1859 Otherwise, the get-version-from-git code thinks the tree is dirty, and
1860 creates SUMO tarballs with -dirty in the name.
1861]
1862[Makefile: fix 'make-version' to use git-or-darcs, not just darcs
1863Brian Warner <warner@lothar.com>**20120112210654
1864 Ignore-this: ae32660458b5ab036ab98f0d1cf4e414
1865]
1866[_auto_deps.py: don't allow pycrypto 2.0.1. fixes #1631
1867david-sarah@jacaranda.org**20120110195758
1868 Ignore-this: de409a745c93a78b095dc72edd13a15d
1869]
1870[MANIFEST.in: make git-based 'setup.py sdist' match darcs
1871Brian Warner <warner@lothar.com>**20120109234637
1872 Ignore-this: 92bf7d679e9d5696994efe39c40ae216
1873 
1874 Previously, tarballs generated from a git tree were lacking a lot of
1875 important non-code files, like docs/
1876]
1877[restore .gitignore, stop .darcs-boringfile it
1878warner@lothar.com**20120109025243
1879 Ignore-this: b37efcdab8662fe85660d68e3662b4b9
1880]
1881[remove setuptools_darcs.egg
1882warner@lothar.com**20120108225545
1883 Ignore-this: 39711cf7a9856acd5a136038d58ca5ff
1884]
1885[fix bundled data under git, remove setuptools_darcs
1886Brian Warner <warner@lothar.com>**20120108221250
1887 Ignore-this: ebfc0b267961523edd7e26c761b2554f
1888 
1889 This uses explicitly enumerated packages= and package_data= arguments to
1890 setup(), rather than relying upon the convenient (but darcs-specific)
1891 functions which would determine these values by asking the revision-control
1892 system.
1893 
1894 Note that darcsver is still used, when building from a darcs tree.
1895]
1896[mutable/retrieve.py: clean up control flow to avoid dropping errors
1897Brian Warner <warner@lothar.com>**20120108221248
1898 Ignore-this: 4e991bdf6399439d2cee3d743814a327
1899 
1900 * replace DeferredList with gatherResults, simplify result handling
1901 * use BadShareError to signal recoverable problems in either fetch or
1902   validate, catch after _validate_block
1903 * _validate_block is thus not responsible for noticing fetch problems
1904 * rename _validation_or_decoding_failed() to _handle_bad_share()
1905 * _get_needed_hashes() returns two Deferreds, instead of a hard-to-unpack
1906   DeferredList
1907]
1908[mutable/layout.py: raise BadShareError instead of assert()
1909Brian Warner <warner@lothar.com>**20120108221247
1910 Ignore-this: 129891a807315f657b80576025135df8
1911]
1912[mutable: don't tell server about corruption unless it's really CorruptShareError
1913Brian Warner <warner@lothar.com>**20120108221245
1914 Ignore-this: 90da01af1008477c45d333a0f74f1c5b
1915]
1916[mutable: simplify Retrieve._process_segment() to use a gatherDeferred
1917Brian Warner <warner@lothar.com>**20120108221244
1918 Ignore-this: cfc7a56414889d02bffd747f1abad8ef
1919]
1920[Retrieve.decode(): simplify setup of DeferredList-like argument
1921Brian Warner <warner@lothar.com>**20120108221240
1922 Ignore-this: c92d377bf4d65251240e59c8db5452af
1923 
1924 make it more obviously match the expectations of _decode_blocks() and
1925 _maybe_decode_and_decrypt_segment()
1926]
1927[mutable: add comments about the tricky DeferredList structures in retrieve
1928Brian Warner <warner@lothar.com>**20120108221238
1929 Ignore-this: da47db692fbdf11a3ce01a952a60d1a0
1930]
1931[add test-git-ignore.py, to port the 'clean' buildbot test to git
1932Brian Warner <warner@lothar.com>**20120108221232
1933 Ignore-this: 442efa1eacc27b7ae2690645ed997894
1934 
1935 add .gitignore to match .darcs-boringfile, mostly
1936]
1937[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
1938david-sarah@jacaranda.org**20111120232426
1939 Ignore-this: d4ea9154e98902c5de055b6de23c48f9
1940]
1941[test_mutable: don't use 75 shares (slow), now that the bug is fixed
1942Brian Warner <warner@lothar.com>**20111228223819
1943 Ignore-this: 930f1a24ebe9ed2ab25e4b2a16e36352
1944 
1945 I missed this part of Kevan's fix-1628.darcs.2.patch .
1946]
1947[mutable publish: fix not-enough-shares detection. Refs #1628.
1948Brian Warner <warner@lothar.com>**20111228055018
1949 Ignore-this: 23db08d8d630268e208e1755509adf92
1950 
1951 This should match the "fix-1628.darcs.2.patch" attachment on that ticket.
1952]
1953[mutable publish: track multiple servers-per-share. Fixes some of #1628.
1954Brian Warner <warner@lothar.com>**20111228053358
1955 Ignore-this: 6e8cb92e70273b81098f73ebf23164bd
1956 
1957 The remaining work is to write additional tests.
1958 
1959 src/allmydata/test/no_network.py:
1960 
1961  This supports tests in which servers leave the grid only to return with
1962  their shares intact at a later time.
1963 
1964 src/allmydata/test/test_mutable.py:
1965 
1966  The UCWEs in the incident reports associated with #1628 all seem to be
1967  associated with shares that the servermap knows about, but which aren't
1968  accounted for during the publish process for whatever reason. Specifically,
1969  it looks like the publisher is only capable of keeping track of a single
1970  storage server for a given share. This makes the repair process worse than
1971  it was pre-MDMF at updating all of the shares of a particular file to the
1972  newest version, and can also cause spurious UCWEs. This test simulates such
1973  a layout and fails if an UCWE is thrown. We need to write another test to
1974  ensure that all copies of a share are updated to the latest version (or
1975  alter this test to do that), so that the test suite doesn't pass unless both
1976  regressions are fixed.
1977 
1978  We want the publisher to follow the existing share placement when uploading
1979  a new version of a mutable file, and we don't want this test to pass unless
1980  it does.
1981 
1982 src/allmydata/mutable/publish.py:
1983 
1984  Before this commit, the publisher only kept track of a single writer for
1985  each share. This is insufficient to handle updates in which a single share
1986  may live on multiple servers. In the best case, an update will only update
1987  one of the existing shares instead of all of them. In some cases, the update
1988  will encounter the existing shares when publishing some other share,
1989  interpret it as a sign of an uncoordinated update, and fail. Keeping track
1990  of all of the writers helps ensure that all existing shares are updated, and
1991  helps avoid spurious uncoordinated write errors.
1992]
1993[docs: how_to_make_a_tahoe-lafs_release.rst add Google+ page to publicity list, change to cute unicode checkboxes
1994zooko@zooko.com**20111226151905
1995 Ignore-this: c7c1e67761df48fa11c0dad1847c2d8
1996]
1997[doc: about.rst: use unicode emdash, use non-embedded URIs, add clarificaiton of when a file gets its mutable-or-immutable nature
1998zooko@zooko.com**20111206171908
1999 Ignore-this: 61bc3f1582c68dcc9867da964fc9bb3a
2000 embedded URIs, although documented here:
2001 http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#embedded-uris
2002 generate messages like this from rst2html --verbose:
2003 
2004 quickstart.rst:3: (INFO/1) Duplicate explicit target name: "the tahoe-dev mailing list".
2005 
2006 Also this patch prepends a "utf-8 BOM" to the beginning of the file.
2007]
2008[minor cleanup: remove trailing spaces in misc/
2009Brian Warner <warner@lothar.com>**20111218201841
2010 Ignore-this: 69a8904c17d8fd930442d00e24b7b188
2011]
2012[Tests for ref #1592.
2013david-sarah@jacaranda.org**20111217043130
2014 Ignore-this: a6713500ebe2d686581c6743b8a88f60
2015]
2016[test_web.py cleanup: use failUnlessIn/failIfIn in preference to 'in' operator.
2017david-sarah@jacaranda.org**20111217042710
2018 Ignore-this: c351f4b1d162eca545ba657dc3c70c19
2019]
2020[Marcus Wanner's favicon patch. fixes #1592
2021david-sarah@jacaranda.org**20111217033201
2022 Ignore-this: 3528c920379fe0d157441dafe9a7c5a8
2023]
2024[setup.py: stop putting pyutil.version_class/etc in _version.py
2025Brian Warner <warner@lothar.com>**20111205055049
2026 Ignore-this: 926fa9a8a34a04f24ee6e006423e9c1
2027 
2028 allmydata.__version__ can just be a string, it doesn't need to be an instance
2029 of some fancy NormalizedVersion class. Everything inside Tahoe uses
2030 str(__version__) anyways.
2031 
2032 Also add .dev0 when a git tree is dirty.
2033 
2034 Closes #1466
2035]
2036[setup.py: get version from git or darcs
2037Brian Warner <warner@lothar.com>**20111205044001
2038 Ignore-this: 5a406b33000446d85edc722298391220
2039 
2040 This replaces the setup.cfg aliases that run "darcsver" before each major
2041 command with the new "update_version". update_version is defined in setup.py,
2042 and tries to get a version string from either darcs or git (or leaves the
2043 existing _version.py alone if neither VC metadata is available).
2044 
2045 Also clean up a tiny typo in verlib.py that messed up syntax hilighting.
2046]
2047[docs/known_issues.rst: describe when the unauthorized access attack is known to be possible, and fix a link.
2048david-sarah@jacaranda.org**20111118002013
2049 Ignore-this: d89b1f1040a0a7ee0bde893d23612049
2050]
2051[more tiny buildbot-testing whitespace changes
2052warner@lothar.com**20111118002041
2053 Ignore-this: e816e2a5ab939e2f7a89ef12b8a157d8
2054]
2055[more tiny buildbot-testing whitespace changes
2056warner@lothar.com**20111118001828
2057 Ignore-this: 57bb52cba83ea9a19728ba0a8ffadb69
2058]
2059[tiny change to exercise the buildbot hook
2060warner@lothar.com**20111118001511
2061 Ignore-this: 7220b7790b39f19f9721d9e93b755030
2062]
2063[Strengthen description of unauthorized access attack in known_issues.rst.
2064david-sarah@jacaranda.org**20111118000030
2065 Ignore-this: e2f68f621fe666b6201542623aa4d182
2066]
2067[remove remaining uses of nevow's "formless" module
2068Brian Warner <warner@lothar.com>**20111117225423
2069 Ignore-this: a128dea91a1c63b3bbefa34729344d69
2070 
2071 We're slowly moving away from Nevow, and marcusw's previous patch removed
2072 uses of the formless CSS file, so now we can stop testing that nevow can find
2073 that file, and remove the lingering unused "import formless" call.
2074]
2075[1585-webui.darcs.patch
2076Marcus Wanner <marcus@wanners.net>**20111117214923
2077 Ignore-this: 23cf2a06c545be5f821c071d652178ee
2078]
2079[Remove duplicate tahoe_css links from manifest.xhtml and rename-form.xhtml
2080Brian Warner <warner@lothar.com>**20111116224225
2081 Ignore-this: 12024fff17964607799928928b9aadf3
2082 
2083 They were probably meant to be links to webform_css, but we aren't really
2084 using Nevow's form-generation code anyways, so they can just be removed.
2085 Thanks to 'marcusw' for the catch.
2086]
2087[iputil: handle openbsd5 (just like openbsd4)
2088Brian Warner <warner@lothar.com>**20111115220423
2089 Ignore-this: 64b28bd2fd06eb5230ea41d91540dd05
2090 
2091 Patch by 'sickness'. Closes #1584
2092]
2093[Makefile count-lines: let it work on OS-X (-l not --lines), add XXX
2094Brian Warner <warner@lothar.com>**20111109184227
2095 Ignore-this: 204ace1dadc9ed27543c62965b4e6757
2096 
2097 OS-X's simple-minded /usr/bin/wc doesn't understand --lines, but everyone
2098 understands -l .
2099]
2100[setup.py: umask=022 for 'sdist', to avoid depending on environment
2101Brian Warner <warner@lothar.com>**20111109183632
2102 Ignore-this: acd5db88ba8f1972d618b14f9e5b803c
2103 
2104 The new tarball-building buildslave had a bogus umask set, causing the 1.9.0
2105 tarballs to be non-other-user-readable (go-rwx), which is a hassle for
2106 packaging. (The umask was correct on the old buildslave, but it was moved to
2107 a new host shortly before the release). This should make sure tarballs are
2108 correct despite the host's setting.
2109 
2110 Note to others: processes run under twistd get umask=077 unless you arrange
2111 otherwise.
2112]
2113[_auto_deps.py: blacklist PyCrypto 2.4.
2114david-sarah@jacaranda.org**20111105022457
2115 Ignore-this: 876cb24bc71589e735f48bf449cad81e
2116]
2117[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
2118david-sarah@jacaranda.org**20111009050301
2119 Ignore-this: 62ee03f4b8a96c292e75c097ad87d52e
2120]
2121[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
2122david-sarah@jacaranda.org**20111009045023
2123 Ignore-this: f49ece515620081da1d745ae6da19d21
2124]
2125[check-miscaptures.py: Python doesn't really have declarations; report the topmost assignment. refs #1555
2126david-sarah@jacaranda.org**20111009044800
2127 Ignore-this: 4905c9dfe7726f433333e216a6760a4b
2128]
2129[check-miscaptures.py: handle destructuring function arguments correctly. refs #1555
2130david-sarah@jacaranda.org**20111009044710
2131 Ignore-this: f9de7d95e94446507a206c88d3f98a23
2132]
2133[check-miscaptures.py: check while loops and list comprehensions as well as for loops. Also fix a pyflakes warning. refs #1555
2134david-sarah@jacaranda.org**20111009044022
2135 Ignore-this: 6526e4e315ca6461b1fbc2da5568e444
2136]
2137[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
2138david-sarah@jacaranda.org**20111007074121
2139 Ignore-this: 51318e9678d132c374ea557ab955e79e
2140]
2141[Fix pyflakes warnings in misc/ directories other than misc/build_helpers. refs #1557
2142david-sarah@jacaranda.org**20111007033031
2143 Ignore-this: 7daf5862469732d8cabc355266622b74
2144]
2145[Makefile: include misc/ directories other than misc/build_helpers in SOURCES. refs #1557
2146david-sarah@jacaranda.org**20111007032958
2147 Ignore-this: 31376ec01401df7972e83341dc65aa05
2148]
2149[show-tool-versions: tolerate missing setuptools
2150Brian Warner <warner@lothar.com>**20111101080010
2151 Ignore-this: 72d4e440565273992beb4f010cbca699
2152]
2153[show-tool-versions.py: condense output, hide file-not-found exceptions
2154Brian Warner <warner@lothar.com>**20111101074532
2155 Ignore-this: a15381a76077ef46a74a4ac40c9ae956
2156]
2157[relnotes.txt: fix footnotes
2158Brian Warner <warner@lothar.com>**20111101071935
2159 Ignore-this: 668c1bd8618e21beed9bc6b23f048189
2160]
2161[Rewrite download-status-timeline visualizer ('viz') with d3.js
2162Brian Warner <warner@lothar.com>**20111101061821
2163 Ignore-this: 6149b027bbae52c559ef5a8167240cab
2164 
2165 * use d3.js v2.4.6
2166 * add a "toggle misc events" button, to get hash/bitmap-checking details
2167 * only draw data that's on screen, for speed
2168 * add fragment-arg to fetch timeline data.json from somewhere else
2169]
2170[IServer refactoring: pass IServer instances around, instead of peerids
2171Brian Warner <warner@lothar.com>**20111101040319
2172 Ignore-this: 35e4698a0273a0311fe0ccedcc7881b5
2173 
2174 refs #1363
2175 
2176 This collapses 88 small incremental changes (each of which passes all tests)
2177 into one big patch. The development process for the long path started with
2178 adding some temporary scaffolding, changing one method at a time, then
2179 removing the scaffolding. The individual pieces are as follows, in reverse
2180 chronological order (the first patch is at the end of this comment):
2181 
2182  commit 9bbe4174fd0d98a6cf47a8ef96e85d9ef34b2f9a
2183  Author: Brian Warner <warner@lothar.com>
2184  Date:   Tue Oct 4 16:05:00 2011 -0400
2185 
2186      immutable/downloader/status.py: correct comment
2187 
2188   src/allmydata/immutable/downloader/status.py |    2 +-
2189   1 files changed, 1 insertions(+), 1 deletions(-)
2190 
2191  commit 72146a7c7c91eac2f7c3ceb801eb7a1721376889
2192  Author: Brian Warner <warner@lothar.com>
2193  Date:   Tue Oct 4 15:46:20 2011 -0400
2194 
2195      remove temporary ServerMap._storage_broker
2196 
2197   src/allmydata/mutable/checker.py   |    2 +-
2198   src/allmydata/mutable/filenode.py  |    2 +-
2199   src/allmydata/mutable/publish.py   |    2 +-
2200   src/allmydata/mutable/servermap.py |    5 ++---
2201   src/allmydata/test/test_mutable.py |    8 ++++----
2202   5 files changed, 9 insertions(+), 10 deletions(-)
2203 
2204  commit d703096b41632c47d76414b12672e076a422ff5c
2205  Author: Brian Warner <warner@lothar.com>
2206  Date:   Tue Oct 4 15:37:05 2011 -0400
2207 
2208      remove temporary storage_broker.get_server_for_id()
2209 
2210   src/allmydata/storage_client.py  |    3 ---
2211   src/allmydata/test/no_network.py |   13 -------------
2212   2 files changed, 0 insertions(+), 16 deletions(-)
2213 
2214  commit 620cc5d80882ef6f7decfd26af8a6c7c1ddf80d1
2215  Author: Brian Warner <warner@lothar.com>
2216  Date:   Tue Oct 4 12:50:06 2011 -0400
2217 
2218      API of Retrieve._try_to_validate_privkey(), trying to remove reader.server
2219 
2220   src/allmydata/mutable/retrieve.py |   10 +++++-----
2221   1 files changed, 5 insertions(+), 5 deletions(-)
2222 
2223  commit 92f43f856f4a8b36c207d1b190ed8699b5a4ecb4
2224  Author: Brian Warner <warner@lothar.com>
2225  Date:   Tue Oct 4 12:48:08 2011 -0400
2226 
2227      API of Retrieve._validate_block(), trying to remove reader.server
2228 
2229   src/allmydata/mutable/retrieve.py |   14 +++++++-------
2230   1 files changed, 7 insertions(+), 7 deletions(-)
2231 
2232  commit 572d5070761861a2190349d1ed8d85dbc25698a5
2233  Author: Brian Warner <warner@lothar.com>
2234  Date:   Tue Oct 4 12:36:58 2011 -0400
2235 
2236      API of Retrieve._mark_bad_share(), trying to remove reader.server
2237 
2238   src/allmydata/mutable/retrieve.py |   21 +++++++++------------
2239   1 files changed, 9 insertions(+), 12 deletions(-)
2240 
2241  commit a793ff00c0de1e2eec7b46288fdf388c7a2bec89
2242  Author: Brian Warner <warner@lothar.com>
2243  Date:   Tue Oct 4 12:06:13 2011 -0400
2244 
2245      remove now-unused get_rref_for_serverid()
2246 
2247   src/allmydata/mutable/servermap.py |    3 ---
2248   1 files changed, 0 insertions(+), 3 deletions(-)
2249 
2250  commit 1b9827cc9366bf90b93297fdd6832f2ad0480ce7
2251  Author: Brian Warner <warner@lothar.com>
2252  Date:   Tue Oct 4 12:03:09 2011 -0400
2253 
2254      Retrieve: stop adding .serverid attributes to readers
2255 
2256   src/allmydata/mutable/retrieve.py |    1 -
2257   1 files changed, 0 insertions(+), 1 deletions(-)
2258 
2259  commit 5d4e9d491b19e49d2e443a1dfff2c672842c36ef
2260  Author: Brian Warner <warner@lothar.com>
2261  Date:   Tue Oct 4 12:03:34 2011 -0400
2262 
2263      return value of Retrieve(verify=True)
2264 
2265   src/allmydata/mutable/checker.py  |   11 ++++++-----
2266   src/allmydata/mutable/retrieve.py |    3 +--
2267   2 files changed, 7 insertions(+), 7 deletions(-)
2268 
2269  commit e9ab7978c384e1f677cb7779dc449b1044face82
2270  Author: Brian Warner <warner@lothar.com>
2271  Date:   Tue Oct 4 11:54:23 2011 -0400
2272 
2273      Retrieve._bad_shares (but not return value, used by Verifier)
2274 
2275   src/allmydata/mutable/retrieve.py |    7 ++++---
2276   1 files changed, 4 insertions(+), 3 deletions(-)
2277 
2278  commit 2d91926de233ec5c881f30e36b4a30ad92ab42a9
2279  Author: Brian Warner <warner@lothar.com>
2280  Date:   Tue Oct 4 11:51:23 2011 -0400
2281 
2282      Publish: stop adding .serverid attributes to writers
2283 
2284   src/allmydata/mutable/publish.py |    9 ++-------
2285   1 files changed, 2 insertions(+), 7 deletions(-)
2286 
2287  commit 47c7a0105dec7cbf4f7e0a3ce800bbb85b15df4a
2288  Author: Brian Warner <warner@lothar.com>
2289  Date:   Tue Oct 4 11:56:33 2011 -0400
2290 
2291      API of get_write_enabler()
2292 
2293   src/allmydata/mutable/filenode.py |    7 ++++---
2294   src/allmydata/mutable/publish.py  |    4 ++--
2295   src/allmydata/test/no_network.py  |    3 +++
2296   3 files changed, 9 insertions(+), 5 deletions(-)
2297 
2298  commit 9196a5c6590fdbfd660325ea8358b345887d3db0
2299  Author: Brian Warner <warner@lothar.com>
2300  Date:   Tue Oct 4 11:46:24 2011 -0400
2301 
2302      API of get_(renewal|cancel)_secret()
2303 
2304   src/allmydata/mutable/filenode.py  |   14 ++++++++------
2305   src/allmydata/mutable/publish.py   |    8 ++++----
2306   src/allmydata/mutable/servermap.py |    5 ++---
2307   3 files changed, 14 insertions(+), 13 deletions(-)
2308 
2309  commit de7c1552f8c163eff5b6d820b5fb3b21c1b47cb5
2310  Author: Brian Warner <warner@lothar.com>
2311  Date:   Tue Oct 4 11:41:52 2011 -0400
2312 
2313      API of CorruptShareError. Also comment out some related+unused test_web.py code
2314 
2315   src/allmydata/mutable/common.py    |   13 +++++--------
2316   src/allmydata/mutable/retrieve.py  |   10 +++++-----
2317   src/allmydata/mutable/servermap.py |    8 +++-----
2318   src/allmydata/test/common.py       |   13 ++++++++-----
2319   4 files changed, 21 insertions(+), 23 deletions(-)
2320 
2321  commit 2c1c314046b620c16f1e66d030c150d768b7d01e
2322  Author: Brian Warner <warner@lothar.com>
2323  Date:   Tue Oct 4 12:01:46 2011 -0400
2324 
2325      API of ServerMap.mark_bad_share()
2326 
2327   src/allmydata/mutable/publish.py   |    2 +-
2328   src/allmydata/mutable/retrieve.py  |    6 +++---
2329   src/allmydata/mutable/servermap.py |    6 ++----
2330   src/allmydata/test/test_mutable.py |    3 +--
2331   4 files changed, 7 insertions(+), 10 deletions(-)
2332 
2333  commit 1bed349030779fd0c378ae4e821384f953c6f6ff
2334  Author: Brian Warner <warner@lothar.com>
2335  Date:   Tue Oct 4 11:11:17 2011 -0400
2336 
2337      API+name of ServerMap.shares_on_server() : only for tests, so debug_ prefix
2338 
2339   src/allmydata/mutable/servermap.py |    7 ++-----
2340   src/allmydata/test/test_mutable.py |    6 +++---
2341   2 files changed, 5 insertions(+), 8 deletions(-)
2342 
2343  commit 2d32e448677d6b818692e801045d4115b29abf21
2344  Author: Brian Warner <warner@lothar.com>
2345  Date:   Tue Oct 4 11:07:10 2011 -0400
2346 
2347      API of ServerMap.all_servers_for_version()
2348 
2349   src/allmydata/mutable/servermap.py |    4 ++--
2350   1 files changed, 2 insertions(+), 2 deletions(-)
2351 
2352  commit 48f3204d1889c3e7179578125c4bdef515af3d6a
2353  Author: Brian Warner <warner@lothar.com>
2354  Date:   Tue Oct 4 11:04:50 2011 -0400
2355 
2356      internals of ServerMap methods that use make_versionmap(), remove temp copy
2357 
2358   src/allmydata/mutable/servermap.py |   28 +++++++++----------------
2359   1 files changed, 10 insertions(+), 18 deletions(-)
2360 
2361  commit 5c3da77b6c777a145bd5ddfaa4db849dc9495548
2362  Author: Brian Warner <warner@lothar.com>
2363  Date:   Tue Oct 4 11:01:28 2011 -0400
2364 
2365      API of ServerMap.make_versionmap()
2366 
2367   src/allmydata/mutable/checker.py   |    4 ++--
2368   src/allmydata/mutable/retrieve.py  |    5 ++---
2369   src/allmydata/mutable/servermap.py |    4 ++--
2370   src/allmydata/test/test_mutable.py |    7 ++++---
2371   4 files changed, 10 insertions(+), 10 deletions(-)
2372 
2373  commit b6882ece49afb4c507d118af2db346fa329209dc
2374  Author: Brian Warner <warner@lothar.com>
2375  Date:   Tue Oct 4 10:53:38 2011 -0400
2376 
2377      make a copy of ServerMap.make_versionmap() (_make_versionmap2) for internal use
2378 
2379   src/allmydata/mutable/servermap.py |   18 +++++++++++++-----
2380   1 files changed, 13 insertions(+), 5 deletions(-)
2381 
2382  commit 963f8e63faf32b950eb1b8103cd2ff16fe8f0151
2383  Author: Brian Warner <warner@lothar.com>
2384  Date:   Tue Oct 4 00:45:58 2011 -0400
2385 
2386      API of RetrieveStatus.add_problem()
2387 
2388   src/allmydata/mutable/retrieve.py |    5 +++--
2389   1 files changed, 3 insertions(+), 2 deletions(-)
2390 
2391  commit 4976d29ffae565a048851601c29013bbae2976d8
2392  Author: Brian Warner <warner@lothar.com>
2393  Date:   Tue Oct 4 00:45:05 2011 -0400
2394 
2395      API of RetrieveStatus.add_fetch_timing()
2396 
2397   src/allmydata/mutable/retrieve.py |    5 +++--
2398   1 files changed, 3 insertions(+), 2 deletions(-)
2399 
2400  commit d057d3bbba72663ee148a8b916bc2d52be2e3982
2401  Author: Brian Warner <warner@lothar.com>
2402  Date:   Tue Oct 4 00:44:04 2011 -0400
2403 
2404      API of Retrieve.notify_server_corruption()
2405 
2406   src/allmydata/mutable/retrieve.py |    6 +++---
2407   1 files changed, 3 insertions(+), 3 deletions(-)
2408 
2409  commit 8a2a81e46671c860610e0e96d6add1a57551f22d
2410  Author: Brian Warner <warner@lothar.com>
2411  Date:   Tue Oct 4 00:42:32 2011 -0400
2412 
2413      remove unused _outstanding_queries
2414 
2415   src/allmydata/mutable/retrieve.py |    1 -
2416   1 files changed, 0 insertions(+), 1 deletions(-)
2417 
2418  commit 56d12cc9968d03ccd53764455c671122c4f391d1
2419  Author: Brian Warner <warner@lothar.com>
2420  Date:   Tue Oct 4 00:40:57 2011 -0400
2421 
2422      change Retrieve.remaining_sharemap
2423 
2424   src/allmydata/mutable/retrieve.py |    4 ++--
2425   1 files changed, 2 insertions(+), 2 deletions(-)
2426 
2427  commit 4f0b7af4821f43290bfc70f2b1fc30149ad81281
2428  Author: Brian Warner <warner@lothar.com>
2429  Date:   Tue Oct 4 10:40:18 2011 -0400
2430 
2431      accessor for PublishStatus._problems
2432 
2433   src/allmydata/mutable/publish.py |    4 +++-
2434   src/allmydata/web/status.py      |    2 +-
2435   2 files changed, 4 insertions(+), 2 deletions(-)
2436 
2437  commit 627087cf66d0b8cc519f4d551a967a7bd9b6a741
2438  Author: Brian Warner <warner@lothar.com>
2439  Date:   Tue Oct 4 10:36:39 2011 -0400
2440 
2441      accessor for RetrieveStatus._problems
2442 
2443   src/allmydata/mutable/retrieve.py |    8 ++++++--
2444   src/allmydata/web/status.py       |    2 +-
2445   2 files changed, 7 insertions(+), 3 deletions(-)
2446 
2447  commit ca7dea81f03801b1c7353fc00ecba689268109cf
2448  Author: Brian Warner <warner@lothar.com>
2449  Date:   Tue Oct 4 00:35:32 2011 -0400
2450 
2451      add .server to "reader", so we can get at it later
2452 
2453   src/allmydata/mutable/retrieve.py |    5 +++--
2454   1 files changed, 3 insertions(+), 2 deletions(-)
2455 
2456  commit 6ef516e24908ec195af084a7550d1921a5e983b0
2457  Author: Brian Warner <warner@lothar.com>
2458  Date:   Tue Oct 4 00:32:32 2011 -0400
2459 
2460      temporarily give Retrieve a _storage_broker, so it can map serverids to servers
2461 
2462   src/allmydata/mutable/checker.py   |    3 ++-
2463   src/allmydata/mutable/filenode.py  |    6 ++++--
2464   src/allmydata/mutable/retrieve.py  |    5 +++--
2465   src/allmydata/test/test_mutable.py |    4 ++--
2466   4 files changed, 11 insertions(+), 7 deletions(-)
2467 
2468  commit afe08e4dd3f4ff9ff7e8a2a8d28b181e3625bcc9
2469  Author: Brian Warner <warner@lothar.com>
2470  Date:   Tue Oct 4 00:21:51 2011 -0400
2471 
2472      mutable/retrieve.py: s/peer/server/
2473 
2474   src/allmydata/mutable/retrieve.py  |   82 +++++++++++++-------------
2475   src/allmydata/test/test_mutable.py |    6 +-
2476   2 files changed, 44 insertions(+), 44 deletions(-)
2477 
2478  commit 910afcb5d7f274880f68dd6cdb5b05f2bbc29adc
2479  Author: Brian Warner <warner@lothar.com>
2480  Date:   Tue Oct 4 00:16:01 2011 -0400
2481 
2482      web.status.PublishStatusPage: add comment, I think .problems isn't exercised
2483 
2484   src/allmydata/web/status.py |    2 ++
2485   1 files changed, 2 insertions(+), 0 deletions(-)
2486 
2487  commit 311466dd8c931bbba40d590ade867704282e7f1a
2488  Author: Brian Warner <warner@lothar.com>
2489  Date:   Mon Oct 3 23:48:16 2011 -0400
2490 
2491      API of PublishStatus.add_per_server_time()
2492 
2493   src/allmydata/mutable/publish.py |    5 +++--
2494   1 files changed, 3 insertions(+), 2 deletions(-)
2495 
2496  commit 2df5faa1b6cbfbaded520d2320305a62fe961118
2497  Author: Brian Warner <warner@lothar.com>
2498  Date:   Mon Oct 3 23:46:37 2011 -0400
2499 
2500      more simplifications
2501 
2502   src/allmydata/mutable/publish.py |    4 +---
2503   1 files changed, 1 insertions(+), 3 deletions(-)
2504 
2505  commit 6ac4544a3da385f2aad9392f906b90192f4f919a
2506  Author: Brian Warner <warner@lothar.com>
2507  Date:   Mon Oct 3 23:44:08 2011 -0400
2508 
2509      API of ServerMap.version_on_server()
2510 
2511   src/allmydata/mutable/publish.py   |    2 +-
2512   src/allmydata/mutable/servermap.py |    4 ++--
2513   src/allmydata/test/test_mutable.py |    5 ++---
2514   3 files changed, 5 insertions(+), 6 deletions(-)
2515 
2516  commit 3e187e322511072e4683329df6b2c6c733a66dba
2517  Author: Brian Warner <warner@lothar.com>
2518  Date:   Tue Oct 4 00:16:32 2011 -0400
2519 
2520      API of ServerMap.make_sharemap()
2521 
2522   src/allmydata/mutable/servermap.py |    4 ++--
2523   src/allmydata/test/test_mutable.py |    7 ++++---
2524   src/allmydata/web/status.py        |    4 ++--
2525   3 files changed, 8 insertions(+), 7 deletions(-)
2526 
2527  commit 318feed8437bdd8d4943c6569d38f7b54b6313cc
2528  Author: Brian Warner <warner@lothar.com>
2529  Date:   Mon Oct 3 23:36:19 2011 -0400
2530 
2531      small cleanups
2532 
2533   src/allmydata/mutable/publish.py |    4 ++--
2534   1 files changed, 2 insertions(+), 2 deletions(-)
2535 
2536  commit bd459ed5714e1db5a7163935c54b7b0b56db8349
2537  Author: Brian Warner <warner@lothar.com>
2538  Date:   Mon Oct 3 23:33:39 2011 -0400
2539 
2540      API of ServerMap.add_new_share()
2541 
2542   src/allmydata/mutable/publish.py   |    4 ++--
2543   src/allmydata/mutable/servermap.py |    6 ++----
2544   2 files changed, 4 insertions(+), 6 deletions(-)
2545 
2546  commit f2804fb6ed11d80088e0da8ed48e6c2922f2ffef
2547  Author: Brian Warner <warner@lothar.com>
2548  Date:   Mon Oct 3 23:30:26 2011 -0400
2549 
2550      API of ServerMap.get_bad_shares()
2551 
2552   src/allmydata/mutable/publish.py   |    3 +--
2553   src/allmydata/mutable/servermap.py |    9 ++++-----
2554   2 files changed, 5 insertions(+), 7 deletions(-)
2555 
2556  commit 965074a47b3ce1431cb46d9a233840afcf9105f5
2557  Author: Brian Warner <warner@lothar.com>
2558  Date:   Mon Oct 3 23:26:58 2011 -0400
2559 
2560      more small cleanups
2561 
2562   src/allmydata/mutable/publish.py |    6 +++---
2563   1 files changed, 3 insertions(+), 3 deletions(-)
2564 
2565  commit 38020da34f034f8889947dd3dc05e087ffff7106
2566  Author: Brian Warner <warner@lothar.com>
2567  Date:   Mon Oct 3 23:18:47 2011 -0400
2568 
2569      change Publish.bad_share_checkstrings
2570 
2571   src/allmydata/mutable/publish.py |    6 +++---
2572   1 files changed, 3 insertions(+), 3 deletions(-)
2573 
2574  commit 5efebcbd2ee0c2f299ea86f7591d856c0f265304
2575  Author: Brian Warner <warner@lothar.com>
2576  Date:   Mon Oct 3 23:16:31 2011 -0400
2577 
2578      change internals of Publish.update_goal()
2579 
2580   src/allmydata/mutable/publish.py |    8 +++-----
2581   1 files changed, 3 insertions(+), 5 deletions(-)
2582 
2583  commit e91b55ff4c2a69165b71f2c7b217ac319ff4c527
2584  Author: Brian Warner <warner@lothar.com>
2585  Date:   Mon Oct 3 23:11:42 2011 -0400
2586 
2587      get rid of Publish.connections
2588 
2589   src/allmydata/mutable/publish.py |   27 +++++----------------------
2590   1 files changed, 5 insertions(+), 22 deletions(-)
2591 
2592  commit 64e9a53b3229ebe2f9ebf7ed502d539311d0e037
2593  Author: Brian Warner <warner@lothar.com>
2594  Date:   Mon Oct 3 23:05:32 2011 -0400
2595 
2596      change Publish.bad_servers
2597 
2598   src/allmydata/mutable/publish.py |   10 +++++-----
2599   1 files changed, 5 insertions(+), 5 deletions(-)
2600 
2601  commit b85a934bef315a06bcfe00c9c12a3627fed2b918
2602  Author: Brian Warner <warner@lothar.com>
2603  Date:   Mon Oct 3 23:03:07 2011 -0400
2604 
2605      Publish.bad_servers: fix bug, this should be a set of serverids, not writers
2606 
2607   src/allmydata/mutable/publish.py |    2 +-
2608   1 files changed, 1 insertions(+), 1 deletions(-)
2609 
2610  commit 605ea15ec15ed671513819003ccd211cdb9761e0
2611  Author: Brian Warner <warner@lothar.com>
2612  Date:   Mon Oct 3 23:00:21 2011 -0400
2613 
2614      change .placed
2615 
2616   src/allmydata/mutable/publish.py |    6 +++---
2617   1 files changed, 3 insertions(+), 3 deletions(-)
2618 
2619  commit f7aba37b1b345d5b6d5cb16e3b3f6f3c1afb658e
2620  Author: Brian Warner <warner@lothar.com>
2621  Date:   Mon Oct 3 22:59:22 2011 -0400
2622 
2623      temporarily stash IServer as .server on the "writer" object
2624 
2625   src/allmydata/mutable/publish.py |    2 ++
2626   1 files changed, 2 insertions(+), 0 deletions(-)
2627 
2628  commit f9b551d788e7db1f187fce5ab98ab5d5fe4e1c36
2629  Author: Brian Warner <warner@lothar.com>
2630  Date:   Mon Oct 3 22:48:18 2011 -0400
2631 
2632      change Publish.goal and API of log_goal() to use IServer, not serverid
2633 
2634   src/allmydata/mutable/publish.py |   48 ++++++++++++++--------------
2635   1 files changed, 24 insertions(+), 24 deletions(-)
2636 
2637  commit 75f20616558e4900b8b1f685dd99aa838de6d452
2638  Author: Brian Warner <warner@lothar.com>
2639  Date:   Mon Oct 3 15:27:02 2011 -0400
2640 
2641      API of ServerMap.get_known_shares()
2642 
2643   src/allmydata/mutable/publish.py   |   16 ++++++++++------
2644   src/allmydata/mutable/servermap.py |    7 ++-----
2645   2 files changed, 12 insertions(+), 11 deletions(-)
2646 
2647  commit 1c38c9d37bb08221b4418762234b1a62397b3b4b
2648  Author: Brian Warner <warner@lothar.com>
2649  Date:   Mon Oct 3 15:20:29 2011 -0400
2650 
2651      Publish.full_serverlist
2652 
2653   src/allmydata/mutable/publish.py |   10 +++++-----
2654   1 files changed, 5 insertions(+), 5 deletions(-)
2655 
2656  commit b6cbd215a04b9cde31a7d92a97a7f048622b16f1
2657  Author: Brian Warner <warner@lothar.com>
2658  Date:   Mon Oct 3 15:12:31 2011 -0400
2659 
2660      API of ServerMap.all_servers()
2661 
2662   src/allmydata/mutable/servermap.py |   19 ++++++-------------
2663   1 files changed, 6 insertions(+), 13 deletions(-)
2664 
2665  commit e63cd0315fae65357b1727ec6d5ff3c6e0d27c98
2666  Author: Brian Warner <warner@lothar.com>
2667  Date:   Mon Oct 3 15:10:18 2011 -0400
2668 
2669      remove ServerMap.connections, set_rref_for_serverid()
2670 
2671   src/allmydata/mutable/servermap.py |   11 +----------
2672   1 files changed, 1 insertions(+), 10 deletions(-)
2673 
2674  commit 4df52db2f80eb12eefa5d57103c24893cde89553
2675  Author: Brian Warner <warner@lothar.com>
2676  Date:   Mon Oct 3 15:04:06 2011 -0400
2677 
2678      API of ServerMap.mark_server_reachable()
2679 
2680   src/allmydata/mutable/servermap.py |    7 ++-----
2681   1 files changed, 2 insertions(+), 5 deletions(-)
2682 
2683  commit 69c715bde77944dc25181b3dbbeb042c816f9a1b
2684  Author: Brian Warner <warner@lothar.com>
2685  Date:   Mon Oct 3 15:03:21 2011 -0400
2686 
2687      API of ServerMap.mark_server_unreachable()
2688 
2689   src/allmydata/mutable/servermap.py |    9 +++------
2690   1 files changed, 3 insertions(+), 6 deletions(-)
2691 
2692  commit 3d784d60eec1c508858e3a617e4411ffbcc3c1fa
2693  Author: Brian Warner <warner@lothar.com>
2694  Date:   Mon Oct 3 15:02:03 2011 -0400
2695 
2696      API of status.set_privkey_from()
2697 
2698   src/allmydata/mutable/servermap.py |    7 +++----
2699   1 files changed, 3 insertions(+), 4 deletions(-)
2700 
2701  commit 544ed3ea29bed7e66da7fd29ca3f6f076f27a9e6
2702  Author: Brian Warner <warner@lothar.com>
2703  Date:   Mon Oct 3 15:01:15 2011 -0400
2704 
2705      API of status.add_per_server_time()
2706 
2707   src/allmydata/mutable/servermap.py |    7 ++++---
2708   1 files changed, 4 insertions(+), 3 deletions(-)
2709 
2710  commit fffe5008b6320bd1e04c3c68389a2bf2ee383fa8
2711  Author: Brian Warner <warner@lothar.com>
2712  Date:   Mon Oct 3 14:59:02 2011 -0400
2713 
2714      remove unused .versionmap
2715 
2716   src/allmydata/mutable/servermap.py |    7 -------
2717   1 files changed, 0 insertions(+), 7 deletions(-)
2718 
2719  commit 2816562e090d2294179db3588dafcca18de1bc2b
2720  Author: Brian Warner <warner@lothar.com>
2721  Date:   Mon Oct 3 14:57:51 2011 -0400
2722 
2723      remove serverid from all log messages. Also one unused lambda.
2724 
2725   src/allmydata/mutable/servermap.py |   30 +++++++++++++-------------
2726   1 files changed, 15 insertions(+), 15 deletions(-)
2727 
2728  commit 28fa6b1a2738fa98c1f1dbd3d0e01ae98912d11f
2729  Author: Brian Warner <warner@lothar.com>
2730  Date:   Mon Oct 3 14:54:30 2011 -0400
2731 
2732      removed unused _readers
2733 
2734   src/allmydata/mutable/servermap.py |    3 ---
2735   1 files changed, 0 insertions(+), 3 deletions(-)
2736 
2737  commit a8e4ed3d645ab592d1add6a1e69b6d1ebfb77817
2738  Author: Brian Warner <warner@lothar.com>
2739  Date:   Mon Oct 3 14:54:16 2011 -0400
2740 
2741      remove unused _sharemap
2742 
2743   src/allmydata/mutable/servermap.py |    1 -
2744   1 files changed, 0 insertions(+), 1 deletions(-)
2745 
2746  commit 3f072e55cf1d0700f9fffe23f8f3a475725df588
2747  Author: Brian Warner <warner@lothar.com>
2748  Date:   Mon Oct 3 14:49:03 2011 -0400
2749 
2750      _must_query
2751 
2752   src/allmydata/mutable/servermap.py |    8 ++++----
2753   1 files changed, 4 insertions(+), 4 deletions(-)
2754 
2755  commit c599a059b8df3f5785e4bf89fb6ecc6d8dcd708b
2756  Author: Brian Warner <warner@lothar.com>
2757  Date:   Mon Oct 3 14:48:05 2011 -0400
2758 
2759      _queries_outstanding
2760 
2761   src/allmydata/mutable/servermap.py |   16 +++++++---------
2762   1 files changed, 7 insertions(+), 9 deletions(-)
2763 
2764  commit 7743759f98ac2c07926b2fdbd80bf52dfab33085
2765  Author: Brian Warner <warner@lothar.com>
2766  Date:   Mon Oct 3 14:46:17 2011 -0400
2767 
2768      _empty_servers
2769 
2770   src/allmydata/mutable/servermap.py |    5 ++---
2771   1 files changed, 2 insertions(+), 3 deletions(-)
2772 
2773  commit 6bb1825916828a713a32cdf7f7411fa3ea2e1e5d
2774  Author: Brian Warner <warner@lothar.com>
2775  Date:   Mon Oct 3 14:45:39 2011 -0400
2776 
2777      _good_servers
2778 
2779   src/allmydata/mutable/servermap.py |    4 ++--
2780   1 files changed, 2 insertions(+), 2 deletions(-)
2781 
2782  commit 1768fab1b51d8dd93ecabbaaabfadfa20cf6c3d4
2783  Author: Brian Warner <warner@lothar.com>
2784  Date:   Mon Oct 3 14:44:59 2011 -0400
2785 
2786      _bad_servers
2787 
2788   src/allmydata/mutable/servermap.py |   14 +++++++-------
2789   1 files changed, 7 insertions(+), 7 deletions(-)
2790 
2791  commit dccbaef30f0ba714c746bf6d4a1a803c36e17b65
2792  Author: Brian Warner <warner@lothar.com>
2793  Date:   Mon Oct 3 14:41:54 2011 -0400
2794 
2795      API of _try_to_set_pubkey()
2796 
2797   src/allmydata/mutable/servermap.py |    7 ++++---
2798   1 files changed, 4 insertions(+), 3 deletions(-)
2799 
2800  commit 0481ea70042ba3575f15eac7fd0780f8ece580cc
2801  Author: Brian Warner <warner@lothar.com>
2802  Date:   Mon Oct 3 14:35:02 2011 -0400
2803 
2804      API of notify_server_corruption()
2805 
2806   src/allmydata/mutable/servermap.py |    6 +++---
2807   1 files changed, 3 insertions(+), 3 deletions(-)
2808 
2809  commit bea9cba18fb3b9c11bb22f18356a263ecec7351e
2810  Author: Brian Warner <warner@lothar.com>
2811  Date:   Mon Oct 3 14:34:09 2011 -0400
2812 
2813      API of _got_signature_one_share()
2814 
2815   src/allmydata/mutable/servermap.py |    9 +++++----
2816   1 files changed, 5 insertions(+), 4 deletions(-)
2817 
2818  commit 1520123583cf78650706e114b15bb5b0ac1f4a14
2819  Author: Brian Warner <warner@lothar.com>
2820  Date:   Mon Oct 3 14:32:33 2011 -0400
2821 
2822      API of _try_to_validate_privkey()
2823 
2824   src/allmydata/mutable/servermap.py |    9 +++++----
2825   1 files changed, 5 insertions(+), 4 deletions(-)
2826 
2827  commit 938852c9c8519c7a078f58a9b1f4dd8ec8b6715e
2828  Author: Brian Warner <warner@lothar.com>
2829  Date:   Mon Oct 3 14:31:48 2011 -0400
2830 
2831      API and internals of _add_lease_failed()
2832 
2833   src/allmydata/mutable/servermap.py |    8 ++++----
2834   1 files changed, 4 insertions(+), 4 deletions(-)
2835 
2836  commit 3843dba367e3c19e176a622ab853cb51d2472ddf
2837  Author: Brian Warner <warner@lothar.com>
2838  Date:   Mon Oct 3 14:30:37 2011 -0400
2839 
2840      API of _privkey_query_failed()
2841 
2842   src/allmydata/mutable/servermap.py |    5 +++--
2843   1 files changed, 3 insertions(+), 2 deletions(-)
2844 
2845  commit 2219a710e1633cd57d0ca0786490de87b3e19ba7
2846  Author: Brian Warner <warner@lothar.com>
2847  Date:   Mon Oct 3 14:29:43 2011 -0400
2848 
2849      fix bug in call to _privkey_query_failed, unrelated to refactoring
2850 
2851   src/allmydata/mutable/servermap.py |    2 +-
2852   1 files changed, 1 insertions(+), 1 deletions(-)
2853 
2854  commit ae615bec7d0d1b269710b6902797b12f9592ad62
2855  Author: Brian Warner <warner@lothar.com>
2856  Date:   Mon Oct 3 14:27:17 2011 -0400
2857 
2858      API of _got_corrupt_share()
2859 
2860   src/allmydata/mutable/servermap.py |   17 +++++++++--------
2861   1 files changed, 9 insertions(+), 8 deletions(-)
2862 
2863  commit cb51c95a6f4e077278157a77dab060c8c1ad7a81
2864  Author: Brian Warner <warner@lothar.com>
2865  Date:   Mon Oct 3 14:23:16 2011 -0400
2866 
2867      API of _got_results()
2868 
2869   src/allmydata/mutable/servermap.py |    9 +++++----
2870   1 files changed, 5 insertions(+), 4 deletions(-)
2871 
2872  commit bac9154fe0af18f226999a58ffc2362d8cf4b802
2873  Author: Brian Warner <warner@lothar.com>
2874  Date:   Mon Oct 3 14:19:19 2011 -0400
2875 
2876      API of _query_failed()
2877 
2878   src/allmydata/mutable/servermap.py |    5 +++--
2879   1 files changed, 3 insertions(+), 2 deletions(-)
2880 
2881  commit fdc29a8ca95d4b5c503e5382b9e5d4d02141ba12
2882  Author: Brian Warner <warner@lothar.com>
2883  Date:   Mon Oct 3 14:17:20 2011 -0400
2884 
2885      API of _do_read()
2886 
2887   src/allmydata/mutable/servermap.py |    6 ++++--
2888   1 files changed, 4 insertions(+), 2 deletions(-)
2889 
2890  commit e7e9e338f28d004aa4d423d11c65f1e271ac7322
2891  Author: Brian Warner <warner@lothar.com>
2892  Date:   Mon Oct 3 14:20:21 2011 -0400
2893 
2894      API of _do_query()
2895 
2896   src/allmydata/mutable/servermap.py |   15 +++++++--------
2897   1 files changed, 7 insertions(+), 8 deletions(-)
2898 
2899  commit 330625b9dac4cdbe72a11464a893065b9aeed453
2900  Author: Brian Warner <warner@lothar.com>
2901  Date:   Mon Oct 3 14:43:05 2011 -0400
2902 
2903      next step: first batch of updates to ServermapUpdater
2904 
2905      updates:
2906       most method-local variables in update()
2907       API of _build_initial_querylist()
2908       API of _send_initial_requests()
2909       .full_serverlist
2910       .extra_servers
2911 
2912   src/allmydata/mutable/servermap.py |   39 ++++++++++++++------------
2913   1 files changed, 21 insertions(+), 18 deletions(-)
2914 
2915  commit 4aadc584fa7dcb2daa86b048c81dee0049ba26d9
2916  Author: Brian Warner <warner@lothar.com>
2917  Date:   Mon Oct 3 15:07:00 2011 -0400
2918 
2919      internal change: index _bad_shares with IServer
2920 
2921   src/allmydata/mutable/servermap.py |   20 ++++++++++----------
2922   1 files changed, 10 insertions(+), 10 deletions(-)
2923 
2924  commit 16d4e6fa82a9907dbdc92094213387c6a4164e41
2925  Author: Brian Warner <warner@lothar.com>
2926  Date:   Mon Oct 3 18:20:47 2011 +0100
2927 
2928      internal change: index _known_shares with IServer instead of serverid
2929 
2930      callers are unchanged
2931 
2932   src/allmydata/mutable/servermap.py |   42 +++++++++++++++----------
2933   1 files changed, 25 insertions(+), 17 deletions(-)
2934 
2935  commit ceeb5f4938cc814a0c75d1b8f4018aed965c2176
2936  Author: Brian Warner <warner@lothar.com>
2937  Date:   Mon Oct 3 18:11:43 2011 +0100
2938 
2939      accessors and name cleanup for servermap.Servermap.last_update_mode/time
2940 
2941   src/allmydata/mutable/filenode.py  |    6 +++---
2942   src/allmydata/mutable/publish.py   |    4 ++--
2943   src/allmydata/mutable/servermap.py |   17 +++++++++++------
2944   3 files changed, 16 insertions(+), 11 deletions(-)
2945 
2946  commit 8d3cbda82661c0a7e5c3d3b65cf7a5d5ab7e32c0
2947  Author: Brian Warner <warner@lothar.com>
2948  Date:   Mon Oct 3 18:11:14 2011 +0100
2949 
2950      accessors and name cleanup for servermap.Servermap.problems
2951 
2952   src/allmydata/mutable/servermap.py |   21 +++++++++++++--------
2953   src/allmydata/test/test_mutable.py |    6 +++---
2954   2 files changed, 16 insertions(+), 11 deletions(-)
2955 
2956  commit 348f57988f79389db0aab7672e6eaa9a6d8e3219
2957  Author: Brian Warner <warner@lothar.com>
2958  Date:   Mon Oct 3 18:10:41 2011 +0100
2959 
2960      accessors and name cleanup for servermap.Servermap.bad_shares
2961 
2962   src/allmydata/mutable/publish.py   |    2 +-
2963   src/allmydata/mutable/servermap.py |   30 ++++++++++++++-----------
2964   2 files changed, 18 insertions(+), 14 deletions(-)
2965 
2966  commit 520c9368134673cdf76c653c5e1bb91c2ab5d51e
2967  Author: Brian Warner <warner@lothar.com>
2968  Date:   Mon Oct 3 18:10:05 2011 +0100
2969 
2970      accessors and name cleanup for servermap.Servermap.servermap .
2971 
2972   src/allmydata/mutable/publish.py   |   14 +++++----
2973   src/allmydata/mutable/servermap.py |   38 ++++++++++++++-----------
2974   2 files changed, 29 insertions(+), 23 deletions(-)
2975 
2976  commit b8b8dc38287a91dbdf494426ac801d9381ce5841
2977  Author: Brian Warner <warner@lothar.com>
2978  Date:   Mon Oct 3 18:08:02 2011 +0100
2979 
2980      fix reachable_servers
2981 
2982   src/allmydata/mutable/checker.py   |    3 ++-
2983   src/allmydata/mutable/publish.py   |    4 +++-
2984   src/allmydata/mutable/servermap.py |   12 ++++++++++--
2985   3 files changed, 15 insertions(+), 4 deletions(-)
2986 
2987  commit cb0cfd1adfefad357c187aaaf690c3df68b622bc
2988  Author: Brian Warner <warner@lothar.com>
2989  Date:   Mon Oct 3 18:06:03 2011 +0100
2990 
2991      fix Servermap.unreachable_servers
2992 
2993   src/allmydata/mutable/servermap.py |   11 ++++++++---
2994   1 files changed, 8 insertions(+), 3 deletions(-)
2995 
2996  commit 2d9ea79b94bd4db674d40386fda90825785ac495
2997  Author: Brian Warner <warner@lothar.com>
2998  Date:   Mon Oct 3 18:03:48 2011 +0100
2999 
3000      give ServerMap a StorageFarmBroker, temporary
3001 
3002      this makes it possible for the ServerMap to accept bare serverids and still
3003      build data structures with IServers
3004 
3005   src/allmydata/mutable/checker.py   |    2 +-
3006   src/allmydata/mutable/filenode.py  |    2 +-
3007   src/allmydata/mutable/publish.py   |    2 +-
3008   src/allmydata/mutable/servermap.py |    5 +++--
3009   src/allmydata/test/test_mutable.py |    8 ++++----
3010   5 files changed, 10 insertions(+), 9 deletions(-)
3011 
3012  commit 718d1aeff6fded893f65397806d22ece928b0dd4
3013  Author: Brian Warner <warner@lothar.com>
3014  Date:   Mon Oct 3 13:43:30 2011 -0400
3015 
3016      add StorageFarmBroker.get_server_for_id(), temporary helper
3017 
3018      This will go away once we're passing IServers everywhere.
3019 
3020   src/allmydata/storage_client.py  |    2 ++
3021   src/allmydata/test/no_network.py |   13 +++++++++++++
3022   2 files changed, 15 insertions(+), 0 deletions(-)
3023 
3024  commit ece20231d7fda0d503704842a4aa068dfbc2e54e
3025  Author: Brian Warner <warner@lothar.com>
3026  Date:   Sun Oct 2 01:11:50 2011 +0100
3027 
3028      add proper accessors for Servermap.connections, to make refactoring easier
3029 
3030   src/allmydata/mutable/publish.py   |    6 +++---
3031   src/allmydata/mutable/retrieve.py  |   10 +++++-----
3032   src/allmydata/mutable/servermap.py |   17 +++++++++++------
3033   3 files changed, 19 insertions(+), 14 deletions(-)
3034 
3035  commit 3b943d6bf302ff702668081a612fc4fe2604cf9c
3036  Author: Brian Warner <warner@lothar.com>
3037  Date:   Fri Sep 23 10:34:30 2011 -0700
3038 
3039      mutable/servermap.py and neighbors: s/peer/server/
3040 
3041   src/allmydata/mutable/checker.py   |   22 +-
3042   src/allmydata/mutable/publish.py   |  204 +++++++-------
3043   src/allmydata/mutable/servermap.py |  402 +++++++++++++-------------
3044   src/allmydata/test/test_mutable.py |   18 +-
3045   4 files changed, 323 insertions(+), 323 deletions(-)
3046 IServer refactoring: pass IServer instances around, instead of peerids
3047 
3048 refs #1363
3049 
3050 This collapses 88 small incremental changes (each of which passes all tests)
3051 into one big patch. The development process for the long path started with
3052 adding some temporary scaffolding, changing one method at a time, then
3053 removing the scaffolding. The individual pieces are as follows, in reverse
3054 chronological order (the first patch is at the end of this comment):
3055 
3056  commit 9bbe4174fd0d98a6cf47a8ef96e85d9ef34b2f9a
3057  Author: Brian Warner <warner@lothar.com>
3058  Date:   Tue Oct 4 16:05:00 2011 -0400
3059 
3060      immutable/downloader/status.py: correct comment
3061 
3062   src/allmydata/immutable/downloader/status.py |    2 +-
3063   1 files changed, 1 insertions(+), 1 deletions(-)
3064 
3065  commit 72146a7c7c91eac2f7c3ceb801eb7a1721376889
3066  Author: Brian Warner <warner@lothar.com>
3067  Date:   Tue Oct 4 15:46:20 2011 -0400
3068 
3069      remove temporary ServerMap._storage_broker
3070 
3071   src/allmydata/mutable/checker.py   |    2 +-
3072   src/allmydata/mutable/filenode.py  |    2 +-
3073   src/allmydata/mutable/publish.py   |    2 +-
3074   src/allmydata/mutable/servermap.py |    5 ++---
3075   src/allmydata/test/test_mutable.py |    8 ++++----
3076   5 files changed, 9 insertions(+), 10 deletions(-)
3077 
3078  commit d703096b41632c47d76414b12672e076a422ff5c
3079  Author: Brian Warner <warner@lothar.com>
3080  Date:   Tue Oct 4 15:37:05 2011 -0400
3081 
3082      remove temporary storage_broker.get_server_for_id()
3083 
3084   src/allmydata/storage_client.py  |    3 ---
3085   src/allmydata/test/no_network.py |   13 -------------
3086   2 files changed, 0 insertions(+), 16 deletions(-)
3087 
3088  commit 620cc5d80882ef6f7decfd26af8a6c7c1ddf80d1
3089  Author: Brian Warner <warner@lothar.com>
3090  Date:   Tue Oct 4 12:50:06 2011 -0400
3091 
3092      API of Retrieve._try_to_validate_privkey(), trying to remove reader.server
3093 
3094   src/allmydata/mutable/retrieve.py |   10 +++++-----
3095   1 files changed, 5 insertions(+), 5 deletions(-)
3096 
3097  commit 92f43f856f4a8b36c207d1b190ed8699b5a4ecb4
3098  Author: Brian Warner <warner@lothar.com>
3099  Date:   Tue Oct 4 12:48:08 2011 -0400
3100 
3101      API of Retrieve._validate_block(), trying to remove reader.server
3102 
3103   src/allmydata/mutable/retrieve.py |   14 +++++++-------
3104   1 files changed, 7 insertions(+), 7 deletions(-)
3105 
3106  commit 572d5070761861a2190349d1ed8d85dbc25698a5
3107  Author: Brian Warner <warner@lothar.com>
3108  Date:   Tue Oct 4 12:36:58 2011 -0400
3109 
3110      API of Retrieve._mark_bad_share(), trying to remove reader.server
3111 
3112   src/allmydata/mutable/retrieve.py |   21 +++++++++------------
3113   1 files changed, 9 insertions(+), 12 deletions(-)
3114 
3115  commit a793ff00c0de1e2eec7b46288fdf388c7a2bec89
3116  Author: Brian Warner <warner@lothar.com>
3117  Date:   Tue Oct 4 12:06:13 2011 -0400
3118 
3119      remove now-unused get_rref_for_serverid()
3120 
3121   src/allmydata/mutable/servermap.py |    3 ---
3122   1 files changed, 0 insertions(+), 3 deletions(-)
3123 
3124  commit 1b9827cc9366bf90b93297fdd6832f2ad0480ce7
3125  Author: Brian Warner <warner@lothar.com>
3126  Date:   Tue Oct 4 12:03:09 2011 -0400
3127 
3128      Retrieve: stop adding .serverid attributes to readers
3129 
3130   src/allmydata/mutable/retrieve.py |    1 -
3131   1 files changed, 0 insertions(+), 1 deletions(-)
3132 
3133  commit 5d4e9d491b19e49d2e443a1dfff2c672842c36ef
3134  Author: Brian Warner <warner@lothar.com>
3135  Date:   Tue Oct 4 12:03:34 2011 -0400
3136 
3137      return value of Retrieve(verify=True)
3138 
3139   src/allmydata/mutable/checker.py  |   11 ++++++-----
3140   src/allmydata/mutable/retrieve.py |    3 +--
3141   2 files changed, 7 insertions(+), 7 deletions(-)
3142 
3143  commit e9ab7978c384e1f677cb7779dc449b1044face82
3144  Author: Brian Warner <warner@lothar.com>
3145  Date:   Tue Oct 4 11:54:23 2011 -0400
3146 
3147      Retrieve._bad_shares (but not return value, used by Verifier)
3148 
3149   src/allmydata/mutable/retrieve.py |    7 ++++---
3150   1 files changed, 4 insertions(+), 3 deletions(-)
3151 
3152  commit 2d91926de233ec5c881f30e36b4a30ad92ab42a9
3153  Author: Brian Warner <warner@lothar.com>
3154  Date:   Tue Oct 4 11:51:23 2011 -0400
3155 
3156      Publish: stop adding .serverid attributes to writers
3157 
3158   src/allmydata/mutable/publish.py |    9 ++-------
3159   1 files changed, 2 insertions(+), 7 deletions(-)
3160 
3161  commit 47c7a0105dec7cbf4f7e0a3ce800bbb85b15df4a
3162  Author: Brian Warner <warner@lothar.com>
3163  Date:   Tue Oct 4 11:56:33 2011 -0400
3164 
3165      API of get_write_enabler()
3166 
3167   src/allmydata/mutable/filenode.py |    7 ++++---
3168   src/allmydata/mutable/publish.py  |    4 ++--
3169   src/allmydata/test/no_network.py  |    3 +++
3170   3 files changed, 9 insertions(+), 5 deletions(-)
3171 
3172  commit 9196a5c6590fdbfd660325ea8358b345887d3db0
3173  Author: Brian Warner <warner@lothar.com>
3174  Date:   Tue Oct 4 11:46:24 2011 -0400
3175 
3176      API of get_(renewal|cancel)_secret()
3177 
3178   src/allmydata/mutable/filenode.py  |   14 ++++++++------
3179   src/allmydata/mutable/publish.py   |    8 ++++----
3180   src/allmydata/mutable/servermap.py |    5 ++---
3181   3 files changed, 14 insertions(+), 13 deletions(-)
3182 
3183  commit de7c1552f8c163eff5b6d820b5fb3b21c1b47cb5
3184  Author: Brian Warner <warner@lothar.com>
3185  Date:   Tue Oct 4 11:41:52 2011 -0400
3186 
3187      API of CorruptShareError. Also comment out some related+unused test_web.py code
3188 
3189   src/allmydata/mutable/common.py    |   13 +++++--------
3190   src/allmydata/mutable/retrieve.py  |   10 +++++-----
3191   src/allmydata/mutable/servermap.py |    8 +++-----
3192   src/allmydata/test/common.py       |   13 ++++++++-----
3193   4 files changed, 21 insertions(+), 23 deletions(-)
3194 
3195  commit 2c1c314046b620c16f1e66d030c150d768b7d01e
3196  Author: Brian Warner <warner@lothar.com>
3197  Date:   Tue Oct 4 12:01:46 2011 -0400
3198 
3199      API of ServerMap.mark_bad_share()
3200 
3201   src/allmydata/mutable/publish.py   |    2 +-
3202   src/allmydata/mutable/retrieve.py  |    6 +++---
3203   src/allmydata/mutable/servermap.py |    6 ++----
3204   src/allmydata/test/test_mutable.py |    3 +--
3205   4 files changed, 7 insertions(+), 10 deletions(-)
3206 
3207  commit 1bed349030779fd0c378ae4e821384f953c6f6ff
3208  Author: Brian Warner <warner@lothar.com>
3209  Date:   Tue Oct 4 11:11:17 2011 -0400
3210 
3211      API+name of ServerMap.shares_on_server() : only for tests, so debug_ prefix
3212 
3213   src/allmydata/mutable/servermap.py |    7 ++-----
3214   src/allmydata/test/test_mutable.py |    6 +++---
3215   2 files changed, 5 insertions(+), 8 deletions(-)
3216 
3217  commit 2d32e448677d6b818692e801045d4115b29abf21
3218  Author: Brian Warner <warner@lothar.com>
3219  Date:   Tue Oct 4 11:07:10 2011 -0400
3220 
3221      API of ServerMap.all_servers_for_version()
3222 
3223   src/allmydata/mutable/servermap.py |    4 ++--
3224   1 files changed, 2 insertions(+), 2 deletions(-)
3225 
3226  commit 48f3204d1889c3e7179578125c4bdef515af3d6a
3227  Author: Brian Warner <warner@lothar.com>
3228  Date:   Tue Oct 4 11:04:50 2011 -0400
3229 
3230      internals of ServerMap methods that use make_versionmap(), remove temp copy
3231 
3232   src/allmydata/mutable/servermap.py |   28 +++++++++----------------
3233   1 files changed, 10 insertions(+), 18 deletions(-)
3234 
3235  commit 5c3da77b6c777a145bd5ddfaa4db849dc9495548
3236  Author: Brian Warner <warner@lothar.com>
3237  Date:   Tue Oct 4 11:01:28 2011 -0400
3238 
3239      API of ServerMap.make_versionmap()
3240 
3241   src/allmydata/mutable/checker.py   |    4 ++--
3242   src/allmydata/mutable/retrieve.py  |    5 ++---
3243   src/allmydata/mutable/servermap.py |    4 ++--
3244   src/allmydata/test/test_mutable.py |    7 ++++---
3245   4 files changed, 10 insertions(+), 10 deletions(-)
3246 
3247  commit b6882ece49afb4c507d118af2db346fa329209dc
3248  Author: Brian Warner <warner@lothar.com>
3249  Date:   Tue Oct 4 10:53:38 2011 -0400
3250 
3251      make a copy of ServerMap.make_versionmap() (_make_versionmap2) for internal use
3252 
3253   src/allmydata/mutable/servermap.py |   18 +++++++++++++-----
3254   1 files changed, 13 insertions(+), 5 deletions(-)
3255 
3256  commit 963f8e63faf32b950eb1b8103cd2ff16fe8f0151
3257  Author: Brian Warner <warner@lothar.com>
3258  Date:   Tue Oct 4 00:45:58 2011 -0400
3259 
3260      API of RetrieveStatus.add_problem()
3261 
3262   src/allmydata/mutable/retrieve.py |    5 +++--
3263   1 files changed, 3 insertions(+), 2 deletions(-)
3264 
3265  commit 4976d29ffae565a048851601c29013bbae2976d8
3266  Author: Brian Warner <warner@lothar.com>
3267  Date:   Tue Oct 4 00:45:05 2011 -0400
3268 
3269      API of RetrieveStatus.add_fetch_timing()
3270 
3271   src/allmydata/mutable/retrieve.py |    5 +++--
3272   1 files changed, 3 insertions(+), 2 deletions(-)
3273 
3274  commit d057d3bbba72663ee148a8b916bc2d52be2e3982
3275  Author: Brian Warner <warner@lothar.com>
3276  Date:   Tue Oct 4 00:44:04 2011 -0400
3277 
3278      API of Retrieve.notify_server_corruption()
3279 
3280   src/allmydata/mutable/retrieve.py |    6 +++---
3281   1 files changed, 3 insertions(+), 3 deletions(-)
3282 
3283  commit 8a2a81e46671c860610e0e96d6add1a57551f22d
3284  Author: Brian Warner <warner@lothar.com>
3285  Date:   Tue Oct 4 00:42:32 2011 -0400
3286 
3287      remove unused _outstanding_queries
3288 
3289   src/allmydata/mutable/retrieve.py |    1 -
3290   1 files changed, 0 insertions(+), 1 deletions(-)
3291 
3292  commit 56d12cc9968d03ccd53764455c671122c4f391d1
3293  Author: Brian Warner <warner@lothar.com>
3294  Date:   Tue Oct 4 00:40:57 2011 -0400
3295 
3296      change Retrieve.remaining_sharemap
3297 
3298   src/allmydata/mutable/retrieve.py |    4 ++--
3299   1 files changed, 2 insertions(+), 2 deletions(-)
3300 
3301  commit 4f0b7af4821f43290bfc70f2b1fc30149ad81281
3302  Author: Brian Warner <warner@lothar.com>
3303  Date:   Tue Oct 4 10:40:18 2011 -0400
3304 
3305      accessor for PublishStatus._problems
3306 
3307   src/allmydata/mutable/publish.py |    4 +++-
3308   src/allmydata/web/status.py      |    2 +-
3309   2 files changed, 4 insertions(+), 2 deletions(-)
3310 
3311  commit 627087cf66d0b8cc519f4d551a967a7bd9b6a741
3312  Author: Brian Warner <warner@lothar.com>
3313  Date:   Tue Oct 4 10:36:39 2011 -0400
3314 
3315      accessor for RetrieveStatus._problems
3316 
3317   src/allmydata/mutable/retrieve.py |    8 ++++++--
3318   src/allmydata/web/status.py       |    2 +-
3319   2 files changed, 7 insertions(+), 3 deletions(-)
3320 
3321  commit ca7dea81f03801b1c7353fc00ecba689268109cf
3322  Author: Brian Warner <warner@lothar.com>
3323  Date:   Tue Oct 4 00:35:32 2011 -0400
3324 
3325      add .server to "reader", so we can get at it later
3326 
3327   src/allmydata/mutable/retrieve.py |    5 +++--
3328   1 files changed, 3 insertions(+), 2 deletions(-)
3329 
3330  commit 6ef516e24908ec195af084a7550d1921a5e983b0
3331  Author: Brian Warner <warner@lothar.com>
3332  Date:   Tue Oct 4 00:32:32 2011 -0400
3333 
3334      temporarily give Retrieve a _storage_broker, so it can map serverids to servers
3335 
3336   src/allmydata/mutable/checker.py   |    3 ++-
3337   src/allmydata/mutable/filenode.py  |    6 ++++--
3338   src/allmydata/mutable/retrieve.py  |    5 +++--
3339   src/allmydata/test/test_mutable.py |    4 ++--
3340   4 files changed, 11 insertions(+), 7 deletions(-)
3341 
3342  commit afe08e4dd3f4ff9ff7e8a2a8d28b181e3625bcc9
3343  Author: Brian Warner <warner@lothar.com>
3344  Date:   Tue Oct 4 00:21:51 2011 -0400
3345 
3346      mutable/retrieve.py: s/peer/server/
3347 
3348   src/allmydata/mutable/retrieve.py  |   82 +++++++++++++-------------
3349   src/allmydata/test/test_mutable.py |    6 +-
3350   2 files changed, 44 insertions(+), 44 deletions(-)
3351 
3352  commit 910afcb5d7f274880f68dd6cdb5b05f2bbc29adc
3353  Author: Brian Warner <warner@lothar.com>
3354  Date:   Tue Oct 4 00:16:01 2011 -0400
3355 
3356      web.status.PublishStatusPage: add comment, I think .problems isn't exercised
3357 
3358   src/allmydata/web/status.py |    2 ++
3359   1 files changed, 2 insertions(+), 0 deletions(-)
3360 
3361  commit 311466dd8c931bbba40d590ade867704282e7f1a
3362  Author: Brian Warner <warner@lothar.com>
3363  Date:   Mon Oct 3 23:48:16 2011 -0400
3364 
3365      API of PublishStatus.add_per_server_time()
3366 
3367   src/allmydata/mutable/publish.py |    5 +++--
3368   1 files changed, 3 insertions(+), 2 deletions(-)
3369 
3370  commit 2df5faa1b6cbfbaded520d2320305a62fe961118
3371  Author: Brian Warner <warner@lothar.com>
3372  Date:   Mon Oct 3 23:46:37 2011 -0400
3373 
3374      more simplifications
3375 
3376   src/allmydata/mutable/publish.py |    4 +---
3377   1 files changed, 1 insertions(+), 3 deletions(-)
3378 
3379  commit 6ac4544a3da385f2aad9392f906b90192f4f919a
3380  Author: Brian Warner <warner@lothar.com>
3381  Date:   Mon Oct 3 23:44:08 2011 -0400
3382 
3383      API of ServerMap.version_on_server()
3384 
3385   src/allmydata/mutable/publish.py   |    2 +-
3386   src/allmydata/mutable/servermap.py |    4 ++--
3387   src/allmydata/test/test_mutable.py |    5 ++---
3388   3 files changed, 5 insertions(+), 6 deletions(-)
3389 
3390  commit 3e187e322511072e4683329df6b2c6c733a66dba
3391  Author: Brian Warner <warner@lothar.com>
3392  Date:   Tue Oct 4 00:16:32 2011 -0400
3393 
3394      API of ServerMap.make_sharemap()
3395 
3396   src/allmydata/mutable/servermap.py |    4 ++--
3397   src/allmydata/test/test_mutable.py |    7 ++++---
3398   src/allmydata/web/status.py        |    4 ++--
3399   3 files changed, 8 insertions(+), 7 deletions(-)
3400 
3401  commit 318feed8437bdd8d4943c6569d38f7b54b6313cc
3402  Author: Brian Warner <warner@lothar.com>
3403  Date:   Mon Oct 3 23:36:19 2011 -0400
3404 
3405      small cleanups
3406 
3407   src/allmydata/mutable/publish.py |    4 ++--
3408   1 files changed, 2 insertions(+), 2 deletions(-)
3409 
3410  commit bd459ed5714e1db5a7163935c54b7b0b56db8349
3411  Author: Brian Warner <warner@lothar.com>
3412  Date:   Mon Oct 3 23:33:39 2011 -0400
3413 
3414      API of ServerMap.add_new_share()
3415 
3416   src/allmydata/mutable/publish.py   |    4 ++--
3417   src/allmydata/mutable/servermap.py |    6 ++----
3418   2 files changed, 4 insertions(+), 6 deletions(-)
3419 
3420  commit f2804fb6ed11d80088e0da8ed48e6c2922f2ffef
3421  Author: Brian Warner <warner@lothar.com>
3422  Date:   Mon Oct 3 23:30:26 2011 -0400
3423 
3424      API of ServerMap.get_bad_shares()
3425 
3426   src/allmydata/mutable/publish.py   |    3 +--
3427   src/allmydata/mutable/servermap.py |    9 ++++-----
3428   2 files changed, 5 insertions(+), 7 deletions(-)
3429 
3430  commit 965074a47b3ce1431cb46d9a233840afcf9105f5
3431  Author: Brian Warner <warner@lothar.com>
3432  Date:   Mon Oct 3 23:26:58 2011 -0400
3433 
3434      more small cleanups
3435 
3436   src/allmydata/mutable/publish.py |    6 +++---
3437   1 files changed, 3 insertions(+), 3 deletions(-)
3438 
3439  commit 38020da34f034f8889947dd3dc05e087ffff7106
3440  Author: Brian Warner <warner@lothar.com>
3441  Date:   Mon Oct 3 23:18:47 2011 -0400
3442 
3443      change Publish.bad_share_checkstrings
3444 
3445   src/allmydata/mutable/publish.py |    6 +++---
3446   1 files changed, 3 insertions(+), 3 deletions(-)
3447 
3448  commit 5efebcbd2ee0c2f299ea86f7591d856c0f265304
3449  Author: Brian Warner <warner@lothar.com>
3450  Date:   Mon Oct 3 23:16:31 2011 -0400
3451 
3452      change internals of Publish.update_goal()
3453 
3454   src/allmydata/mutable/publish.py |    8 +++-----
3455   1 files changed, 3 insertions(+), 5 deletions(-)
3456 
3457  commit e91b55ff4c2a69165b71f2c7b217ac319ff4c527
3458  Author: Brian Warner <warner@lothar.com>
3459  Date:   Mon Oct 3 23:11:42 2011 -0400
3460 
3461      get rid of Publish.connections
3462 
3463   src/allmydata/mutable/publish.py |   27 +++++----------------------
3464   1 files changed, 5 insertions(+), 22 deletions(-)
3465 
3466  commit 64e9a53b3229ebe2f9ebf7ed502d539311d0e037
3467  Author: Brian Warner <warner@lothar.com>
3468  Date:   Mon Oct 3 23:05:32 2011 -0400
3469 
3470      change Publish.bad_servers
3471 
3472   src/allmydata/mutable/publish.py |   10 +++++-----
3473   1 files changed, 5 insertions(+), 5 deletions(-)
3474 
3475  commit b85a934bef315a06bcfe00c9c12a3627fed2b918
3476  Author: Brian Warner <warner@lothar.com>
3477  Date:   Mon Oct 3 23:03:07 2011 -0400
3478 
3479      Publish.bad_servers: fix bug, this should be a set of serverids, not writers
3480 
3481   src/allmydata/mutable/publish.py |    2 +-
3482   1 files changed, 1 insertions(+), 1 deletions(-)
3483 
3484  commit 605ea15ec15ed671513819003ccd211cdb9761e0
3485  Author: Brian Warner <warner@lothar.com>
3486  Date:   Mon Oct 3 23:00:21 2011 -0400
3487 
3488      change .placed
3489 
3490   src/allmydata/mutable/publish.py |    6 +++---
3491   1 files changed, 3 insertions(+), 3 deletions(-)
3492 
3493  commit f7aba37b1b345d5b6d5cb16e3b3f6f3c1afb658e
3494  Author: Brian Warner <warner@lothar.com>
3495  Date:   Mon Oct 3 22:59:22 2011 -0400
3496 
3497      temporarily stash IServer as .server on the "writer" object
3498 
3499   src/allmydata/mutable/publish.py |    2 ++
3500   1 files changed, 2 insertions(+), 0 deletions(-)
3501 
3502  commit f9b551d788e7db1f187fce5ab98ab5d5fe4e1c36
3503  Author: Brian Warner <warner@lothar.com>
3504  Date:   Mon Oct 3 22:48:18 2011 -0400
3505 
3506      change Publish.goal and API of log_goal() to use IServer, not serverid
3507 
3508   src/allmydata/mutable/publish.py |   48 ++++++++++++++--------------
3509   1 files changed, 24 insertions(+), 24 deletions(-)
3510 
3511  commit 75f20616558e4900b8b1f685dd99aa838de6d452
3512  Author: Brian Warner <warner@lothar.com>
3513  Date:   Mon Oct 3 15:27:02 2011 -0400
3514 
3515      API of ServerMap.get_known_shares()
3516 
3517   src/allmydata/mutable/publish.py   |   16 ++++++++++------
3518   src/allmydata/mutable/servermap.py |    7 ++-----
3519   2 files changed, 12 insertions(+), 11 deletions(-)
3520 
3521  commit 1c38c9d37bb08221b4418762234b1a62397b3b4b
3522  Author: Brian Warner <warner@lothar.com>
3523  Date:   Mon Oct 3 15:20:29 2011 -0400
3524 
3525      Publish.full_serverlist
3526 
3527   src/allmydata/mutable/publish.py |   10 +++++-----
3528   1 files changed, 5 insertions(+), 5 deletions(-)
3529 
3530  commit b6cbd215a04b9cde31a7d92a97a7f048622b16f1
3531  Author: Brian Warner <warner@lothar.com>
3532  Date:   Mon Oct 3 15:12:31 2011 -0400
3533 
3534      API of ServerMap.all_servers()
3535 
3536   src/allmydata/mutable/servermap.py |   19 ++++++-------------
3537   1 files changed, 6 insertions(+), 13 deletions(-)
3538 
3539  commit e63cd0315fae65357b1727ec6d5ff3c6e0d27c98
3540  Author: Brian Warner <warner@lothar.com>
3541  Date:   Mon Oct 3 15:10:18 2011 -0400
3542 
3543      remove ServerMap.connections, set_rref_for_serverid()
3544 
3545   src/allmydata/mutable/servermap.py |   11 +----------
3546   1 files changed, 1 insertions(+), 10 deletions(-)
3547 
3548  commit 4df52db2f80eb12eefa5d57103c24893cde89553
3549  Author: Brian Warner <warner@lothar.com>
3550  Date:   Mon Oct 3 15:04:06 2011 -0400
3551 
3552      API of ServerMap.mark_server_reachable()
3553 
3554   src/allmydata/mutable/servermap.py |    7 ++-----
3555   1 files changed, 2 insertions(+), 5 deletions(-)
3556 
3557  commit 69c715bde77944dc25181b3dbbeb042c816f9a1b
3558  Author: Brian Warner <warner@lothar.com>
3559  Date:   Mon Oct 3 15:03:21 2011 -0400
3560 
3561      API of ServerMap.mark_server_unreachable()
3562 
3563   src/allmydata/mutable/servermap.py |    9 +++------
3564   1 files changed, 3 insertions(+), 6 deletions(-)
3565 
3566  commit 3d784d60eec1c508858e3a617e4411ffbcc3c1fa
3567  Author: Brian Warner <warner@lothar.com>
3568  Date:   Mon Oct 3 15:02:03 2011 -0400
3569 
3570      API of status.set_privkey_from()
3571 
3572   src/allmydata/mutable/servermap.py |    7 +++----
3573   1 files changed, 3 insertions(+), 4 deletions(-)
3574 
3575  commit 544ed3ea29bed7e66da7fd29ca3f6f076f27a9e6
3576  Author: Brian Warner <warner@lothar.com>
3577  Date:   Mon Oct 3 15:01:15 2011 -0400
3578 
3579      API of status.add_per_server_time()
3580 
3581   src/allmydata/mutable/servermap.py |    7 ++++---
3582   1 files changed, 4 insertions(+), 3 deletions(-)
3583 
3584  commit fffe5008b6320bd1e04c3c68389a2bf2ee383fa8
3585  Author: Brian Warner <warner@lothar.com>
3586  Date:   Mon Oct 3 14:59:02 2011 -0400
3587 
3588      remove unused .versionmap
3589 
3590   src/allmydata/mutable/servermap.py |    7 -------
3591   1 files changed, 0 insertions(+), 7 deletions(-)
3592 
3593  commit 2816562e090d2294179db3588dafcca18de1bc2b
3594  Author: Brian Warner <warner@lothar.com>
3595  Date:   Mon Oct 3 14:57:51 2011 -0400
3596 
3597      remove serverid from all log messages. Also one unused lambda.
3598 
3599   src/allmydata/mutable/servermap.py |   30 +++++++++++++-------------
3600   1 files changed, 15 insertions(+), 15 deletions(-)
3601 
3602  commit 28fa6b1a2738fa98c1f1dbd3d0e01ae98912d11f
3603  Author: Brian Warner <warner@lothar.com>
3604  Date:   Mon Oct 3 14:54:30 2011 -0400
3605 
3606      removed unused _readers
3607 
3608   src/allmydata/mutable/servermap.py |    3 ---
3609   1 files changed, 0 insertions(+), 3 deletions(-)
3610 
3611  commit a8e4ed3d645ab592d1add6a1e69b6d1ebfb77817
3612  Author: Brian Warner <warner@lothar.com>
3613  Date:   Mon Oct 3 14:54:16 2011 -0400
3614 
3615      remove unused _sharemap
3616 
3617   src/allmydata/mutable/servermap.py |    1 -
3618   1 files changed, 0 insertions(+), 1 deletions(-)
3619 
3620  commit 3f072e55cf1d0700f9fffe23f8f3a475725df588
3621  Author: Brian Warner <warner@lothar.com>
3622  Date:   Mon Oct 3 14:49:03 2011 -0400
3623 
3624      _must_query
3625 
3626   src/allmydata/mutable/servermap.py |    8 ++++----
3627   1 files changed, 4 insertions(+), 4 deletions(-)
3628 
3629  commit c599a059b8df3f5785e4bf89fb6ecc6d8dcd708b
3630  Author: Brian Warner <warner@lothar.com>
3631  Date:   Mon Oct 3 14:48:05 2011 -0400
3632 
3633      _queries_outstanding
3634 
3635   src/allmydata/mutable/servermap.py |   16 +++++++---------
3636   1 files changed, 7 insertions(+), 9 deletions(-)
3637 
3638  commit 7743759f98ac2c07926b2fdbd80bf52dfab33085
3639  Author: Brian Warner <warner@lothar.com>
3640  Date:   Mon Oct 3 14:46:17 2011 -0400
3641 
3642      _empty_servers
3643 
3644   src/allmydata/mutable/servermap.py |    5 ++---
3645   1 files changed, 2 insertions(+), 3 deletions(-)
3646 
3647  commit 6bb1825916828a713a32cdf7f7411fa3ea2e1e5d
3648  Author: Brian Warner <warner@lothar.com>
3649  Date:   Mon Oct 3 14:45:39 2011 -0400
3650 
3651      _good_servers
3652 
3653   src/allmydata/mutable/servermap.py |    4 ++--
3654   1 files changed, 2 insertions(+), 2 deletions(-)
3655 
3656  commit 1768fab1b51d8dd93ecabbaaabfadfa20cf6c3d4
3657  Author: Brian Warner <warner@lothar.com>
3658  Date:   Mon Oct 3 14:44:59 2011 -0400
3659 
3660      _bad_servers
3661 
3662   src/allmydata/mutable/servermap.py |   14 +++++++-------
3663   1 files changed, 7 insertions(+), 7 deletions(-)
3664 
3665  commit dccbaef30f0ba714c746bf6d4a1a803c36e17b65
3666  Author: Brian Warner <warner@lothar.com>
3667  Date:   Mon Oct 3 14:41:54 2011 -0400
3668 
3669      API of _try_to_set_pubkey()
3670 
3671   src/allmydata/mutable/servermap.py |    7 ++++---
3672   1 files changed, 4 insertions(+), 3 deletions(-)
3673 
3674  commit 0481ea70042ba3575f15eac7fd0780f8ece580cc
3675  Author: Brian Warner <warner@lothar.com>
3676  Date:   Mon Oct 3 14:35:02 2011 -0400
3677 
3678      API of notify_server_corruption()
3679 
3680   src/allmydata/mutable/servermap.py |    6 +++---
3681   1 files changed, 3 insertions(+), 3 deletions(-)
3682 
3683  commit bea9cba18fb3b9c11bb22f18356a263ecec7351e
3684  Author: Brian Warner <warner@lothar.com>
3685  Date:   Mon Oct 3 14:34:09 2011 -0400
3686 
3687      API of _got_signature_one_share()
3688 
3689   src/allmydata/mutable/servermap.py |    9 +++++----
3690   1 files changed, 5 insertions(+), 4 deletions(-)
3691 
3692  commit 1520123583cf78650706e114b15bb5b0ac1f4a14
3693  Author: Brian Warner <warner@lothar.com>
3694  Date:   Mon Oct 3 14:32:33 2011 -0400
3695 
3696      API of _try_to_validate_privkey()
3697 
3698   src/allmydata/mutable/servermap.py |    9 +++++----
3699   1 files changed, 5 insertions(+), 4 deletions(-)
3700 
3701  commit 938852c9c8519c7a078f58a9b1f4dd8ec8b6715e
3702  Author: Brian Warner <warner@lothar.com>
3703  Date:   Mon Oct 3 14:31:48 2011 -0400
3704 
3705      API and internals of _add_lease_failed()
3706 
3707   src/allmydata/mutable/servermap.py |    8 ++++----
3708   1 files changed, 4 insertions(+), 4 deletions(-)
3709 
3710  commit 3843dba367e3c19e176a622ab853cb51d2472ddf
3711  Author: Brian Warner <warner@lothar.com>
3712  Date:   Mon Oct 3 14:30:37 2011 -0400
3713 
3714      API of _privkey_query_failed()
3715 
3716   src/allmydata/mutable/servermap.py |    5 +++--
3717   1 files changed, 3 insertions(+), 2 deletions(-)
3718 
3719  commit 2219a710e1633cd57d0ca0786490de87b3e19ba7
3720  Author: Brian Warner <warner@lothar.com>
3721  Date:   Mon Oct 3 14:29:43 2011 -0400
3722 
3723      fix bug in call to _privkey_query_failed, unrelated to refactoring
3724 
3725   src/allmydata/mutable/servermap.py |    2 +-
3726   1 files changed, 1 insertions(+), 1 deletions(-)
3727 
3728  commit ae615bec7d0d1b269710b6902797b12f9592ad62
3729  Author: Brian Warner <warner@lothar.com>
3730  Date:   Mon Oct 3 14:27:17 2011 -0400
3731 
3732      API of _got_corrupt_share()
3733 
3734   src/allmydata/mutable/servermap.py |   17 +++++++++--------
3735   1 files changed, 9 insertions(+), 8 deletions(-)
3736 
3737  commit cb51c95a6f4e077278157a77dab060c8c1ad7a81
3738  Author: Brian Warner <warner@lothar.com>
3739  Date:   Mon Oct 3 14:23:16 2011 -0400
3740 
3741      API of _got_results()
3742 
3743   src/allmydata/mutable/servermap.py |    9 +++++----
3744   1 files changed, 5 insertions(+), 4 deletions(-)
3745 
3746  commit bac9154fe0af18f226999a58ffc2362d8cf4b802
3747  Author: Brian Warner <warner@lothar.com>
3748  Date:   Mon Oct 3 14:19:19 2011 -0400
3749 
3750      API of _query_failed()
3751 
3752   src/allmydata/mutable/servermap.py |    5 +++--
3753   1 files changed, 3 insertions(+), 2 deletions(-)
3754 
3755  commit fdc29a8ca95d4b5c503e5382b9e5d4d02141ba12
3756  Author: Brian Warner <warner@lothar.com>
3757  Date:   Mon Oct 3 14:17:20 2011 -0400
3758 
3759      API of _do_read()
3760 
3761   src/allmydata/mutable/servermap.py |    6 ++++--
3762   1 files changed, 4 insertions(+), 2 deletions(-)
3763 
3764  commit e7e9e338f28d004aa4d423d11c65f1e271ac7322
3765  Author: Brian Warner <warner@lothar.com>
3766  Date:   Mon Oct 3 14:20:21 2011 -0400
3767 
3768      API of _do_query()
3769 
3770   src/allmydata/mutable/servermap.py |   15 +++++++--------
3771   1 files changed, 7 insertions(+), 8 deletions(-)
3772 
3773  commit 330625b9dac4cdbe72a11464a893065b9aeed453
3774  Author: Brian Warner <warner@lothar.com>
3775  Date:   Mon Oct 3 14:43:05 2011 -0400
3776 
3777      next step: first batch of updates to ServermapUpdater
3778 
3779      updates:
3780       most method-local variables in update()
3781       API of _build_initial_querylist()
3782       API of _send_initial_requests()
3783       .full_serverlist
3784       .extra_servers
3785 
3786   src/allmydata/mutable/servermap.py |   39 ++++++++++++++------------
3787   1 files changed, 21 insertions(+), 18 deletions(-)
3788 
3789  commit 4aadc584fa7dcb2daa86b048c81dee0049ba26d9
3790  Author: Brian Warner <warner@lothar.com>
3791  Date:   Mon Oct 3 15:07:00 2011 -0400
3792 
3793      internal change: index _bad_shares with IServer
3794 
3795   src/allmydata/mutable/servermap.py |   20 ++++++++++----------
3796   1 files changed, 10 insertions(+), 10 deletions(-)
3797 
3798  commit 16d4e6fa82a9907dbdc92094213387c6a4164e41
3799  Author: Brian Warner <warner@lothar.com>
3800  Date:   Mon Oct 3 18:20:47 2011 +0100
3801 
3802      internal change: index _known_shares with IServer instead of serverid
3803 
3804      callers are unchanged
3805 
3806   src/allmydata/mutable/servermap.py |   42 +++++++++++++++----------
3807   1 files changed, 25 insertions(+), 17 deletions(-)
3808 
3809  commit ceeb5f4938cc814a0c75d1b8f4018aed965c2176
3810  Author: Brian Warner <warner@lothar.com>
3811  Date:   Mon Oct 3 18:11:43 2011 +0100
3812 
3813      accessors and name cleanup for servermap.Servermap.last_update_mode/time
3814 
3815   src/allmydata/mutable/filenode.py  |    6 +++---
3816   src/allmydata/mutable/publish.py   |    4 ++--
3817   src/allmydata/mutable/servermap.py |   17 +++++++++++------
3818   3 files changed, 16 insertions(+), 11 deletions(-)
3819 
3820  commit 8d3cbda82661c0a7e5c3d3b65cf7a5d5ab7e32c0
3821  Author: Brian Warner <warner@lothar.com>
3822  Date:   Mon Oct 3 18:11:14 2011 +0100
3823 
3824      accessors and name cleanup for servermap.Servermap.problems
3825 
3826   src/allmydata/mutable/servermap.py |   21 +++++++++++++--------
3827   src/allmydata/test/test_mutable.py |    6 +++---
3828   2 files changed, 16 insertions(+), 11 deletions(-)
3829 
3830  commit 348f57988f79389db0aab7672e6eaa9a6d8e3219
3831  Author: Brian Warner <warner@lothar.com>
3832  Date:   Mon Oct 3 18:10:41 2011 +0100
3833 
3834      accessors and name cleanup for servermap.Servermap.bad_shares
3835 
3836   src/allmydata/mutable/publish.py   |    2 +-
3837   src/allmydata/mutable/servermap.py |   30 ++++++++++++++-----------
3838   2 files changed, 18 insertions(+), 14 deletions(-)
3839 
3840  commit 520c9368134673cdf76c653c5e1bb91c2ab5d51e
3841  Author: Brian Warner <warner@lothar.com>
3842  Date:   Mon Oct 3 18:10:05 2011 +0100
3843 
3844      accessors and name cleanup for servermap.Servermap.servermap .
3845 
3846   src/allmydata/mutable/publish.py   |   14 +++++----
3847   src/allmydata/mutable/servermap.py |   38 ++++++++++++++-----------
3848   2 files changed, 29 insertions(+), 23 deletions(-)
3849 
3850  commit b8b8dc38287a91dbdf494426ac801d9381ce5841
3851  Author: Brian Warner <warner@lothar.com>
3852  Date:   Mon Oct 3 18:08:02 2011 +0100
3853 
3854      fix reachable_servers
3855 
3856   src/allmydata/mutable/checker.py   |    3 ++-
3857   src/allmydata/mutable/publish.py   |    4 +++-
3858   src/allmydata/mutable/servermap.py |   12 ++++++++++--
3859   3 files changed, 15 insertions(+), 4 deletions(-)
3860 
3861  commit cb0cfd1adfefad357c187aaaf690c3df68b622bc
3862  Author: Brian Warner <warner@lothar.com>
3863  Date:   Mon Oct 3 18:06:03 2011 +0100
3864 
3865      fix Servermap.unreachable_servers
3866 
3867   src/allmydata/mutable/servermap.py |   11 ++++++++---
3868   1 files changed, 8 insertions(+), 3 deletions(-)
3869 
3870  commit 2d9ea79b94bd4db674d40386fda90825785ac495
3871  Author: Brian Warner <warner@lothar.com>
3872  Date:   Mon Oct 3 18:03:48 2011 +0100
3873 
3874      give ServerMap a StorageFarmBroker, temporary
3875 
3876      this makes it possible for the ServerMap to accept bare serverids and still
3877      build data structures with IServers
3878 
3879   src/allmydata/mutable/checker.py   |    2 +-
3880   src/allmydata/mutable/filenode.py  |    2 +-
3881   src/allmydata/mutable/publish.py   |    2 +-
3882   src/allmydata/mutable/servermap.py |    5 +++--
3883   src/allmydata/test/test_mutable.py |    8 ++++----
3884   5 files changed, 10 insertions(+), 9 deletions(-)
3885 
3886  commit 718d1aeff6fded893f65397806d22ece928b0dd4
3887  Author: Brian Warner <warner@lothar.com>
3888  Date:   Mon Oct 3 13:43:30 2011 -0400
3889 
3890      add StorageFarmBroker.get_server_for_id(), temporary helper
3891 
3892      This will go away once we're passing IServers everywhere.
3893 
3894   src/allmydata/storage_client.py  |    2 ++
3895   src/allmydata/test/no_network.py |   13 +++++++++++++
3896   2 files changed, 15 insertions(+), 0 deletions(-)
3897 
3898  commit ece20231d7fda0d503704842a4aa068dfbc2e54e
3899  Author: Brian Warner <warner@lothar.com>
3900  Date:   Sun Oct 2 01:11:50 2011 +0100
3901 
3902      add proper accessors for Servermap.connections, to make refactoring easier
3903 
3904   src/allmydata/mutable/publish.py   |    6 +++---
3905   src/allmydata/mutable/retrieve.py  |   10 +++++-----
3906   src/allmydata/mutable/servermap.py |   17 +++++++++++------
3907   3 files changed, 19 insertions(+), 14 deletions(-)
3908 
3909  commit 3b943d6bf302ff702668081a612fc4fe2604cf9c
3910  Author: Brian Warner <warner@lothar.com>
3911  Date:   Fri Sep 23 10:34:30 2011 -0700
3912 
3913      mutable/servermap.py and neighbors: s/peer/server/
3914 
3915   src/allmydata/mutable/checker.py   |   22 +-
3916   src/allmydata/mutable/publish.py   |  204 +++++++-------
3917   src/allmydata/mutable/servermap.py |  402 +++++++++++++-------------
3918   src/allmydata/test/test_mutable.py |   18 +-
3919   4 files changed, 323 insertions(+), 323 deletions(-)
3920]
3921[TAG allmydata-tahoe-1.9.0
3922warner@lothar.com**20111031052301
3923 Ignore-this: cf598210dd1f314a1a121bf29a3d5918
3924]
3925Patch bundle hash:
39265b362e7b8fb803719c735e5d00f4f11887a42f38