Ticket #1749: fix-1749.darcs.patch

File fix-1749.darcs.patch, 129.3 KB (added by davidsarah, at 2012-06-15T03:47:23Z)

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

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