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