| 1 | Tue Feb 24 18:30:00 CET 2009 Alberto Berti <alberto@metapensiero.it> |
|---|
| 2 | * Half fix for bug #641. |
|---|
| 3 | |
|---|
| 4 | Instead of raising an exception and exit when a non backuppable file |
|---|
| 5 | is encountered if the '--skip-problematic' or '-s' is specified on the |
|---|
| 6 | command line the file will be skipped and backup will continue. |
|---|
| 7 | |
|---|
| 8 | Test not yet added because i'm unable to think to a platform-agnostic |
|---|
| 9 | way to test it. As soon as i've understood test_backup, i'll add one |
|---|
| 10 | for linux platform. |
|---|
| 11 | |
|---|
| 12 | Tue Feb 24 18:30:42 CET 2009 Alberto Berti <alberto@metapensiero.it> |
|---|
| 13 | * Added doc for '--skip-problematic' cli backup command. |
|---|
| 14 | |
|---|
| 15 | New patches: |
|---|
| 16 | |
|---|
| 17 | [Half fix for bug #641. |
|---|
| 18 | Alberto Berti <alberto@metapensiero.it>**20090224173000 |
|---|
| 19 | Ignore-this: 195d29650b661bca0d68d1daa2da79cb |
|---|
| 20 | |
|---|
| 21 | Instead of raising an exception and exit when a non backuppable file |
|---|
| 22 | is encountered if the '--skip-problematic' or '-s' is specified on the |
|---|
| 23 | command line the file will be skipped and backup will continue. |
|---|
| 24 | |
|---|
| 25 | Test not yet added because i'm unable to think to a platform-agnostic |
|---|
| 26 | way to test it. As soon as i've understood test_backup, i'll add one |
|---|
| 27 | for linux platform. |
|---|
| 28 | ] { |
|---|
| 29 | hunk ./src/allmydata/scripts/cli.py 210 |
|---|
| 30 | ("verbose", "v", "Be noisy about what is happening."), |
|---|
| 31 | ("no-backupdb", None, "Do not use the SQLite-based backup-database (always upload all files)."), |
|---|
| 32 | ("ignore-timestamps", None, "Do not use backupdb timestamps to decide if a local file is unchanged."), |
|---|
| 33 | + ("skip-problematic", "s", "Skip non backuppable files like dangling symlinks, devices, etc. instead of stop backup processing"), |
|---|
| 34 | ] |
|---|
| 35 | |
|---|
| 36 | vcs_patterns = ('CVS', 'RCS', 'SCCS', '.git', '.gitignore', '.cvsignore', '.svn', |
|---|
| 37 | hunk ./src/allmydata/scripts/tahoe_backup.py 1 |
|---|
| 38 | - |
|---|
| 39 | import os.path |
|---|
| 40 | import time |
|---|
| 41 | import urllib |
|---|
| 42 | hunk ./src/allmydata/scripts/tahoe_backup.py 132 |
|---|
| 43 | self.directories_created = 0 |
|---|
| 44 | self.directories_reused = 0 |
|---|
| 45 | self.directories_checked = 0 |
|---|
| 46 | + self.problematic_skipped = 0 |
|---|
| 47 | |
|---|
| 48 | def run(self): |
|---|
| 49 | options = self.options |
|---|
| 50 | hunk ./src/allmydata/scripts/tahoe_backup.py 206 |
|---|
| 51 | latest_backup_dircap = str(archives_dir[archive_name][1]["ro_uri"]) |
|---|
| 52 | |
|---|
| 53 | # third step: process the tree |
|---|
| 54 | - new_backup_dircap = self.process(options.from_dir, latest_backup_dircap) |
|---|
| 55 | + new_backup_dircap = self.process(options.from_dir, latest_backup_dircap, |
|---|
| 56 | + self.options['skip-problematic']) |
|---|
| 57 | |
|---|
| 58 | # fourth: attach the new backup to the list |
|---|
| 59 | new_readonly_backup_dircap = readonly(new_backup_dircap) |
|---|
| 60 | hunk ./src/allmydata/scripts/tahoe_backup.py 221 |
|---|
| 61 | |
|---|
| 62 | if self.verbosity >= 1: |
|---|
| 63 | print >>stdout, (" %d files uploaded (%d reused), " |
|---|
| 64 | - "%d directories created (%d reused)" |
|---|
| 65 | + "%d directories created (%d reused), " |
|---|
| 66 | + "%d problematic files skipped" |
|---|
| 67 | % (self.files_uploaded, |
|---|
| 68 | self.files_reused, |
|---|
| 69 | self.directories_created, |
|---|
| 70 | hunk ./src/allmydata/scripts/tahoe_backup.py 226 |
|---|
| 71 | - self.directories_reused)) |
|---|
| 72 | + self.directories_reused, |
|---|
| 73 | + self.problematic_skipped)) |
|---|
| 74 | if self.verbosity >= 2: |
|---|
| 75 | print >>stdout, (" %d files checked, %d directories checked, " |
|---|
| 76 | "%d directories read" |
|---|
| 77 | hunk ./src/allmydata/scripts/tahoe_backup.py 242 |
|---|
| 78 | if self.verbosity >= 2: |
|---|
| 79 | print >>self.options.stdout, msg |
|---|
| 80 | |
|---|
| 81 | - def process(self, localpath, olddircap): |
|---|
| 82 | + def process(self, localpath, olddircap, skip_problematic=False): |
|---|
| 83 | # returns newdircap |
|---|
| 84 | |
|---|
| 85 | self.verboseprint("processing %s, olddircap %s" % (localpath, olddircap)) |
|---|
| 86 | hunk ./src/allmydata/scripts/tahoe_backup.py 259 |
|---|
| 87 | if olddircontents is not None and child in olddircontents: |
|---|
| 88 | oldchildcap = olddircontents[child][1] |
|---|
| 89 | # recurse on the child directory |
|---|
| 90 | - newchilddircap = self.process(childpath, oldchildcap) |
|---|
| 91 | + newchilddircap = self.process(childpath, oldchildcap, skip_problematic) |
|---|
| 92 | newdircontents[child] = ("dirnode", newchilddircap, metadata) |
|---|
| 93 | elif os.path.isfile(childpath): |
|---|
| 94 | newfilecap, metadata = self.upload(childpath) |
|---|
| 95 | hunk ./src/allmydata/scripts/tahoe_backup.py 265 |
|---|
| 96 | newdircontents[child] = ("filenode", newfilecap, metadata) |
|---|
| 97 | else: |
|---|
| 98 | - raise BackupProcessingError("Cannot backup this file %r" % childpath) |
|---|
| 99 | + if skip_problematic: |
|---|
| 100 | + self.problematic_skipped += 1 |
|---|
| 101 | + self.verboseprint("skipping problematic file %s.." % childpath) |
|---|
| 102 | + else: |
|---|
| 103 | + raise BackupProcessingError("Cannot backup this file %r" % childpath) |
|---|
| 104 | |
|---|
| 105 | if (olddircap |
|---|
| 106 | and olddircontents is not None |
|---|
| 107 | } |
|---|
| 108 | [Added doc for '--skip-problematic' cli backup command. |
|---|
| 109 | Alberto Berti <alberto@metapensiero.it>**20090224173042 |
|---|
| 110 | Ignore-this: 76399da70f07042cffa6d07d77400580 |
|---|
| 111 | ] hunk ./docs/frontends/CLI.txt 390 |
|---|
| 112 | * .hgignore |
|---|
| 113 | * _darcs |
|---|
| 114 | |
|---|
| 115 | +tahoe backup --skip-problematic ~ work:backups |
|---|
| 116 | + |
|---|
| 117 | + With '--skip-problematic' (or '-s') option added, the backup command |
|---|
| 118 | + tree walker will skip files or filetypes that it can't backup yet, |
|---|
| 119 | + instead of surrender and stop the backup process, exiting with an |
|---|
| 120 | + error. |
|---|
| 121 | + |
|---|
| 122 | == Virtual Drive Maintenance == |
|---|
| 123 | |
|---|
| 124 | tahoe manifest tahoe: |
|---|
| 125 | |
|---|
| 126 | Context: |
|---|
| 127 | |
|---|
| 128 | [test_web: add (disabled) test to see what happens when deep-check encounters an unrecoverable directory. We still need code changes to improve this behavior. |
|---|
| 129 | warner@lothar.com**20090224214017 |
|---|
| 130 | Ignore-this: e839f1b0ec40f53fedcd809c2a30d5f9 |
|---|
| 131 | ] |
|---|
| 132 | [test_repairer: change to use faster no_network.GridTestMixin, split Verifier tests into separate cases, refactor judgement funcs into shared methods |
|---|
| 133 | warner@lothar.com**20090224041506 |
|---|
| 134 | Ignore-this: 584ce72d6276da5edc00562793d4ee53 |
|---|
| 135 | ] |
|---|
| 136 | [immutable/checker.py: trap ShareVersionIncompatible too. Also, use f.check |
|---|
| 137 | warner@lothar.com**20090224041405 |
|---|
| 138 | Ignore-this: b667e8d3192116293babcacdeed42898 |
|---|
| 139 | instead of examining the value returned by f.trap, because the latter appears |
|---|
| 140 | to squash exception types down into their base classes (i.e. since |
|---|
| 141 | ShareVersionIncompatible is a subclass of LayoutInvalid, |
|---|
| 142 | f.trap(Failure(ShareVersionIncompatible)) == LayoutInvalid). |
|---|
| 143 | |
|---|
| 144 | All this resulted in 'incompatible' shares being misclassified as 'corrupt'. |
|---|
| 145 | ] |
|---|
| 146 | [immutable/layout.py: wrap to 80 cols, no functional changes |
|---|
| 147 | warner@lothar.com**20090224005837 |
|---|
| 148 | Ignore-this: 40019480180ec34141506a28d7711608 |
|---|
| 149 | ] |
|---|
| 150 | [test_repairer: change Repairer to use much-faster no_network.GridTestMixin. As a side-effect, fix what I think was a bug: some of the assert-minimal-effort-expended checks were mixing write counts and allocate counts |
|---|
| 151 | warner@lothar.com**20090223234227 |
|---|
| 152 | Ignore-this: d58bd0a909f9939775730cda4a858cae |
|---|
| 153 | ] |
|---|
| 154 | [test/no_network.py: add a basic stats provider |
|---|
| 155 | warner@lothar.com**20090223233937 |
|---|
| 156 | Ignore-this: c9f3cc4eed99cfc36f68938ceff4162c |
|---|
| 157 | ] |
|---|
| 158 | [tests: stop using setUpClass/tearDownClass, since they've been deprecated in Twisted-8.2.0 |
|---|
| 159 | warner@lothar.com**20090223204312 |
|---|
| 160 | Ignore-this: 24c6592141cf64103530c024f93a5b88 |
|---|
| 161 | ] |
|---|
| 162 | [test_checker: improve test coverage for checker results |
|---|
| 163 | warner@lothar.com**20090223201943 |
|---|
| 164 | Ignore-this: 83e173602f0f4c811a7a9893d85385df |
|---|
| 165 | ] |
|---|
| 166 | [Two small fixes on documentation for cli backup command. |
|---|
| 167 | Alberto Berti <alberto@metapensiero.it>**20090224223634 |
|---|
| 168 | Ignore-this: 5634a6dadad6e4e43a112de7fe5c74c |
|---|
| 169 | ] |
|---|
| 170 | [Add elapsed timestamp to cli backup command final summary. |
|---|
| 171 | Alberto Berti <alberto@metapensiero.it>**20090224171425 |
|---|
| 172 | Ignore-this: 9a042d11f95ee9f6858a5096d513c0bc |
|---|
| 173 | ] |
|---|
| 174 | [Added documentation for '--exclude' and friends cli backup command. |
|---|
| 175 | Alberto Berti <alberto@metapensiero.it>**20090224153049 |
|---|
| 176 | Ignore-this: bbc791fa56e38535bb82cc3077ffde90 |
|---|
| 177 | ] |
|---|
| 178 | [misc/*: remove RuntimeError too |
|---|
| 179 | warner@lothar.com**20090222233401 |
|---|
| 180 | Ignore-this: b76f8a184f75bb28eb9d8002f957936a |
|---|
| 181 | ] |
|---|
| 182 | [scripts: stop using RuntimeError, for #639 |
|---|
| 183 | warner@lothar.com**20090222233106 |
|---|
| 184 | Ignore-this: 686a424442670fffbd4d1816c284a601 |
|---|
| 185 | ] |
|---|
| 186 | [mutable/publish: stop using RuntimeError, for #639 |
|---|
| 187 | warner@lothar.com**20090222233056 |
|---|
| 188 | Ignore-this: 2a80a661c7850d97357caddad48c6e9d |
|---|
| 189 | ] |
|---|
| 190 | [remove more RuntimeError from unit tests, for #639 |
|---|
| 191 | warner@lothar.com**20090222232855 |
|---|
| 192 | Ignore-this: 1a1c3e1457f3f29ba7101fe406ee5f43 |
|---|
| 193 | ] |
|---|
| 194 | [stop using RuntimeError in unit tests, for #639 |
|---|
| 195 | warner@lothar.com**20090222232722 |
|---|
| 196 | Ignore-this: 475ce0c0dcd7a1f5ed83ef460312efea |
|---|
| 197 | ] |
|---|
| 198 | [ftpd/sftpd: stop using RuntimeError, for #639 |
|---|
| 199 | warner@lothar.com**20090222232426 |
|---|
| 200 | Ignore-this: 97001362c4ba9e94b2e254e229b79987 |
|---|
| 201 | ] |
|---|
| 202 | [docs: CREDITS to Alberto Berti |
|---|
| 203 | zooko@zooko.com**20090222193314 |
|---|
| 204 | Ignore-this: 74d370ada3234cce9e58aec15d739f71 |
|---|
| 205 | ] |
|---|
| 206 | [Fixed tests again so they will pass on windows. |
|---|
| 207 | Alberto Berti <alberto@metapensiero.it>**20090223003502 |
|---|
| 208 | Ignore-this: 80d5074e7153642a2fa2a77958bfb50d |
|---|
| 209 | ] |
|---|
| 210 | [Added tests for the cse when listdir is an iterator |
|---|
| 211 | Alberto Berti <alberto@metapensiero.it>**20090222224356 |
|---|
| 212 | Ignore-this: 218fb2aba02c28b4b1e5324bdb5adeaa |
|---|
| 213 | ] |
|---|
| 214 | [Fixed tests so that they pass also on buildbots. |
|---|
| 215 | Alberto Berti <alberto@metapensiero.it>**20090222224311 |
|---|
| 216 | Ignore-this: fcb91cd6acf028382411d23d380a4576 |
|---|
| 217 | ] |
|---|
| 218 | [Use failUnlessEqual instead of failUnless(a == b) |
|---|
| 219 | Alberto Berti <alberto@metapensiero.it>**20090222224214 |
|---|
| 220 | Ignore-this: 8f9144632e3ac9acb4726fb48a083bf4 |
|---|
| 221 | ] |
|---|
| 222 | [Better implementation of filtering algorithm. |
|---|
| 223 | Alberto Berti <alberto@metapensiero.it>**20090222224049 |
|---|
| 224 | Ignore-this: 67a8bd2f99bcc87ca2443bef13370a87 |
|---|
| 225 | ] |
|---|
| 226 | [Removed '.hgrags' from vcs excludes |
|---|
| 227 | Alberto Berti <alberto@metapensiero.it>**20090222223946 |
|---|
| 228 | Ignore-this: 3e94c22fc9d85f380ee11fb8bdb4d1e9 |
|---|
| 229 | ] |
|---|
| 230 | [docs: move many specification-like documents into specifications/ |
|---|
| 231 | warner@lothar.com**20090222054054 |
|---|
| 232 | Ignore-this: a4110cc478198c0611205aba1ccf54f4 |
|---|
| 233 | ] |
|---|
| 234 | [test_web.py: increase test coverage of web.status.plural() |
|---|
| 235 | warner@lothar.com**20090222000116 |
|---|
| 236 | Ignore-this: 3138c9d5d2410d8e1121e9b2ed694169 |
|---|
| 237 | ] |
|---|
| 238 | [crawler: fix performance problems: only save state once per timeslice (not after every bucket), don't start the crawler until 5 minutes after node startup |
|---|
| 239 | warner@lothar.com**20090221205649 |
|---|
| 240 | Ignore-this: e6551569982bd31d19779ff15c2d6f58 |
|---|
| 241 | ] |
|---|
| 242 | [test_system: oops, don't assume that all files in storage/ are in a deep storage/shares/prefix/si/shnum path, since now the crawler pickle has a short path |
|---|
| 243 | warner@lothar.com**20090221061710 |
|---|
| 244 | Ignore-this: fde76d0e5cae853014d1bb18b5f17dae |
|---|
| 245 | ] |
|---|
| 246 | [crawler: tolerate low-resolution system clocks (i.e. windows) |
|---|
| 247 | warner@lothar.com**20090221061533 |
|---|
| 248 | Ignore-this: 57286a3abcaf44f6d1a78c3c1ad547a5 |
|---|
| 249 | ] |
|---|
| 250 | [BucketCountingCrawler: store just the count, not cycle+count, since it's too easy to make usage mistakes otherwise |
|---|
| 251 | warner@lothar.com**20090221035831 |
|---|
| 252 | Ignore-this: 573b6f651af74380cdd64059fbbdda4b |
|---|
| 253 | ] |
|---|
| 254 | [test_storage: startService the server, as is now the standard practice |
|---|
| 255 | warner@lothar.com**20090221035755 |
|---|
| 256 | Ignore-this: 3999889bd628fe4039bbcf1b29160453 |
|---|
| 257 | ] |
|---|
| 258 | [crawler: load state from the pickle in init, rather than waiting until startService, so get_state() can be called early |
|---|
| 259 | warner@lothar.com**20090221035720 |
|---|
| 260 | Ignore-this: ecd128a5f4364c0daf4b72d791340b66 |
|---|
| 261 | ] |
|---|
| 262 | [BucketCountingCrawler: rename status and state keys to use 'bucket' instead of 'share', because the former is more accurate |
|---|
| 263 | warner@lothar.com**20090221034606 |
|---|
| 264 | Ignore-this: cf819f63fac9506c878d6c9715ce35b7 |
|---|
| 265 | ] |
|---|
| 266 | [storage: also report space-free-for-root and space-free-for-nonroot, since that helps users understand the space-left-for-tahoe number better |
|---|
| 267 | warner@lothar.com**20090221032856 |
|---|
| 268 | Ignore-this: 9fdf0475f758acd98b73026677170b45 |
|---|
| 269 | ] |
|---|
| 270 | [storage: add bucket-counting share crawler, add its output (number of files+directories maintained by a storage server) and status to the webapi /storage page |
|---|
| 271 | warner@lothar.com**20090221030408 |
|---|
| 272 | Ignore-this: 28761c5e076648026bc5f518506db65c |
|---|
| 273 | ] |
|---|
| 274 | [storage: move si_b2a/si_a2b/storage_index_to_dir out of server.py and into common.py |
|---|
| 275 | warner@lothar.com**20090221030309 |
|---|
| 276 | Ignore-this: 645056428ab797f0b542831c82bf192a |
|---|
| 277 | ] |
|---|
| 278 | [crawler: add get_progress, clean up get_state |
|---|
| 279 | warner@lothar.com**20090221002743 |
|---|
| 280 | Ignore-this: 9bea69f154c75b31a53425a8ea67789b |
|---|
| 281 | ] |
|---|
| 282 | [Added --exclude, --exclude-from and --exclude-vcs options to backup command. |
|---|
| 283 | Alberto Berti <alberto@metapensiero.it>**20090222170829 |
|---|
| 284 | Ignore-this: 4912890229cd54a2f61f14f06bc4afcc |
|---|
| 285 | |
|---|
| 286 | It is still impossible to specify absolute exclusion path, only |
|---|
| 287 | relative. I must check with tar or rsync how they allow them to be |
|---|
| 288 | specified. |
|---|
| 289 | ] |
|---|
| 290 | [Raise a more explanatory exception for errors encountered during backup processing. |
|---|
| 291 | Alberto Berti <alberto@metapensiero.it>**20090222170252 |
|---|
| 292 | Ignore-this: f6b8ffe2a903ba07a2c1c59130dac1e4 |
|---|
| 293 | ] |
|---|
| 294 | [Added tests for the --exclude* options of backup command. |
|---|
| 295 | Alberto Berti <alberto@metapensiero.it>**20090222165106 |
|---|
| 296 | Ignore-this: f1b931cf2e7929ce47b737c022bca707 |
|---|
| 297 | ] |
|---|
| 298 | [Added tests for the fixed alias related command's synopsis |
|---|
| 299 | Alberto Berti <alberto@metapensiero.it>**20090222163732 |
|---|
| 300 | Ignore-this: 4432b4e88e990ba53a5b3fe0f12db2ac |
|---|
| 301 | ] |
|---|
| 302 | [web/storage: make sure we can handle platforms without os.statvfs too |
|---|
| 303 | warner@lothar.com**20090220220353 |
|---|
| 304 | Ignore-this: 79d4cb8482a8543b9759dc949c86c587 |
|---|
| 305 | ] |
|---|
| 306 | [crawler: provide for one-shot crawlers, which stop after their first full cycle, for share-upgraders and database-populaters |
|---|
| 307 | warner@lothar.com**20090220211911 |
|---|
| 308 | Ignore-this: fcdf72c5ffcafa374d376388be6fa5c5 |
|---|
| 309 | ] |
|---|
| 310 | [web: add Storage status page, improve tests |
|---|
| 311 | warner@lothar.com**20090220202926 |
|---|
| 312 | Ignore-this: e34d5270dcf0237fe72f573f717c7a4 |
|---|
| 313 | ] |
|---|
| 314 | [storage: include reserved_space in stats |
|---|
| 315 | warner@lothar.com**20090220202920 |
|---|
| 316 | Ignore-this: b5b480fe0abad0148ecad0c1fb47ecae |
|---|
| 317 | ] |
|---|
| 318 | [web/check_results: sort share identifiers in the sharemap display |
|---|
| 319 | warner@lothar.com**20090220182922 |
|---|
| 320 | Ignore-this: 5c7bfcee3e15c7082c3653eb8a460960 |
|---|
| 321 | ] |
|---|
| 322 | [webapi: pass client through constructor arguments, remove IClient, should make it easier to test web renderers in isolation |
|---|
| 323 | warner@lothar.com**20090220181554 |
|---|
| 324 | Ignore-this: e7848cd1bee8faf2ce7aaf040b9bf8e3 |
|---|
| 325 | ] |
|---|
| 326 | [test/no_network: do startService on the storage servers, make it easier to customize the storage servers |
|---|
| 327 | warner@lothar.com**20090220022254 |
|---|
| 328 | Ignore-this: e62f328721c007e4c5ee023a6efdf66d |
|---|
| 329 | ] |
|---|
| 330 | [crawler: modify API to support upcoming bucket-counting crawler |
|---|
| 331 | warner@lothar.com**20090220013142 |
|---|
| 332 | Ignore-this: 808f8382837b13082f8b245db2ebee06 |
|---|
| 333 | ] |
|---|
| 334 | [test_backupdb: make the not-a-database file larger, since the older sqlite-2.3.2 on OS-X is easily fooled |
|---|
| 335 | warner@lothar.com**20090220000409 |
|---|
| 336 | Ignore-this: 694d2ca5053bb96e91670765d0cedf2e |
|---|
| 337 | ] |
|---|
| 338 | [web/reliability: add parameter descriptions, adapted from a patch from Terrell Russell. |
|---|
| 339 | warner@lothar.com**20090219222918 |
|---|
| 340 | Ignore-this: 835f5ab01e1aff31b2ff9febb9a51f3 |
|---|
| 341 | ] |
|---|
| 342 | [test_crawler: hush pyflakes |
|---|
| 343 | warner@lothar.com**20090219202340 |
|---|
| 344 | Ignore-this: 765d22c9c9682cc86c5205dc130500af |
|---|
| 345 | ] |
|---|
| 346 | [test_crawler: disable the percentage-of-cpu-used test, since it is too unreliable on our slow buildslaves. But leave the code in place for developers to run by hand. |
|---|
| 347 | warner@lothar.com**20090219201654 |
|---|
| 348 | Ignore-this: ff7cf5cfa79c6f2ef0cf959495dd989a |
|---|
| 349 | ] |
|---|
| 350 | [reliability.py: fix the numpy conversion, it was completely broken. Thanks to Terrell Russell for the help. |
|---|
| 351 | warner@lothar.com**20090219195515 |
|---|
| 352 | Ignore-this: f2b1eb65855111b338e1487feee1bbcf |
|---|
| 353 | ] |
|---|
| 354 | [reliability: switch to NumPy, since Numeric is deprecated |
|---|
| 355 | warner@lothar.com**20090219074435 |
|---|
| 356 | Ignore-this: f588a68e9bcd3b0bc3653570882b6fd5 |
|---|
| 357 | ] |
|---|
| 358 | [setup.py: fix pyflakes complaints |
|---|
| 359 | warner@lothar.com**20090219073643 |
|---|
| 360 | Ignore-this: a314e5456b0a796bc9f70232a119ec68 |
|---|
| 361 | ] |
|---|
| 362 | [move show-tool-versions out of setup.py and into a separate script in misc/ , since setuptools is trying to build and install a bunch of stuff first |
|---|
| 363 | warner@lothar.com**20090219073558 |
|---|
| 364 | Ignore-this: 9e56bc43026379212e6b6671ed6a1fd4 |
|---|
| 365 | ] |
|---|
| 366 | [test_crawler: don't require >=1 cycle on cygwin |
|---|
| 367 | warner@lothar.com**20090219065818 |
|---|
| 368 | Ignore-this: b8d2d40f26aeb30a7622479840a04635 |
|---|
| 369 | ] |
|---|
| 370 | [setup.py: add show_tool_versions command, for the benefit of a new buildbot step |
|---|
| 371 | warner@lothar.com**20090219062436 |
|---|
| 372 | Ignore-this: 21d761c76a033e481831584bedc60c86 |
|---|
| 373 | ] |
|---|
| 374 | [setup.py: wrap to 80 cols, no functional changes |
|---|
| 375 | warner@lothar.com**20090219055751 |
|---|
| 376 | Ignore-this: d29e57c6ee555f2ee435667b7e13e60b |
|---|
| 377 | ] |
|---|
| 378 | [crawler: use fileutil.move_info_place in preference to our own version |
|---|
| 379 | warner@lothar.com**20090219051342 |
|---|
| 380 | Ignore-this: ee4e46f3de965610503ba36b28184db9 |
|---|
| 381 | ] |
|---|
| 382 | [fileutil: add move_into_place(), to perform the standard unix trick of atomically replacing a file, with a fallback for windows |
|---|
| 383 | warner@lothar.com**20090219051310 |
|---|
| 384 | Ignore-this: c1d35e8ca88fcb223ea194513611c511 |
|---|
| 385 | ] |
|---|
| 386 | [crawler: fix problems on windows and our slow cygwin slave |
|---|
| 387 | warner@lothar.com**20090219042431 |
|---|
| 388 | Ignore-this: 8019cb0da79ba00c536183a6f57b4cab |
|---|
| 389 | ] |
|---|
| 390 | [#633: first version of a rate-limited interruptable share-crawler |
|---|
| 391 | warner@lothar.com**20090219034633 |
|---|
| 392 | Ignore-this: 5d2d30c743e3b096a8e775d5a9b33601 |
|---|
| 393 | ] |
|---|
| 394 | [change StorageServer to take nodeid in the constructor, instead of assigning it later, since it's cleaner and because the original problem (Tubs not being ready until later) went away |
|---|
| 395 | warner@lothar.com**20090218222301 |
|---|
| 396 | Ignore-this: 740d582f20c93bebf60e21d9a446d3d2 |
|---|
| 397 | ] |
|---|
| 398 | [test_system: split off checker tests to test_deepcheck.py, this file is too big |
|---|
| 399 | warner@lothar.com**20090218214234 |
|---|
| 400 | Ignore-this: 82bf8db81dfbc98224bbf694054a8761 |
|---|
| 401 | ] |
|---|
| 402 | [break storage.py into smaller pieces in storage/*.py . No behavioral changes. |
|---|
| 403 | warner@lothar.com**20090218204655 |
|---|
| 404 | Ignore-this: 312d408d1cacc5a764d791b53ebf8f91 |
|---|
| 405 | ] |
|---|
| 406 | [immutable/layout: minor change to repr name |
|---|
| 407 | warner@lothar.com**20090218204648 |
|---|
| 408 | Ignore-this: c8781ef15b7dea63b39236a1899b86ce |
|---|
| 409 | ] |
|---|
| 410 | [docs: add lease-tradeoffs diagram |
|---|
| 411 | warner@lothar.com**20090218204137 |
|---|
| 412 | Ignore-this: c22a589ad465dac846da834c30dc4083 |
|---|
| 413 | ] |
|---|
| 414 | [Add missing synopsis and descriptions for alias commands. |
|---|
| 415 | Alberto Berti <alberto@metapensiero.it>**20090221003106 |
|---|
| 416 | Ignore-this: 8aedd03d36d92d912102c7f29e4ca697 |
|---|
| 417 | ] |
|---|
| 418 | [interfaces.py: allow add/renew/cancel-lease to return Any, so that 1.3.1 clients (the first to use these calls) can tolerate future storage servers which might return something other than None |
|---|
| 419 | warner@lothar.com**20090218192903 |
|---|
| 420 | Ignore-this: dcbb704a05416ecc66d90fb486c3d75b |
|---|
| 421 | ] |
|---|
| 422 | [docs/debian.txt: minor edit |
|---|
| 423 | warner@lothar.com**20090218032212 |
|---|
| 424 | Ignore-this: 64ff1fb163ffca4bcfd920254f1cf866 |
|---|
| 425 | ] |
|---|
| 426 | [add --add-lease to 'tahoe check', 'tahoe deep-check', and webapi. |
|---|
| 427 | warner@lothar.com**20090218013243 |
|---|
| 428 | Ignore-this: 176b2006cef5041adcb592ee83e084dd |
|---|
| 429 | ] |
|---|
| 430 | [change RIStorageServer.remote_add_lease to exit silently in case of no-such-bucket, instead of raising IndexError, because that makes the upcoming --add-lease feature faster and less noisy |
|---|
| 431 | warner@lothar.com**20090218013053 |
|---|
| 432 | Ignore-this: 6fdfcea2c832178f1ce72ab0ff510f3a |
|---|
| 433 | ] |
|---|
| 434 | [CLI #590: convert 'tahoe deep-check' to streaming form, improve display, add tests |
|---|
| 435 | warner@lothar.com**20090217231511 |
|---|
| 436 | Ignore-this: 6d88eb94b1c877eacc8c5ca7d0aac776 |
|---|
| 437 | ] |
|---|
| 438 | [interfaces.py: document behavior of add_lease/renew_lease/cancel_lease, before I change it |
|---|
| 439 | warner@lothar.com**20090217194809 |
|---|
| 440 | Ignore-this: 703c6712926b8edb19d55d790b65a400 |
|---|
| 441 | ] |
|---|
| 442 | [test_backupdb: improve error messages if the test fails |
|---|
| 443 | warner@lothar.com**20090217170838 |
|---|
| 444 | Ignore-this: ef657e87c66e4304d3e0aca9831b84c |
|---|
| 445 | ] |
|---|
| 446 | [webapi #590: add streaming deep-check. Still need a CLI tool to use it. |
|---|
| 447 | warner@lothar.com**20090217053553 |
|---|
| 448 | Ignore-this: a0edd3d2a531c48a64d8397f7e4b208c |
|---|
| 449 | ] |
|---|
| 450 | [test_web.Grid: change the CHECK() function to make it easier to test t= values with hyphens in them |
|---|
| 451 | warner@lothar.com**20090217050034 |
|---|
| 452 | Ignore-this: 410c08735347c2057df52f6716520228 |
|---|
| 453 | ] |
|---|
| 454 | [test_web: improve checker-results coverage with a no-network -based test, enhance no-network harness to assist, fix some bugs in web/check_results.py that were exposed |
|---|
| 455 | warner@lothar.com**20090217041242 |
|---|
| 456 | Ignore-this: fe54bb66a9ae073c002a7af51cd1e18 |
|---|
| 457 | ] |
|---|
| 458 | [web: fix handling of reliability page when Numeric is not available |
|---|
| 459 | warner@lothar.com**20090217015658 |
|---|
| 460 | Ignore-this: 9d329182f1b2e5f812e5e7eb5f4cf2ed |
|---|
| 461 | ] |
|---|
| 462 | [test/no_network: update comments with setup timing: no_network takes 50ms, SystemTestMixin takes 2s (on my laptop) |
|---|
| 463 | warner@lothar.com**20090217000643 |
|---|
| 464 | Ignore-this: cc778fa3219775b25057bfc9491f8f34 |
|---|
| 465 | ] |
|---|
| 466 | [test_upload: rewrite in terms of no-network GridTestMixin, improve no_network.py as necessary |
|---|
| 467 | warner@lothar.com**20090216234457 |
|---|
| 468 | Ignore-this: 80a341d5aa3036d24de98e267499d70d |
|---|
| 469 | ] |
|---|
| 470 | [test_download: rewrite in terms of no-network GridTestMixin, improve no_network.py as necessary |
|---|
| 471 | warner@lothar.com**20090216233658 |
|---|
| 472 | Ignore-this: ec2febafd2403830519120fb3f3ca04e |
|---|
| 473 | ] |
|---|
| 474 | [test_dirnode.py: convert Deleter to new no-network gridtest |
|---|
| 475 | warner@lothar.com**20090216232348 |
|---|
| 476 | Ignore-this: 8041739442ec4db726675e48f9775ae9 |
|---|
| 477 | ] |
|---|
| 478 | [test_cli.py: modify to use the new 'no-network' gridtest instead of SystemTestMixin, which speeds it up from 73s to 43s on my system |
|---|
| 479 | warner@lothar.com**20090216232005 |
|---|
| 480 | Ignore-this: ec6d010c9182aa72049d1fb894cf890e |
|---|
| 481 | ] |
|---|
| 482 | [tests: fix no_network framework to work with upload/download and checker |
|---|
| 483 | warner@lothar.com**20090216231947 |
|---|
| 484 | Ignore-this: 74b4dbd66b8384ae7c7544969fe4f744 |
|---|
| 485 | ] |
|---|
| 486 | [client.py: improve docstring |
|---|
| 487 | warner@lothar.com**20090216231532 |
|---|
| 488 | Ignore-this: bbaa9e3f63fdb0048e3125c4681b2d1f |
|---|
| 489 | ] |
|---|
| 490 | [test_cli: add test coverage for help strings |
|---|
| 491 | warner@lothar.com**20090216210833 |
|---|
| 492 | Ignore-this: d2020849107f687448e159a19d0e5dab |
|---|
| 493 | ] |
|---|
| 494 | [test/no_network: new test harness, like system-test but doesn't use the network so it's faster |
|---|
| 495 | warner@lothar.com**20090216205844 |
|---|
| 496 | Ignore-this: 31678f7bdef30b0216fd657fc6145534 |
|---|
| 497 | ] |
|---|
| 498 | [interfaces.py: minor docstring edit |
|---|
| 499 | warner@lothar.com**20090216205816 |
|---|
| 500 | Ignore-this: cec3855070197f7920b370f95e8b07bd |
|---|
| 501 | ] |
|---|
| 502 | [setup: if you sdist_dsc (to produce the input files for dpkg-buildpackage) then run darcsver first |
|---|
| 503 | zooko@zooko.com**20090216201558 |
|---|
| 504 | Ignore-this: b85be51b3d4a9a19a3366e690f1063e2 |
|---|
| 505 | ] |
|---|
| 506 | [doc: a few edits to docs made after the 1.3.0 release |
|---|
| 507 | zooko@zooko.com**20090216201539 |
|---|
| 508 | Ignore-this: dbff3b929d88134d862f1dffd1ef068a |
|---|
| 509 | ] |
|---|
| 510 | [test_cli: improve test coverage slightly |
|---|
| 511 | warner@lothar.com**20090216030451 |
|---|
| 512 | Ignore-this: e01ccc6a6fb44aaa4fb14fe8669e2065 |
|---|
| 513 | ] |
|---|
| 514 | [test_util: get almost full test coverage of dictutil, starting with the original pyutil tests as a base. The remaining three uncovered lines involve funny cases of ValueOrderedDict that I can't figure out how to get at |
|---|
| 515 | warner@lothar.com**20090216023210 |
|---|
| 516 | Ignore-this: dc1f0c6d8c003c0ade38bc8f8516b04d |
|---|
| 517 | ] |
|---|
| 518 | [provisioning/reliability: add tests, hush pyflakes, remove dead code, fix web links |
|---|
| 519 | warner@lothar.com**20090215222451 |
|---|
| 520 | Ignore-this: 7854df3e0130d9388f06efd4c797262f |
|---|
| 521 | ] |
|---|
| 522 | [util/statistics: add tests, fix mean_repair_cost |
|---|
| 523 | warner@lothar.com**20090215222326 |
|---|
| 524 | Ignore-this: c576eabc74c23b170702018fc3c122d9 |
|---|
| 525 | ] |
|---|
| 526 | [test_repairer: hush pyflakes |
|---|
| 527 | warner@lothar.com**20090215222310 |
|---|
| 528 | Ignore-this: 875eb52e86077cda77efd02da77f8cfa |
|---|
| 529 | ] |
|---|
| 530 | [lossmodel.lyx: move draft paper into docs/proposed/, since it's unfinished |
|---|
| 531 | warner@lothar.com**20090215221905 |
|---|
| 532 | Ignore-this: 7f7ee204e47fd66932759c94deefe68 |
|---|
| 533 | ] |
|---|
| 534 | [build a 'reliability' web page, with a simulation of file decay and repair over time |
|---|
| 535 | warner@lothar.com**20090213234234 |
|---|
| 536 | Ignore-this: 9e9623eaac7b0637bbd0071f082bd345 |
|---|
| 537 | ] |
|---|
| 538 | [More lossmodel work, on repair. |
|---|
| 539 | Shawn Willden <shawn-tahoe@willden.org>**20090116025648] |
|---|
| 540 | [Loss model work (temp1) |
|---|
| 541 | Shawn Willden <shawn@willden.org>**20090115030058] |
|---|
| 542 | [Statistics module |
|---|
| 543 | Shawn Willden <shawn-tahoe@willden.org>**20090114021235 |
|---|
| 544 | |
|---|
| 545 | Added a statistics module for calculating various facets of |
|---|
| 546 | share survival statistics. |
|---|
| 547 | ] |
|---|
| 548 | [docs: relnotes-short.txt |
|---|
| 549 | zooko@zooko.com**20090215163510 |
|---|
| 550 | Ignore-this: 683649bb13499bbe0e5cea2e1716ff59 |
|---|
| 551 | linkedin.com imposed a strict limit on the number of characters I could post. This forced me to prune and prune and edit and edit until relnotes.txt was a quarter of its former size. Here's the short version. |
|---|
| 552 | ] |
|---|
| 553 | [TAG allmydata-tahoe-1.3.0 |
|---|
| 554 | zooko@zooko.com**20090214000556 |
|---|
| 555 | Ignore-this: aa6c9a31a14a58ad2298cb7b08d3ea70 |
|---|
| 556 | ] |
|---|
| 557 | Patch bundle hash: |
|---|
| 558 | 4a6659f167f9c01bd644641e5785bda6724beddc |
|---|