1 | Sat Sep 24 16:51:37 PDT 2011 kevan@isnotajoke.com |
---|
2 | * mutable/publish: use unpack_mdmf_checkstring and unpack_sdmf_checkstring instead of unpack_checkstring. fixes #1540 |
---|
3 | |
---|
4 | Sat Sep 24 16:54:15 PDT 2011 kevan@isnotajoke.com |
---|
5 | * test/test_mutable: reenable mdmf publish surprise test |
---|
6 | |
---|
7 | Sat Sep 24 17:41:34 PDT 2011 kevan@isnotajoke.com |
---|
8 | * mutable/layout: break unpack_checkstring into unpack_mdmf_checkstring and unpack_sdmf_checkstring, add distinguisher function for checkstrings |
---|
9 | |
---|
10 | Sat Sep 24 17:43:05 PDT 2011 kevan@isnotajoke.com |
---|
11 | * mutable/publish: handle unknown mutable share formats when handling errors |
---|
12 | |
---|
13 | New patches: |
---|
14 | |
---|
15 | [mutable/publish: use unpack_mdmf_checkstring and unpack_sdmf_checkstring instead of unpack_checkstring. fixes #1540 |
---|
16 | kevan@isnotajoke.com**20110924235137 |
---|
17 | Ignore-this: 52ca3d9627b8b0ba758367b2bd6c7085 |
---|
18 | ] { |
---|
19 | hunk ./src/allmydata/mutable/publish.py 21 |
---|
20 | from allmydata.mutable.common import MODE_WRITE, MODE_CHECK, \ |
---|
21 | UncoordinatedWriteError, NotEnoughServersError |
---|
22 | from allmydata.mutable.servermap import ServerMap |
---|
23 | -from allmydata.mutable.layout import unpack_checkstring, MDMFSlotWriteProxy, \ |
---|
24 | - SDMFSlotWriteProxy |
---|
25 | +from allmydata.mutable.layout import get_version_from_checkstring,\ |
---|
26 | + unpack_mdmf_checkstring, \ |
---|
27 | + unpack_sdmf_checkstring, \ |
---|
28 | + MDMFSlotWriteProxy, \ |
---|
29 | + SDMFSlotWriteProxy, MDMFCHECKSTRING |
---|
30 | |
---|
31 | KiB = 1024 |
---|
32 | DEFAULT_MAX_SEGMENT_SIZE = 128 * KiB |
---|
33 | hunk ./src/allmydata/mutable/publish.py 1108 |
---|
34 | # use the checkstring to add information to the log message |
---|
35 | for (shnum,readv) in read_data.items(): |
---|
36 | checkstring = readv[0] |
---|
37 | - (other_seqnum, |
---|
38 | - other_roothash, |
---|
39 | - other_salt) = unpack_checkstring(checkstring) |
---|
40 | + version = get_version_from_checkstring(checkstring) |
---|
41 | + if version == MDMF_VERSION: |
---|
42 | + (other_seqnum, |
---|
43 | + other_roothash) = unpack_mdmf_checkstring(checkstring) |
---|
44 | + else: |
---|
45 | + (other_seqnum, |
---|
46 | + other_roothash, |
---|
47 | + other_salt) = unpack_sdmf_checkstring(checkstring) |
---|
48 | expected_version = self._servermap.version_on_peer(peerid, |
---|
49 | shnum) |
---|
50 | if expected_version: |
---|
51 | } |
---|
52 | [test/test_mutable: reenable mdmf publish surprise test |
---|
53 | kevan@isnotajoke.com**20110924235415 |
---|
54 | Ignore-this: f752e47a703684491305cc83d16248fb |
---|
55 | ] hunk ./src/allmydata/test/test_mutable.py 2536 |
---|
56 | return self.do_publish_surprise(SDMF_VERSION) |
---|
57 | |
---|
58 | def test_publish_surprise_mdmf(self): |
---|
59 | - raise unittest.SkipTest("this currently triggers a decoding error in unpack_checkstring (see #1540)") |
---|
60 | return self.do_publish_surprise(MDMF_VERSION) |
---|
61 | |
---|
62 | def test_retrieve_surprise(self): |
---|
63 | [mutable/layout: break unpack_checkstring into unpack_mdmf_checkstring and unpack_sdmf_checkstring, add distinguisher function for checkstrings |
---|
64 | kevan@isnotajoke.com**20110925004134 |
---|
65 | Ignore-this: 57f49ed5a72e418a69c7286a225cc8fb |
---|
66 | ] { |
---|
67 | hunk ./src/allmydata/mutable/layout.py 139 |
---|
68 | pubkey, signature, share_hash_chain, block_hash_tree, |
---|
69 | share_data, enc_privkey) |
---|
70 | |
---|
71 | -def unpack_checkstring(checkstring): |
---|
72 | +def get_version_from_checkstring(checkstring): |
---|
73 | + (t, ) = struct.unpack(">B", checkstring[:1]) |
---|
74 | + return t |
---|
75 | + |
---|
76 | +def unpack_sdmf_checkstring(checkstring): |
---|
77 | cs_len = struct.calcsize(PREFIX) |
---|
78 | version, seqnum, root_hash, IV = struct.unpack(PREFIX, checkstring[:cs_len]) |
---|
79 | if version != 0: # TODO: just ignore the share |
---|
80 | hunk ./src/allmydata/mutable/layout.py 150 |
---|
81 | raise UnknownVersionError("got mutable share version %d, but I only understand version 0" % version) |
---|
82 | return (seqnum, root_hash, IV) |
---|
83 | |
---|
84 | +def unpack_mdmf_checkstring(checkstring): |
---|
85 | + cs_len = struct.calcsize(MDMFCHECKSTRING) |
---|
86 | + checkstring = checkstring[:cs_len] |
---|
87 | + version, seqnum, root_hash = struct.unpack(MDMFCHECKSTRING, checkstring) |
---|
88 | + |
---|
89 | + assert version == 1 |
---|
90 | + return (seqnum, root_hash) |
---|
91 | |
---|
92 | def pack_offsets(verification_key_length, signature_length, |
---|
93 | share_hash_chain_length, block_hash_tree_length, |
---|
94 | } |
---|
95 | [mutable/publish: handle unknown mutable share formats when handling errors |
---|
96 | kevan@isnotajoke.com**20110925004305 |
---|
97 | Ignore-this: 4d5fa44ef7d777c432eb10c9584ad51f |
---|
98 | ] { |
---|
99 | hunk ./src/allmydata/mutable/publish.py 1106 |
---|
100 | self.surprised = True |
---|
101 | self.bad_peers.add(writer) # don't ask them again |
---|
102 | # use the checkstring to add information to the log message |
---|
103 | + unknown_format = False |
---|
104 | for (shnum,readv) in read_data.items(): |
---|
105 | checkstring = readv[0] |
---|
106 | version = get_version_from_checkstring(checkstring) |
---|
107 | hunk ./src/allmydata/mutable/publish.py 1113 |
---|
108 | if version == MDMF_VERSION: |
---|
109 | (other_seqnum, |
---|
110 | other_roothash) = unpack_mdmf_checkstring(checkstring) |
---|
111 | - else: |
---|
112 | + elif version == SDMF_VERSION: |
---|
113 | (other_seqnum, |
---|
114 | other_roothash, |
---|
115 | other_salt) = unpack_sdmf_checkstring(checkstring) |
---|
116 | hunk ./src/allmydata/mutable/publish.py 1117 |
---|
117 | + else: |
---|
118 | + unknown_format = True |
---|
119 | expected_version = self._servermap.version_on_peer(peerid, |
---|
120 | shnum) |
---|
121 | if expected_version: |
---|
122 | hunk ./src/allmydata/mutable/publish.py 1124 |
---|
123 | (seqnum, root_hash, IV, segsize, datalength, k, N, prefix, |
---|
124 | offsets_tuple) = expected_version |
---|
125 | - self.log("somebody modified the share on us:" |
---|
126 | - " shnum=%d: I thought they had #%d:R=%s," |
---|
127 | - " but testv reported #%d:R=%s" % |
---|
128 | - (shnum, |
---|
129 | - seqnum, base32.b2a(root_hash)[:4], |
---|
130 | - other_seqnum, base32.b2a(other_roothash)[:4]), |
---|
131 | - parent=lp, level=log.NOISY) |
---|
132 | + msg = ("somebody modified the share on us:" |
---|
133 | + " shnum=%d: I thought they had #%d:R=%s," % |
---|
134 | + (shnum, |
---|
135 | + seqnum, base32.b2a(root_hash)[:4])) |
---|
136 | + if unknown_format: |
---|
137 | + msg += (" but I don't know how to read share" |
---|
138 | + " format %d" % version) |
---|
139 | + else: |
---|
140 | + msg += " but testv reported #%d:R=%s" % \ |
---|
141 | + (other_seqnum, other_roothash) |
---|
142 | + self.log(msg, parent=lp, level=log.NOISY) |
---|
143 | # if expected_version==None, then we didn't expect to see a |
---|
144 | # share on that peer, and the 'surprise_shares' clause above |
---|
145 | # will have logged it. |
---|
146 | } |
---|
147 | |
---|
148 | Context: |
---|
149 | |
---|
150 | [test_mutable.py: update SkipTest message for test_publish_surprise_mdmf to reference the right ticket number. refs #1540. |
---|
151 | david-sarah@jacaranda.org**20110923211622 |
---|
152 | Ignore-this: 44f16a6817a6b75930bbba18b0a516be |
---|
153 | ] |
---|
154 | [control.py: unbreak speed-test: overwrite() wants a MutableData, not str |
---|
155 | Brian Warner <warner@lothar.com>**20110923073748 |
---|
156 | Ignore-this: 7dad7aff3d66165868a64ae22d225fa3 |
---|
157 | |
---|
158 | Really, all the upload/modify APIs should take a string or a filehandle, and |
---|
159 | internally wrap it as needed. Callers should not need to be aware of |
---|
160 | Uploadable() or MutableData() classes. |
---|
161 | ] |
---|
162 | [test_mutable.py: skip test_publish_surprise_mdmf, which is causing an error. refs #1534, #393 |
---|
163 | david-sarah@jacaranda.org**20110920183319 |
---|
164 | Ignore-this: 6fb020e09e8de437cbcc2c9f57835b31 |
---|
165 | ] |
---|
166 | [.darcs-boringfile: minor cleanups. |
---|
167 | david-sarah@jacaranda.org**20110920154918 |
---|
168 | Ignore-this: cab78e30d293da7e2832207dbee2ffeb |
---|
169 | ] |
---|
170 | [uri.py: fix two interface violations in verifier URI classes. refs #1474 |
---|
171 | david-sarah@jacaranda.org**20110920030156 |
---|
172 | Ignore-this: 454ddd1419556cb1d7576d914cb19598 |
---|
173 | ] |
---|
174 | [test/test_mutable: write publish surprise test for MDMF, rename existing test_publish_surprise to clarify that it is for SDMF |
---|
175 | kevan@isnotajoke.com**20110918003657 |
---|
176 | Ignore-this: 722c507e8f5b537ff920e0555951059a |
---|
177 | ] |
---|
178 | [test/test_mutable: refactor publish surprise test into common test fixture, rewrite test_publish_surprise to use test fixture |
---|
179 | kevan@isnotajoke.com**20110918003533 |
---|
180 | Ignore-this: 6f135888d400a99a09b5f9a4be443b6e |
---|
181 | ] |
---|
182 | [mutable/publish: add errback immediately after write, don't consume errors from other parts of the publisher |
---|
183 | kevan@isnotajoke.com**20110917234708 |
---|
184 | Ignore-this: 12bf6b0918a5dc5ffc30ece669fad51d |
---|
185 | ] |
---|
186 | [Make platform-detection code tolerate linux-3.0, patch by zooko. |
---|
187 | Brian Warner <warner@lothar.com>**20110915202620 |
---|
188 | Ignore-this: af63cf9177ae531984dea7a1cad03762 |
---|
189 | |
---|
190 | Otherwise address-autodetection can't find ifconfig. refs #1536 |
---|
191 | ] |
---|
192 | [test_web.py: fix a bug in _count_leases that was causing us to check only the lease count of one share file, not of all share files as intended. |
---|
193 | david-sarah@jacaranda.org**20110915185126 |
---|
194 | Ignore-this: d96632bc48d770b9b577cda1bbd8ff94 |
---|
195 | ] |
---|
196 | [docs: insert a newline at the beginning of known_issues.rst to see if this makes it render more nicely in trac |
---|
197 | zooko@zooko.com**20110914064728 |
---|
198 | Ignore-this: aca15190fa22083c5d4114d3965f5d65 |
---|
199 | ] |
---|
200 | [docs: remove the coding: utf-8 declaration at the to of known_issues.rst, since the trac rendering doesn't hide it |
---|
201 | zooko@zooko.com**20110914055713 |
---|
202 | Ignore-this: 941ed32f83ead377171aa7a6bd198fcf |
---|
203 | ] |
---|
204 | [docs: more cleanup of known_issues.rst -- now it passes "rst2html --verbose" without comment |
---|
205 | zooko@zooko.com**20110914055419 |
---|
206 | Ignore-this: 5505b3d76934bd97d0312cc59ed53879 |
---|
207 | ] |
---|
208 | [docs: more formatting improvements to known_issues.rst |
---|
209 | zooko@zooko.com**20110914051639 |
---|
210 | Ignore-this: 9ae9230ec9a38a312cbacaf370826691 |
---|
211 | ] |
---|
212 | [docs: reformatting of known_issues.rst |
---|
213 | zooko@zooko.com**20110914050240 |
---|
214 | Ignore-this: b8be0375079fb478be9d07500f9aaa87 |
---|
215 | ] |
---|
216 | [docs: fix formatting error in docs/known_issues.rst |
---|
217 | zooko@zooko.com**20110914045909 |
---|
218 | Ignore-this: f73fe74ad2b9e655aa0c6075acced15a |
---|
219 | ] |
---|
220 | [merge Tahoe-LAFS v1.8.3 release announcement with trunk |
---|
221 | zooko@zooko.com**20110913210544 |
---|
222 | Ignore-this: 163f2c3ddacca387d7308e4b9332516e |
---|
223 | ] |
---|
224 | [docs: release notes for Tahoe-LAFS v1.8.3 |
---|
225 | zooko@zooko.com**20110913165826 |
---|
226 | Ignore-this: 84223604985b14733a956d2fbaeb4e9f |
---|
227 | ] |
---|
228 | [tests: bump up the timeout in this test that fails on FreeStorm's CentOS in order to see if it is just very slow |
---|
229 | zooko@zooko.com**20110913024255 |
---|
230 | Ignore-this: 6a86d691e878cec583722faad06fb8e4 |
---|
231 | ] |
---|
232 | [interfaces: document that the 'fills-holes-with-zero-bytes' key should be used to detect whether a storage server has that behavior. refs #1528 |
---|
233 | david-sarah@jacaranda.org**20110913002843 |
---|
234 | Ignore-this: 1a00a6029d40f6792af48c5578c1fd69 |
---|
235 | ] |
---|
236 | [CREDITS: more CREDITS for Kevan and David-Sarah |
---|
237 | zooko@zooko.com**20110912223357 |
---|
238 | Ignore-this: 4ea8f0d6f2918171d2f5359c25ad1ada |
---|
239 | ] |
---|
240 | [merge NEWS about the mutable file bounds fixes with NEWS about work-in-progress |
---|
241 | zooko@zooko.com**20110913205521 |
---|
242 | Ignore-this: 4289a4225f848d6ae6860dd39bc92fa8 |
---|
243 | ] |
---|
244 | [doc: add NEWS item about fixes to potential palimpsest issues in mutable files |
---|
245 | zooko@zooko.com**20110912223329 |
---|
246 | Ignore-this: 9d63c95ddf95c7d5453c94a1ba4d406a |
---|
247 | ref. #1528 |
---|
248 | ] |
---|
249 | [merge the NEWS about the security fix (#1528) with the work-in-progress NEWS |
---|
250 | zooko@zooko.com**20110913205153 |
---|
251 | Ignore-this: 88e88a2ad140238c62010cf7c66953fc |
---|
252 | ] |
---|
253 | [doc: add NEWS entry about the issue which allows unauthorized deletion of shares |
---|
254 | zooko@zooko.com**20110912223246 |
---|
255 | Ignore-this: 77e06d09103d2ef6bb51ea3e5d6e80b0 |
---|
256 | ref. #1528 |
---|
257 | ] |
---|
258 | [doc: add entry in known_issues.rst about the issue which allows unauthorized deletion of shares |
---|
259 | zooko@zooko.com**20110912223135 |
---|
260 | Ignore-this: b26c6ea96b6c8740b93da1f602b5a4cd |
---|
261 | ref. #1528 |
---|
262 | ] |
---|
263 | [storage: more paranoid handling of bounds and palimpsests in mutable share files |
---|
264 | zooko@zooko.com**20110912222655 |
---|
265 | Ignore-this: a20782fa423779ee851ea086901e1507 |
---|
266 | * storage server ignores requests to extend shares by sending a new_length |
---|
267 | * storage server fills exposed holes (created by sending a write vector whose offset begins after the end of the current data) with 0 to avoid "palimpsest" exposure of previous contents |
---|
268 | * storage server zeroes out lease info at the old location when moving it to a new location |
---|
269 | ref. #1528 |
---|
270 | ] |
---|
271 | [storage: test that the storage server ignores requests to extend shares by sending a new_length, and that the storage server fills exposed holes with 0 to avoid "palimpsest" exposure of previous contents |
---|
272 | zooko@zooko.com**20110912222554 |
---|
273 | Ignore-this: 61ebd7b11250963efdf5b1734a35271 |
---|
274 | ref. #1528 |
---|
275 | ] |
---|
276 | [immutable: prevent clients from reading past the end of share data, which would allow them to learn the cancellation secret |
---|
277 | zooko@zooko.com**20110912222458 |
---|
278 | Ignore-this: da1ebd31433ea052087b75b2e3480c25 |
---|
279 | Declare explicitly that we prevent this problem in the server's version dict. |
---|
280 | fixes #1528 (there are two patches that are each a sufficient fix to #1528 and this is one of them) |
---|
281 | ] |
---|
282 | [storage: remove the storage server's "remote_cancel_lease" function |
---|
283 | zooko@zooko.com**20110912222331 |
---|
284 | Ignore-this: 1c32dee50e0981408576daffad648c50 |
---|
285 | We're removing this function because it is currently unused, because it is dangerous, and because the bug described in #1528 leaks the cancellation secret, which allows anyone who knows a file's storage index to abuse this function to delete shares of that file. |
---|
286 | fixes #1528 (there are two patches that are each a sufficient fix to #1528 and this is one of them) |
---|
287 | ] |
---|
288 | [storage: test that the storage server does *not* have a "remote_cancel_lease" function |
---|
289 | zooko@zooko.com**20110912222324 |
---|
290 | Ignore-this: 21c652009704652d35f34651f98dd403 |
---|
291 | We're removing this function because it is currently unused, because it is dangerous, and because the bug described in #1528 leaks the cancellation secret, which allows anyone who knows a file's storage index to abuse this function to delete shares of that file. |
---|
292 | ref. #1528 |
---|
293 | ] |
---|
294 | [immutable: test whether the server allows clients to read past the end of share data, which would allow them to learn the cancellation secret |
---|
295 | zooko@zooko.com**20110912221201 |
---|
296 | Ignore-this: 376e47b346c713d37096531491176349 |
---|
297 | Also test whether the server explicitly declares that it prevents this problem. |
---|
298 | ref #1528 |
---|
299 | ] |
---|
300 | [Retrieve._activate_enough_peers: rewrite Verify logic |
---|
301 | Brian Warner <warner@lothar.com>**20110909181150 |
---|
302 | Ignore-this: 9367c11e1eacbf025f75ce034030d717 |
---|
303 | ] |
---|
304 | [Retrieve: implement/test stopProducing |
---|
305 | Brian Warner <warner@lothar.com>**20110909181150 |
---|
306 | Ignore-this: 47b2c3df7dc69835e0a066ca12e3c178 |
---|
307 | ] |
---|
308 | [move DownloadStopped from download.common to interfaces |
---|
309 | Brian Warner <warner@lothar.com>**20110909181150 |
---|
310 | Ignore-this: 8572acd3bb16e50341dbed8eb1d90a50 |
---|
311 | ] |
---|
312 | [retrieve.py: remove vestigal self._validated_readers |
---|
313 | Brian Warner <warner@lothar.com>**20110909181150 |
---|
314 | Ignore-this: faab2ec14e314a53a2ffb714de626e2d |
---|
315 | ] |
---|
316 | [Retrieve: rewrite flow-control: use a top-level loop() to catch all errors |
---|
317 | Brian Warner <warner@lothar.com>**20110909181150 |
---|
318 | Ignore-this: e162d2cd53b3d3144fc6bc757e2c7714 |
---|
319 | |
---|
320 | This ought to close the potential for dropped errors and hanging downloads. |
---|
321 | Verify needs to be examined, I may have broken it, although all tests pass. |
---|
322 | ] |
---|
323 | [Retrieve: merge _validate_active_prefixes into _add_active_peers |
---|
324 | Brian Warner <warner@lothar.com>**20110909181150 |
---|
325 | Ignore-this: d3ead31e17e69394ae7058eeb5beaf4c |
---|
326 | ] |
---|
327 | [Retrieve: remove the initial prefix-is-still-good check |
---|
328 | Brian Warner <warner@lothar.com>**20110909181150 |
---|
329 | Ignore-this: da66ee51c894eaa4e862e2dffb458acc |
---|
330 | |
---|
331 | This check needs to be done with each fetch from the storage server, to |
---|
332 | detect when someone has changed the share (i.e. our servermap goes stale). |
---|
333 | Doing it just once at the beginning of retrieve isn't enough: a write might |
---|
334 | occur after the first segment but before the second, etc. |
---|
335 | |
---|
336 | _try_to_validate_prefix() was not removed: it will be used by the future |
---|
337 | check-with-each-fetch code. |
---|
338 | |
---|
339 | test_mutable.Roundtrip.test_corrupt_all_seqnum_late was disabled, since it |
---|
340 | fails until this check is brought back. (the corruption it applies only |
---|
341 | touches the prefix, not the block data, so the check-less retrieve actually |
---|
342 | tolerates it). Don't forget to re-enable it once the check is brought back. |
---|
343 | ] |
---|
344 | [MDMFSlotReadProxy: remove the queue |
---|
345 | Brian Warner <warner@lothar.com>**20110909181150 |
---|
346 | Ignore-this: 96673cb8dda7a87a423de2f4897d66d2 |
---|
347 | |
---|
348 | This is a neat trick to reduce Foolscap overhead, but the need for an |
---|
349 | explicit flush() complicates the Retrieve path and makes it prone to |
---|
350 | lost-progress bugs. |
---|
351 | |
---|
352 | Also change test_mutable.FakeStorageServer to tolerate multiple reads of the |
---|
353 | same share in a row, a limitation exposed by turning off the queue. |
---|
354 | ] |
---|
355 | [rearrange Retrieve: first step, shouldn't change order of execution |
---|
356 | Brian Warner <warner@lothar.com>**20110909181149 |
---|
357 | Ignore-this: e3006368bfd2802b82ea45c52409e8d6 |
---|
358 | ] |
---|
359 | [CLI: test_cli.py -- remove an unnecessary call in test_mkdir_mutable_type. refs #1527 |
---|
360 | david-sarah@jacaranda.org**20110906183730 |
---|
361 | Ignore-this: 122e2ffbee84861c32eda766a57759cf |
---|
362 | ] |
---|
363 | [CLI: improve test for 'tahoe mkdir --mutable-type='. refs #1527 |
---|
364 | david-sarah@jacaranda.org**20110906183020 |
---|
365 | Ignore-this: f1d4598e6c536f0a2b15050b3bc0ef9d |
---|
366 | ] |
---|
367 | [CLI: make the --mutable-type option value for 'tahoe put' and 'tahoe mkdir' case-insensitive, and change --help for these commands accordingly. fixes #1527 |
---|
368 | david-sarah@jacaranda.org**20110905020922 |
---|
369 | Ignore-this: 75a6df0a2df9c467d8c010579e9a024e |
---|
370 | ] |
---|
371 | [cli: make --mutable-type imply --mutable in 'tahoe put' |
---|
372 | Kevan Carstensen <kevan@isnotajoke.com>**20110903190920 |
---|
373 | Ignore-this: 23336d3c43b2a9554e40c2a11c675e93 |
---|
374 | ] |
---|
375 | [SFTP: add a comment about a subtle interaction between OverwriteableFileConsumer and GeneralSFTPFile, and test the case it is commenting on. |
---|
376 | david-sarah@jacaranda.org**20110903222304 |
---|
377 | Ignore-this: 980c61d4dd0119337f1463a69aeebaf0 |
---|
378 | ] |
---|
379 | [improve the storage/mutable.py asserts even more |
---|
380 | warner@lothar.com**20110901160543 |
---|
381 | Ignore-this: 5b2b13c49bc4034f96e6e3aaaa9a9946 |
---|
382 | ] |
---|
383 | [storage/mutable.py: special characters in struct.foo arguments indicate standard as opposed to native sizes, we should be using these characters in these asserts |
---|
384 | wilcoxjg@gmail.com**20110901084144 |
---|
385 | Ignore-this: 28ace2b2678642e4d7269ddab8c67f30 |
---|
386 | ] |
---|
387 | [docs/write_coordination.rst: fix formatting and add more specific warning about access via sshfs. |
---|
388 | david-sarah@jacaranda.org**20110831232148 |
---|
389 | Ignore-this: cd9c851d3eb4e0a1e088f337c291586c |
---|
390 | ] |
---|
391 | [test_mutable.Version: consolidate some tests, reduce runtime from 19s to 15s |
---|
392 | warner@lothar.com**20110831050451 |
---|
393 | Ignore-this: 64815284d9e536f8f3798b5f44cf580c |
---|
394 | ] |
---|
395 | [mutable/retrieve: handle the case where self._read_length is 0. |
---|
396 | Kevan Carstensen <kevan@isnotajoke.com>**20110830210141 |
---|
397 | Ignore-this: fceafbe485851ca53f2774e5a4fd8d30 |
---|
398 | |
---|
399 | Note that the downloader will still fetch a segment for a zero-length |
---|
400 | read, which is wasteful. Fixing that isn't specifically required to fix |
---|
401 | #1512, but it should probably be fixed before 1.9. |
---|
402 | ] |
---|
403 | [NEWS: added summary of all changes since 1.8.2. Needs editing. |
---|
404 | Brian Warner <warner@lothar.com>**20110830163205 |
---|
405 | Ignore-this: 273899b37a899fc6919b74572454b8b2 |
---|
406 | ] |
---|
407 | [test_mutable.Update: only upload the files needed for each test. refs #1500 |
---|
408 | Brian Warner <warner@lothar.com>**20110829072717 |
---|
409 | Ignore-this: 4d2ab4c7523af9054af7ecca9c3d9dc7 |
---|
410 | |
---|
411 | This first step shaves 15% off the runtime: from 139s to 119s on my laptop. |
---|
412 | It also fixes a couple of places where a Deferred was being dropped, which |
---|
413 | would cause two tests to run in parallel and also confuse error reporting. |
---|
414 | ] |
---|
415 | [Let Uploader retain History instead of passing it into upload(). Fixes #1079. |
---|
416 | Brian Warner <warner@lothar.com>**20110829063246 |
---|
417 | Ignore-this: 3902c58ec12bd4b2d876806248e19f17 |
---|
418 | |
---|
419 | This consistently records all immutable uploads in the Recent Uploads And |
---|
420 | Downloads page, regardless of code path. Previously, certain webapi upload |
---|
421 | operations (like PUT /uri/$DIRCAP/newchildname) failed to pass the History |
---|
422 | object and were left out. |
---|
423 | ] |
---|
424 | [Fix mutable publish/retrieve timing status displays. Fixes #1505. |
---|
425 | Brian Warner <warner@lothar.com>**20110828232221 |
---|
426 | Ignore-this: 4080ce065cf481b2180fd711c9772dd6 |
---|
427 | |
---|
428 | publish: |
---|
429 | * encrypt and encode times are cumulative, not just current-segment |
---|
430 | |
---|
431 | retrieve: |
---|
432 | * same for decrypt and decode times |
---|
433 | * update "current status" to include segment number |
---|
434 | * set status to Finished/Failed when download is complete |
---|
435 | * set progress to 1.0 when complete |
---|
436 | |
---|
437 | More improvements to consider: |
---|
438 | * progress is currently 0% or 100%: should calculate how many segments are |
---|
439 | involved (remembering retrieve can be less than the whole file) and set it |
---|
440 | to a fraction |
---|
441 | * "fetch" time is fuzzy: what we want is to know how much of the delay is not |
---|
442 | our own fault, but since we do decode/decrypt work while waiting for more |
---|
443 | shares, it's not straightforward |
---|
444 | ] |
---|
445 | [Teach 'tahoe debug catalog-shares about MDMF. Closes #1507. |
---|
446 | Brian Warner <warner@lothar.com>**20110828080931 |
---|
447 | Ignore-this: 56ef2951db1a648353d7daac6a04c7d1 |
---|
448 | ] |
---|
449 | [debug.py: remove some dead comments |
---|
450 | Brian Warner <warner@lothar.com>**20110828074556 |
---|
451 | Ignore-this: 40e74040dd4d14fd2f4e4baaae506b31 |
---|
452 | ] |
---|
453 | [hush pyflakes |
---|
454 | Brian Warner <warner@lothar.com>**20110828074254 |
---|
455 | Ignore-this: bef9d537a969fa82fe4decc4ba2acb09 |
---|
456 | ] |
---|
457 | [MutableFileNode.set_downloader_hints: never depend upon order of dict.values() |
---|
458 | Brian Warner <warner@lothar.com>**20110828074103 |
---|
459 | Ignore-this: caaf1aa518dbdde4d797b7f335230faa |
---|
460 | |
---|
461 | The old code was calculating the "extension parameters" (a list) from the |
---|
462 | downloader hints (a dictionary) with hints.values(), which is not stable, and |
---|
463 | would result in corrupted filecaps (with the 'k' and 'segsize' hints |
---|
464 | occasionally swapped). The new code always uses [k,segsize]. |
---|
465 | ] |
---|
466 | [layout.py: fix MDMF share layout documentation |
---|
467 | Brian Warner <warner@lothar.com>**20110828073921 |
---|
468 | Ignore-this: 3f13366fed75b5e31b51ae895450a225 |
---|
469 | ] |
---|
470 | [teach 'tahoe debug dump-share' about MDMF and offsets. refs #1507 |
---|
471 | Brian Warner <warner@lothar.com>**20110828073834 |
---|
472 | Ignore-this: 3a9d2ef9c47a72bf1506ba41199a1dea |
---|
473 | ] |
---|
474 | [test_mutable.Version.test_debug: use splitlines() to fix buildslaves |
---|
475 | Brian Warner <warner@lothar.com>**20110828064728 |
---|
476 | Ignore-this: c7f6245426fc80b9d1ae901d5218246a |
---|
477 | |
---|
478 | Any slave running in a directory with spaces in the name was miscounting |
---|
479 | shares, causing the test to fail. |
---|
480 | ] |
---|
481 | [test_mutable.Version: exercise 'tahoe debug find-shares' on MDMF. refs #1507 |
---|
482 | Brian Warner <warner@lothar.com>**20110828005542 |
---|
483 | Ignore-this: cb20bea1c28bfa50a72317d70e109672 |
---|
484 | |
---|
485 | Also changes NoNetworkGrid to put shares in storage/shares/ . |
---|
486 | ] |
---|
487 | [test_mutable.py: oops, missed a .todo |
---|
488 | Brian Warner <warner@lothar.com>**20110828002118 |
---|
489 | Ignore-this: fda09ae86481352b7a627c278d2a3940 |
---|
490 | ] |
---|
491 | [test_mutable: merge davidsarah's patch with my Version refactorings |
---|
492 | warner@lothar.com**20110827235707 |
---|
493 | Ignore-this: b5aaf481c90d99e33827273b5d118fd0 |
---|
494 | ] |
---|
495 | [Make the immutable/read-only constraint checking for MDMF URIs identical to that for SSK URIs. refs #393 |
---|
496 | david-sarah@jacaranda.org**20110823012720 |
---|
497 | Ignore-this: e1f59d7ff2007c81dbef2aeb14abd721 |
---|
498 | ] |
---|
499 | [Additional tests for MDMF URIs and for zero-length files. refs #393 |
---|
500 | david-sarah@jacaranda.org**20110823011532 |
---|
501 | Ignore-this: a7cc0c09d1d2d72413f9cd227c47a9d5 |
---|
502 | ] |
---|
503 | [Additional tests for zero-length partial reads and updates to mutable versions. refs #393 |
---|
504 | david-sarah@jacaranda.org**20110822014111 |
---|
505 | Ignore-this: 5fc6f4d06e11910124e4a277ec8a43ea |
---|
506 | ] |
---|
507 | [test_mutable.Version: factor out some expensive uploads, save 25% runtime |
---|
508 | Brian Warner <warner@lothar.com>**20110827232737 |
---|
509 | Ignore-this: ea37383eb85ea0894b254fe4dfb45544 |
---|
510 | ] |
---|
511 | [SDMF: update filenode with correct k/N after Retrieve. Fixes #1510. |
---|
512 | Brian Warner <warner@lothar.com>**20110827225031 |
---|
513 | Ignore-this: b50ae6e1045818c400079f118b4ef48 |
---|
514 | |
---|
515 | Without this, we get a regression when modifying a mutable file that was |
---|
516 | created with more shares (larger N) than our current tahoe.cfg . The |
---|
517 | modification attempt creates new versions of the (0,1,..,newN-1) shares, but |
---|
518 | leaves the old versions of the (newN,..,oldN-1) shares alone (and throws a |
---|
519 | assertion error in SDMFSlotWriteProxy.finish_publishing in the process). |
---|
520 | |
---|
521 | The mixed versions that result (some shares with e.g. N=10, some with N=20, |
---|
522 | such that both versions are recoverable) cause problems for the Publish code, |
---|
523 | even before MDMF landed. Might be related to refs #1390 and refs #1042. |
---|
524 | ] |
---|
525 | [layout.py: annotate assertion to figure out 'tahoe backup' failure |
---|
526 | Brian Warner <warner@lothar.com>**20110827195253 |
---|
527 | Ignore-this: 9b92b954e3ed0d0f80154fff1ff674e5 |
---|
528 | ] |
---|
529 | [Add 'tahoe debug dump-cap' support for MDMF, DIR2-CHK, DIR2-MDMF. refs #1507. |
---|
530 | Brian Warner <warner@lothar.com>**20110827195048 |
---|
531 | Ignore-this: 61c6af5e33fc88e0251e697a50addb2c |
---|
532 | |
---|
533 | This also adds tests for all those cases, and fixes an omission in uri.py |
---|
534 | that broke parsing of DIR2-MDMF-Verifier and DIR2-CHK-Verifier. |
---|
535 | ] |
---|
536 | [MDMF: more writable/writeable consistentifications |
---|
537 | warner@lothar.com**20110827190602 |
---|
538 | Ignore-this: 22492a9e20c1819ddb12091062888b55 |
---|
539 | ] |
---|
540 | [MDMF: s/Writable/Writeable/g, for consistency with existing SDMF code |
---|
541 | warner@lothar.com**20110827183357 |
---|
542 | Ignore-this: 9dd312acedbdb2fc2f7bef0d0fb17c0b |
---|
543 | ] |
---|
544 | [setup.cfg: remove no-longer-supported test_mac_diskimage alias. refs #1479 |
---|
545 | david-sarah@jacaranda.org**20110826230345 |
---|
546 | Ignore-this: 40e908b8937322a290fb8012bfcad02a |
---|
547 | ] |
---|
548 | [test_mutable.Update: increase timeout from 120s to 400s, slaves are failing |
---|
549 | Brian Warner <warner@lothar.com>**20110825230140 |
---|
550 | Ignore-this: 101b1924a30cdbda9b2e419e95ca15ec |
---|
551 | ] |
---|
552 | [tests: fix check_memory test |
---|
553 | zooko@zooko.com**20110825201116 |
---|
554 | Ignore-this: 4d66299fa8cb61d2ca04b3f45344d835 |
---|
555 | fixes #1503 |
---|
556 | ] |
---|
557 | [TAG allmydata-tahoe-1.9.0a1 |
---|
558 | warner@lothar.com**20110825161122 |
---|
559 | Ignore-this: 3cbf49f00dbda58189f893c427f65605 |
---|
560 | ] |
---|
561 | Patch bundle hash: |
---|
562 | 4764f825aac75281dc27749516c1cce68456482f |
---|