1 | .. -*- coding: utf-8 -*- |
---|
2 | |
---|
3 | ================================== |
---|
4 | User-Visible Changes in Tahoe-LAFS |
---|
5 | ================================== |
---|
6 | |
---|
7 | Release 1.8.2 (2011-01-30) |
---|
8 | -------------------------- |
---|
9 | |
---|
10 | Compatibility and Dependencies |
---|
11 | '''''''''''''''''''''''''''''' |
---|
12 | |
---|
13 | - Tahoe is now compatible with Twisted-10.2 (released last month), as |
---|
14 | well as with earlier versions. The previous Tahoe-1.8.1 release |
---|
15 | failed to run against Twisted-10.2, raising an AttributeError on |
---|
16 | StreamServerEndpointService (`#1286`_) |
---|
17 | - Tahoe now depends upon the "mock" testing library, and the foolscap |
---|
18 | dependency was raised to 0.6.1 . It no longer requires pywin32 |
---|
19 | (which was used only on windows). Future developers should note that |
---|
20 | reactor.spawnProcess and derivatives may no longer be used inside |
---|
21 | Tahoe code. |
---|
22 | |
---|
23 | Other Changes |
---|
24 | ''''''''''''' |
---|
25 | |
---|
26 | - the default reserved_space value for new storage nodes is 1 GB |
---|
27 | (`#1208`_) |
---|
28 | - documentation is now in reStructuredText (.rst) format |
---|
29 | - "tahoe cp" should now handle non-ASCII filenames |
---|
30 | - the unmaintained Mac/Windows GUI applications have been removed |
---|
31 | (`#1282`_) |
---|
32 | - tahoe processes should appear in top and ps as "tahoe", not |
---|
33 | "python", on some unix platforms. (`#174`_) |
---|
34 | - "tahoe debug trial" can be used to run the test suite (`#1296`_) |
---|
35 | - the SFTP frontend now reports unknown sizes as "0" instead of "?", |
---|
36 | to improve compatibility with clients like FileZilla (`#1337`_) |
---|
37 | - "tahoe --version" should now report correct values in situations |
---|
38 | where 1.8.1 might have been wrong (`#1287`_) |
---|
39 | |
---|
40 | .. _`#174`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/174 |
---|
41 | .. _`#1208`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1208 |
---|
42 | .. _`#1282`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1282 |
---|
43 | .. _`#1286`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1286 |
---|
44 | .. _`#1287`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1287 |
---|
45 | .. _`#1296`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1296 |
---|
46 | .. _`#1337`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1337 |
---|
47 | |
---|
48 | |
---|
49 | Release 1.8.1 (2010-10-28) |
---|
50 | -------------------------- |
---|
51 | |
---|
52 | Bugfixes and Improvements |
---|
53 | ''''''''''''''''''''''''' |
---|
54 | |
---|
55 | - Allow the repairer to improve the health of a file by uploading some |
---|
56 | shares, even if it cannot achieve the configured happiness |
---|
57 | threshold. This fixes a regression introduced between v1.7.1 and |
---|
58 | v1.8.0. (`#1212`_) |
---|
59 | - Fix a memory leak in the ResponseCache which is used during mutable |
---|
60 | file/directory operations. (`#1045`_) |
---|
61 | - Fix a regression and add a performance improvement in the |
---|
62 | downloader. This issue caused repair to fail in some special |
---|
63 | cases. (`#1223`_) |
---|
64 | - Fix a bug that caused 'tahoe cp' to fail for a grid-to-grid copy |
---|
65 | involving a non-ASCII filename. (`#1224`_) |
---|
66 | - Fix a rarely-encountered bug involving printing large strings to the |
---|
67 | console on Windows. (`#1232`_) |
---|
68 | - Perform ~ expansion in the --exclude-from filename argument to |
---|
69 | 'tahoe backup'. (`#1241`_) |
---|
70 | - The CLI's 'tahoe mv' and 'tahoe ln' commands previously would try to |
---|
71 | use an HTTP proxy if the HTTP_PROXY environment variable was set. |
---|
72 | These now always connect directly to the WAPI, thus avoiding giving |
---|
73 | caps to the HTTP proxy (and also avoiding failures in the case that |
---|
74 | the proxy is failing or requires authentication). (`#1253`_) |
---|
75 | - The CLI now correctly reports failure in the case that 'tahoe mv' |
---|
76 | fails to unlink the file from its old location. (`#1255`_) |
---|
77 | - 'tahoe start' now gives a more positive indication that the node has |
---|
78 | started. (`#71`_) |
---|
79 | - The arguments seen by 'ps' or other tools for node processes are now |
---|
80 | more useful (in particular, they include the path of the 'tahoe' |
---|
81 | script, rather than an obscure tool named 'twistd'). (`#174`_) |
---|
82 | |
---|
83 | Removed Features |
---|
84 | '''''''''''''''' |
---|
85 | |
---|
86 | - The tahoe start/stop/restart and node creation commands no longer |
---|
87 | accept the -m or --multiple option, for consistency between |
---|
88 | platforms. (`#1262`_) |
---|
89 | |
---|
90 | Packaging |
---|
91 | ''''''''' |
---|
92 | |
---|
93 | - We now host binary packages so that users on certain operating |
---|
94 | systems can install without having a compiler. |
---|
95 | <http://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-lafs-dep-eggs/README.html> |
---|
96 | - Use a newer version of a dependency if needed, even if an older |
---|
97 | version is installed. This would previously cause a VersionConflict |
---|
98 | error. (`#1190`_) |
---|
99 | - Use a precompiled binary of a dependency if one with a sufficiently |
---|
100 | high version number is available, instead of attempting to compile |
---|
101 | the dependency from source, even if the source version has a higher |
---|
102 | version number. (`#1233`_) |
---|
103 | |
---|
104 | Documentation |
---|
105 | ''''''''''''' |
---|
106 | |
---|
107 | - All current documentation in .txt format has been converted to .rst |
---|
108 | format. (`#1225`_) |
---|
109 | - Added docs/backdoors.rst declaring that we won't add backdoors to |
---|
110 | Tahoe-LAFS, or add anything to facilitate government access to data. |
---|
111 | (`#1216`_) |
---|
112 | |
---|
113 | .. _`#71`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/71 |
---|
114 | .. _`#174`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/174 |
---|
115 | .. _`#1212`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1212 |
---|
116 | .. _`#1045`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1045 |
---|
117 | .. _`#1190`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1190 |
---|
118 | .. _`#1216`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1216 |
---|
119 | .. _`#1223`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1223 |
---|
120 | .. _`#1224`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1224 |
---|
121 | .. _`#1225`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1225 |
---|
122 | .. _`#1232`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1232 |
---|
123 | .. _`#1233`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1233 |
---|
124 | .. _`#1241`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1241 |
---|
125 | .. _`#1253`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1253 |
---|
126 | .. _`#1255`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1255 |
---|
127 | .. _`#1262`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1262 |
---|
128 | |
---|
129 | |
---|
130 | Release 1.8.0 (2010-09-23) |
---|
131 | -------------------------- |
---|
132 | |
---|
133 | New Features |
---|
134 | '''''''''''' |
---|
135 | |
---|
136 | - A completely new downloader which improves performance and |
---|
137 | robustness of immutable-file downloads. It uses the fastest K |
---|
138 | servers to download the data in K-way parallel. It automatically |
---|
139 | fails over to alternate servers if servers fail in mid-download. It |
---|
140 | allows seeking to arbitrary locations in the file (the previous |
---|
141 | downloader which would only read the entire file sequentially from |
---|
142 | beginning to end). It minimizes unnecessary round trips and |
---|
143 | unnecessary bytes transferred to improve performance. It sends |
---|
144 | requests to fewer servers to reduce the load on servers (the |
---|
145 | previous one would send a small request to every server for every |
---|
146 | download) (`#287`_, `#288`_, `#448`_, `#798`_, `#800`_, `#990`_, |
---|
147 | `#1170`_, `#1191`_) |
---|
148 | - Non-ASCII command-line arguments and non-ASCII outputs now work on |
---|
149 | Windows. In addition, the command-line tool now works on 64-bit |
---|
150 | Windows. (`#1074`_) |
---|
151 | |
---|
152 | Bugfixes and Improvements |
---|
153 | ''''''''''''''''''''''''' |
---|
154 | |
---|
155 | - Document and clean up the command-line options for specifying the |
---|
156 | node's base directory. (`#188`_, `#706`_, `#715`_, `#772`_, |
---|
157 | `#1108`_) |
---|
158 | - The default node directory for Windows is ".tahoe" in the user's |
---|
159 | home directory, the same as on other platforms. (`#890`_) |
---|
160 | - Fix a case in which full cap URIs could be logged. (`#685`_, |
---|
161 | `#1155`_) |
---|
162 | - Fix bug in WUI in Python 2.5 when the system clock is set back to |
---|
163 | 1969. Now you can use Tahoe-LAFS with Python 2.5 and set your system |
---|
164 | clock to 1969 and still use the WUI. (`#1055`_) |
---|
165 | - Many improvements in code organization, tests, logging, |
---|
166 | documentation, and packaging. (`#983`_, `#1074`_, `#1108`_, |
---|
167 | `#1127`_, `#1129`_, `#1131`_, `#1166`_, `#1175`_) |
---|
168 | |
---|
169 | Dependency Updates |
---|
170 | '''''''''''''''''' |
---|
171 | |
---|
172 | - on x86 and x86-64 platforms, pycryptopp >= 0.5.20 |
---|
173 | - pycrypto 2.2 is excluded due to a bug |
---|
174 | |
---|
175 | .. _`#188`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/188 |
---|
176 | .. _`#287`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/287 |
---|
177 | .. _`#288`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/288 |
---|
178 | .. _`#448`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/448 |
---|
179 | .. _`#685`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/685 |
---|
180 | .. _`#706`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/706 |
---|
181 | .. _`#715`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/715 |
---|
182 | .. _`#772`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/772 |
---|
183 | .. _`#798`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/798 |
---|
184 | .. _`#800`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/800 |
---|
185 | .. _`#890`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/890 |
---|
186 | .. _`#983`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/983 |
---|
187 | .. _`#990`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/990 |
---|
188 | .. _`#1055`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1055 |
---|
189 | .. _`#1074`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1074 |
---|
190 | .. _`#1108`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1108 |
---|
191 | .. _`#1155`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1155 |
---|
192 | .. _`#1170`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1170 |
---|
193 | .. _`#1191`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1191 |
---|
194 | .. _`#1127`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1127 |
---|
195 | .. _`#1129`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1129 |
---|
196 | .. _`#1131`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1131 |
---|
197 | .. _`#1166`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1166 |
---|
198 | .. _`#1175`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1175 |
---|
199 | |
---|
200 | Release 1.7.1 (2010-07-18) |
---|
201 | -------------------------- |
---|
202 | |
---|
203 | Bugfixes and Improvements |
---|
204 | ''''''''''''''''''''''''' |
---|
205 | |
---|
206 | - Fix bug in which uploader could fail with AssertionFailure or report |
---|
207 | that it had achieved servers-of-happiness when it hadn't. (`#1118`_) |
---|
208 | - Fix bug in which servers could get into a state where they would |
---|
209 | refuse to accept shares of a certain file (`#1117`_) |
---|
210 | - Add init scripts for managing the gateway server on Debian/Ubuntu |
---|
211 | (`#961`_) |
---|
212 | - Fix bug where server version number was always 0 on the welcome page |
---|
213 | (`#1067`_) |
---|
214 | - Add new command-line command "tahoe unlink" as a synonym for "tahoe |
---|
215 | rm" (`#776`_) |
---|
216 | - The FTP frontend now encrypts its temporary files, protecting their |
---|
217 | contents from an attacker who is able to read the disk. (`#1083`_) |
---|
218 | - Fix IP address detection on FreeBSD 7, 8, and 9 (`#1098`_) |
---|
219 | - Fix minor layout issue in the Web User Interface with Internet |
---|
220 | Explorer (`#1097`_) |
---|
221 | - Fix rarely-encountered incompatibility between Twisted logging |
---|
222 | utility and the new unicode support added in v1.7.0 (`#1099`_) |
---|
223 | - Forward-compatibility improvements for non-ASCII caps (`#1051`_) |
---|
224 | |
---|
225 | Code improvements |
---|
226 | ''''''''''''''''' |
---|
227 | |
---|
228 | - Simplify and tidy-up directories, unicode support, test code |
---|
229 | (`#923`_, `#967`_, `#1072`_) |
---|
230 | |
---|
231 | .. _`#776`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/776 |
---|
232 | .. _`#923`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/923 |
---|
233 | .. _`#961`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/961 |
---|
234 | .. _`#967`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/967 |
---|
235 | .. _`#1051`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1051 |
---|
236 | .. _`#1067`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1067 |
---|
237 | .. _`#1072`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1072 |
---|
238 | .. _`#1083`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1083 |
---|
239 | .. _`#1097`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1097 |
---|
240 | .. _`#1098`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1098 |
---|
241 | .. _`#1099`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1099 |
---|
242 | .. _`#1117`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1117 |
---|
243 | .. _`#1118`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1118 |
---|
244 | |
---|
245 | |
---|
246 | Release 1.7.0 (2010-06-18) |
---|
247 | -------------------------- |
---|
248 | |
---|
249 | New Features |
---|
250 | '''''''''''' |
---|
251 | |
---|
252 | - SFTP support (`#1037`_) |
---|
253 | Your Tahoe-LAFS gateway now acts like a full-fledged SFTP server. It |
---|
254 | has been tested with sshfs to provide a virtual filesystem in Linux. |
---|
255 | Many users have asked for this feature. We hope that it serves them |
---|
256 | well! See the `FTP-and-SFTP.rst`_ document to get |
---|
257 | started. |
---|
258 | - support for non-ASCII character encodings (`#534`_) |
---|
259 | Tahoe-LAFS now correctly handles filenames containing non-ASCII |
---|
260 | characters on all supported platforms: |
---|
261 | |
---|
262 | - when reading files in from the local filesystem (such as when you |
---|
263 | run "tahoe backup" to back up your local files to a Tahoe-LAFS |
---|
264 | grid); |
---|
265 | - when writing files out to the local filesystem (such as when you |
---|
266 | run "tahoe cp -r" to recursively copy files out of a Tahoe-LAFS |
---|
267 | grid); |
---|
268 | - when displaying filenames to the terminal (such as when you run |
---|
269 | "tahoe ls"), subject to limitations of the terminal and locale; |
---|
270 | - when parsing command-line arguments, except on Windows. |
---|
271 | |
---|
272 | - Servers of Happiness (`#778`_) |
---|
273 | Tahoe-LAFS now measures during immutable file upload to see how well |
---|
274 | distributed it is across multiple servers. It aborts the upload if |
---|
275 | the pieces of the file are not sufficiently well-distributed. |
---|
276 | This behavior is controlled by a configuration parameter called |
---|
277 | "servers of happiness". With the default settings for its erasure |
---|
278 | coding, Tahoe-LAFS generates 10 shares for each file, such that any |
---|
279 | 3 of those shares are sufficient to recover the file. The default |
---|
280 | value of "servers of happiness" is 7, which means that Tahoe-LAFS |
---|
281 | will guarantee that there are at least 7 servers holding some of the |
---|
282 | shares, such that any 3 of those servers can completely recover your |
---|
283 | file. The new upload code also distributes the shares better than the |
---|
284 | previous version in some cases and takes better advantage of |
---|
285 | pre-existing shares (when a file has already been previously |
---|
286 | uploaded). See the `architecture.rst`_ document [3] for details. |
---|
287 | |
---|
288 | Bugfixes and Improvements |
---|
289 | ''''''''''''''''''''''''' |
---|
290 | |
---|
291 | - Premature abort of upload if some shares were already present and |
---|
292 | some servers fail. (`#608`_) |
---|
293 | - python ./setup.py install -- can't create or remove files in install |
---|
294 | directory. (`#803`_) |
---|
295 | - Network failure => internal TypeError. (`#902`_) |
---|
296 | - Install of Tahoe on CentOS 5.4. (`#933`_) |
---|
297 | - CLI option --node-url now supports https url. (`#1028`_) |
---|
298 | - HTML/CSS template files were not correctly installed under |
---|
299 | Windows. (`#1033`_) |
---|
300 | - MetadataSetter does not enforce restriction on setting "tahoe" |
---|
301 | subkeys. (`#1034`_) |
---|
302 | - ImportError: No module named |
---|
303 | setuptools_darcs.setuptools_darcs. (`#1054`_) |
---|
304 | - Renamed Title in xhtml files. (`#1062`_) |
---|
305 | - Increase Python version dependency to 2.4.4, to avoid a critical |
---|
306 | CPython security bug. (`#1066`_) |
---|
307 | - Typo correction for the munin plugin tahoe_storagespace. (`#968`_) |
---|
308 | - Fix warnings found by pylint. (`#973`_) |
---|
309 | - Changing format of some documentation files. (`#1027`_) |
---|
310 | - the misc/ directory was tied up. (`#1068`_) |
---|
311 | - The 'ctime' and 'mtime' metadata fields are no longer written except |
---|
312 | by "tahoe backup". (`#924`_) |
---|
313 | - Unicode filenames in Tahoe-LAFS directories are normalized so that |
---|
314 | names that differ only in how accents are encoded are treated as the |
---|
315 | same. (`#1076`_) |
---|
316 | - Various small improvements to documentation. (`#937`_, `#911`_, |
---|
317 | `#1024`_, `#1082`_) |
---|
318 | |
---|
319 | Removals |
---|
320 | '''''''' |
---|
321 | |
---|
322 | - The 'tahoe debug consolidate' subcommand (for converting old |
---|
323 | allmydata Windows client backups to a newer format) has been |
---|
324 | removed. |
---|
325 | |
---|
326 | Dependency Updates |
---|
327 | '''''''''''''''''' |
---|
328 | |
---|
329 | - the Python version dependency is raised to 2.4.4 in some cases |
---|
330 | (2.4.3 for Redhat-based Linux distributions, 2.4.2 for UCS-2 builds) |
---|
331 | (`#1066`_) |
---|
332 | - pycrypto >= 2.0.1 |
---|
333 | - pyasn1 >= 0.0.8a |
---|
334 | - mock (only required by unit tests) |
---|
335 | |
---|
336 | .. _`#534`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/534 |
---|
337 | .. _`#608`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/608 |
---|
338 | .. _`#778`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/778 |
---|
339 | .. _`#803`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/803 |
---|
340 | .. _`#902`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/902 |
---|
341 | .. _`#911`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/911 |
---|
342 | .. _`#924`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/924 |
---|
343 | .. _`#937`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/937 |
---|
344 | .. _`#933`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/933 |
---|
345 | .. _`#968`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/968 |
---|
346 | .. _`#973`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/973 |
---|
347 | .. _`#1024`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1024 |
---|
348 | .. _`#1027`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1027 |
---|
349 | .. _`#1028`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1028 |
---|
350 | .. _`#1033`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1033 |
---|
351 | .. _`#1034`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1034 |
---|
352 | .. _`#1037`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1037 |
---|
353 | .. _`#1054`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1054 |
---|
354 | .. _`#1062`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1062 |
---|
355 | .. _`#1066`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1066 |
---|
356 | .. _`#1068`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1068 |
---|
357 | .. _`#1076`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1076 |
---|
358 | .. _`#1082`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1082 |
---|
359 | .. _architecture.rst: docs/architecture.rst |
---|
360 | .. _FTP-and-SFTP.rst: docs/frontends/FTP-and-SFTP.rst |
---|
361 | |
---|
362 | Release 1.6.1 (2010-02-27) |
---|
363 | -------------------------- |
---|
364 | |
---|
365 | Bugfixes |
---|
366 | '''''''' |
---|
367 | |
---|
368 | - Correct handling of Small Immutable Directories |
---|
369 | |
---|
370 | Immutable directories can now be deep-checked and listed in the web |
---|
371 | UI in all cases. (In v1.6.0, some operations, such as deep-check, on |
---|
372 | a directory graph that included very small immutable directories, |
---|
373 | would result in an exception causing the whole operation to abort.) |
---|
374 | (`#948`_) |
---|
375 | |
---|
376 | Usability Improvements |
---|
377 | '''''''''''''''''''''' |
---|
378 | |
---|
379 | - Improved user interface messages and error reporting. (`#681`_, |
---|
380 | `#837`_, `#939`_) |
---|
381 | - The timeouts for operation handles have been greatly increased, so |
---|
382 | that you can view the results of an operation up to 4 days after it |
---|
383 | has completed. After viewing them for the first time, the results |
---|
384 | are retained for a further day. (`#577`_) |
---|
385 | |
---|
386 | Release 1.6.0 (2010-02-01) |
---|
387 | -------------------------- |
---|
388 | |
---|
389 | New Features |
---|
390 | '''''''''''' |
---|
391 | |
---|
392 | - Immutable Directories |
---|
393 | |
---|
394 | Tahoe-LAFS can now create and handle immutable |
---|
395 | directories. (`#607`_, `#833`_, `#931`_) These are read just like |
---|
396 | normal directories, but are "deep-immutable", meaning that all their |
---|
397 | children (and everything reachable from those children) must be |
---|
398 | immutable objects (i.e. immutable or literal files, and other |
---|
399 | immutable directories). |
---|
400 | |
---|
401 | These directories must be created in a single webapi call that |
---|
402 | provides all of the children at once. (Since they cannot be changed |
---|
403 | after creation, the usual create/add/add sequence cannot be used.) |
---|
404 | They have URIs that start with "URI:DIR2-CHK:" or "URI:DIR2-LIT:", |
---|
405 | and are described on the human-facing web interface (aka the "WUI") |
---|
406 | with a "DIR-IMM" abbreviation (as opposed to "DIR" for the usual |
---|
407 | read-write directories and "DIR-RO" for read-only directories). |
---|
408 | |
---|
409 | Tahoe-LAFS releases before 1.6.0 cannot read the contents of an |
---|
410 | immutable directory. 1.5.0 will tolerate their presence in a |
---|
411 | directory listing (and display it as "unknown"). 1.4.1 and earlier |
---|
412 | cannot tolerate them: a DIR-IMM child in any directory will prevent |
---|
413 | the listing of that directory. |
---|
414 | |
---|
415 | Immutable directories are repairable, just like normal immutable |
---|
416 | files. |
---|
417 | |
---|
418 | The webapi "POST t=mkdir-immutable" call is used to create immutable |
---|
419 | directories. See `webapi.rst`_ for details. |
---|
420 | |
---|
421 | - "tahoe backup" now creates immutable directories, backupdb has |
---|
422 | dircache |
---|
423 | |
---|
424 | The "tahoe backup" command has been enhanced to create immutable |
---|
425 | directories (in previous releases, it created read-only mutable |
---|
426 | directories) (`#828`_). This is significantly faster, since it does |
---|
427 | not need to create an RSA keypair for each new directory. Also |
---|
428 | "DIR-IMM" immutable directories are repairable, unlike "DIR-RO" |
---|
429 | read-only mutable directories at present. (A future Tahoe-LAFS |
---|
430 | release should also be able to repair DIR-RO.) |
---|
431 | |
---|
432 | In addition, the backupdb (used by "tahoe backup" to remember what |
---|
433 | it has already copied) has been enhanced to store information about |
---|
434 | existing immutable directories. This allows it to re-use directories |
---|
435 | that have moved but still contain identical contents, or that have |
---|
436 | been deleted and later replaced. (The 1.5.0 "tahoe backup" command |
---|
437 | could only re-use directories that were in the same place as they |
---|
438 | were in the immediately previous backup.) With this change, the |
---|
439 | backup process no longer needs to read the previous snapshot out of |
---|
440 | the Tahoe-LAFS grid, reducing the network load |
---|
441 | considerably. (`#606`_) |
---|
442 | |
---|
443 | A "null backup" (in which nothing has changed since the previous |
---|
444 | backup) will require only two Tahoe-side operations: one to add an |
---|
445 | Archives/$TIMESTAMP entry, and a second to update the Latest/ |
---|
446 | link. On the local disk side, it will readdir() all your local |
---|
447 | directories and stat() all your local files. |
---|
448 | |
---|
449 | If you've been using "tahoe backup" for a while, you will notice |
---|
450 | that your first use of it after upgrading to 1.6.0 may take a long |
---|
451 | time: it must create proper immutable versions of all the old |
---|
452 | read-only mutable directories. This process won't take as long as |
---|
453 | the initial backup (where all the file contents had to be uploaded |
---|
454 | too): it will require time proportional to the number and size of |
---|
455 | your directories. After this initial pass, all subsequent passes |
---|
456 | should take a tiny fraction of the time. |
---|
457 | |
---|
458 | As noted above, Tahoe-LAFS versions earlier than 1.5.0 cannot list a |
---|
459 | directory containing an immutable subdirectory. Tahoe-LAFS versions |
---|
460 | earlier than 1.6.0 cannot read the contents of an immutable |
---|
461 | directory. |
---|
462 | |
---|
463 | The "tahoe backup" command has been improved to skip over unreadable |
---|
464 | objects (like device files, named pipes, and files with permissions |
---|
465 | that prevent the command from reading their contents), instead of |
---|
466 | throwing an exception and terminating the backup process. It also |
---|
467 | skips over symlinks, because these cannot be represented faithfully |
---|
468 | in the Tahoe-side filesystem. A warning message will be emitted each |
---|
469 | time something is skipped. (`#729`_, `#850`_, `#641`_) |
---|
470 | |
---|
471 | - "create-node" command added, "create-client" now implies |
---|
472 | --no-storage |
---|
473 | |
---|
474 | The basic idea behind Tahoe-LAFS's client+server and client-only |
---|
475 | processes is that you are creating a general-purpose Tahoe-LAFS |
---|
476 | "node" process, which has several components that can be |
---|
477 | activated. Storage service is one of these optional components, as |
---|
478 | is the Helper, FTP server, and SFTP server. Web gateway |
---|
479 | functionality is nominally on this list, but it is always active; a |
---|
480 | future release will make it optional. There are three special |
---|
481 | purpose servers that can't currently be run as a component in a |
---|
482 | node: introducer, key-generator, and stats-gatherer. |
---|
483 | |
---|
484 | So now "tahoe create-node" will create a Tahoe-LAFS node process, |
---|
485 | and after creation you can edit its tahoe.cfg to enable or disable |
---|
486 | the desired services. It is a more general-purpose replacement for |
---|
487 | "tahoe create-client". The default configuration has storage |
---|
488 | service enabled. For convenience, the "--no-storage" argument makes |
---|
489 | a tahoe.cfg file that disables storage service. (`#760`_) |
---|
490 | |
---|
491 | "tahoe create-client" has been changed to create a Tahoe-LAFS node |
---|
492 | without a storage service. It is equivalent to "tahoe create-node |
---|
493 | --no-storage". This helps to reduce the confusion surrounding the |
---|
494 | use of a command with "client" in its name to create a storage |
---|
495 | *server*. Use "tahoe create-client" to create a purely client-side |
---|
496 | node. If you want to offer storage to the grid, use "tahoe |
---|
497 | create-node" instead. |
---|
498 | |
---|
499 | In the future, other services will be added to the node, and they |
---|
500 | will be controlled through options in tahoe.cfg . The most important |
---|
501 | of these services may get additional --enable-XYZ or --disable-XYZ |
---|
502 | arguments to "tahoe create-node". |
---|
503 | |
---|
504 | - Performance Improvements |
---|
505 | |
---|
506 | Download of immutable files begins as soon as the downloader has |
---|
507 | located the K necessary shares (`#928`_, `#287`_). In both the |
---|
508 | previous and current releases, a downloader will first issue queries |
---|
509 | to all storage servers on the grid to locate shares before it begins |
---|
510 | downloading the shares. In previous releases of Tahoe-LAFS, download |
---|
511 | would not begin until all storage servers on the grid had replied to |
---|
512 | the query, at which point K shares would be chosen for download from |
---|
513 | among the shares that were located. In this release, download begins |
---|
514 | as soon as any K shares are located. This means that downloads start |
---|
515 | sooner, which is particularly important if there is a server on the |
---|
516 | grid that is extremely slow or even hung in such a way that it will |
---|
517 | never respond. In previous releases such a server would have a |
---|
518 | negative impact on all downloads from that grid. In this release, |
---|
519 | such a server will have no impact on downloads, as long as K shares |
---|
520 | can be found on other, quicker, servers. This also means that |
---|
521 | downloads now use the "best-alacrity" servers that they talk to, as |
---|
522 | measured by how quickly the servers reply to the initial query. This |
---|
523 | might cause downloads to go faster, especially on grids with |
---|
524 | heterogeneous servers or geographical dispersion. |
---|
525 | |
---|
526 | Minor Changes |
---|
527 | ''''''''''''' |
---|
528 | |
---|
529 | - The webapi acquired a new "t=mkdir-with-children" command, to create |
---|
530 | and populate a directory in a single call. This is significantly |
---|
531 | faster than using separate "t=mkdir" and "t=set-children" operations |
---|
532 | (it uses one gateway-to-grid roundtrip, instead of three or |
---|
533 | four). (`#533`_) |
---|
534 | |
---|
535 | - The t=set-children (note the hyphen) operation is now documented in |
---|
536 | webapi.rst, and is the new preferred spelling of the |
---|
537 | old t=set_children (with an underscore). The underscore version |
---|
538 | remains for backwards compatibility. (`#381`_, `#927`_) |
---|
539 | |
---|
540 | - The tracebacks produced by errors in CLI tools should now be in |
---|
541 | plain text, instead of HTML (which is unreadable outside of a |
---|
542 | browser). (`#646`_) |
---|
543 | |
---|
544 | - The [storage]reserved_space configuration knob (which causes the |
---|
545 | storage server to refuse shares when available disk space drops |
---|
546 | below a threshold) should work on Windows now, not just |
---|
547 | UNIX. (`#637`_) |
---|
548 | |
---|
549 | - "tahoe cp" should now exit with status "1" if it cannot figure out a |
---|
550 | suitable target filename, such as when you copy from a bare |
---|
551 | filecap. (`#761`_) |
---|
552 | |
---|
553 | - "tahoe get" no longer creates a zero-length file upon |
---|
554 | error. (`#121`_) |
---|
555 | |
---|
556 | - "tahoe ls" can now list single files. (`#457`_) |
---|
557 | |
---|
558 | - "tahoe deep-check --repair" should tolerate repair failures now, |
---|
559 | instead of halting traversal. (`#874`_, `#786`_) |
---|
560 | |
---|
561 | - "tahoe create-alias" no longer corrupts the aliases file if it had |
---|
562 | previously been edited to have no trailing newline. (`#741`_) |
---|
563 | |
---|
564 | - Many small packaging improvements were made to facilitate the |
---|
565 | "tahoe-lafs" package being included in Ubuntu. Several mac/win32 |
---|
566 | binary libraries were removed, some figleaf code-coverage files were |
---|
567 | removed, a bundled copy of darcsver-1.2.1 was removed, and |
---|
568 | additional licensing text was added. |
---|
569 | |
---|
570 | - Several DeprecationWarnings for python2.6 were silenced. (`#859`_) |
---|
571 | |
---|
572 | - The checker --add-lease option would sometimes fail for shares |
---|
573 | stored on old (Tahoe v1.2.0) servers. (`#875`_) |
---|
574 | |
---|
575 | - The documentation for installing on Windows (docs/quickstart.rst) |
---|
576 | has been improved. (`#773`_) |
---|
577 | |
---|
578 | For other changes not mentioned here, see |
---|
579 | <http://tahoe-lafs.org/trac/tahoe/query?milestone=1.6.0&keywords=!~news-done>. |
---|
580 | To include the tickets mentioned above, go to |
---|
581 | <http://tahoe-lafs.org/trac/tahoe/query?milestone=1.6.0>. |
---|
582 | |
---|
583 | .. _`#121`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/121 |
---|
584 | .. _`#287`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/287 |
---|
585 | .. _`#381`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/381 |
---|
586 | .. _`#457`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/457 |
---|
587 | .. _`#533`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/533 |
---|
588 | .. _`#577`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/577 |
---|
589 | .. _`#606`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/606 |
---|
590 | .. _`#607`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/607 |
---|
591 | .. _`#637`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/637 |
---|
592 | .. _`#641`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/641 |
---|
593 | .. _`#646`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/646 |
---|
594 | .. _`#681`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/681 |
---|
595 | .. _`#729`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/729 |
---|
596 | .. _`#741`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/741 |
---|
597 | .. _`#760`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/760 |
---|
598 | .. _`#761`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/761 |
---|
599 | .. _`#768`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/768 |
---|
600 | .. _`#773`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/773 |
---|
601 | .. _`#786`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/786 |
---|
602 | .. _`#828`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/828 |
---|
603 | .. _`#833`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/833 |
---|
604 | .. _`#859`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/859 |
---|
605 | .. _`#874`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/874 |
---|
606 | .. _`#875`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/875 |
---|
607 | .. _`#931`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/931 |
---|
608 | .. _`#837`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/837 |
---|
609 | .. _`#850`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/850 |
---|
610 | .. _`#927`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/927 |
---|
611 | .. _`#928`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/928 |
---|
612 | .. _`#939`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/939 |
---|
613 | .. _`#948`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/948 |
---|
614 | .. _webapi.rst: docs/frontends/webapi.rst |
---|
615 | |
---|
616 | Release 1.5.0 (2009-08-01) |
---|
617 | -------------------------- |
---|
618 | |
---|
619 | Improvements |
---|
620 | '''''''''''' |
---|
621 | |
---|
622 | - Uploads of immutable files now use pipelined writes, improving |
---|
623 | upload speed slightly (10%) over high-latency connections. (`#392`_) |
---|
624 | |
---|
625 | - Processing large directories has been sped up, by removing a O(N^2) |
---|
626 | algorithm from the dirnode decoding path and retaining unmodified |
---|
627 | encrypted entries. (`#750`_, `#752`_) |
---|
628 | |
---|
629 | - The human-facing web interface (aka the "WUI") received a |
---|
630 | significant CSS makeover by Kevin Reid, making it much prettier and |
---|
631 | easier to read. The WUI "check" and "deep-check" forms now include a |
---|
632 | "Renew Lease" checkbox, mirroring the CLI --add-lease option, so |
---|
633 | leases can be added or renewed from the web interface. |
---|
634 | |
---|
635 | - The CLI "tahoe mv" command now refuses to overwrite |
---|
636 | directories. (`#705`_) |
---|
637 | |
---|
638 | - The CLI "tahoe webopen" command, when run without arguments, will |
---|
639 | now bring up the "Welcome Page" (node status and mkdir/upload |
---|
640 | forms). |
---|
641 | |
---|
642 | - The 3.5MB limit on mutable files was removed, so it should be |
---|
643 | possible to upload arbitrarily-sized mutable files. Note, however, |
---|
644 | that the data format and algorithm remains the same, so using |
---|
645 | mutable files still requires bandwidth, computation, and RAM in |
---|
646 | proportion to the size of the mutable file. (`#694`_) |
---|
647 | |
---|
648 | - This version of Tahoe-LAFS will tolerate directory entries that |
---|
649 | contain filecap formats which it does not recognize: files and |
---|
650 | directories from the future. This should improve the user |
---|
651 | experience (for 1.5.0 users) when we add new cap formats in the |
---|
652 | future. Previous versions would fail badly, preventing the user from |
---|
653 | seeing or editing anything else in those directories. These |
---|
654 | unrecognized objects can be renamed and deleted, but obviously not |
---|
655 | read or written. Also they cannot generally be copied. (`#683`_) |
---|
656 | |
---|
657 | Bugfixes |
---|
658 | '''''''' |
---|
659 | |
---|
660 | - deep-check-and-repair now tolerates read-only directories, such as |
---|
661 | the ones produced by the "tahoe backup" CLI command. Read-only |
---|
662 | directories and mutable files are checked, but not |
---|
663 | repaired. Previous versions threw an exception when attempting the |
---|
664 | repair and failed to process the remaining contents. We cannot yet |
---|
665 | repair these read-only objects, but at least this version allows the |
---|
666 | rest of the check+repair to proceed. (`#625`_) |
---|
667 | |
---|
668 | - A bug in 1.4.1 which caused a server to be listed multiple times |
---|
669 | (and frequently broke all connections to that server) was |
---|
670 | fixed. (`#653`_) |
---|
671 | |
---|
672 | - The plaintext-hashing code was removed from the Helper interface, |
---|
673 | removing the Helper's ability to mount a |
---|
674 | partial-information-guessing attack. (`#722`_) |
---|
675 | |
---|
676 | Platform/packaging changes |
---|
677 | '''''''''''''''''''''''''' |
---|
678 | |
---|
679 | - Tahoe-LAFS now runs on NetBSD, OpenBSD, ArchLinux, and NixOS, and on |
---|
680 | an embedded system based on an ARM CPU running at 266 MHz. |
---|
681 | |
---|
682 | - Unit test timeouts have been raised to allow the tests to complete |
---|
683 | on extremely slow platforms like embedded ARM-based NAS boxes, which |
---|
684 | may take several hours to run the test suite. An ARM-specific |
---|
685 | data-corrupting bug in an older version of Crypto++ (5.5.2) was |
---|
686 | identified: ARM-users are encouraged to use recent |
---|
687 | Crypto++/pycryptopp which avoids this problem. |
---|
688 | |
---|
689 | - Tahoe-LAFS now requires a SQLite library, either the sqlite3 that |
---|
690 | comes built-in with python2.5/2.6, or the add-on pysqlite2 if you're |
---|
691 | using python2.4. In the previous release, this was only needed for |
---|
692 | the "tahoe backup" command: now it is mandatory. |
---|
693 | |
---|
694 | - Several minor documentation updates were made. |
---|
695 | |
---|
696 | - To help get Tahoe-LAFS into Linux distributions like Fedora and |
---|
697 | Debian, packaging improvements are being made in both Tahoe-LAFS and |
---|
698 | related libraries like pycryptopp and zfec. |
---|
699 | |
---|
700 | - The Crypto++ library included in the pycryptopp package has been |
---|
701 | upgraded to version 5.6.0 of Crypto++, which includes a more |
---|
702 | efficient implementation of SHA-256 in assembly for x86 or amd64 |
---|
703 | architectures. |
---|
704 | |
---|
705 | dependency updates |
---|
706 | '''''''''''''''''' |
---|
707 | |
---|
708 | - foolscap-0.4.1 |
---|
709 | - no python-2.4.0 or 2.4.1 (2.4.2 is good) (they contained a bug in base64.b32decode) |
---|
710 | - avoid python-2.6 on windows with mingw: compiler issues |
---|
711 | - python2.4 requires pysqlite2 (2.5,2.6 does not) |
---|
712 | - no python-3.x |
---|
713 | - pycryptopp-0.5.15 |
---|
714 | |
---|
715 | .. _#392: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/392 |
---|
716 | .. _#625: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/625 |
---|
717 | .. _#653: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/653 |
---|
718 | .. _#683: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/683 |
---|
719 | .. _#694: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/694 |
---|
720 | .. _#705: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/705 |
---|
721 | .. _#722: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/722 |
---|
722 | .. _#750: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/750 |
---|
723 | .. _#752: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/752 |
---|
724 | |
---|
725 | Release 1.4.1 (2009-04-13) |
---|
726 | -------------------------- |
---|
727 | |
---|
728 | Garbage Collection |
---|
729 | '''''''''''''''''' |
---|
730 | |
---|
731 | - The big feature for this release is the implementation of garbage |
---|
732 | collection, allowing Tahoe storage servers to delete shares for old |
---|
733 | deleted files. When enabled, this uses a "mark and sweep" process: |
---|
734 | clients are responsible for updating the leases on their shares |
---|
735 | (generally by running "tahoe deep-check --add-lease"), and servers |
---|
736 | are allowed to delete any share which does not have an up-to-date |
---|
737 | lease. The process is described in detail in |
---|
738 | `garbage-collection.rst`_. |
---|
739 | |
---|
740 | The server must be configured to enable garbage-collection, by |
---|
741 | adding directives to the [storage] section that define an age limit |
---|
742 | for shares. The default configuration will not delete any shares. |
---|
743 | |
---|
744 | Both servers and clients should be upgraded to this release to make |
---|
745 | the garbage-collection as pleasant as possible. 1.2.0 servers have |
---|
746 | code to perform the update-lease operation but it suffers from a |
---|
747 | fatal bug, while 1.3.0 servers have update-lease but will return an |
---|
748 | exception for unknown storage indices, causing clients to emit an |
---|
749 | Incident for each exception, slowing the add-lease process down to a |
---|
750 | crawl. 1.1.0 servers did not have the add-lease operation at all. |
---|
751 | |
---|
752 | Security/Usability Problems Fixed |
---|
753 | ''''''''''''''''''''''''''''''''' |
---|
754 | |
---|
755 | - A super-linear algorithm in the Merkle Tree code was fixed, which |
---|
756 | previously caused e.g. download of a 10GB file to take several hours |
---|
757 | before the first byte of plaintext could be produced. The new |
---|
758 | "alacrity" is about 2 minutes. A future release should reduce this |
---|
759 | to a few seconds by fixing ticket `#442`_. |
---|
760 | |
---|
761 | - The previous version permitted a small timing attack (due to our use |
---|
762 | of strcmp) against the write-enabler and lease-renewal/cancel |
---|
763 | secrets. An attacker who could measure response-time variations of |
---|
764 | approximatly 3ns against a very noisy background time of about 15ms |
---|
765 | might be able to guess these secrets. We do not believe this attack |
---|
766 | was actually feasible. This release closes the attack by first |
---|
767 | hashing the two strings to be compared with a random secret. |
---|
768 | |
---|
769 | webapi changes |
---|
770 | '''''''''''''' |
---|
771 | |
---|
772 | - In most cases, HTML tracebacks will only be sent if an "Accept: |
---|
773 | text/html" header was provided with the HTTP request. This will |
---|
774 | generally cause browsers to get an HTMLized traceback but send |
---|
775 | regular text/plain tracebacks to non-browsers (like the CLI |
---|
776 | clients). More errors have been mapped to useful HTTP error codes. |
---|
777 | |
---|
778 | - The streaming webapi operations (deep-check and manifest) now have a |
---|
779 | way to indicate errors (an output line that starts with "ERROR" |
---|
780 | instead of being legal JSON). See `webapi.rst`_ for |
---|
781 | details. |
---|
782 | |
---|
783 | - The storage server now has its own status page (at /storage), linked |
---|
784 | from the Welcome page. This page shows progress and results of the |
---|
785 | two new share-crawlers: one which merely counts shares (to give an |
---|
786 | estimate of how many files/directories are being stored in the |
---|
787 | grid), the other examines leases and reports how much space would be |
---|
788 | freed if GC were enabled. The page also shows how much disk space is |
---|
789 | present, used, reserved, and available for the Tahoe server, and |
---|
790 | whether the server is currently running in "read-write" mode or |
---|
791 | "read-only" mode. |
---|
792 | |
---|
793 | - When a directory node cannot be read (perhaps because of insufficent |
---|
794 | shares), a minimal webapi page is created so that the "more-info" |
---|
795 | links (including a Check/Repair operation) will still be accessible. |
---|
796 | |
---|
797 | - A new "reliability" page was added, with the beginnings of work on a |
---|
798 | statistical loss model. You can tell this page how many servers you |
---|
799 | are using and their independent failure probabilities, and it will |
---|
800 | tell you the likelihood that an arbitrary file will survive each |
---|
801 | repair period. The "numpy" package must be installed to access this |
---|
802 | page. A partial paper, written by Shawn Willden, has been added to |
---|
803 | docs/proposed/lossmodel.lyx . |
---|
804 | |
---|
805 | CLI changes |
---|
806 | ''''''''''' |
---|
807 | |
---|
808 | - "tahoe check" and "tahoe deep-check" now accept an "--add-lease" |
---|
809 | argument, to update a lease on all shares. This is the "mark" side |
---|
810 | of garbage collection. |
---|
811 | |
---|
812 | - In many cases, CLI error messages have been improved: the ugly |
---|
813 | HTMLized traceback has been replaced by a normal python traceback. |
---|
814 | |
---|
815 | - "tahoe deep-check" and "tahoe manifest" now have better error |
---|
816 | reporting. "tahoe cp" is now non-verbose by default. |
---|
817 | |
---|
818 | - "tahoe backup" now accepts several "--exclude" arguments, to ignore |
---|
819 | certain files (like editor temporary files and version-control |
---|
820 | metadata) during backup. |
---|
821 | |
---|
822 | - On windows, the CLI now accepts local paths like "c:\dir\file.txt", |
---|
823 | which previously was interpreted as a Tahoe path using a "c:" alias. |
---|
824 | |
---|
825 | - The "tahoe restart" command now uses "--force" by default (meaning |
---|
826 | it will start a node even if it didn't look like there was one |
---|
827 | already running). |
---|
828 | |
---|
829 | - The "tahoe debug consolidate" command was added. This takes a series |
---|
830 | of independent timestamped snapshot directories (such as those |
---|
831 | created by the allmydata.com windows backup program, or a series of |
---|
832 | "tahoe cp -r" commands) and creates new snapshots that used shared |
---|
833 | read-only directories whenever possible (like the output of "tahoe |
---|
834 | backup"). In the most common case (when the snapshots are fairly |
---|
835 | similar), the result will use significantly fewer directories than |
---|
836 | the original, allowing "deep-check" and similar tools to run much |
---|
837 | faster. In some cases, the speedup can be an order of magnitude or |
---|
838 | more. This tool is still somewhat experimental, and only needs to |
---|
839 | be run on large backups produced by something other than "tahoe |
---|
840 | backup", so it was placed under the "debug" category. |
---|
841 | |
---|
842 | - "tahoe cp -r --caps-only tahoe:dir localdir" is a diagnostic tool |
---|
843 | which, instead of copying the full contents of files into the local |
---|
844 | directory, merely copies their filecaps. This can be used to verify |
---|
845 | the results of a "consolidation" operation. |
---|
846 | |
---|
847 | other fixes |
---|
848 | ''''''''''' |
---|
849 | |
---|
850 | - The codebase no longer rauses RuntimeError as a kind of |
---|
851 | assert(). Specific exception classes were created for each previous |
---|
852 | instance of RuntimeError. |
---|
853 | |
---|
854 | -Many unit tests were changed to use a non-network test harness, |
---|
855 | speeding them up considerably. |
---|
856 | |
---|
857 | - Deep-traversal operations (manifest and deep-check) now walk |
---|
858 | individual directories in alphabetical order. Occasional turn breaks |
---|
859 | are inserted to prevent a stack overflow when traversing directories |
---|
860 | with hundreds of entries. |
---|
861 | |
---|
862 | - The experimental SFTP server had its path-handling logic changed |
---|
863 | slightly, to accomodate more SFTP clients, although there are still |
---|
864 | issues (`#645`_). |
---|
865 | |
---|
866 | .. _#442: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/442 |
---|
867 | .. _#645: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/645 |
---|
868 | .. _garbage-collection.rst: docs/garbage-collection.rst |
---|
869 | |
---|
870 | Release 1.3.0 (2009-02-13) |
---|
871 | -------------------------- |
---|
872 | |
---|
873 | Checker/Verifier/Repairer |
---|
874 | ''''''''''''''''''''''''' |
---|
875 | |
---|
876 | - The primary focus of this release has been writing a checker / |
---|
877 | verifier / repairer for files and directories. "Checking" is the |
---|
878 | act of asking storage servers whether they have a share for the |
---|
879 | given file or directory: if there are not enough shares available, |
---|
880 | the file or directory will be unrecoverable. "Verifying" is the act |
---|
881 | of downloading and cryptographically asserting that the server's |
---|
882 | share is undamaged: it requires more work (bandwidth and CPU) than |
---|
883 | checking, but can catch problems that simple checking |
---|
884 | cannot. "Repair" is the act of replacing missing or damaged shares |
---|
885 | with new ones. |
---|
886 | |
---|
887 | - This release includes a full checker, a partial verifier, and a |
---|
888 | partial repairer. The repairer is able to handle missing shares: new |
---|
889 | shares are generated and uploaded to make up for the missing |
---|
890 | ones. This is currently the best application of the repairer: to |
---|
891 | replace shares that were lost because of server departure or |
---|
892 | permanent drive failure. |
---|
893 | |
---|
894 | - The repairer in this release is somewhat able to handle corrupted |
---|
895 | shares. The limitations are: |
---|
896 | |
---|
897 | - Immutable verifier is incomplete: not all shares are used, and not |
---|
898 | all fields of those shares are verified. Therefore the immutable |
---|
899 | verifier has only a moderate chance of detecting corrupted shares. |
---|
900 | - The mutable verifier is mostly complete: all shares are examined, |
---|
901 | and most fields of the shares are validated. |
---|
902 | - The storage server protocol offers no way for the repairer to |
---|
903 | replace or delete immutable shares. If corruption is detected, the |
---|
904 | repairer will upload replacement shares to other servers, but the |
---|
905 | corrupted shares will be left in place. |
---|
906 | - read-only directories and read-only mutable files must be repaired |
---|
907 | by someone who holds the write-cap: the read-cap is |
---|
908 | insufficient. Moreover, the deep-check-and-repair operation will |
---|
909 | halt with an error if it attempts to repair one of these read-only |
---|
910 | objects. |
---|
911 | - Some forms of corruption can cause both download and repair |
---|
912 | operations to fail. A future release will fix this, since download |
---|
913 | should be tolerant of any corruption as long as there are at least |
---|
914 | 'k' valid shares, and repair should be able to fix any file that is |
---|
915 | downloadable. |
---|
916 | |
---|
917 | - If the downloader, verifier, or repairer detects share corruption, |
---|
918 | the servers which provided the bad shares will be notified (via a |
---|
919 | file placed in the BASEDIR/storage/corruption-advisories directory) |
---|
920 | so their operators can manually delete the corrupted shares and |
---|
921 | investigate the problem. In addition, the "incident gatherer" |
---|
922 | mechanism will automatically report share corruption to an incident |
---|
923 | gatherer service, if one is configured. Note that corrupted shares |
---|
924 | indicate hardware failures, serious software bugs, or malice on the |
---|
925 | part of the storage server operator, so a corrupted share should be |
---|
926 | considered highly unusual. |
---|
927 | |
---|
928 | - By periodically checking/repairing all files and directories, |
---|
929 | objects in the Tahoe filesystem remain resistant to recoverability |
---|
930 | failures due to missing and/or broken servers. |
---|
931 | |
---|
932 | - This release includes a wapi mechanism to initiate checks on |
---|
933 | individual files and directories (with or without verification, and |
---|
934 | with or without automatic repair). A related mechanism is used to |
---|
935 | initiate a "deep-check" on a directory: recursively traversing the |
---|
936 | directory and its children, checking (and/or verifying/repairing) |
---|
937 | everything underneath. Both mechanisms can be run with an |
---|
938 | "output=JSON" argument, to obtain machine-readable check/repair |
---|
939 | status results. These results include a copy of the filesystem |
---|
940 | statistics from the "deep-stats" operation (including total number |
---|
941 | of files, size histogram, etc). If repair is possible, a "Repair" |
---|
942 | button will appear on the results page. |
---|
943 | |
---|
944 | - The client web interface now features some extra buttons to initiate |
---|
945 | check and deep-check operations. When these operations finish, they |
---|
946 | display a results page that summarizes any problems that were |
---|
947 | encountered. All long-running deep-traversal operations, including |
---|
948 | deep-check, use a start-and-poll mechanism, to avoid depending upon |
---|
949 | a single long-lived HTTP connection. `webapi.rst`_ has |
---|
950 | details. |
---|
951 | |
---|
952 | Efficient Backup |
---|
953 | '''''''''''''''' |
---|
954 | |
---|
955 | - The "tahoe backup" command is new in this release, which creates |
---|
956 | efficient versioned backups of a local directory. Given a local |
---|
957 | pathname and a target Tahoe directory, this will create a read-only |
---|
958 | snapshot of the local directory in $target/Archives/$timestamp. It |
---|
959 | will also create $target/Latest, which is a reference to the latest |
---|
960 | such snapshot. Each time you run "tahoe backup" with the same source |
---|
961 | and target, a new $timestamp snapshot will be added. These snapshots |
---|
962 | will share directories that have not changed since the last backup, |
---|
963 | to speed up the process and minimize storage requirements. In |
---|
964 | addition, a small database is used to keep track of which local |
---|
965 | files have been uploaded already, to avoid uploading them a second |
---|
966 | time. This drastically reduces the work needed to do a "null backup" |
---|
967 | (when nothing has changed locally), making "tahoe backup' suitable |
---|
968 | to run from a daily cronjob. |
---|
969 | |
---|
970 | Note that the "tahoe backup" CLI command must be used in conjunction |
---|
971 | with a 1.3.0-or-newer Tahoe client node; there was a bug in the |
---|
972 | 1.2.0 webapi implementation that would prevent the last step (create |
---|
973 | $target/Latest) from working. |
---|
974 | |
---|
975 | Large Files |
---|
976 | ''''''''''' |
---|
977 | |
---|
978 | - The 12GiB (approximate) immutable-file-size limitation is |
---|
979 | lifted. This release knows how to handle so-called "v2 immutable |
---|
980 | shares", which permit immutable files of up to about 18 EiB (about |
---|
981 | 3*10^14). These v2 shares are created if the file to be uploaded is |
---|
982 | too large to fit into v1 shares. v1 shares are created if the file |
---|
983 | is small enough to fit into them, so that files created with |
---|
984 | tahoe-1.3.0 can still be read by earlier versions if they are not |
---|
985 | too large. Note that storage servers also had to be changed to |
---|
986 | support larger files, and this release is the first release in which |
---|
987 | they are able to do that. Clients will detect which servers are |
---|
988 | capable of supporting large files on upload and will not attempt to |
---|
989 | upload shares of a large file to a server which doesn't support it. |
---|
990 | |
---|
991 | FTP/SFTP Server |
---|
992 | ''''''''''''''' |
---|
993 | |
---|
994 | - Tahoe now includes experimental FTP and SFTP servers. When |
---|
995 | configured with a suitable method to translate username+password |
---|
996 | into a root directory cap, it provides simple access to the virtual |
---|
997 | filesystem. Remember that FTP is completely unencrypted: passwords, |
---|
998 | filenames, and file contents are all sent over the wire in |
---|
999 | cleartext, so FTP should only be used on a local (127.0.0.1) |
---|
1000 | connection. This feature is still in development: there are no unit |
---|
1001 | tests yet, and behavior with respect to Unicode filenames is |
---|
1002 | uncertain. Please see `FTP-and-SFTP.rst`_ for |
---|
1003 | configuration details. (`#512`_, `#531`_) |
---|
1004 | |
---|
1005 | CLI Changes |
---|
1006 | ''''''''''' |
---|
1007 | |
---|
1008 | - This release adds the 'tahoe create-alias' command, which is a |
---|
1009 | combination of 'tahoe mkdir' and 'tahoe add-alias'. This also allows |
---|
1010 | you to start using a new tahoe directory without exposing its URI in |
---|
1011 | the argv list, which is publicly visible (through the process table) |
---|
1012 | on most unix systems. Thanks to Kevin Reid for bringing this issue |
---|
1013 | to our attention. |
---|
1014 | |
---|
1015 | - The single-argument form of "tahoe put" was changed to create an |
---|
1016 | unlinked file. I.e. "tahoe put bar.txt" will take the contents of a |
---|
1017 | local "bar.txt" file, upload them to the grid, and print the |
---|
1018 | resulting read-cap; the file will not be attached to any |
---|
1019 | directories. This seemed a bit more useful than the previous |
---|
1020 | behavior (copy stdin, upload to the grid, attach the resulting file |
---|
1021 | into your default tahoe: alias in a child named 'bar.txt'). |
---|
1022 | |
---|
1023 | - "tahoe put" was also fixed to handle mutable files correctly: "tahoe |
---|
1024 | put bar.txt URI:SSK:..." will read the contents of the local bar.txt |
---|
1025 | and use them to replace the contents of the given mutable file. |
---|
1026 | |
---|
1027 | - The "tahoe webopen" command was modified to accept aliases. This |
---|
1028 | means "tahoe webopen tahoe:" will cause your web browser to open to |
---|
1029 | a "wui" page that gives access to the directory associated with the |
---|
1030 | default "tahoe:" alias. It should also accept leading slashes, like |
---|
1031 | "tahoe webopen tahoe:/stuff". |
---|
1032 | |
---|
1033 | - Many esoteric debugging commands were moved down into a "debug" |
---|
1034 | subcommand: |
---|
1035 | |
---|
1036 | - tahoe debug dump-cap |
---|
1037 | - tahoe debug dump-share |
---|
1038 | - tahoe debug find-shares |
---|
1039 | - tahoe debug catalog-shares |
---|
1040 | - tahoe debug corrupt-share |
---|
1041 | |
---|
1042 | The last command ("tahoe debug corrupt-share") flips a random bit |
---|
1043 | of the given local sharefile. This is used to test the file |
---|
1044 | verifying/repairing code, and obviously should not be used on user |
---|
1045 | data. |
---|
1046 | |
---|
1047 | The cli might not correctly handle arguments which contain non-ascii |
---|
1048 | characters in Tahoe v1.3 (although depending on your platform it |
---|
1049 | might, especially if your platform can be configured to pass such |
---|
1050 | characters on the command-line in utf-8 encoding). See |
---|
1051 | http://tahoe-lafs.org/trac/tahoe/ticket/565 for details. |
---|
1052 | |
---|
1053 | Web changes |
---|
1054 | ''''''''''' |
---|
1055 | |
---|
1056 | - The "default webapi port", used when creating a new client node (and |
---|
1057 | in the getting-started documentation), was changed from 8123 to |
---|
1058 | 3456, to reduce confusion when Tahoe accessed through a Firefox |
---|
1059 | browser on which the "Torbutton" extension has been installed. Port |
---|
1060 | 8123 is occasionally used as a Tor control port, so Torbutton adds |
---|
1061 | 8123 to Firefox's list of "banned ports" to avoid CSRF attacks |
---|
1062 | against Tor. Once 8123 is banned, it is difficult to diagnose why |
---|
1063 | you can no longer reach a Tahoe node, so the Tahoe default was |
---|
1064 | changed. Note that 3456 is reserved by IANA for the "vat" protocol, |
---|
1065 | but there are argueably more Torbutton+Tahoe users than vat users |
---|
1066 | these days. Note that this will only affect newly-created client |
---|
1067 | nodes. Pre-existing client nodes, created by earlier versions of |
---|
1068 | tahoe, may still be listening on 8123. |
---|
1069 | |
---|
1070 | - All deep-traversal operations (start-manifest, start-deep-size, |
---|
1071 | start-deep-stats, start-deep-check) now use a start-and-poll |
---|
1072 | approach, instead of using a single (fragile) long-running |
---|
1073 | synchronous HTTP connection. All these "start-" operations use POST |
---|
1074 | instead of GET. The old "GET manifest", "GET deep-size", and "POST |
---|
1075 | deep-check" operations have been removed. |
---|
1076 | |
---|
1077 | - The new "POST start-manifest" operation, when it finally completes, |
---|
1078 | results in a table of (path,cap), instead of the list of verifycaps |
---|
1079 | produced by the old "GET manifest". The table is available in |
---|
1080 | several formats: use output=html, output=text, or output=json to |
---|
1081 | choose one. The JSON output also includes stats, and a list of |
---|
1082 | verifycaps and storage-index strings. The "return_to=" and |
---|
1083 | "when_done=" arguments have been removed from the t=check and |
---|
1084 | deep-check operations. |
---|
1085 | |
---|
1086 | - The top-level status page (/status) now has a machine-readable form, |
---|
1087 | via "/status/?t=json". This includes information about the |
---|
1088 | currently-active uploads and downloads, which may be useful for |
---|
1089 | frontends that wish to display progress information. There is no |
---|
1090 | easy way to correlate the activities displayed here with recent wapi |
---|
1091 | requests, however. |
---|
1092 | |
---|
1093 | - Any files in BASEDIR/public_html/ (configurable) will be served in |
---|
1094 | response to requests in the /static/ portion of the URL space. This |
---|
1095 | will simplify the deployment of javascript-based frontends that can |
---|
1096 | still access wapi calls by conforming to the (regrettable) |
---|
1097 | "same-origin policy". |
---|
1098 | |
---|
1099 | - The welcome page now has a "Report Incident" button, which is tied |
---|
1100 | into the "Incident Gatherer" machinery. If the node is attached to |
---|
1101 | an incident gatherer (via log_gatherer.furl), then pushing this |
---|
1102 | button will cause an Incident to be signalled: this means recent log |
---|
1103 | events are aggregated and sent in a bundle to the gatherer. The user |
---|
1104 | can push this button after something strange takes place (and they |
---|
1105 | can provide a short message to go along with it), and the relevant |
---|
1106 | data will be delivered to a centralized incident-gatherer for later |
---|
1107 | processing by operations staff. |
---|
1108 | |
---|
1109 | - The "HEAD" method should now work correctly, in addition to the |
---|
1110 | usual "GET", "PUT", and "POST" methods. "HEAD" is supposed to return |
---|
1111 | exactly the same headers as "GET" would, but without any of the |
---|
1112 | actual response body data. For mutable files, this now does a brief |
---|
1113 | mapupdate (to figure out the size of the file that would be |
---|
1114 | returned), without actually retrieving the file's contents. |
---|
1115 | |
---|
1116 | - The "GET" operation on files can now support the HTTP "Range:" |
---|
1117 | header, allowing requests for partial content. This allows certain |
---|
1118 | media players to correctly stream audio and movies out of a Tahoe |
---|
1119 | grid. The current implementation uses a disk-based cache in |
---|
1120 | BASEDIR/private/cache/download , which holds the plaintext of the |
---|
1121 | files being downloaded. Future implementations might not use this |
---|
1122 | cache. GET for immutable files now returns an ETag header. |
---|
1123 | |
---|
1124 | - Each file and directory now has a "Show More Info" web page, which |
---|
1125 | contains much of the information that was crammed into the directory |
---|
1126 | page before. This includes readonly URIs, storage index strings, |
---|
1127 | object type, buttons to control checking/verifying/repairing, and |
---|
1128 | deep-check/deep-stats buttons (for directories). For mutable files, |
---|
1129 | the "replace contents" upload form has been moved here too. As a |
---|
1130 | result, the directory page is now much simpler and cleaner, and |
---|
1131 | several potentially-misleading links (like t=uri) are now gone. |
---|
1132 | |
---|
1133 | - Slashes are discouraged in Tahoe file/directory names, since they |
---|
1134 | cause problems when accessing the filesystem through the |
---|
1135 | wapi. However, there are a couple of accidental ways to generate |
---|
1136 | such names. This release tries to make it easier to correct such |
---|
1137 | mistakes by escaping slashes in several places, allowing slashes in |
---|
1138 | the t=info and t=delete commands, and in the source (but not the |
---|
1139 | target) of a t=rename command. |
---|
1140 | |
---|
1141 | Packaging |
---|
1142 | ''''''''' |
---|
1143 | |
---|
1144 | - Tahoe's dependencies have been extended to require the |
---|
1145 | "[secure_connections]" feature from Foolscap, which will cause |
---|
1146 | pyOpenSSL to be required and/or installed. If OpenSSL and its |
---|
1147 | development headers are already installed on your system, this can |
---|
1148 | occur automatically. Tahoe now uses pollreactor (instead of the |
---|
1149 | default selectreactor) to work around a bug between pyOpenSSL and |
---|
1150 | the most recent release of Twisted (8.1.0). This bug only affects |
---|
1151 | unit tests (hang during shutdown), and should not impact regular |
---|
1152 | use. |
---|
1153 | |
---|
1154 | - The Tahoe source code tarballs now come in two different forms: |
---|
1155 | regular and "sumo". The regular tarball contains just Tahoe, nothing |
---|
1156 | else. When building from the regular tarball, the build process will |
---|
1157 | download any unmet dependencies from the internet (starting with the |
---|
1158 | index at PyPI) so it can build and install them. The "sumo" tarball |
---|
1159 | contains copies of all the libraries that Tahoe requires (foolscap, |
---|
1160 | twisted, zfec, etc), so using the "sumo" tarball should not require |
---|
1161 | any internet access during the build process. This can be useful if |
---|
1162 | you want to build Tahoe while on an airplane, a desert island, or |
---|
1163 | other bandwidth-limited environments. |
---|
1164 | |
---|
1165 | - Similarly, tahoe-lafs.org now hosts a "tahoe-deps" tarball which |
---|
1166 | contains the latest versions of all these dependencies. This |
---|
1167 | tarball, located at |
---|
1168 | http://tahoe-lafs.org/source/tahoe/deps/tahoe-deps.tar.gz, can be |
---|
1169 | unpacked in the tahoe source tree (or in its parent directory), and |
---|
1170 | the build process should satisfy its downloading needs from it |
---|
1171 | instead of reaching out to PyPI. This can be useful if you want to |
---|
1172 | build Tahoe from a darcs checkout while on that airplane or desert |
---|
1173 | island. |
---|
1174 | |
---|
1175 | - Because of the previous two changes ("sumo" tarballs and the |
---|
1176 | "tahoe-deps" bundle), most of the files have been removed from |
---|
1177 | misc/dependencies/ . This brings the regular Tahoe tarball down to |
---|
1178 | 2MB (compressed), and the darcs checkout (without history) to about |
---|
1179 | 7.6MB. A full darcs checkout will still be fairly large (because of |
---|
1180 | the historical patches which included the dependent libraries), but |
---|
1181 | a 'lazy' one should now be small. |
---|
1182 | |
---|
1183 | - The default "make" target is now an alias for "setup.py build", |
---|
1184 | which itself is an alias for "setup.py develop --prefix support", |
---|
1185 | with some extra work before and after (see setup.cfg). Most of the |
---|
1186 | complicated platform-dependent code in the Makefile was rewritten in |
---|
1187 | Python and moved into setup.py, simplifying things considerably. |
---|
1188 | |
---|
1189 | - Likewise, the "make test" target now delegates most of its work to |
---|
1190 | "setup.py test", which takes care of getting PYTHONPATH configured |
---|
1191 | to access the tahoe code (and dependencies) that gets put in |
---|
1192 | support/lib/ by the build_tahoe step. This should allow unit tests |
---|
1193 | to be run even when trial (which is part of Twisted) wasn't already |
---|
1194 | installed (in this case, trial gets installed to support/bin because |
---|
1195 | Twisted is a dependency of Tahoe). |
---|
1196 | |
---|
1197 | - Tahoe is now compatible with the recently-released Python 2.6 , |
---|
1198 | although it is recommended to use Tahoe on Python 2.5, on which it |
---|
1199 | has received more thorough testing and deployment. |
---|
1200 | |
---|
1201 | - Tahoe is now compatible with simplejson-2.0.x . The previous release |
---|
1202 | assumed that simplejson.loads always returned unicode strings, which |
---|
1203 | is no longer the case in 2.0.x . |
---|
1204 | |
---|
1205 | Grid Management Tools |
---|
1206 | ''''''''''''''''''''' |
---|
1207 | |
---|
1208 | - Several tools have been added or updated in the misc/ directory, |
---|
1209 | mostly munin plugins that can be used to monitor a storage grid. |
---|
1210 | |
---|
1211 | - The misc/spacetime/ directory contains a "disk watcher" daemon |
---|
1212 | (startable with 'tahoe start'), which can be configured with a set |
---|
1213 | of HTTP URLs (pointing at the wapi '/statistics' page of a bunch of |
---|
1214 | storage servers), and will periodically fetch |
---|
1215 | disk-used/disk-available information from all the servers. It keeps |
---|
1216 | this information in an Axiom database (a sqlite-based library |
---|
1217 | available from divmod.org). The daemon computes time-averaged rates |
---|
1218 | of disk usage, as well as a prediction of how much time is left |
---|
1219 | before the grid is completely full. |
---|
1220 | |
---|
1221 | - The misc/munin/ directory contains a new set of munin plugins |
---|
1222 | (tahoe_diskleft, tahoe_diskusage, tahoe_doomsday) which talk to the |
---|
1223 | disk-watcher and provide graphs of its calculations. |
---|
1224 | |
---|
1225 | - To support the disk-watcher, the Tahoe statistics component |
---|
1226 | (visible through the wapi at the /statistics/ URL) now includes |
---|
1227 | disk-used and disk-available information. Both are derived through |
---|
1228 | an equivalent of the unix 'df' command (i.e. they ask the kernel |
---|
1229 | for the number of free blocks on the partition that encloses the |
---|
1230 | BASEDIR/storage directory). In the future, the disk-available |
---|
1231 | number will be further influenced by the local storage policy: if |
---|
1232 | that policy says that the server should refuse new shares when less |
---|
1233 | than 5GB is left on the partition, then "disk-available" will |
---|
1234 | report zero even though the kernel sees 5GB remaining. |
---|
1235 | |
---|
1236 | - The 'tahoe_overhead' munin plugin interacts with an |
---|
1237 | allmydata.com-specific server which reports the total of the |
---|
1238 | 'deep-size' reports for all active user accounts, compares this |
---|
1239 | with the disk-watcher data, to report on overhead percentages. This |
---|
1240 | provides information on how much space could be recovered once |
---|
1241 | Tahoe implements some form of garbage collection. |
---|
1242 | |
---|
1243 | Configuration Changes: single INI-format tahoe.cfg file |
---|
1244 | ''''''''''''''''''''''''''''''''''''''''''''''''''''''' |
---|
1245 | |
---|
1246 | - The Tahoe node is now configured with a single INI-format file, |
---|
1247 | named "tahoe.cfg", in the node's base directory. Most of the |
---|
1248 | previous multiple-separate-files are still read for backwards |
---|
1249 | compatibility (the embedded SSH debug server and the |
---|
1250 | advertised_ip_addresses files are the exceptions), but new |
---|
1251 | directives will only be added to tahoe.cfg . The "tahoe |
---|
1252 | create-client" command will create a tahoe.cfg for you, with sample |
---|
1253 | values commented out. (ticket `#518`_) |
---|
1254 | |
---|
1255 | - tahoe.cfg now has controls for the foolscap "keepalive" and |
---|
1256 | "disconnect" timeouts (`#521`_). |
---|
1257 | |
---|
1258 | - tahoe.cfg now has controls for the encoding parameters: |
---|
1259 | "shares.needed" and "shares.total" in the "[client]" section. The |
---|
1260 | default parameters are still 3-of-10. |
---|
1261 | |
---|
1262 | - The inefficient storage 'sizelimit' control (which established an |
---|
1263 | upper bound on the amount of space that a storage server is allowed |
---|
1264 | to consume) has been replaced by a lightweight 'reserved_space' |
---|
1265 | control (which establishes a lower bound on the amount of remaining |
---|
1266 | space). The storage server will reject all writes that would cause |
---|
1267 | the remaining disk space (as measured by a '/bin/df' equivalent) to |
---|
1268 | drop below this value. The "[storage]reserved_space=" tahoe.cfg |
---|
1269 | parameter controls this setting. (note that this only affects |
---|
1270 | immutable shares: it is an outstanding bug that reserved_space does |
---|
1271 | not prevent the allocation of new mutable shares, nor does it |
---|
1272 | prevent the growth of existing mutable shares). |
---|
1273 | |
---|
1274 | Other Changes |
---|
1275 | ''''''''''''' |
---|
1276 | |
---|
1277 | - Clients now declare which versions of the protocols they |
---|
1278 | support. This is part of a new backwards-compatibility system: |
---|
1279 | http://tahoe-lafs.org/trac/tahoe/wiki/Versioning . |
---|
1280 | |
---|
1281 | - The version strings for human inspection (as displayed on the |
---|
1282 | Welcome web page, and included in logs) now includes a platform |
---|
1283 | identifer (frequently including a linux distribution name, processor |
---|
1284 | architecture, etc). |
---|
1285 | |
---|
1286 | - Several bugs have been fixed, including one that would cause an |
---|
1287 | exception (in the logs) if a wapi download operation was cancelled |
---|
1288 | (by closing the TCP connection, or pushing the "stop" button in a |
---|
1289 | web browser). |
---|
1290 | |
---|
1291 | - Tahoe now uses Foolscap "Incidents", writing an "incident report" |
---|
1292 | file to logs/incidents/ each time something weird occurs. These |
---|
1293 | reports are available to an "incident gatherer" through the flogtool |
---|
1294 | command. For more details, please see the Foolscap logging |
---|
1295 | documentation. An incident-classifying plugin function is provided |
---|
1296 | in misc/incident-gatherer/classify_tahoe.py . |
---|
1297 | |
---|
1298 | - If clients detect corruption in shares, they now automatically |
---|
1299 | report it to the server holding that share, if it is new enough to |
---|
1300 | accept the report. These reports are written to files in |
---|
1301 | BASEDIR/storage/corruption-advisories . |
---|
1302 | |
---|
1303 | - The 'nickname' setting is now defined to be a UTF-8 -encoded string, |
---|
1304 | allowing non-ascii nicknames. |
---|
1305 | |
---|
1306 | - The 'tahoe start' command will now accept a --syslog argument and |
---|
1307 | pass it through to twistd, making it easier to launch non-Tahoe |
---|
1308 | nodes (like the cpu-watcher) and have them log to syslogd instead of |
---|
1309 | a local file. This is useful when running a Tahoe node out of a USB |
---|
1310 | flash drive. |
---|
1311 | |
---|
1312 | - The Mac GUI in src/allmydata/gui/ has been improved. |
---|
1313 | |
---|
1314 | .. _#512: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/512 |
---|
1315 | .. _#518: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/518 |
---|
1316 | .. _#521: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/521 |
---|
1317 | .. _#531: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/531 |
---|
1318 | |
---|
1319 | Release 1.2.0 (2008-07-21) |
---|
1320 | -------------------------- |
---|
1321 | |
---|
1322 | Security |
---|
1323 | '''''''' |
---|
1324 | |
---|
1325 | - This release makes the immutable-file "ciphertext hash tree" |
---|
1326 | mandatory. Previous releases allowed the uploader to decide whether |
---|
1327 | their file would have an integrity check on the ciphertext or not. A |
---|
1328 | malicious uploader could use this to create a readcap that would |
---|
1329 | download as one file or a different one, depending upon which shares |
---|
1330 | the client fetched first, with no errors raised. There are other |
---|
1331 | integrity checks on the shares themselves, preventing a storage |
---|
1332 | server or other party from violating the integrity properties of the |
---|
1333 | read-cap: this failure was only exploitable by the uploader who |
---|
1334 | gives you a carefully constructed read-cap. If you download the file |
---|
1335 | with Tahoe 1.2.0 or later, you will not be vulnerable to this |
---|
1336 | problem. `#491`_ |
---|
1337 | |
---|
1338 | This change does not introduce a compatibility issue, because all |
---|
1339 | existing versions of Tahoe will emit the ciphertext hash tree in |
---|
1340 | their shares. |
---|
1341 | |
---|
1342 | Dependencies |
---|
1343 | '''''''''''' |
---|
1344 | |
---|
1345 | - Tahoe now requires Foolscap-0.2.9 . It also requires pycryptopp 0.5 |
---|
1346 | or newer, since earlier versions had a bug that interacted with |
---|
1347 | specific compiler versions that could sometimes result in incorrect |
---|
1348 | encryption behavior. Both packages are included in the Tahoe source |
---|
1349 | tarball in misc/dependencies/ , and should be built automatically |
---|
1350 | when necessary. |
---|
1351 | |
---|
1352 | Web API |
---|
1353 | ''''''' |
---|
1354 | |
---|
1355 | - Web API directory pages should now contain properly-slash-terminated |
---|
1356 | links to other directories. They have also stopped using absolute |
---|
1357 | links in forms and pages (which interfered with the use of a |
---|
1358 | front-end load-balancing proxy). |
---|
1359 | |
---|
1360 | - The behavior of the "Check This File" button changed, in conjunction |
---|
1361 | with larger internal changes to file checking/verification. The |
---|
1362 | button triggers an immediate check as before, but the outcome is |
---|
1363 | shown on its own page, and does not get stored anywhere. As a |
---|
1364 | result, the web directory page no longer shows historical checker |
---|
1365 | results. |
---|
1366 | |
---|
1367 | - A new "Deep-Check" button has been added, which allows a user to |
---|
1368 | initiate a recursive check of the given directory and all files and |
---|
1369 | directories reachable from it. This can cause quite a bit of work, |
---|
1370 | and has no intermediate progress information or feedback about the |
---|
1371 | process. In addition, the results of the deep-check are extremely |
---|
1372 | limited. A later release will improve this behavior. |
---|
1373 | |
---|
1374 | - The web server's behavior with respect to non-ASCII (unicode) |
---|
1375 | filenames in the "GET save=true" operation has been improved. To |
---|
1376 | achieve maximum compatibility with variously buggy web browsers, the |
---|
1377 | server does not try to figure out the character set of the inbound |
---|
1378 | filename. It just echoes the same bytes back to the browser in the |
---|
1379 | Content-Disposition header. This seems to make both IE7 and Firefox |
---|
1380 | work correctly. |
---|
1381 | |
---|
1382 | Checker/Verifier/Repairer |
---|
1383 | ''''''''''''''''''''''''' |
---|
1384 | |
---|
1385 | - Tahoe is slowly acquiring convenient tools to check up on file |
---|
1386 | health, examine existing shares for errors, and repair files that |
---|
1387 | are not fully healthy. This release adds a mutable |
---|
1388 | checker/verifier/repairer, although testing is very limited, and |
---|
1389 | there are no web interfaces to trigger repair yet. The "Check" |
---|
1390 | button next to each file or directory on the wapi page will perform |
---|
1391 | a file check, and the "deep check" button on each directory will |
---|
1392 | recursively check all files and directories reachable from there |
---|
1393 | (which may take a very long time). |
---|
1394 | |
---|
1395 | Future releases will improve access to this functionality. |
---|
1396 | |
---|
1397 | Operations/Packaging |
---|
1398 | '''''''''''''''''''' |
---|
1399 | |
---|
1400 | - A "check-grid" script has been added, along with a Makefile |
---|
1401 | target. This is intended (with the help of a pre-configured node |
---|
1402 | directory) to check upon the health of a Tahoe grid, uploading and |
---|
1403 | downloading a few files. This can be used as a monitoring tool for a |
---|
1404 | deployed grid, to be run periodically and to signal an error if it |
---|
1405 | ever fails. It also helps with compatibility testing, to verify that |
---|
1406 | the latest Tahoe code is still able to handle files created by an |
---|
1407 | older version. |
---|
1408 | |
---|
1409 | - The munin plugins from misc/munin/ are now copied into any generated |
---|
1410 | debian packages, and are made executable (and uncompressed) so they |
---|
1411 | can be symlinked directly from /etc/munin/plugins/ . |
---|
1412 | |
---|
1413 | - Ubuntu "Hardy" was added as a supported debian platform, with a |
---|
1414 | Makefile target to produce hardy .deb packages. Some notes have been |
---|
1415 | added to `debian.rst`_ about building Tahoe on a debian/ubuntu |
---|
1416 | system. |
---|
1417 | |
---|
1418 | - Storage servers now measure operation rates and |
---|
1419 | latency-per-operation, and provides results through the /statistics |
---|
1420 | web page as well as the stats gatherer. Munin plugins have been |
---|
1421 | added to match. |
---|
1422 | |
---|
1423 | Other |
---|
1424 | ''''' |
---|
1425 | |
---|
1426 | - Tahoe nodes now use Foolscap "incident logging" to record unusual |
---|
1427 | events to their NODEDIR/logs/incidents/ directory. These incident |
---|
1428 | files can be examined by Foolscap logging tools, or delivered to an |
---|
1429 | external log-gatherer for further analysis. Note that Tahoe now |
---|
1430 | requires Foolscap-0.2.9, since 0.2.8 had a bug that complained about |
---|
1431 | "OSError: File exists" when trying to create the incidents/ |
---|
1432 | directory for a second time. |
---|
1433 | |
---|
1434 | - If no servers are available when retrieving a mutable file (like a |
---|
1435 | directory), the node now reports an error instead of hanging |
---|
1436 | forever. Earlier releases would not only hang (causing the wapi |
---|
1437 | directory listing to get stuck half-way through), but the internal |
---|
1438 | dirnode serialization would cause all subsequent attempts to |
---|
1439 | retrieve or modify the same directory to hang as well. `#463`_ |
---|
1440 | |
---|
1441 | - A minor internal exception (reported in logs/twistd.log, in the |
---|
1442 | "stopProducing" method) was fixed, which complained about |
---|
1443 | "self._paused_at not defined" whenever a file download was stopped |
---|
1444 | from the web browser end. |
---|
1445 | |
---|
1446 | .. _#463: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/463 |
---|
1447 | .. _#491: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/491 |
---|
1448 | .. _debian.rst: docs/debian.rst |
---|
1449 | |
---|
1450 | Release 1.1.0 (2008-06-11) |
---|
1451 | -------------------------- |
---|
1452 | |
---|
1453 | CLI: new "alias" model |
---|
1454 | '''''''''''''''''''''' |
---|
1455 | |
---|
1456 | - The new CLI code uses an scp/rsync -like interface, in which |
---|
1457 | directories in the Tahoe storage grid are referenced by a |
---|
1458 | colon-suffixed alias. The new commands look like: |
---|
1459 | |
---|
1460 | - tahoe cp local.txt tahoe:virtual.txt |
---|
1461 | - tahoe ls work:subdir |
---|
1462 | |
---|
1463 | - More functionality is available through the CLI: creating unlinked |
---|
1464 | files and directories, recursive copy in or out of the storage grid, |
---|
1465 | hardlinks, and retrieving the raw read- or write- caps through the |
---|
1466 | 'ls' command. Please read `CLI.rst`_ for complete details. |
---|
1467 | |
---|
1468 | wapi: new pages, new commands |
---|
1469 | ''''''''''''''''''''''''''''' |
---|
1470 | |
---|
1471 | - Several new pages were added to the web API: |
---|
1472 | |
---|
1473 | - /helper_status : to describe what a Helper is doing |
---|
1474 | - /statistics : reports node uptime, CPU usage, other stats |
---|
1475 | - /file : for easy file-download URLs, see `#221`_ |
---|
1476 | - /cap == /uri : future compatibility |
---|
1477 | |
---|
1478 | - The localdir=/localfile= and t=download operations were |
---|
1479 | removed. These required special configuration to enable anyways, but |
---|
1480 | this feature was a security problem, and was mostly obviated by the |
---|
1481 | new "cp -r" command. |
---|
1482 | |
---|
1483 | - Several new options to the GET command were added: |
---|
1484 | |
---|
1485 | - t=deep-size : add up the size of all immutable files reachable from the directory |
---|
1486 | - t=deep-stats : return a JSON-encoded description of number of files, size |
---|
1487 | distribution, total size, etc |
---|
1488 | |
---|
1489 | - POST is now preferred over PUT for most operations which cause |
---|
1490 | side-effects. |
---|
1491 | |
---|
1492 | - Most wapi calls now accept overwrite=, and default to overwrite=true |
---|
1493 | |
---|
1494 | - "POST /uri/DIRCAP/parent/child?t=mkdir" is now the preferred API to |
---|
1495 | create multiple directories at once, rather than ...?t=mkdir-p . |
---|
1496 | |
---|
1497 | - PUT to a mutable file ("PUT /uri/MUTABLEFILECAP", "PUT |
---|
1498 | /uri/DIRCAP/child") will modify the file in-place. |
---|
1499 | |
---|
1500 | - more munin graphs in misc/munin/ |
---|
1501 | |
---|
1502 | - tahoe-introstats |
---|
1503 | - tahoe-rootdir-space |
---|
1504 | - tahoe_estimate_files |
---|
1505 | - mutable files published/retrieved |
---|
1506 | - tahoe_cpu_watcher |
---|
1507 | - tahoe_spacetime |
---|
1508 | |
---|
1509 | New Dependencies |
---|
1510 | '''''''''''''''' |
---|
1511 | - zfec 1.1.0 |
---|
1512 | - foolscap 0.2.8 |
---|
1513 | - pycryptopp 0.5 |
---|
1514 | - setuptools (now required at runtime) |
---|
1515 | |
---|
1516 | New Mutable-File Code |
---|
1517 | ''''''''''''''''''''' |
---|
1518 | |
---|
1519 | - The mutable-file handling code (mostly used for directories) has |
---|
1520 | been completely rewritten. The new scheme has a better API (with a |
---|
1521 | modify() method) and is less likely to lose data when several |
---|
1522 | uncoordinated writers change a file at the same time. |
---|
1523 | |
---|
1524 | - In addition, a single Tahoe process will coordinate its own |
---|
1525 | writes. If you make two concurrent directory-modifying wapi calls to |
---|
1526 | a single tahoe node, it will internally make one of them wait for |
---|
1527 | the other to complete. This prevents auto-collision (`#391`_). |
---|
1528 | |
---|
1529 | - The new mutable-file code also detects errors during publish |
---|
1530 | better. Earlier releases might believe that a mutable file was |
---|
1531 | published when in fact it failed. |
---|
1532 | |
---|
1533 | other features |
---|
1534 | '''''''''''''' |
---|
1535 | |
---|
1536 | - The node now monitors its own CPU usage, as a percentage, measured |
---|
1537 | every 60 seconds. 1/5/15 minute moving averages are available on the |
---|
1538 | /statistics web page and via the stats-gathering interface. |
---|
1539 | |
---|
1540 | - Clients now accelerate reconnection to all servers after being |
---|
1541 | offline (`#374`_). When a client is offline for a long time, it |
---|
1542 | scales back reconnection attempts to approximately once per hour, so |
---|
1543 | it may take a while to make the first attempt, but once any attempt |
---|
1544 | succeeds, the other server connections will be retried immediately. |
---|
1545 | |
---|
1546 | - A new "offloaded KeyGenerator" facility can be configured, to move |
---|
1547 | RSA key generation out from, say, a wapi node, into a separate |
---|
1548 | process. RSA keys can take several seconds to create, and so a wapi |
---|
1549 | node which is being used for directory creation will be unavailable |
---|
1550 | for anything else during this time. The Key Generator process will |
---|
1551 | pre-compute a small pool of keys, to speed things up further. This |
---|
1552 | also takes better advantage of multi-core CPUs, or SMP hosts. |
---|
1553 | |
---|
1554 | - The node will only use a potentially-slow "du -s" command at startup |
---|
1555 | (to measure how much space has been used) if the "sizelimit" |
---|
1556 | parameter has been configured (to limit how much space is |
---|
1557 | used). Large storage servers should turn off sizelimit until a later |
---|
1558 | release improves the space-management code, since "du -s" on a |
---|
1559 | terabyte filesystem can take hours. |
---|
1560 | |
---|
1561 | - The Introducer now allows new announcements to replace old ones, to |
---|
1562 | avoid buildups of obsolete announcements. |
---|
1563 | |
---|
1564 | - Immutable files are limited to about 12GiB (when using the default |
---|
1565 | 3-of-10 encoding), because larger files would be corrupted by the |
---|
1566 | four-byte share-size field on the storage servers (`#439`_). A later |
---|
1567 | release will remove this limit. Earlier releases would allow >12GiB |
---|
1568 | uploads, but the resulting file would be unretrievable. |
---|
1569 | |
---|
1570 | - The docs/ directory has been rearranged, with old docs put in |
---|
1571 | docs/historical/ and not-yet-implemented ones in docs/proposed/ . |
---|
1572 | |
---|
1573 | - The Mac OS-X FUSE plugin has a significant bug fix: earlier versions |
---|
1574 | would corrupt writes that used seek() instead of writing the file in |
---|
1575 | linear order. The rsync tool is known to perform writes in this |
---|
1576 | order. This has been fixed. |
---|
1577 | |
---|
1578 | .. _#221: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/221 |
---|
1579 | .. _#374: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/374 |
---|
1580 | .. _#391: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/391 |
---|
1581 | .. _#439: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/439 |
---|
1582 | .. _CLI.rst: docs/CLI.rst |
---|