1 | Sat Jun 19 00:01:19 GMT Daylight Time 2010 david-sarah@jacaranda.org |
---|
2 | * dirnode.py: stop writing 'ctime' and 'mtime' fields. Includes documentation and test changes. |
---|
3 | |
---|
4 | New patches: |
---|
5 | |
---|
6 | [dirnode.py: stop writing 'ctime' and 'mtime' fields. Includes documentation and test changes. |
---|
7 | david-sarah@jacaranda.org**20100618230119 |
---|
8 | Ignore-this: 709119898499769dd64c7977db7c84a6 |
---|
9 | ] { |
---|
10 | hunk ./docs/frontends/webapi.txt 667 |
---|
11 | |
---|
12 | ==== About the metadata ==== |
---|
13 | |
---|
14 | - The value of the 'mtime' key and of the 'tahoe':'linkmotime' is updated |
---|
15 | - whenever a link to a child is set. The value of the 'ctime' key and of the |
---|
16 | - 'tahoe':'linkcrtime' key is updated whenever a link to a child is created -- |
---|
17 | - i.e. when there was not previously a link under that name. |
---|
18 | + The value of the 'tahoe':'linkmotime' key is updated whenever a link to a |
---|
19 | + child is set. The value of the 'tahoe':'linkcrtime' key is updated whenever |
---|
20 | + a link to a child is created -- i.e. when there was not previously a link |
---|
21 | + under that name. |
---|
22 | |
---|
23 | hunk ./docs/frontends/webapi.txt 672 |
---|
24 | - In Tahoe earlier than v1.4.0, only the 'mtime'/'ctime' keys were populated. |
---|
25 | - Starting in Tahoe v1.4.0, the 'linkmotime'/'linkcrtime' keys in the 'tahoe' |
---|
26 | - sub-dict are also populated. However, prior to v1.7.0, a bug caused the |
---|
27 | - 'tahoe' sub-dict to be deleted by webapi requests in which new metadata |
---|
28 | - is specified, and not to be added to existing child links that lack it. |
---|
29 | + Note however, that if the edge in the Tahoe filesystem points to a mutable |
---|
30 | + file and the contents of that mutable file is changed, then the |
---|
31 | + 'tahoe':'linkmotime' value on that edge will *not* be updated, since the |
---|
32 | + edge itself wasn't updated -- only the mutable file was. |
---|
33 | |
---|
34 | hunk ./docs/frontends/webapi.txt 677 |
---|
35 | - The reason we added the new values in Tahoe v1.4.0 is that there is a |
---|
36 | + The timestamps are represented as a number of seconds since the UNIX epoch |
---|
37 | + (1970-01-01 00:00:00 UTC), excluding leap seconds. |
---|
38 | + |
---|
39 | + In Tahoe earlier than v1.4.0, 'mtime' and 'ctime' keys were populated |
---|
40 | + instead of the 'tahoe':'linkmotime' and 'tahoe':'linkcrtime' keys. Starting |
---|
41 | + in Tahoe v1.4.0, the 'linkmotime'/'linkcrtime' keys in the 'tahoe' sub-dict |
---|
42 | + are populated. However, prior to Tahoe v1.7beta, a bug caused the 'tahoe' |
---|
43 | + sub-dict to be deleted by webapi requests in which new metadata is |
---|
44 | + specified, and not to be added to existing child links that lack it. |
---|
45 | + |
---|
46 | + From Tahoe v1.7.0 onward, the 'mtime' and 'ctime' fields are no longer |
---|
47 | + populated or updated (see ticket #924), except by "tahoe backup" as |
---|
48 | + explained below. For backward compatibility, when an existing link is |
---|
49 | + updated and 'tahoe':'linkcrtime' is not present in the previous metadata |
---|
50 | + but 'ctime' is, the old value of 'ctime' is used as the new value of |
---|
51 | + 'tahoe':'linkcrtime'. |
---|
52 | + |
---|
53 | + The reason we added the new fields in Tahoe v1.4.0 is that there is a |
---|
54 | "set_children" API (described below) which you can use to overwrite the |
---|
55 | hunk ./docs/frontends/webapi.txt 696 |
---|
56 | - values of the 'mtime'/'ctime' pair, and this API is used by the "tahoe |
---|
57 | - backup" command (both in Tahoe v1.3.0 and in Tahoe v1.4.0) to set the |
---|
58 | - 'mtime' and 'ctime' values when backing up files from a local filesystem |
---|
59 | - into the Tahoe filesystem. As of Tahoe v1.4.0, the set_children API cannot |
---|
60 | - be used to set anything under the 'tahoe' key of the metadata dict -- if |
---|
61 | - you include 'tahoe' keys in your 'metadata' arguments then it will silently |
---|
62 | + values of the 'mtime'/'ctime' pair, and this API is used by the |
---|
63 | + "tahoe backup" command (in Tahoe v1.3.0 and later) to set the 'mtime' and |
---|
64 | + 'ctime' values when backing up files from a local filesystem into the |
---|
65 | + Tahoe filesystem. As of Tahoe v1.4.0, the set_children API cannot be used |
---|
66 | + to set anything under the 'tahoe' key of the metadata dict -- if you |
---|
67 | + include 'tahoe' keys in your 'metadata' arguments then it will silently |
---|
68 | ignore those keys. |
---|
69 | |
---|
70 | Therefore, if the 'tahoe' sub-dict is present, you can rely on the |
---|
71 | hunk ./docs/frontends/webapi.txt 713 |
---|
72 | they like, and there is nothing to constrain their system clock from taking |
---|
73 | any value.) |
---|
74 | |
---|
75 | - The meaning of the 'ctime'/'mtime' fields are slightly more complex. |
---|
76 | + When an edge is created or updated by "tahoe backup", the 'mtime' and |
---|
77 | + 'ctime' keys on that edge are set as follows: |
---|
78 | |
---|
79 | hunk ./docs/frontends/webapi.txt 716 |
---|
80 | - The meaning of the 'mtime' field is: whenever the edge is updated (by an HTTP |
---|
81 | - PUT or POST, as is done by the "tahoe cp" command), then the mtime is set to |
---|
82 | - the current time on the clock of the updating client. Whenever the edge is |
---|
83 | - updated by "tahoe backup" then the mtime is instead set to the value which |
---|
84 | - the updating client read from its local filesystem for the "mtime" of the |
---|
85 | - local file in question, which means the last time the contents of that file |
---|
86 | - were changed. Note however, that if the edge in the Tahoe filesystem points |
---|
87 | - to a mutable file and the contents of that mutable file is changed then the |
---|
88 | - "mtime" value on that edge will *not* be updated, since the edge itself |
---|
89 | - wasn't updated -- only the mutable file was. |
---|
90 | + * 'mtime' is set to the timestamp read from the local filesystem for the |
---|
91 | + "mtime" of the local file in question, which means the last time the |
---|
92 | + contents of that file were changed. |
---|
93 | |
---|
94 | hunk ./docs/frontends/webapi.txt 720 |
---|
95 | - The meaning of the 'ctime' field is even more complex. Whenever a new edge is |
---|
96 | - created (by an HTTP PUT or POST, as is done by "tahoe cp") then the ctime is |
---|
97 | - set to the current time on the clock of the updating client. Whenever the |
---|
98 | - edge is created *or updated* by "tahoe backup" then the ctime is instead set |
---|
99 | - to the value which the updating client read from its local filesystem. On |
---|
100 | - Windows, it reads the timestamp of when the local file was created and puts |
---|
101 | - that into the "ctime", and on other platforms it reads the timestamp of the |
---|
102 | - most recent time that either the contents or the metadata of the local file |
---|
103 | - was changed and puts that into the ctime. Again, if the edge points to a |
---|
104 | - mutable file and the content of that mutable file is changed then the ctime |
---|
105 | - will not be updated in any case. |
---|
106 | + * On Windows, 'ctime' is set to the creation timestamp for the file |
---|
107 | + read from the local filesystem. On other platforms, 'ctime' is set to |
---|
108 | + the UNIX "ctime" of the local file, which means the last time that |
---|
109 | + either the contents or the metadata of the local file was changed. |
---|
110 | |
---|
111 | hunk ./docs/frontends/webapi.txt 725 |
---|
112 | - Therefore there are several ways that the 'ctime' field could be confusing: |
---|
113 | + There are several ways that the 'ctime' field could be confusing: |
---|
114 | |
---|
115 | 1. You might be confused about whether it reflects the time of the creation |
---|
116 | hunk ./docs/frontends/webapi.txt 728 |
---|
117 | - of a link in the Tahoe filesystem or a timestamp copied in from a local |
---|
118 | - filesystem. |
---|
119 | + of a link in the Tahoe filesystem (by a version of Tahoe < v1.7.0) or a |
---|
120 | + timestamp copied in by "tahoe backup" from a local filesystem. |
---|
121 | + |
---|
122 | + 2. You might be confused about whether it is a copy of the file creation |
---|
123 | + time (if "tahoe backup" was run on a Windows system) or of the last |
---|
124 | + contents-or-metadata change (if "tahoe backup" was run on a different |
---|
125 | + operating system). |
---|
126 | |
---|
127 | hunk ./docs/frontends/webapi.txt 736 |
---|
128 | - 2. You might be confused about whether it is a copy of the file creation time |
---|
129 | - (if "tahoe backup" was run on a Windows system) or of the last |
---|
130 | - contents-or-metadata change (if "tahoe backup" was run on a different |
---|
131 | - operating system). |
---|
132 | + 3. You might be confused by the fact that changing the contents of a |
---|
133 | + mutable file in Tahoe don't have any effect on any links pointing at |
---|
134 | + that file in any directories, although "tahoe backup" sets the link |
---|
135 | + 'ctime'/'mtime' to reflect timestamps about the local file corresponding |
---|
136 | + to the Tahoe file to which the link points. |
---|
137 | |
---|
138 | hunk ./docs/frontends/webapi.txt 742 |
---|
139 | - 3. You might be confused by the fact that changing the contents of a mutable |
---|
140 | - file in Tahoe don't have any effect on any links pointing at that file in any |
---|
141 | - directories, although "tahoe backup" sets the link 'ctime'/'mtime' to reflect |
---|
142 | - timestamps about the local file corresponding to the Tahoe file to which the |
---|
143 | - link points. |
---|
144 | + 4. Also, quite apart from Tahoe, you might be confused about the meaning |
---|
145 | + of the "ctime" in UNIX local filesystems, which people sometimes think |
---|
146 | + means file creation time, but which actually means, in UNIX local |
---|
147 | + filesystems, the most recent time that the file contents or the file |
---|
148 | + metadata (such as owner, permission bits, extended attributes, etc.) |
---|
149 | + has changed. Note that although "ctime" does not mean file creation time |
---|
150 | + in UNIX, links created by a version of Tahoe prior to v1.7.0, and never |
---|
151 | + written by "tahoe backup", will have 'ctime' set to the link creation |
---|
152 | + time. |
---|
153 | |
---|
154 | hunk ./docs/frontends/webapi.txt 752 |
---|
155 | - 4. Also, quite apart from Tahoe, you might be confused about the meaning of |
---|
156 | - the 'ctime' in UNIX local filesystems, which people sometimes think means |
---|
157 | - file creation time, but which actually means, in UNIX local filesystems, the |
---|
158 | - most recent time that the file contents or the file metadata (such as owner, |
---|
159 | - permission bits, extended attributes, etc.) has changed. Note that although |
---|
160 | - 'ctime' does not mean file creation time in UNIX, it does mean link creation |
---|
161 | - time in Tahoe, unless the "tahoe backup" command has been used on that link, |
---|
162 | - in which case it means something about the local filesystem file which |
---|
163 | - corresponds to the Tahoe file which is pointed at by the link. It means |
---|
164 | - either file creation time of the local file (if "tahoe backup" was run on |
---|
165 | - Windows) or file-contents-or-metadata-update-time of the local file (if |
---|
166 | - "tahoe backup" was run on a different operating system). |
---|
167 | |
---|
168 | === Attaching an existing File or Directory by its read- or write- cap === |
---|
169 | |
---|
170 | hunk ./src/allmydata/dirnode.py 33 |
---|
171 | Timestamps are set according to the time 'now'.""" |
---|
172 | |
---|
173 | if metadata is None: |
---|
174 | - metadata = {'ctime': now, |
---|
175 | - 'mtime': now, |
---|
176 | - 'tahoe': { |
---|
177 | - 'linkcrtime': now, |
---|
178 | - 'linkmotime': now, |
---|
179 | - } |
---|
180 | - } |
---|
181 | + metadata = {} |
---|
182 | + |
---|
183 | + old_ctime = None |
---|
184 | + if 'ctime' in metadata: |
---|
185 | + old_ctime = metadata['ctime'] |
---|
186 | |
---|
187 | if new_metadata is not None: |
---|
188 | # Overwrite all metadata. |
---|
189 | hunk ./src/allmydata/dirnode.py 49 |
---|
190 | if 'tahoe' in metadata: |
---|
191 | newmd['tahoe'] = metadata['tahoe'] |
---|
192 | |
---|
193 | - # For backwards compatibility with Tahoe < 1.4.0: |
---|
194 | - if 'ctime' not in newmd: |
---|
195 | - if 'ctime' in metadata: |
---|
196 | - newmd['ctime'] = metadata['ctime'] |
---|
197 | - else: |
---|
198 | - newmd['ctime'] = now |
---|
199 | - if 'mtime' not in newmd: |
---|
200 | - newmd['mtime'] = now |
---|
201 | - |
---|
202 | metadata = newmd |
---|
203 | hunk ./src/allmydata/dirnode.py 50 |
---|
204 | - else: |
---|
205 | - # For backwards compatibility with Tahoe < 1.4.0: |
---|
206 | - if 'ctime' not in metadata: |
---|
207 | - metadata['ctime'] = now |
---|
208 | - metadata['mtime'] = now |
---|
209 | |
---|
210 | # update timestamps |
---|
211 | sysmd = metadata.get('tahoe', {}) |
---|
212 | hunk ./src/allmydata/dirnode.py 55 |
---|
213 | if 'linkcrtime' not in sysmd: |
---|
214 | # In Tahoe < 1.4.0 we used the word 'ctime' to mean what Tahoe >= 1.4.0 |
---|
215 | - # calls 'linkcrtime'. |
---|
216 | - assert 'ctime' in metadata |
---|
217 | - sysmd['linkcrtime'] = metadata['ctime'] |
---|
218 | + # calls 'linkcrtime'. This field is only used if it was in the old metadata, |
---|
219 | + # and 'tahoe:linkcrtime' was not. |
---|
220 | + if old_ctime is not None: |
---|
221 | + sysmd['linkcrtime'] = old_ctime |
---|
222 | + else: |
---|
223 | + sysmd['linkcrtime'] = now |
---|
224 | + |
---|
225 | sysmd['linkmotime'] = now |
---|
226 | metadata['tahoe'] = sysmd |
---|
227 | |
---|
228 | hunk ./src/allmydata/test/test_dirnode.py 749 |
---|
229 | d.addCallback(lambda res: n.get_metadata_for(u"child")) |
---|
230 | d.addCallback(lambda metadata: |
---|
231 | self.failUnlessEqual(set(metadata.keys()), |
---|
232 | - set(["tahoe", "ctime", "mtime"]))) |
---|
233 | + set(["tahoe"]))) |
---|
234 | |
---|
235 | d.addCallback(lambda res: |
---|
236 | self.shouldFail(NoSuchChildError, "gcamap-no", |
---|
237 | hunk ./src/allmydata/test/test_dirnode.py 771 |
---|
238 | child, metadata = res |
---|
239 | self.failUnlessEqual(child.get_uri(), |
---|
240 | fake_file_uri) |
---|
241 | - self.failUnlessEqual(set(metadata.keys()), |
---|
242 | - set(["tahoe", "ctime", "mtime"])) |
---|
243 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"])) |
---|
244 | d.addCallback(_check_child_and_metadata2) |
---|
245 | |
---|
246 | d.addCallback(lambda res: |
---|
247 | hunk ./src/allmydata/test/test_dirnode.py 779 |
---|
248 | def _check_child_and_metadata3(res): |
---|
249 | child, metadata = res |
---|
250 | self.failUnless(isinstance(child, dirnode.DirectoryNode)) |
---|
251 | - self.failUnlessEqual(set(metadata.keys()), |
---|
252 | - set(["tahoe", "ctime", "mtime"])) |
---|
253 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"])) |
---|
254 | d.addCallback(_check_child_and_metadata3) |
---|
255 | |
---|
256 | # set_uri + metadata |
---|
257 | hunk ./src/allmydata/test/test_dirnode.py 789 |
---|
258 | {})) |
---|
259 | d.addCallback(lambda res: n.get_metadata_for(u"c2")) |
---|
260 | d.addCallback(lambda metadata: |
---|
261 | - self.failUnlessEqual(set(metadata.keys()), set(["tahoe", "ctime", "mtime"]))) |
---|
262 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"]))) |
---|
263 | |
---|
264 | # You can't override the link timestamps. |
---|
265 | d.addCallback(lambda res: n.set_uri(u"c2", |
---|
266 | hunk ./src/allmydata/test/test_dirnode.py 807 |
---|
267 | fake_file_uri, fake_file_uri)) |
---|
268 | d.addCallback(lambda res: n.get_metadata_for(u"c3")) |
---|
269 | d.addCallback(lambda metadata: |
---|
270 | - self.failUnlessEqual(set(metadata.keys()), set(["tahoe", "ctime", "mtime"]))) |
---|
271 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"]))) |
---|
272 | |
---|
273 | # we can also add specific metadata at set_uri() time |
---|
274 | d.addCallback(lambda res: n.set_uri(u"c4", |
---|
275 | hunk ./src/allmydata/test/test_dirnode.py 815 |
---|
276 | {"key": "value"})) |
---|
277 | d.addCallback(lambda res: n.get_metadata_for(u"c4")) |
---|
278 | d.addCallback(lambda metadata: |
---|
279 | - self.failUnless((set(metadata.keys()) == set(["key", "tahoe", "ctime", "mtime"])) and |
---|
280 | + self.failUnless((set(metadata.keys()) == set(["key", "tahoe"])) and |
---|
281 | (metadata['key'] == "value"), metadata)) |
---|
282 | |
---|
283 | d.addCallback(lambda res: n.delete(u"c2")) |
---|
284 | hunk ./src/allmydata/test/test_dirnode.py 833 |
---|
285 | overwrite=False)) |
---|
286 | d.addCallback(lambda res: n.get_metadata_for(u"d2")) |
---|
287 | d.addCallback(lambda metadata: |
---|
288 | - self.failUnlessEqual(set(metadata.keys()), set(["tahoe", "ctime", "mtime"]))) |
---|
289 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"]))) |
---|
290 | |
---|
291 | # if we don't set any defaults, the child should get timestamps |
---|
292 | d.addCallback(lambda res: n.set_node(u"d3", n)) |
---|
293 | hunk ./src/allmydata/test/test_dirnode.py 839 |
---|
294 | d.addCallback(lambda res: n.get_metadata_for(u"d3")) |
---|
295 | d.addCallback(lambda metadata: |
---|
296 | - self.failUnlessEqual(set(metadata.keys()), set(["tahoe", "ctime", "mtime"]))) |
---|
297 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"]))) |
---|
298 | |
---|
299 | # we can also add specific metadata at set_node() time |
---|
300 | d.addCallback(lambda res: n.set_node(u"d4", n, |
---|
301 | hunk ./src/allmydata/test/test_dirnode.py 846 |
---|
302 | {"key": "value"})) |
---|
303 | d.addCallback(lambda res: n.get_metadata_for(u"d4")) |
---|
304 | d.addCallback(lambda metadata: |
---|
305 | - self.failUnless((set(metadata.keys()) == set(["key", "tahoe", "ctime", "mtime"])) and |
---|
306 | + self.failUnless((set(metadata.keys()) == set(["key", "tahoe"])) and |
---|
307 | (metadata["key"] == "value"), metadata)) |
---|
308 | |
---|
309 | d.addCallback(lambda res: n.delete(u"d2")) |
---|
310 | hunk ./src/allmydata/test/test_dirnode.py 877 |
---|
311 | d.addCallback(lambda children: self.failIf(u"new" in children)) |
---|
312 | d.addCallback(lambda res: n.get_metadata_for(u"e1")) |
---|
313 | d.addCallback(lambda metadata: |
---|
314 | - self.failUnlessEqual(set(metadata.keys()), set(["tahoe", "ctime", "mtime"]))) |
---|
315 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"]))) |
---|
316 | d.addCallback(lambda res: n.get_metadata_for(u"e2")) |
---|
317 | d.addCallback(lambda metadata: |
---|
318 | hunk ./src/allmydata/test/test_dirnode.py 880 |
---|
319 | - self.failUnlessEqual(set(metadata.keys()), set(["tahoe", "ctime", "mtime"]))) |
---|
320 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"]))) |
---|
321 | d.addCallback(lambda res: n.get_metadata_for(u"e3")) |
---|
322 | d.addCallback(lambda metadata: |
---|
323 | hunk ./src/allmydata/test/test_dirnode.py 883 |
---|
324 | - self.failUnless((set(metadata.keys()) == set(["key", "tahoe", "ctime", "mtime"])) and |
---|
325 | + self.failUnless((set(metadata.keys()) == set(["key", "tahoe"])) and |
---|
326 | (metadata["key"] == "value"), metadata)) |
---|
327 | |
---|
328 | d.addCallback(lambda res: n.delete(u"e1")) |
---|
329 | hunk ./src/allmydata/test/test_dirnode.py 908 |
---|
330 | d.addCallback(lambda children: self.failIf(u"new" in children)) |
---|
331 | d.addCallback(lambda res: n.get_metadata_for(u"f1")) |
---|
332 | d.addCallback(lambda metadata: |
---|
333 | - self.failUnlessEqual(set(metadata.keys()), set(["tahoe", "ctime", "mtime"]))) |
---|
334 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"]))) |
---|
335 | d.addCallback(lambda res: n.get_metadata_for(u"f2")) |
---|
336 | d.addCallback(lambda metadata: |
---|
337 | hunk ./src/allmydata/test/test_dirnode.py 911 |
---|
338 | - self.failUnlessEqual(set(metadata.keys()), set(["tahoe", "ctime", "mtime"]))) |
---|
339 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"]))) |
---|
340 | d.addCallback(lambda res: n.get_metadata_for(u"f3")) |
---|
341 | d.addCallback(lambda metadata: |
---|
342 | hunk ./src/allmydata/test/test_dirnode.py 914 |
---|
343 | - self.failUnless((set(metadata.keys()) == set(["key", "tahoe", "ctime", "mtime"])) and |
---|
344 | + self.failUnless((set(metadata.keys()) == set(["key", "tahoe"])) and |
---|
345 | (metadata["key"] == "value"), metadata)) |
---|
346 | |
---|
347 | d.addCallback(lambda res: n.delete(u"f1")) |
---|
348 | hunk ./src/allmydata/test/test_dirnode.py 927 |
---|
349 | {"tags": ["web2.0-compatible"], "tahoe": {"bad": "mojo"}})) |
---|
350 | d.addCallback(lambda n1: n1.get_metadata_for(u"child")) |
---|
351 | d.addCallback(lambda metadata: |
---|
352 | - self.failUnless((set(metadata.keys()) == set(["tags", "tahoe", "ctime", "mtime"])) and |
---|
353 | + self.failUnless((set(metadata.keys()) == set(["tags", "tahoe"])) and |
---|
354 | metadata["tags"] == ["web2.0-compatible"] and |
---|
355 | "bad" not in metadata["tahoe"], metadata)) |
---|
356 | |
---|
357 | hunk ./src/allmydata/test/test_dirnode.py 954 |
---|
358 | |
---|
359 | d.addCallback(lambda res: n.get_metadata_for(u"timestamps")) |
---|
360 | def _check_timestamp1(metadata): |
---|
361 | - self.failUnless("ctime" in metadata) |
---|
362 | - self.failUnless("mtime" in metadata) |
---|
363 | - self.failUnlessGreaterOrEqualThan(metadata["ctime"], |
---|
364 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"])) |
---|
365 | + tahoe_md = metadata["tahoe"] |
---|
366 | + self.failUnlessEqual(set(tahoe_md.keys()), set(["linkcrtime", "linkmotime"])) |
---|
367 | + |
---|
368 | + self.failUnlessGreaterOrEqualThan(tahoe_md["linkcrtime"], |
---|
369 | self._start_timestamp) |
---|
370 | self.failUnlessGreaterOrEqualThan(self._stop_timestamp, |
---|
371 | hunk ./src/allmydata/test/test_dirnode.py 961 |
---|
372 | - metadata["ctime"]) |
---|
373 | - self.failUnlessGreaterOrEqualThan(metadata["mtime"], |
---|
374 | + tahoe_md["linkcrtime"]) |
---|
375 | + self.failUnlessGreaterOrEqualThan(tahoe_md["linkmotime"], |
---|
376 | self._start_timestamp) |
---|
377 | self.failUnlessGreaterOrEqualThan(self._stop_timestamp, |
---|
378 | hunk ./src/allmydata/test/test_dirnode.py 965 |
---|
379 | - metadata["mtime"]) |
---|
380 | + tahoe_md["linkmotime"]) |
---|
381 | # Our current timestamp rules say that replacing an existing |
---|
382 | hunk ./src/allmydata/test/test_dirnode.py 967 |
---|
383 | - # child should preserve the 'ctime' but update the mtime |
---|
384 | - self._old_ctime = metadata["ctime"] |
---|
385 | - self._old_mtime = metadata["mtime"] |
---|
386 | + # child should preserve the 'linkcrtime' but update the |
---|
387 | + # 'linkmotime' |
---|
388 | + self._old_linkcrtime = tahoe_md["linkcrtime"] |
---|
389 | + self._old_linkmotime = tahoe_md["linkmotime"] |
---|
390 | d.addCallback(_check_timestamp1) |
---|
391 | d.addCallback(self.stall, 2.0) # accomodate low-res timestamps |
---|
392 | d.addCallback(lambda res: n.set_node(u"timestamps", n)) |
---|
393 | hunk ./src/allmydata/test/test_dirnode.py 976 |
---|
394 | d.addCallback(lambda res: n.get_metadata_for(u"timestamps")) |
---|
395 | def _check_timestamp2(metadata): |
---|
396 | - self.failUnlessEqual(metadata["ctime"], self._old_ctime, |
---|
397 | - "%s != %s" % (metadata["ctime"], |
---|
398 | - self._old_ctime)) |
---|
399 | - self.failUnlessGreaterThan(metadata["mtime"], self._old_mtime) |
---|
400 | + self.failUnlessIn("tahoe", metadata) |
---|
401 | + tahoe_md = metadata["tahoe"] |
---|
402 | + self.failUnlessEqual(set(tahoe_md.keys()), set(["linkcrtime", "linkmotime"])) |
---|
403 | + |
---|
404 | + self.failUnlessEqual(tahoe_md["linkcrtime"], self._old_linkcrtime) |
---|
405 | + self.failUnlessGreaterThan(tahoe_md["linkmotime"], self._old_linkmotime) |
---|
406 | return n.delete(u"timestamps") |
---|
407 | d.addCallback(_check_timestamp2) |
---|
408 | |
---|
409 | hunk ./src/allmydata/test/test_dirnode.py 985 |
---|
410 | - # also make sure we can add/update timestamps on a |
---|
411 | - # previously-existing child that didn't have any, since there are |
---|
412 | - # a lot of 0.7.0-generated edges around out there |
---|
413 | - d.addCallback(lambda res: n.set_node(u"no_timestamps", n, {})) |
---|
414 | - d.addCallback(lambda res: n.set_node(u"no_timestamps", n)) |
---|
415 | - d.addCallback(lambda res: n.get_metadata_for(u"no_timestamps")) |
---|
416 | - d.addCallback(lambda metadata: |
---|
417 | - self.failUnlessEqual(set(metadata.keys()), |
---|
418 | - set(["tahoe", "ctime", "mtime"]))) |
---|
419 | - d.addCallback(lambda res: n.delete(u"no_timestamps")) |
---|
420 | - |
---|
421 | d.addCallback(lambda res: n.delete(u"subdir")) |
---|
422 | d.addCallback(lambda old_child: |
---|
423 | self.failUnlessEqual(old_child.get_uri(), |
---|
424 | hunk ./src/allmydata/test/test_dirnode.py 1012 |
---|
425 | set([u"child", u"newfile"]))) |
---|
426 | d.addCallback(lambda res: n.get_metadata_for(u"newfile")) |
---|
427 | d.addCallback(lambda metadata: |
---|
428 | - self.failUnlessEqual(set(metadata.keys()), |
---|
429 | - set(["tahoe", "ctime", "mtime"]))) |
---|
430 | + self.failUnlessEqual(set(metadata.keys()), set(["tahoe"]))) |
---|
431 | |
---|
432 | uploadable3 = upload.Data("some data", convergence="converge") |
---|
433 | d.addCallback(lambda res: n.add_file(u"newfile-metadata", |
---|
434 | hunk ./src/allmydata/test/test_dirnode.py 1022 |
---|
435 | self.failUnless(IImmutableFileNode.providedBy(newnode))) |
---|
436 | d.addCallback(lambda res: n.get_metadata_for(u"newfile-metadata")) |
---|
437 | d.addCallback(lambda metadata: |
---|
438 | - self.failUnless((set(metadata.keys()) == set(["key", "tahoe", "ctime", "mtime"])) and |
---|
439 | + self.failUnless((set(metadata.keys()) == set(["key", "tahoe"])) and |
---|
440 | (metadata['key'] == "value"), metadata)) |
---|
441 | d.addCallback(lambda res: n.delete(u"newfile-metadata")) |
---|
442 | |
---|
443 | hunk ./src/allmydata/test/test_dirnode.py 1114 |
---|
444 | return d |
---|
445 | |
---|
446 | def test_update_metadata(self): |
---|
447 | - (t1, t2, t3) = (626644800, 634745640, 892226160) |
---|
448 | + (t1, t2, t3) = (626644800.0, 634745640.0, 892226160.0) |
---|
449 | |
---|
450 | hunk ./src/allmydata/test/test_dirnode.py 1116 |
---|
451 | - md1 = dirnode.update_metadata({}, {"ctime": t1}, t2) |
---|
452 | - self.failUnlessEqual(md1, {"ctime": t1, "mtime": t2, |
---|
453 | - "tahoe":{"linkcrtime": t1, "linkmotime": t2}}) |
---|
454 | + md1 = dirnode.update_metadata({"ctime": t1}, {}, t2) |
---|
455 | + self.failUnlessEqual(md1, {"tahoe":{"linkcrtime": t1, "linkmotime": t2}}) |
---|
456 | |
---|
457 | md2 = dirnode.update_metadata(md1, {"key": "value", "tahoe": {"bad": "mojo"}}, t3) |
---|
458 | hunk ./src/allmydata/test/test_dirnode.py 1120 |
---|
459 | - self.failUnlessEqual(md2, {"key": "value", "ctime": t1, "mtime": t3, |
---|
460 | + self.failUnlessEqual(md2, {"key": "value", |
---|
461 | "tahoe":{"linkcrtime": t1, "linkmotime": t3}}) |
---|
462 | |
---|
463 | md3 = dirnode.update_metadata({}, None, t3) |
---|
464 | hunk ./src/allmydata/test/test_dirnode.py 1124 |
---|
465 | - self.failUnlessEqual(md3, {"ctime": t3, "mtime": t3, |
---|
466 | - "tahoe":{"linkcrtime": t3, "linkmotime": t3}}) |
---|
467 | + self.failUnlessEqual(md3, {"tahoe":{"linkcrtime": t3, "linkmotime": t3}}) |
---|
468 | + |
---|
469 | + md4 = dirnode.update_metadata({}, {"bool": True, "number": 42}, t1) |
---|
470 | + self.failUnlessEqual(md4, {"bool": True, "number": 42, |
---|
471 | + "tahoe":{"linkcrtime": t1, "linkmotime": t1}}) |
---|
472 | |
---|
473 | def test_create_subdirectory(self): |
---|
474 | self.basedir = "dirnode/Dirnode/test_create_subdirectory" |
---|
475 | hunk ./src/allmydata/test/test_web.py 243 |
---|
476 | for (name,value) |
---|
477 | in data[1]["children"].iteritems()] ) |
---|
478 | self.failUnlessEqual(kids[u"sub"][0], "dirnode") |
---|
479 | - self.failUnless("metadata" in kids[u"sub"][1]) |
---|
480 | - self.failUnless("ctime" in kids[u"sub"][1]["metadata"]) |
---|
481 | - self.failUnless("mtime" in kids[u"sub"][1]["metadata"]) |
---|
482 | + self.failUnlessIn("metadata", kids[u"sub"][1]) |
---|
483 | + self.failUnlessIn("tahoe", kids[u"sub"][1]["metadata"]) |
---|
484 | + tahoe_md = kids[u"sub"][1]["metadata"]["tahoe"] |
---|
485 | + self.failUnlessIn("linkcrtime", tahoe_md) |
---|
486 | + self.failUnlessIn("linkmotime", tahoe_md) |
---|
487 | self.failUnlessEqual(kids[u"bar.txt"][0], "filenode") |
---|
488 | self.failUnlessEqual(kids[u"bar.txt"][1]["size"], len(self.BAR_CONTENTS)) |
---|
489 | self.failUnlessEqual(kids[u"bar.txt"][1]["ro_uri"], self._bar_txt_uri) |
---|
490 | hunk ./src/allmydata/test/test_web.py 253 |
---|
491 | self.failUnlessEqual(kids[u"bar.txt"][1]["verify_uri"], |
---|
492 | self._bar_txt_verifycap) |
---|
493 | - self.failUnlessEqual(kids[u"bar.txt"][1]["metadata"]["ctime"], |
---|
494 | - self._bar_txt_metadata["ctime"]) |
---|
495 | + self.failUnlessEqual(kids[u"bar.txt"][1]["metadata"]["tahoe"]["linkcrtime"], |
---|
496 | + self._bar_txt_metadata["tahoe"]["linkcrtime"]) |
---|
497 | self.failUnlessEqual(kids[u"n\u00fc.txt"][1]["ro_uri"], |
---|
498 | self._bar_txt_uri) |
---|
499 | |
---|
500 | } |
---|
501 | |
---|
502 | Context: |
---|
503 | |
---|
504 | [configuration.txt and servers-of-happiness.txt: 1 <= happy <= N, not k <= happy <= N. Also minor wording changes. |
---|
505 | david-sarah@jacaranda.org**20100618050710 |
---|
506 | Ignore-this: edac0716e753e1f1c4c755c85bec9a19 |
---|
507 | ] |
---|
508 | [test_cli.py: fix test failure in CLI.test_listdir_unicode_good due to filenames returned from listdir_unicode no longer being normalized. |
---|
509 | david-sarah@jacaranda.org**20100618045110 |
---|
510 | Ignore-this: 598ffaef02d71e075f7e08fac44f48ff |
---|
511 | ] |
---|
512 | [how_to_make_a_tahoe-lafs_release.txt: reordering, add fuse-sshfs@lists.sourceforge.list as place to send relnotes. |
---|
513 | david-sarah@jacaranda.org**20100618041854 |
---|
514 | Ignore-this: 2e380a6e72917d3a20a65ceccd9a4df |
---|
515 | ] |
---|
516 | [tahoe backup: unicode tests. |
---|
517 | david-sarah@jacaranda.org**20100618035211 |
---|
518 | Ignore-this: 88ebab9f3218f083fdc635bff6599b60 |
---|
519 | ] |
---|
520 | [dirnodes: fix normalization hole where childnames in directories created by nodemaker.create_mutable/immutable_directory would not be normalized. Add a test that we normalize names coming out of a directory. |
---|
521 | david-sarah@jacaranda.org**20100618000249 |
---|
522 | Ignore-this: 46a9226eff1003013b067edbdbd4c25b |
---|
523 | ] |
---|
524 | [dirnode.py: comments about normalization changes. |
---|
525 | david-sarah@jacaranda.org**20100617041411 |
---|
526 | Ignore-this: 9040c4854e73a71dbbb55b50ea3b41b2 |
---|
527 | ] |
---|
528 | [test_storage.py: print more information on test failures. |
---|
529 | david-sarah@jacaranda.org**20100617034623 |
---|
530 | Ignore-this: cc9a8656802a718ca4f2a6a530d35977 |
---|
531 | ] |
---|
532 | [stringutils.py: remove unused import. |
---|
533 | david-sarah@jacaranda.org**20100617034440 |
---|
534 | Ignore-this: 16ec7d737c34665156c2ac486acd545a |
---|
535 | ] |
---|
536 | [test_stringutils.py: take account of the output of listdir_unicode no longer being normalized. Also use Unicode escapes, not UTF-8. |
---|
537 | david-sarah@jacaranda.org**20100617034409 |
---|
538 | Ignore-this: 47f3f072f0e2efea0abeac130f84c56f |
---|
539 | ] |
---|
540 | [test_dirnode.py: partial tests for normalization changes. |
---|
541 | david-sarah@jacaranda.org**20100617034025 |
---|
542 | Ignore-this: 2e3169dd8b120d42dff35bd267dcb417 |
---|
543 | ] |
---|
544 | [CLI: allow Unicode patterns in exclude option to 'tahoe backup'. |
---|
545 | david-sarah@jacaranda.org**20100617033901 |
---|
546 | Ignore-this: 9d971129e1c8bae3c1cc3220993d592e |
---|
547 | ] |
---|
548 | [SFTP: get 'ctime' attribute from 'tahoe:linkmotime'. |
---|
549 | david-sarah@jacaranda.org**20100617033744 |
---|
550 | Ignore-this: b2fabe12235f2e2a487c0b56c39953e7 |
---|
551 | ] |
---|
552 | [running.html: describe where 'bin/tahoe' is only once. |
---|
553 | david-sarah@jacaranda.org**20100617033603 |
---|
554 | Ignore-this: 6d92d9d8c77f3dfddfa7d061cbf2a791 |
---|
555 | ] |
---|
556 | [stringutils.py: don't NFC-normalize the output of listdir_unicode. |
---|
557 | david-sarah@jacaranda.org**20100617015537 |
---|
558 | Ignore-this: 93c9b6f3d7c6812a0afa8d9e1b0b4faa |
---|
559 | ] |
---|
560 | [Merge using.html into running.html. |
---|
561 | david-sarah@jacaranda.org**20100617012857 |
---|
562 | Ignore-this: a0fa8b56621fdb976bef4e5f4f6c824a |
---|
563 | ] |
---|
564 | [Remove firewall section from running.html and say to read configuration.txt instead. |
---|
565 | david-sarah@jacaranda.org**20100617004513 |
---|
566 | Ignore-this: d2e46fffa4855b01093e8240b5fd1eff |
---|
567 | ] |
---|
568 | [running.html: fix overeager replacement of 'tahoe' with 'Tahoe-LAFS', and some simplifications. |
---|
569 | david-sarah@jacaranda.org**20100617000952 |
---|
570 | Ignore-this: 472b4b531c866574ed79f076b58495b5 |
---|
571 | ] |
---|
572 | [Add a specification for servers of happiness. |
---|
573 | Kevan Carstensen <kevan@isnotajoke.com>**20100524003508 |
---|
574 | Ignore-this: 982e2be8a411be5beaf3582bdfde6151 |
---|
575 | ] |
---|
576 | [Note that servers of happiness only applies to immutable files for the moment |
---|
577 | Kevan Carstensen <kevan@isnotajoke.com>**20100524042836 |
---|
578 | Ignore-this: cf83cac7a2b3ed347ae278c1a7d9a176 |
---|
579 | ] |
---|
580 | [Add a note about running Tahoe-LAFS on a small grid to running.html |
---|
581 | zooko@zooko.com**20100616140227 |
---|
582 | Ignore-this: 14dfbff0d47144f7c2375108c6055dc2 |
---|
583 | also Change "tahoe" and "Tahoe" to "Tahoe-LAFS" in running.html |
---|
584 | author: Kevan Carstensen |
---|
585 | ] |
---|
586 | [CLI.txt: introduce 'create-alias' before 'add-alias', document Unicode argument support, and other minor updates. |
---|
587 | david-sarah@jacaranda.org**20100610225547 |
---|
588 | Ignore-this: de7326e98d79291cdc15aed86ae61fe8 |
---|
589 | ] |
---|
590 | [stringutils.py: Add encoding argument to quote_output. Also work around a bug in locale.getpreferredencoding on older Pythons. |
---|
591 | david-sarah@jacaranda.org**20100616042012 |
---|
592 | Ignore-this: 48174c37ad95205997e4d3cdd81f1e28 |
---|
593 | ] |
---|
594 | [Provisional patch to NFC-normalize filenames going in and out of Tahoe directories. |
---|
595 | david-sarah@jacaranda.org**20100616031450 |
---|
596 | Ignore-this: ed08c9d8df37ef0b7cca42bb562c996b |
---|
597 | ] |
---|
598 | [test_system.py: investigate failure in allmydata.test.test_system.SystemTest.test_upload_and_download_random_key due to bytes_sent not being an int |
---|
599 | david-sarah@jacaranda.org**20100616001648 |
---|
600 | Ignore-this: 9c78092ab7bfdc909acae3a144ddd1f8 |
---|
601 | ] |
---|
602 | [SFTP: remove a dubious use of 'pragma: no cover'. |
---|
603 | david-sarah@jacaranda.org**20100613164356 |
---|
604 | Ignore-this: 8f96a81b1196017ed6cfa1d914e56fa5 |
---|
605 | ] |
---|
606 | [SFTP: test that renaming onto a just-opened file fails. |
---|
607 | david-sarah@jacaranda.org**20100612033709 |
---|
608 | Ignore-this: 9b14147ad78b16a5ab0e0e4813491414 |
---|
609 | ] |
---|
610 | [SFTP: further small improvements to test coverage. Also ensure that after a test failure, later tests don't fail spuriously due to the checks for heisenfile leaks. |
---|
611 | david-sarah@jacaranda.org**20100612030737 |
---|
612 | Ignore-this: 4ec1dd3d7542be42007987a2f51508e7 |
---|
613 | ] |
---|
614 | [SFTP: further improve test coverage (paths containing '.', bad data for posix-rename extension, and error in test of openShell). |
---|
615 | david-sarah@jacaranda.org**20100611213142 |
---|
616 | Ignore-this: 956f9df7f9e8a66b506ca58dd9a5dbe7 |
---|
617 | ] |
---|
618 | [SFTP: improve test coverage for no-write on mutable files, and check for heisenfile table leaks in all relevant tests. Delete test_memory_leak since it is now redundant. |
---|
619 | david-sarah@jacaranda.org**20100611205752 |
---|
620 | Ignore-this: 88be1cf323c10dd534a4b8fdac121e31 |
---|
621 | ] |
---|
622 | [SFTP: add test for extension of file opened with FXF_APPEND. |
---|
623 | david-sarah@jacaranda.org**20100610182647 |
---|
624 | Ignore-this: c0216d26453ce3cb4b92eef37d218fb4 |
---|
625 | ] |
---|
626 | [NEWS: add UTF-8 coding declaration. |
---|
627 | david-sarah@jacaranda.org**20100609234851 |
---|
628 | Ignore-this: 3e6ef125b278e0a982c88d23180a78ae |
---|
629 | ] |
---|
630 | [tests: bump up the timeout on this iputil test from 2s to 4s |
---|
631 | zooko@zooko.com**20100609143017 |
---|
632 | Ignore-this: 786b7f7bbc85d45cdf727a6293750798 |
---|
633 | ] |
---|
634 | [docs: a few tweaks to NEWS and CREDITS and make quickstart.html point to 1.7.0β! |
---|
635 | zooko@zooko.com**20100609142927 |
---|
636 | Ignore-this: f8097d3062f41f06c4420a7c84a56481 |
---|
637 | ] |
---|
638 | [docs: Update NEWS file with new features and bugfixes in 1.7.0 |
---|
639 | francois@ctrlaltdel.ch**20100609091120 |
---|
640 | Ignore-this: 8c1014e4469ef530e5ff48d7d6ae71c5 |
---|
641 | ] |
---|
642 | [docs: wording fix, thanks to Jeremy Visser, fix #987 |
---|
643 | francois@ctrlaltdel.ch**20100609081103 |
---|
644 | Ignore-this: 6d2e627e0f1cd58c0e1394e193287a4b |
---|
645 | ] |
---|
646 | [SFTP: fix most significant memory leak described in #1045 (due to a file being added to all_heisenfiles under more than one direntry when renamed). |
---|
647 | david-sarah@jacaranda.org**20100609080003 |
---|
648 | Ignore-this: 490b4c14207f6725d0dd32c395fbcefa |
---|
649 | ] |
---|
650 | [test_stringutils.py: Fix test failure on CentOS builder, possibly Python 2.4.3-related. |
---|
651 | david-sarah@jacaranda.org**20100609065056 |
---|
652 | Ignore-this: 503b561b213baf1b92ae641f2fdf080a |
---|
653 | ] |
---|
654 | [docs: update relnote.txt for Tahoe-LAFS v1.7.0β |
---|
655 | zooko@zooko.com**20100609054602 |
---|
656 | Ignore-this: 52e1bf86a91d45315960fb8806b7a479 |
---|
657 | ] |
---|
658 | [setup: move the mock library from install_requires to tests_require (re: #1016) |
---|
659 | zooko@zooko.com**20100609050542 |
---|
660 | Ignore-this: c51a4ff3e19ed630755be752d2233db4 |
---|
661 | ] |
---|
662 | [setup: show-tool-versions.py: print out the output from the unix command "locale" and re-arrange encoding data a little bit |
---|
663 | zooko@zooko.com**20100609040714 |
---|
664 | Ignore-this: 69382719b462d13ff940fcd980776004 |
---|
665 | ] |
---|
666 | [setup: add zope.interface to the packages described by show-tool-versions.py |
---|
667 | zooko@zooko.com**20100609034915 |
---|
668 | Ignore-this: b5262b2af5c953a5f68a60bd48dcaa75 |
---|
669 | ] |
---|
670 | [Fix for Unicode-related test failures on Zooko's OS X 10.6 machine. |
---|
671 | david-sarah@jacaranda.org**20100609055448 |
---|
672 | Ignore-this: 395ad16429e56623edfa74457a121190 |
---|
673 | ] |
---|
674 | [stringutils.py, sftpd.py: Portability fixes for Python <= 2.5. |
---|
675 | david-sarah@jacaranda.org**20100609013302 |
---|
676 | Ignore-this: 9d9ce476ee1b96796e0f48cc5338f852 |
---|
677 | ] |
---|
678 | [_auto_deps.py: allow Python 2.4.3 on Redhat-based distributions. |
---|
679 | david-sarah@jacaranda.org**20100609003646 |
---|
680 | Ignore-this: ad3cafdff200caf963024873d0ebff3c |
---|
681 | ] |
---|
682 | [CREDITS: update François's Description |
---|
683 | zooko@zooko.com**20100608155513 |
---|
684 | Ignore-this: a266b438d25ca2cb28eafff75aa4b2a |
---|
685 | ] |
---|
686 | [CREDITS: jsgf |
---|
687 | zooko@zooko.com**20100608143052 |
---|
688 | Ignore-this: 10abe06d40b88e22a9107d30f1b84810 |
---|
689 | ] |
---|
690 | [setup: rename the setuptools_trial .egg that comes bundled in the base dir to not have "-py2.6" in its name, since it works with other versions of python as well |
---|
691 | zooko@zooko.com**20100608041607 |
---|
692 | Ignore-this: 64fe386d2e5fba0ab441116e74dad5a3 |
---|
693 | ] |
---|
694 | [setup: rename the darcsver .egg that comes bundled in the base dir to not have "-py2.6" in its name, since it works with other versions of python as well |
---|
695 | zooko@zooko.com**20100608041534 |
---|
696 | Ignore-this: 53f925f160256409cf01b76d2583f83f |
---|
697 | ] |
---|
698 | [Back out Windows-specific Unicode argument support for v1.7. |
---|
699 | david-sarah@jacaranda.org**20100609000803 |
---|
700 | Ignore-this: b230ffe6fdaf9a0d85dfe745b37b42fb |
---|
701 | ] |
---|
702 | [SFTP: suppress NoSuchChildError if heisenfile attributes have been updated in setAttrs, in the case where the parent is available. |
---|
703 | david-sarah@jacaranda.org**20100608063753 |
---|
704 | Ignore-this: 8c72a5a9c15934f8fe4594ba3ee50ddd |
---|
705 | ] |
---|
706 | [SFTP: ignore permissions when opening a file (needed for sshfs interoperability). |
---|
707 | david-sarah@jacaranda.org**20100608055700 |
---|
708 | Ignore-this: f87f6a430f629326a324ddd94426c797 |
---|
709 | ] |
---|
710 | [tests: bump up the timeout on these tests; MM's buildslave is sometimes extremely slow on tests, but it will complete them if given enough time. MM is working on making that buildslave more predictable in how long it takes to run tests. |
---|
711 | zooko@zooko.com**20100608033754 |
---|
712 | Ignore-this: 98dc27692c5ace1e4b0650b6680629d7 |
---|
713 | ] |
---|
714 | [test_web.py: fix pyflakes warnings introduced by byterange patch. |
---|
715 | david-sarah@jacaranda.org**20100608042012 |
---|
716 | Ignore-this: a7612724893b51d1154dec4372e0508 |
---|
717 | ] |
---|
718 | [Improve HTTP/1.1 byterange handling |
---|
719 | Jeremy Fitzhardinge <jeremy@goop.org>**20100310025913 |
---|
720 | Ignore-this: 6d69e694973d618f0dc65983735cd9be |
---|
721 | |
---|
722 | Fix parsing of a Range: header to support: |
---|
723 | - multiple ranges (parsed, but not returned) |
---|
724 | - suffix byte ranges ("-2139") |
---|
725 | - correct handling of incorrectly formatted range headers |
---|
726 | (correct behaviour is to ignore the header and return the full |
---|
727 | file) |
---|
728 | - return appropriate error for ranges outside the file |
---|
729 | |
---|
730 | Multiple ranges are parsed, but only the first range is returned. |
---|
731 | Returning multiple ranges requires using the multipart/byterange |
---|
732 | content type. |
---|
733 | |
---|
734 | ] |
---|
735 | [test_cli.py: remove invalid 'test_listdir_unicode_bad' test. |
---|
736 | david-sarah@jacaranda.org**20100607183730 |
---|
737 | Ignore-this: fadfe87980dc1862f349bfcc21b2145f |
---|
738 | ] |
---|
739 | [check_memory.py: adapt to servers-of-happiness changes. |
---|
740 | david-sarah@jacaranda.org**20100608013528 |
---|
741 | Ignore-this: c6b28411c543d1aea2f148a955f7998 |
---|
742 | ] |
---|
743 | [show-tool-versions.py: platform.linux_distribution() is not always available |
---|
744 | david-sarah@jacaranda.org**20100608004523 |
---|
745 | Ignore-this: 793fb4050086723af05d06bed8b1b92a |
---|
746 | ] |
---|
747 | [show-tool-versions.py: show platform.linux_distribution() |
---|
748 | david-sarah@jacaranda.org**20100608003829 |
---|
749 | Ignore-this: 81cb5e5fc6324044f0fc6d82903c8223 |
---|
750 | ] |
---|
751 | [Remove the 'tahoe debug consolidate' subcommand. |
---|
752 | david-sarah@jacaranda.org**20100607183757 |
---|
753 | Ignore-this: 4b14daa3ae557cea07d6e119d25dafe9 |
---|
754 | ] |
---|
755 | [tests: drastically increase timeout of this very time-consuming test in honor of François's ARM box |
---|
756 | zooko@zooko.com**20100607115929 |
---|
757 | Ignore-this: bf1bb52ffb6b5ccae71d4dde14621bc8 |
---|
758 | ] |
---|
759 | [setup: update authorship, datestamp, licensing, and add special exceptions to allow combination with Eclipse- and QPL- licensed code |
---|
760 | zooko@zooko.com**20100607062329 |
---|
761 | Ignore-this: 5a1d7b12dfafd61283ea65a245416381 |
---|
762 | ] |
---|
763 | [common_http.py, tahoe_cp.py: Fix an error in calling the superclass constructor in HTTPError and MissingSourceError (introduced by the Unicode fixes). |
---|
764 | david-sarah@jacaranda.org**20100607174714 |
---|
765 | Ignore-this: 1a118d593d81c918a4717c887f033aec |
---|
766 | ] |
---|
767 | [FTP-and-SFTP.txt: minor technical correction to doc for 'no-write' flag. |
---|
768 | david-sarah@jacaranda.org**20100607061600 |
---|
769 | Ignore-this: 66aee0c1b6c00538602d08631225e114 |
---|
770 | ] |
---|
771 | [test_stringutils.py: trivial error in exception message for skipped test. |
---|
772 | david-sarah@jacaranda.org**20100607061455 |
---|
773 | Ignore-this: f261a5d4e2b8fe3bcc37e02539ba1ae2 |
---|
774 | ] |
---|
775 | [setup: organize misc/ scripts and tools and remove obsolete ones |
---|
776 | zooko@zooko.com**20100607051618 |
---|
777 | Ignore-this: 161db1158c6b7be8365b0b3dee2e0b28 |
---|
778 | This is for ticket #1068. |
---|
779 | ] |
---|
780 | [More Unicode test fixes. |
---|
781 | david-sarah@jacaranda.org**20100607053358 |
---|
782 | Ignore-this: 6a271fb77c31f28cb7bdba63b26a2dd2 |
---|
783 | ] |
---|
784 | [Unicode fixes for platforms with non-native-Unicode filesystems. |
---|
785 | david-sarah@jacaranda.org**20100607043238 |
---|
786 | Ignore-this: 2134dc1793c4f8e50350bd749c4c98c2 |
---|
787 | ] |
---|
788 | [Unicode fixes. |
---|
789 | david-sarah@jacaranda.org**20100607010215 |
---|
790 | Ignore-this: d58727b5cd2ce00e6b6dae3166030138 |
---|
791 | ] |
---|
792 | [quickstart.html: link to snapshots page, sorted with most recent first. |
---|
793 | david-sarah@jacaranda.org**20100606221127 |
---|
794 | Ignore-this: 93ea7e6ee47acc66f6daac9cabffed2d |
---|
795 | ] |
---|
796 | [setup: loosen the Desert Island test to allow it to check the network for new packages as long as it doesn't actually download any |
---|
797 | zooko@zooko.com**20100606175717 |
---|
798 | Ignore-this: e438a8eb3c1b0e68080711ec6ff93ffa |
---|
799 | (You can look but don't touch.) |
---|
800 | ] |
---|
801 | [setup: have the buildbots print out locale.getpreferredencoding(), locale.getdefaultlocale(), locale.getlocale(), and os.path.supports_unicode_filenames |
---|
802 | zooko@zooko.com**20100605162932 |
---|
803 | Ignore-this: 85e31e0e0e1364e9215420e272d58116 |
---|
804 | Even though that latter one is completely useless, I'm curious. |
---|
805 | ] |
---|
806 | [quickstart.html: We haven't released 1.7beta yet. |
---|
807 | david-sarah@jacaranda.org**20100606220301 |
---|
808 | Ignore-this: 4e18898cfdb08cc3ddd1ff94d43fdda7 |
---|
809 | ] |
---|
810 | [Raise Python version requirement to 2.4.4 for non-UCS-2 builds, to avoid a critical Python security bug. |
---|
811 | david-sarah@jacaranda.org**20100605031713 |
---|
812 | Ignore-this: 2df2b6d620c5d8191c79eefe655059e2 |
---|
813 | ] |
---|
814 | [unicode tests: fix missing import |
---|
815 | zooko@zooko.com**20100604142630 |
---|
816 | Ignore-this: db437fe8009971882aaea9de05e2bc3 |
---|
817 | ] |
---|
818 | [unicode: make test_cli test a non-ascii argument, and make the fallback term encoding be locale.getpreferredencoding() |
---|
819 | zooko@zooko.com**20100604141251 |
---|
820 | Ignore-this: b2bfc07942f69141811e59891842bd8c |
---|
821 | ] |
---|
822 | [unicode: always decode json manifest as utf-8 then encode for stdout |
---|
823 | zooko@zooko.com**20100604084840 |
---|
824 | Ignore-this: ac481692315fae870a0f3562bd7db48e |
---|
825 | pyflakes pointed out that the exception handler fallback called an un-imported function, showing that the fallback wasn't being exercised. |
---|
826 | I'm not 100% sure that this patch is right and would appreciate François or someone reviewing it. |
---|
827 | ] |
---|
828 | [fix flakes |
---|
829 | zooko@zooko.com**20100604075845 |
---|
830 | Ignore-this: 3e6a84b78771b0ad519e771a13605f0 |
---|
831 | ] |
---|
832 | [fix syntax of assertion handling that isn't portable to older versions of Python |
---|
833 | zooko@zooko.com**20100604075805 |
---|
834 | Ignore-this: 3a12b293aad25883fb17230266eb04ec |
---|
835 | ] |
---|
836 | [test_stringutils.py: Skip test test_listdir_unicode_good if filesystem supports only ASCII filenames |
---|
837 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100521160839 |
---|
838 | Ignore-this: f2ccdbd04c8d9f42f1efb0eb80018257 |
---|
839 | ] |
---|
840 | [test_stringutils.py: Skip test_listdir_unicode on mocked platform which cannot store non-ASCII filenames |
---|
841 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100521160559 |
---|
842 | Ignore-this: b93fde736a8904712b506e799250a600 |
---|
843 | ] |
---|
844 | [test_stringutils.py: Add a test class for OpenBSD 4.1 with LANG=C |
---|
845 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100521140053 |
---|
846 | Ignore-this: 63f568aec259cef0e807752fc8150b73 |
---|
847 | ] |
---|
848 | [test_stringutils.py: Mock the open() call in test_open_unicode |
---|
849 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100521135817 |
---|
850 | Ignore-this: d8be4e56a6eefe7d60f97f01ea20ac67 |
---|
851 | |
---|
852 | This test ensure that open(a_unicode_string) is used on Unicode platforms |
---|
853 | (Windows or MacOS X) and that open(a_correctly_encoded_bytestring) on other |
---|
854 | platforms such as Unix. |
---|
855 | |
---|
856 | ] |
---|
857 | [test_stringutils.py: Fix a trivial Python 2.4 syntax incompatibility |
---|
858 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100521093345 |
---|
859 | Ignore-this: 9297e3d14a0dd37d0c1a4c6954fd59d3 |
---|
860 | ] |
---|
861 | [test_cli.py: Fix tests when sys.stdout.encoding=None and refactor this code into functions |
---|
862 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100520084447 |
---|
863 | Ignore-this: cf2286e225aaa4d7b1927c78c901477f |
---|
864 | ] |
---|
865 | [Fix handling of correctly encoded unicode filenames (#534) |
---|
866 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100520004356 |
---|
867 | Ignore-this: 8a3a7df214a855f5a12dc0eeab6f2e39 |
---|
868 | |
---|
869 | Tahoe CLI commands working on local files, for instance 'tahoe cp' or 'tahoe |
---|
870 | backup', have been improved to correctly handle filenames containing non-ASCII |
---|
871 | characters. |
---|
872 | |
---|
873 | In the case where Tahoe encounters a filename which cannot be decoded using the |
---|
874 | system encoding, an error will be returned and the operation will fail. Under |
---|
875 | Linux, this typically happens when the filesystem contains filenames encoded |
---|
876 | with another encoding, for instance latin1, than the system locale, for |
---|
877 | instance UTF-8. In such case, you'll need to fix your system with tools such |
---|
878 | as 'convmv' before using Tahoe CLI. |
---|
879 | |
---|
880 | All CLI commands have been improved to support non-ASCII parameters such as |
---|
881 | filenames and aliases on all supported Operating Systems except Windows as of |
---|
882 | now. |
---|
883 | ] |
---|
884 | [stringutils.py: Unicode helper functions + associated tests |
---|
885 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100520004105 |
---|
886 | Ignore-this: 7a73fc31de2fd39d437d6abd278bfa9a |
---|
887 | |
---|
888 | This file contains a bunch of helper functions which converts |
---|
889 | unicode string from and to argv, filenames and stdout. |
---|
890 | ] |
---|
891 | [Add dependency on Michael Foord's mock library |
---|
892 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100519233325 |
---|
893 | Ignore-this: 9bb01bf1e4780f6b98ed394c3b772a80 |
---|
894 | ] |
---|
895 | [setup: adjust make clean target to ignore our bundled build tools |
---|
896 | zooko@zooko.com**20100604051250 |
---|
897 | Ignore-this: d24d2a3b849000790cfbfab69237454e |
---|
898 | ] |
---|
899 | [setup: bundle a copy of setuptools_trial as an unzipped egg in the base dir of the Tahoe-LAFS source tree |
---|
900 | zooko@zooko.com**20100604044648 |
---|
901 | Ignore-this: a4736e9812b4dab2d5a2bc4bfc5c3b28 |
---|
902 | This is to work-around this Distribute issue: |
---|
903 | http://bitbucket.org/tarek/distribute/issue/55/revision-control-plugin-automatically-installed-as-a-build-dependency-is-not-present-when-another-build-dependency-is-being |
---|
904 | ] |
---|
905 | [setup: bundle a copy of darcsver in unzipped egg form in the root of the Tahoe-LAFS source tree |
---|
906 | zooko@zooko.com**20100604044146 |
---|
907 | Ignore-this: a51a52e82dd3a39225657ffa27decae2 |
---|
908 | This is to work-around this Distribute issue: |
---|
909 | http://bitbucket.org/tarek/distribute/issue/55/revision-control-plugin-automatically-installed-as-a-build-dependency-is-not-present-when-another-build-dependency-is-being |
---|
910 | ] |
---|
911 | [setup: undo the previous patch to quote the executable in scripts |
---|
912 | zooko@zooko.com**20100604025204 |
---|
913 | Ignore-this: beda3b951c49d1111478618b8cabe005 |
---|
914 | The problem isn't in the script, it is in the cli.exe script that is built by setuptools. This might be related to |
---|
915 | http://bugs.python.org/issue6792 |
---|
916 | and |
---|
917 | http://bugs.python.org/setuptools/issue2 |
---|
918 | Or it might be a separate issue involving the launcher.c code e.g. http://tahoe-lafs.org/trac/zetuptoolz/browser/launcher.c?rev=576#L210 and its handling of the interpreter name. |
---|
919 | ] |
---|
920 | [quickstart.html: warn against installing Python at a path containing spaces. |
---|
921 | david-sarah@jacaranda.org**20100604032413 |
---|
922 | Ignore-this: c7118332573abd7762d9a897e650bc6a |
---|
923 | ] |
---|
924 | [setup: put quotes around the path to executable in case it has spaces in it, when building a tahoe.exe for win32 |
---|
925 | zooko@zooko.com**20100604020836 |
---|
926 | Ignore-this: 478684843169c94a9c14726fedeeed7d |
---|
927 | ] |
---|
928 | [misc/show-tool-versions.py: Display additional Python interpreter encoding informations (stdout, stdin and filesystem) |
---|
929 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100521094313 |
---|
930 | Ignore-this: 3ae9b0b07fd1d53fb632ef169f7c5d26 |
---|
931 | ] |
---|
932 | [Fix test failures in test_web caused by changes to web page titles in #1062. Also, change a 'target' field to '_blank' instead of 'blank' in welcome.xhtml. |
---|
933 | david-sarah@jacaranda.org**20100603232105 |
---|
934 | Ignore-this: 6e2cc63f42b07e2a3b2d1a857abc50a6 |
---|
935 | ] |
---|
936 | [Resolve merge conflict for sftpd.py |
---|
937 | david-sarah@jacaranda.org**20100603182537 |
---|
938 | Ignore-this: ba8b543e51312ac949798eb8f5bd9d9c |
---|
939 | ] |
---|
940 | [SFTP: possible fix for metadata times being shown as the epoch. |
---|
941 | david-sarah@jacaranda.org**20100602234514 |
---|
942 | Ignore-this: bdd7dfccf34eff818ff88aa4f3d28790 |
---|
943 | ] |
---|
944 | [SFTP: further improvements to test coverage. |
---|
945 | david-sarah@jacaranda.org**20100602234422 |
---|
946 | Ignore-this: 87eeee567e8d7562659442ea491e187c |
---|
947 | ] |
---|
948 | [SFTP: improve test coverage. Also make creating a directory fail when permissions are read-only (rather than ignoring the permissions). |
---|
949 | david-sarah@jacaranda.org**20100602041934 |
---|
950 | Ignore-this: a5e9d9081677bc7f3ddb18ca7a1f531f |
---|
951 | ] |
---|
952 | [dirnode.py: fix a bug in the no-write change for Adder, and improve test coverage. Add a 'metadata' argument to create_subdirectory, with documentation. Also update some comments in test_dirnode.py made stale by the ctime/mtime change. |
---|
953 | david-sarah@jacaranda.org**20100602032641 |
---|
954 | Ignore-this: 48817b54cd63f5422cb88214c053b03b |
---|
955 | ] |
---|
956 | [dirnode.py: Fix bug that caused 'tahoe' fields, 'ctime' and 'mtime' not to be updated when new metadata is present. |
---|
957 | david-sarah@jacaranda.org**20100602014644 |
---|
958 | Ignore-this: 5bac95aa897b68f2785d481e49b6a66 |
---|
959 | ] |
---|
960 | [SFTP: fix a bug that caused the temporary files underlying EncryptedTemporaryFiles not to be closed. |
---|
961 | david-sarah@jacaranda.org**20100601055310 |
---|
962 | Ignore-this: 44fee4cfe222b2b1690f4c5e75083a52 |
---|
963 | ] |
---|
964 | [SFTP: changes for #1063 ('no-write' field) including comment:1 (clearing owner write permission diminishes to a read cap). Includes documentation changes, but not tests for the new behaviour. |
---|
965 | david-sarah@jacaranda.org**20100601051139 |
---|
966 | Ignore-this: eff7c08bd47fd52bfe2b844dabf02558 |
---|
967 | ] |
---|
968 | [dirnode.py: Fix #1034 (MetadataSetter does not enforce restriction on setting 'tahoe' subkeys), and expose the metadata updater for use by SFTP. Also, support diminishing a child cap to read-only if 'no-write' is set in the metadata. |
---|
969 | david-sarah@jacaranda.org**20100601045428 |
---|
970 | Ignore-this: 14f26e17e58db97fad0dcfd350b38e95 |
---|
971 | ] |
---|
972 | [SFTP: the same bug as in _sync_heisenfiles also occurred in two other places. |
---|
973 | david-sarah@jacaranda.org**20100530060127 |
---|
974 | Ignore-this: 8d137658fc6e4596fa42697476c39aa3 |
---|
975 | ] |
---|
976 | [SFTP: another try at fixing the _sync_heisenfiles bug. |
---|
977 | david-sarah@jacaranda.org**20100530055254 |
---|
978 | Ignore-this: c15f76f32a60083a6b7de6ca0e917934 |
---|
979 | ] |
---|
980 | [SFTP: fix silly bug in _sync_heisenfiles ('f is not ignore' vs 'not (f is ignore)'). |
---|
981 | david-sarah@jacaranda.org**20100530053807 |
---|
982 | Ignore-this: 71c4bc62613bf8fef835886d8eb61c27 |
---|
983 | ] |
---|
984 | [SFTP: log when a sync completes. |
---|
985 | david-sarah@jacaranda.org**20100530051840 |
---|
986 | Ignore-this: d99765663ceb673c8a693dfcf88c25ea |
---|
987 | ] |
---|
988 | [SFTP: fix bug in previous logging patch. |
---|
989 | david-sarah@jacaranda.org**20100530050000 |
---|
990 | Ignore-this: 613e4c115f03fe2d04c621b510340817 |
---|
991 | ] |
---|
992 | [SFTP: more logging to track down OpenOffice hang. |
---|
993 | david-sarah@jacaranda.org**20100530040809 |
---|
994 | Ignore-this: 6c11f2d1eac9f62e2d0f04f006476a03 |
---|
995 | ] |
---|
996 | [SFTP: avoid blocking close on a heisenfile that has been abandoned or never changed. Also, improve the logging to help track down a case where OpenOffice hangs on opening a file with FXF_READ|FXF_WRITE. |
---|
997 | david-sarah@jacaranda.org**20100530025544 |
---|
998 | Ignore-this: 9919dddd446fff64de4031ad51490d1c |
---|
999 | ] |
---|
1000 | [Move suppression of DeprecationWarning about BaseException.message from sftpd.py to main __init__.py. Also, remove the global suppression of the 'integer argument expected, got float' warning, which turned out to be a bug. |
---|
1001 | david-sarah@jacaranda.org**20100529050537 |
---|
1002 | Ignore-this: 87648afa0dec0d2e73614007de102a16 |
---|
1003 | ] |
---|
1004 | [SFTP: cater to clients that assume a file is created as soon as they have made an open request; also, fix some race conditions associated with closing a file at about the same time as renaming or removing it. |
---|
1005 | david-sarah@jacaranda.org**20100529045253 |
---|
1006 | Ignore-this: 2404076b2154ff2659e2b10e0b9e813c |
---|
1007 | ] |
---|
1008 | [Change doc comments in interfaces.py to take into account unknown nodes. |
---|
1009 | david-sarah@jacaranda.org**20100528171922 |
---|
1010 | Ignore-this: d2fde6890b3bca9c7275775f64fbff56 |
---|
1011 | ] |
---|
1012 | [Add must_exist, must_be_directory, and must_be_file arguments to DirectoryNode.delete. This will be used to fixes a minor condition in the SFTP frontend. |
---|
1013 | david-sarah@jacaranda.org**20100527194529 |
---|
1014 | Ignore-this: 6d8114cef4450c52c57639f82852716f |
---|
1015 | ] |
---|
1016 | [Trivial whitespace changes. |
---|
1017 | david-sarah@jacaranda.org**20100527194114 |
---|
1018 | Ignore-this: 98d611bc54ee20b01a5f6b334ff61b2d |
---|
1019 | ] |
---|
1020 | [SFTP: 'sync' any open files at a direntry before opening any new file at that direntry. This works around the sshfs misbehaviour of returning success to clients immediately on close. |
---|
1021 | david-sarah@jacaranda.org**20100525230257 |
---|
1022 | Ignore-this: 63245d6d864f8f591c86170864d7c57f |
---|
1023 | ] |
---|
1024 | [SFTP: handle removing a file while it is open. Also some simplifications of the logout handling. |
---|
1025 | david-sarah@jacaranda.org**20100525184210 |
---|
1026 | Ignore-this: 660ee80be6ecab783c60452a9da896de |
---|
1027 | ] |
---|
1028 | [SFTP: a posix-rename response should actually return an FXP_STATUS reply, not an FXP_EXTENDED_REPLY as Twisted Conch assumes. Work around this by raising an SFTPError with code FX_OK. |
---|
1029 | david-sarah@jacaranda.org**20100525033323 |
---|
1030 | Ignore-this: fe2914d3ef7f5194bbeaf3f2dda2ad7d |
---|
1031 | ] |
---|
1032 | [SFTP: fix problem with posix-rename code returning a Deferred for the renamed filenode, not for the result of the request (an empty string). |
---|
1033 | david-sarah@jacaranda.org**20100525020209 |
---|
1034 | Ignore-this: 69f7491df2a8f7ea92d999a6d9f0581d |
---|
1035 | ] |
---|
1036 | [SFTP: fix time handling to make sure floats are not passed into twisted.conch, and to print times in the future less ambiguously in directory listings. |
---|
1037 | david-sarah@jacaranda.org**20100524230412 |
---|
1038 | Ignore-this: eb1a3fb72492fa2fb19667b6e4300440 |
---|
1039 | ] |
---|
1040 | [SFTP: name of the POSIX rename extension should be 'posix-rename@openssh.com', not 'extposix-rename@openssh.com'. |
---|
1041 | david-sarah@jacaranda.org**20100524021156 |
---|
1042 | Ignore-this: f90eb1ff9560176635386ee797a3fdc7 |
---|
1043 | ] |
---|
1044 | [SFTP: avoid race condition where .write could be called on an OverwriteableFileConsumer after it had been closed. |
---|
1045 | david-sarah@jacaranda.org**20100523233830 |
---|
1046 | Ignore-this: 55d381064a15bd64381163341df4d09f |
---|
1047 | ] |
---|
1048 | [SFTP: log tracebacks for RAISEd exceptions. |
---|
1049 | david-sarah@jacaranda.org**20100523221535 |
---|
1050 | Ignore-this: c76a7852df099b358642f0631237cc89 |
---|
1051 | ] |
---|
1052 | [Suppress 'integer argument expected, got float' DeprecationWarning everywhere |
---|
1053 | david-sarah@jacaranda.org**20100523221157 |
---|
1054 | Ignore-this: 80efd7e27798f5d2ad66c7a53e7048e5 |
---|
1055 | ] |
---|
1056 | [SFTP: more logging to investigate behaviour of getAttrs(path). |
---|
1057 | david-sarah@jacaranda.org**20100523204236 |
---|
1058 | Ignore-this: e58fd35dc9015316e16a9f49f19bb469 |
---|
1059 | ] |
---|
1060 | [SFTP: fix pyflakes warnings; drop 'noisy' versions of eventually_callback and eventually_errback; robustify conversion of exception messages to UTF-8. |
---|
1061 | david-sarah@jacaranda.org**20100523140905 |
---|
1062 | Ignore-this: 420196fc58646b05bbc9c3732b6eb314 |
---|
1063 | ] |
---|
1064 | [SFTP: fixes and test cases for renaming of open files. |
---|
1065 | david-sarah@jacaranda.org**20100523032549 |
---|
1066 | Ignore-this: 32e0726be0fc89335f3035157e202c68 |
---|
1067 | ] |
---|
1068 | [SFTP: Increase test_sftp timeout to cater for francois' ARM buildslave. |
---|
1069 | david-sarah@jacaranda.org**20100522191639 |
---|
1070 | Ignore-this: a5acf9660d304677048ab4dd72908ad8 |
---|
1071 | ] |
---|
1072 | [SFTP: Fix error in support for getAttrs on an open file, to index open files by directory entry rather than path. Extend that support to renaming open files. Also, implement the extposix-rename@openssh.org extension, and some other minor refactoring. |
---|
1073 | david-sarah@jacaranda.org**20100522035836 |
---|
1074 | Ignore-this: 8ef93a828e927cce2c23b805250b81a4 |
---|
1075 | ] |
---|
1076 | [SFTP: relax pyasn1 version dependency to >= 0.0.8a. |
---|
1077 | david-sarah@jacaranda.org**20100520181437 |
---|
1078 | Ignore-this: 2c7b3dee7b7e14ba121d3118193a386a |
---|
1079 | ] |
---|
1080 | [SFTP tests: fix test_openDirectory_and_attrs that was failing in timezones west of UTC. |
---|
1081 | david-sarah@jacaranda.org**20100520181027 |
---|
1082 | Ignore-this: 9beaf602beef437c11c7e97f54ce2599 |
---|
1083 | ] |
---|
1084 | [SFTP: allow getAttrs to succeed on a file that has been opened for creation but not yet uploaded or linked (part of #1050). |
---|
1085 | david-sarah@jacaranda.org**20100520035613 |
---|
1086 | Ignore-this: 2f59107d60d5476edac19361ccf6cf94 |
---|
1087 | ] |
---|
1088 | [SFTP: improve logging so that results of requests are (usually) logged. |
---|
1089 | david-sarah@jacaranda.org**20100520003652 |
---|
1090 | Ignore-this: 3f59eeee374a3eba71db9be31d5a95 |
---|
1091 | ] |
---|
1092 | [SFTP: add tests for more combinations of open flags. |
---|
1093 | david-sarah@jacaranda.org**20100519053933 |
---|
1094 | Ignore-this: b97ee351b1e8ecfecabac70698060665 |
---|
1095 | ] |
---|
1096 | [SFTP: allow FXF_WRITE | FXF_TRUNC (#1050). |
---|
1097 | david-sarah@jacaranda.org**20100519043240 |
---|
1098 | Ignore-this: bd70009f11d07ac6e9fd0d1e3fa87a9b |
---|
1099 | ] |
---|
1100 | [SFTP: remove another case where we were logging data. |
---|
1101 | david-sarah@jacaranda.org**20100519012713 |
---|
1102 | Ignore-this: 83115daf3a90278fed0e3fc267607584 |
---|
1103 | ] |
---|
1104 | [SFTP: avoid logging all data passed to callbacks. |
---|
1105 | david-sarah@jacaranda.org**20100519000651 |
---|
1106 | Ignore-this: ade6d69a473ada50acef6389fc7fdf69 |
---|
1107 | ] |
---|
1108 | [SFTP: fixes related to reporting of permissions (needed for sshfs). |
---|
1109 | david-sarah@jacaranda.org**20100518054521 |
---|
1110 | Ignore-this: c51f8a5d0dc76b80d33ffef9b0541325 |
---|
1111 | ] |
---|
1112 | [SFTP: change error code returned for ExistingChildError to FX_FAILURE (fixes gvfs with some picky programs such as gedit). |
---|
1113 | david-sarah@jacaranda.org**20100518004205 |
---|
1114 | Ignore-this: c194c2c9aaf3edba7af84b7413cec375 |
---|
1115 | ] |
---|
1116 | [SFTP: fixed bugs that caused hangs during write (#1037). |
---|
1117 | david-sarah@jacaranda.org**20100517044228 |
---|
1118 | Ignore-this: b8b95e82c4057367388a1e6baada993b |
---|
1119 | ] |
---|
1120 | [SFTP: work around a probable bug in twisted.conch.ssh.session:loseConnection(). Also some minor error handling cleanups. |
---|
1121 | david-sarah@jacaranda.org**20100517012606 |
---|
1122 | Ignore-this: 5d3da7c4219cb0c14547e7fd70c74204 |
---|
1123 | ] |
---|
1124 | [SFTP: add pyasn1 as dependency, needed if we are using Twisted >= 9.0.0. |
---|
1125 | david-sarah@jacaranda.org**20100516193710 |
---|
1126 | Ignore-this: 76fd92e8a950bb1983a90a09e89c54d3 |
---|
1127 | ] |
---|
1128 | [SFTP: Support statvfs extensions, avoid logging actual data, and decline shell sessions politely. |
---|
1129 | david-sarah@jacaranda.org**20100516154347 |
---|
1130 | Ignore-this: 9d05d23ba77693c03a61accd348ccbe5 |
---|
1131 | ] |
---|
1132 | [SFTP: fix error in SFTPUserHandler arguments introduced by execCommand patch. |
---|
1133 | david-sarah@jacaranda.org**20100516014045 |
---|
1134 | Ignore-this: f5ee494dc6ad6aa536cc8144bd2e3d19 |
---|
1135 | ] |
---|
1136 | [SFTP: implement execCommand to interoperate with clients that issue a 'df -P -k /' command. Also eliminate use of Zope adaptation. |
---|
1137 | david-sarah@jacaranda.org**20100516012754 |
---|
1138 | Ignore-this: 2d0ed28b759f67f83875b1eaf5778992 |
---|
1139 | ] |
---|
1140 | [sftpd.py: 'log.OPERATIONAL' should be just 'OPERATIONAL'. |
---|
1141 | david-sarah@jacaranda.org**20100515155533 |
---|
1142 | Ignore-this: f2347cb3301bbccc086356f6edc685 |
---|
1143 | ] |
---|
1144 | [Attempt to fix #1040 by making SFTPUser implement ISession. |
---|
1145 | david-sarah@jacaranda.org**20100515005719 |
---|
1146 | Ignore-this: b3baaf088ba567e861e61e347195dfc4 |
---|
1147 | ] |
---|
1148 | [Eliminate Windows newlines from sftpd.py. |
---|
1149 | david-sarah@jacaranda.org**20100515005656 |
---|
1150 | Ignore-this: cd54fd25beb957887514ae76e08c277 |
---|
1151 | ] |
---|
1152 | [Update SFTP implementation and tests: fix #1038 and switch to foolscap logging; also some code reorganization. |
---|
1153 | david-sarah@jacaranda.org**20100514043113 |
---|
1154 | Ignore-this: 262f76d953dcd4317210789f2b2bf5da |
---|
1155 | ] |
---|
1156 | [Change shouldFail to avoid Unicode errors when converting Failure to str |
---|
1157 | david-sarah@jacaranda.org**20100512060754 |
---|
1158 | Ignore-this: 86ed419d332d9c33090aae2cde1dc5df |
---|
1159 | ] |
---|
1160 | [Tests for new SFTP implementation |
---|
1161 | david-sarah@jacaranda.org**20100512060552 |
---|
1162 | Ignore-this: 20308d4a59b3ebc868aad55ae0a7a981 |
---|
1163 | ] |
---|
1164 | [New SFTP implementation: mutable files, read/write support, streaming download, Unicode filenames, and more |
---|
1165 | david-sarah@jacaranda.org**20100512055407 |
---|
1166 | Ignore-this: 906f51c48d974ba9cf360c27845c55eb |
---|
1167 | ] |
---|
1168 | [allmydata.org -> tahoe-lafs.org in __init__.py |
---|
1169 | david-sarah@jacaranda.org**20100603063530 |
---|
1170 | Ignore-this: f7d82331d5b4a3c4c0938023409335af |
---|
1171 | ] |
---|
1172 | [small change to CREDITS |
---|
1173 | david-sarah@jacaranda.org**20100603062421 |
---|
1174 | Ignore-this: 2909cdbedc19da5573dec810fc23243 |
---|
1175 | ] |
---|
1176 | [Resolve conflict in patch to change imports to absolute. |
---|
1177 | david-sarah@jacaranda.org**20100603054608 |
---|
1178 | Ignore-this: 15aa1caa88e688ffa6dc53bed7dcca7d |
---|
1179 | ] |
---|
1180 | [Minor documentation tweaks. |
---|
1181 | david-sarah@jacaranda.org**20100603054458 |
---|
1182 | Ignore-this: e30ae407b0039dfa5b341d8f88e7f959 |
---|
1183 | ] |
---|
1184 | [title_rename_xhtml.dpatch.txt |
---|
1185 | freestorm77@gmail.com**20100529172542 |
---|
1186 | Ignore-this: d2846afcc9ea72ac443a62ecc23d121b |
---|
1187 | |
---|
1188 | - Renamed xhtml Title from "Allmydata - Tahoe" to "Tahoe-LAFS" |
---|
1189 | - Renamed Tahoe to Tahoe-LAFS in page content |
---|
1190 | - Changed Tahoe-LAFS home page link to http://tahoe-lafs.org (added target="blank") |
---|
1191 | - Deleted commented css script in info.xhtml |
---|
1192 | |
---|
1193 | |
---|
1194 | ] |
---|
1195 | [tests: refactor test_web.py to have less duplication of literal caps-from-the-future |
---|
1196 | zooko@zooko.com**20100519055146 |
---|
1197 | Ignore-this: 49e5412e6cc4566ca67f069ffd850af6 |
---|
1198 | This is a prelude to a patch which will add tests of caps from the future which have non-ascii chars in them. |
---|
1199 | ] |
---|
1200 | [doc_reformat_stats.txt |
---|
1201 | freestorm77@gmail.com**20100424114615 |
---|
1202 | Ignore-this: af315db5f7e3a17219ff8fb39bcfcd60 |
---|
1203 | |
---|
1204 | |
---|
1205 | - Added heading format begining and ending by "==" |
---|
1206 | - Added Index |
---|
1207 | - Added Title |
---|
1208 | |
---|
1209 | Note: No change are made in paragraphs content |
---|
1210 | |
---|
1211 | |
---|
1212 | **END OF DESCRIPTION*** |
---|
1213 | |
---|
1214 | Place the long patch description above the ***END OF DESCRIPTION*** marker. |
---|
1215 | The first line of this file will be the patch name. |
---|
1216 | |
---|
1217 | |
---|
1218 | This patch contains the following changes: |
---|
1219 | |
---|
1220 | M ./docs/stats.txt -2 +2 |
---|
1221 | ] |
---|
1222 | [doc_reformat_performance.txt |
---|
1223 | freestorm77@gmail.com**20100424114444 |
---|
1224 | Ignore-this: 55295ff5cd8a5b67034eb661a5b0699d |
---|
1225 | |
---|
1226 | - Added heading format begining and ending by "==" |
---|
1227 | - Added Index |
---|
1228 | - Added Title |
---|
1229 | |
---|
1230 | Note: No change are made in paragraphs content |
---|
1231 | |
---|
1232 | |
---|
1233 | ] |
---|
1234 | [doc_refomat_logging.txt |
---|
1235 | freestorm77@gmail.com**20100424114316 |
---|
1236 | Ignore-this: 593f0f9914516bf1924dfa6eee74e35f |
---|
1237 | |
---|
1238 | - Added heading format begining and ending by "==" |
---|
1239 | - Added Index |
---|
1240 | - Added Title |
---|
1241 | |
---|
1242 | Note: No change are made in paragraphs content |
---|
1243 | |
---|
1244 | ] |
---|
1245 | [doc_reformat_known_issues.txt |
---|
1246 | freestorm77@gmail.com**20100424114118 |
---|
1247 | Ignore-this: 9577c3965d77b7ac18698988cfa06049 |
---|
1248 | |
---|
1249 | - Added heading format begining and ending by "==" |
---|
1250 | - Added Index |
---|
1251 | - Added Title |
---|
1252 | |
---|
1253 | Note: No change are made in paragraphs content |
---|
1254 | |
---|
1255 | |
---|
1256 | ] |
---|
1257 | [doc_reformat_helper.txt |
---|
1258 | freestorm77@gmail.com**20100424120649 |
---|
1259 | Ignore-this: de2080d6152ae813b20514b9908e37fb |
---|
1260 | |
---|
1261 | |
---|
1262 | - Added heading format begining and ending by "==" |
---|
1263 | - Added Index |
---|
1264 | - Added Title |
---|
1265 | |
---|
1266 | Note: No change are made in paragraphs content |
---|
1267 | |
---|
1268 | ] |
---|
1269 | [doc_reformat_garbage-collection.txt |
---|
1270 | freestorm77@gmail.com**20100424120830 |
---|
1271 | Ignore-this: aad3e4c99670871b66467062483c977d |
---|
1272 | |
---|
1273 | |
---|
1274 | - Added heading format begining and ending by "==" |
---|
1275 | - Added Index |
---|
1276 | - Added Title |
---|
1277 | |
---|
1278 | Note: No change are made in paragraphs content |
---|
1279 | |
---|
1280 | ] |
---|
1281 | [doc_reformat_FTP-and-SFTP.txt |
---|
1282 | freestorm77@gmail.com**20100424121334 |
---|
1283 | Ignore-this: 3736b3d8f9a542a3521fbb566d44c7cf |
---|
1284 | |
---|
1285 | |
---|
1286 | - Added heading format begining and ending by "==" |
---|
1287 | - Added Index |
---|
1288 | - Added Title |
---|
1289 | |
---|
1290 | Note: No change are made in paragraphs content |
---|
1291 | |
---|
1292 | ] |
---|
1293 | [doc_reformat_debian.txt |
---|
1294 | freestorm77@gmail.com**20100424120537 |
---|
1295 | Ignore-this: 45fe4355bb869e55e683405070f47eff |
---|
1296 | |
---|
1297 | |
---|
1298 | - Added heading format begining and ending by "==" |
---|
1299 | - Added Index |
---|
1300 | - Added Title |
---|
1301 | |
---|
1302 | Note: No change are made in paragraphs content |
---|
1303 | |
---|
1304 | ] |
---|
1305 | [doc_reformat_configuration.txt |
---|
1306 | freestorm77@gmail.com**20100424104903 |
---|
1307 | Ignore-this: 4fbabc51b8122fec69ce5ad1672e79f2 |
---|
1308 | |
---|
1309 | |
---|
1310 | - Added heading format begining and ending by "==" |
---|
1311 | - Added Index |
---|
1312 | - Added Title |
---|
1313 | |
---|
1314 | Note: No change are made in paragraphs content |
---|
1315 | |
---|
1316 | ] |
---|
1317 | [doc_reformat_CLI.txt |
---|
1318 | freestorm77@gmail.com**20100424121512 |
---|
1319 | Ignore-this: 2d3a59326810adcb20ea232cea405645 |
---|
1320 | |
---|
1321 | - Added heading format begining and ending by "==" |
---|
1322 | - Added Index |
---|
1323 | - Added Title |
---|
1324 | |
---|
1325 | Note: No change are made in paragraphs content |
---|
1326 | |
---|
1327 | ] |
---|
1328 | [doc_reformat_backupdb.txt |
---|
1329 | freestorm77@gmail.com**20100424120416 |
---|
1330 | Ignore-this: fed696530e9d2215b6f5058acbedc3ab |
---|
1331 | |
---|
1332 | |
---|
1333 | - Added heading format begining and ending by "==" |
---|
1334 | - Added Index |
---|
1335 | - Added Title |
---|
1336 | |
---|
1337 | Note: No change are made in paragraphs content |
---|
1338 | |
---|
1339 | ] |
---|
1340 | [doc_reformat_architecture.txt |
---|
1341 | freestorm77@gmail.com**20100424120133 |
---|
1342 | Ignore-this: 6e2cab4635080369f2b8cadf7b2f58e |
---|
1343 | |
---|
1344 | |
---|
1345 | - Added heading format begining and ending by "==" |
---|
1346 | - Added Index |
---|
1347 | - Added Title |
---|
1348 | |
---|
1349 | Note: No change are made in paragraphs content |
---|
1350 | |
---|
1351 | |
---|
1352 | ] |
---|
1353 | [Correct harmless indentation errors found by pylint |
---|
1354 | david-sarah@jacaranda.org**20100226052151 |
---|
1355 | Ignore-this: 41335bce830700b18b80b6e00b45aef5 |
---|
1356 | ] |
---|
1357 | [Change relative imports to absolute |
---|
1358 | david-sarah@jacaranda.org**20100226071433 |
---|
1359 | Ignore-this: 32e6ce1a86e2ffaaba1a37d9a1a5de0e |
---|
1360 | ] |
---|
1361 | [Document reason for the trialcoverage version requirement being 0.3.3. |
---|
1362 | david-sarah@jacaranda.org**20100525004444 |
---|
1363 | Ignore-this: 2f9f1df6882838b000c063068f258aec |
---|
1364 | ] |
---|
1365 | [Downgrade version requirement for trialcoverage to 0.3.3 (from 0.3.10), to avoid needing to compile coveragepy on Windows. |
---|
1366 | david-sarah@jacaranda.org**20100524233707 |
---|
1367 | Ignore-this: 9c397a374c8b8017e2244b8a686432a8 |
---|
1368 | ] |
---|
1369 | [Suppress deprecation warning for twisted.web.error.NoResource when using Twisted >= 9.0.0. |
---|
1370 | david-sarah@jacaranda.org**20100516205625 |
---|
1371 | Ignore-this: 2361a3023cd3db86bde5e1af759ed01 |
---|
1372 | ] |
---|
1373 | [docs: CREDITS for Jeremy Visser |
---|
1374 | zooko@zooko.com**20100524081829 |
---|
1375 | Ignore-this: d7c1465fd8d4e25b8d46d38a1793465b |
---|
1376 | ] |
---|
1377 | [test: show stdout and stderr in case of non-zero exit code from "tahoe" command |
---|
1378 | zooko@zooko.com**20100524073348 |
---|
1379 | Ignore-this: 695e81cd6683f4520229d108846cd551 |
---|
1380 | ] |
---|
1381 | [setup: upgrade bundled zetuptoolz to zetuptoolz-0.6c15dev and make it unpacked and directly loaded by setup.py |
---|
1382 | zooko@zooko.com**20100523205228 |
---|
1383 | Ignore-this: 24fb32aaee3904115a93d1762f132c7 |
---|
1384 | Also fix the relevant "make clean" target behavior. |
---|
1385 | ] |
---|
1386 | [setup: remove bundled zipfile egg of setuptools |
---|
1387 | zooko@zooko.com**20100523205120 |
---|
1388 | Ignore-this: c68b5f2635bb93d1c1fa7b613a026f9e |
---|
1389 | We're about to replace it with bundled unpacked source code of setuptools, which is much nicer for debugging and evolving under revision control. |
---|
1390 | ] |
---|
1391 | [setup: remove bundled copy of setuptools_trial-0.5.2.tar |
---|
1392 | zooko@zooko.com**20100522221539 |
---|
1393 | Ignore-this: 140f90eb8fb751a509029c4b24afe647 |
---|
1394 | Hopefully it will get installed automatically as needed and we won't bundle it anymore. |
---|
1395 | ] |
---|
1396 | [setup: remove bundled setuptools_darcs-1.2.8.tar |
---|
1397 | zooko@zooko.com**20100522015333 |
---|
1398 | Ignore-this: 378b1964b513ae7fe22bae2d3478285d |
---|
1399 | This version of setuptools_darcs had a bug when used on Windows which has been fixed in setuptools_darcs-1.2.9. Hopefully we will not need to bundle a copy of setuptools_darcs-1.2.9 in with Tahoe-LAFS and can instead rely on it to be downloaded from PyPI or bundled in the "tahoe deps" separate tarball. |
---|
1400 | ] |
---|
1401 | [tests: fix pyflakes warnings in bench_dirnode.py |
---|
1402 | zooko@zooko.com**20100521202511 |
---|
1403 | Ignore-this: f23d55b4ed05e52865032c65a15753c4 |
---|
1404 | ] |
---|
1405 | [setup: if the string '--reporter=bwverbose-coverage' appears on sys.argv then you need trialcoverage |
---|
1406 | zooko@zooko.com**20100521122226 |
---|
1407 | Ignore-this: e760c45dcfb5a43c1dc1e8a27346bdc2 |
---|
1408 | ] |
---|
1409 | [tests: don't let bench_dirnode.py do stuff and have side-effects at import time (unless __name__ == '__main__') |
---|
1410 | zooko@zooko.com**20100521122052 |
---|
1411 | Ignore-this: 96144a412250d9bbb5fccbf83b8753b8 |
---|
1412 | ] |
---|
1413 | [tests: increase timeout to give François's ARM buildslave a chance to complete the tests |
---|
1414 | zooko@zooko.com**20100520134526 |
---|
1415 | Ignore-this: 3dd399fdc8b91149c82b52f955b50833 |
---|
1416 | ] |
---|
1417 | [run_trial.darcspath |
---|
1418 | freestorm77@gmail.com**20100510232829 |
---|
1419 | Ignore-this: 5ebb4df74e9ea8a4bdb22b65373d1ff2 |
---|
1420 | ] |
---|
1421 | [docs: line-wrap README.txt |
---|
1422 | zooko@zooko.com**20100518174240 |
---|
1423 | Ignore-this: 670a02d360df7de51ebdcf4fae752577 |
---|
1424 | ] |
---|
1425 | [Hush pyflakes warnings |
---|
1426 | Kevan Carstensen <kevan@isnotajoke.com>**20100515184344 |
---|
1427 | Ignore-this: fd602c3bba115057770715c36a87b400 |
---|
1428 | ] |
---|
1429 | [setup: new improved misc/show-tool-versions.py |
---|
1430 | zooko@zooko.com**20100516050122 |
---|
1431 | Ignore-this: ce9b1de1b35b07d733e6cf823b66335a |
---|
1432 | ] |
---|
1433 | [Improve code coverage of the Tahoe2PeerSelector tests. |
---|
1434 | Kevan Carstensen <kevan@isnotajoke.com>**20100515032913 |
---|
1435 | Ignore-this: 793151b63ffa65fdae6915db22d9924a |
---|
1436 | ] |
---|
1437 | [Remove a comment that no longer makes sense. |
---|
1438 | Kevan Carstensen <kevan@isnotajoke.com>**20100514203516 |
---|
1439 | Ignore-this: 956983c7e7c7e4477215494dfce8f058 |
---|
1440 | ] |
---|
1441 | [docs: update docs/architecture.txt to more fully and correctly explain the upload procedure |
---|
1442 | zooko@zooko.com**20100514043458 |
---|
1443 | Ignore-this: 538b6ea256a49fed837500342092efa3 |
---|
1444 | ] |
---|
1445 | [Fix up the behavior of #778, per reviewers' comments |
---|
1446 | Kevan Carstensen <kevan@isnotajoke.com>**20100514004917 |
---|
1447 | Ignore-this: 9c20b60716125278b5456e8feb396bff |
---|
1448 | |
---|
1449 | - Make some important utility functions clearer and more thoroughly |
---|
1450 | documented. |
---|
1451 | - Assert in upload.servers_of_happiness that the buckets attributes |
---|
1452 | of PeerTrackers passed to it are mutually disjoint. |
---|
1453 | - Get rid of some silly non-Pythonisms that I didn't see when I first |
---|
1454 | wrote these patches. |
---|
1455 | - Make sure that should_add_server returns true when queried about a |
---|
1456 | shnum that it doesn't know about yet. |
---|
1457 | - Change Tahoe2PeerSelector.preexisting_shares to map a shareid to a set |
---|
1458 | of peerids, alter dependencies to deal with that. |
---|
1459 | - Remove upload.should_add_servers, because it is no longer necessary |
---|
1460 | - Move upload.shares_of_happiness and upload.shares_by_server to a utility |
---|
1461 | file. |
---|
1462 | - Change some points in Tahoe2PeerSelector. |
---|
1463 | - Compute servers_of_happiness using a bipartite matching algorithm that |
---|
1464 | we know is optimal instead of an ad-hoc greedy algorithm that isn't. |
---|
1465 | - Change servers_of_happiness to just take a sharemap as an argument, |
---|
1466 | change its callers to merge existing_shares and used_peers before |
---|
1467 | calling it. |
---|
1468 | - Change an error message in the encoder to be more appropriate for |
---|
1469 | servers of happiness. |
---|
1470 | - Clarify the wording of an error message in immutable/upload.py |
---|
1471 | - Refactor a happiness failure message to happinessutil.py, and make |
---|
1472 | immutable/upload.py and immutable/encode.py use it. |
---|
1473 | - Move the word "only" as far to the right as possible in failure |
---|
1474 | messages. |
---|
1475 | - Use a better definition of progress during peer selection. |
---|
1476 | - Do read-only peer share detection queries in parallel, not sequentially. |
---|
1477 | - Clean up logging semantics; print the query statistics whenever an |
---|
1478 | upload is unsuccessful, not just in one case. |
---|
1479 | |
---|
1480 | ] |
---|
1481 | [Alter the error message when an upload fails, per some comments in #778. |
---|
1482 | Kevan Carstensen <kevan@isnotajoke.com>**20091230210344 |
---|
1483 | Ignore-this: ba97422b2f9737c46abeb828727beb1 |
---|
1484 | |
---|
1485 | When I first implemented #778, I just altered the error messages to refer to |
---|
1486 | servers where they referred to shares. The resulting error messages weren't |
---|
1487 | very good. These are a bit better. |
---|
1488 | ] |
---|
1489 | [Change "UploadHappinessError" to "UploadUnhappinessError" |
---|
1490 | Kevan Carstensen <kevan@isnotajoke.com>**20091205043037 |
---|
1491 | Ignore-this: 236b64ab19836854af4993bb5c1b221a |
---|
1492 | ] |
---|
1493 | [Alter the error message returned when peer selection fails |
---|
1494 | Kevan Carstensen <kevan@isnotajoke.com>**20091123002405 |
---|
1495 | Ignore-this: b2a7dc163edcab8d9613bfd6907e5166 |
---|
1496 | |
---|
1497 | The Tahoe2PeerSelector returned either NoSharesError or NotEnoughSharesError |
---|
1498 | for a variety of error conditions that weren't informatively described by them. |
---|
1499 | This patch creates a new error, UploadHappinessError, replaces uses of |
---|
1500 | NoSharesError and NotEnoughSharesError with it, and alters the error message |
---|
1501 | raised with the errors to be more in line with the new servers_of_happiness |
---|
1502 | behavior. See ticket #834 for more information. |
---|
1503 | ] |
---|
1504 | [Eliminate overcounting iof servers_of_happiness in Tahoe2PeerSelector; also reorganize some things. |
---|
1505 | Kevan Carstensen <kevan@isnotajoke.com>**20091118014542 |
---|
1506 | Ignore-this: a6cb032cbff74f4f9d4238faebd99868 |
---|
1507 | ] |
---|
1508 | [Change stray "shares_of_happiness" to "servers_of_happiness" |
---|
1509 | Kevan Carstensen <kevan@isnotajoke.com>**20091116212459 |
---|
1510 | Ignore-this: 1c971ba8c3c4d2e7ba9f020577b28b73 |
---|
1511 | ] |
---|
1512 | [Alter Tahoe2PeerSelector to make sure that it recognizes existing shares on readonly servers, fixing an issue in #778 |
---|
1513 | Kevan Carstensen <kevan@isnotajoke.com>**20091116192805 |
---|
1514 | Ignore-this: 15289f4d709e03851ed0587b286fd955 |
---|
1515 | ] |
---|
1516 | [Alter 'immutable/encode.py' and 'immutable/upload.py' to use servers_of_happiness instead of shares_of_happiness. |
---|
1517 | Kevan Carstensen <kevan@isnotajoke.com>**20091104111222 |
---|
1518 | Ignore-this: abb3283314820a8bbf9b5d0cbfbb57c8 |
---|
1519 | ] |
---|
1520 | [Alter the signature of set_shareholders in IEncoder to add a 'servermap' parameter, which gives IEncoders enough information to perform a sane check for servers_of_happiness. |
---|
1521 | Kevan Carstensen <kevan@isnotajoke.com>**20091104033241 |
---|
1522 | Ignore-this: b3a6649a8ac66431beca1026a31fed94 |
---|
1523 | ] |
---|
1524 | [Alter CiphertextDownloader to work with servers_of_happiness |
---|
1525 | Kevan Carstensen <kevan@isnotajoke.com>**20090924041932 |
---|
1526 | Ignore-this: e81edccf0308c2d3bedbc4cf217da197 |
---|
1527 | ] |
---|
1528 | [Revisions of the #778 tests, per reviewers' comments |
---|
1529 | Kevan Carstensen <kevan@isnotajoke.com>**20100514012542 |
---|
1530 | Ignore-this: 735bbc7f663dce633caeb3b66a53cf6e |
---|
1531 | |
---|
1532 | - Fix comments and confusing naming. |
---|
1533 | - Add tests for the new error messages suggested by David-Sarah |
---|
1534 | and Zooko. |
---|
1535 | - Alter existing tests for new error messages. |
---|
1536 | - Make sure that the tests continue to work with the trunk. |
---|
1537 | - Add a test for a mutual disjointedness assertion that I added to |
---|
1538 | upload.servers_of_happiness. |
---|
1539 | - Fix the comments to correctly reflect read-onlyness |
---|
1540 | - Add a test for an edge case in should_add_server |
---|
1541 | - Add an assertion to make sure that share redistribution works as it |
---|
1542 | should |
---|
1543 | - Alter tests to work with revised servers_of_happiness semantics |
---|
1544 | - Remove tests for should_add_server, since that function no longer exists. |
---|
1545 | - Alter tests to know about merge_peers, and to use it before calling |
---|
1546 | servers_of_happiness. |
---|
1547 | - Add tests for merge_peers. |
---|
1548 | - Add Zooko's puzzles to the tests. |
---|
1549 | - Edit encoding tests to expect the new kind of failure message. |
---|
1550 | - Edit tests to expect error messages with the word "only" moved as far |
---|
1551 | to the right as possible. |
---|
1552 | - Extended and cleaned up some helper functions. |
---|
1553 | - Changed some tests to call more appropriate helper functions. |
---|
1554 | - Added a test for the failing redistribution algorithm |
---|
1555 | - Added a test for the progress message |
---|
1556 | - Added a test for the upper bound on readonly peer share discovery. |
---|
1557 | |
---|
1558 | ] |
---|
1559 | [Alter various unit tests to work with the new happy behavior |
---|
1560 | Kevan Carstensen <kevan@isnotajoke.com>**20100107181325 |
---|
1561 | Ignore-this: 132032bbf865e63a079f869b663be34a |
---|
1562 | ] |
---|
1563 | [Replace "UploadHappinessError" with "UploadUnhappinessError" in tests. |
---|
1564 | Kevan Carstensen <kevan@isnotajoke.com>**20091205043453 |
---|
1565 | Ignore-this: 83f4bc50c697d21b5f4e2a4cd91862ca |
---|
1566 | ] |
---|
1567 | [Add tests for the behavior described in #834. |
---|
1568 | Kevan Carstensen <kevan@isnotajoke.com>**20091123012008 |
---|
1569 | Ignore-this: d8e0aa0f3f7965ce9b5cea843c6d6f9f |
---|
1570 | ] |
---|
1571 | [Re-work 'test_upload.py' to be more readable; add more tests for #778 |
---|
1572 | Kevan Carstensen <kevan@isnotajoke.com>**20091116192334 |
---|
1573 | Ignore-this: 7e8565f92fe51dece5ae28daf442d659 |
---|
1574 | ] |
---|
1575 | [Test Tahoe2PeerSelector to make sure that it recognizeses existing shares on readonly servers |
---|
1576 | Kevan Carstensen <kevan@isnotajoke.com>**20091109003735 |
---|
1577 | Ignore-this: 12f9b4cff5752fca7ed32a6ebcff6446 |
---|
1578 | ] |
---|
1579 | [Add more tests for comment:53 in ticket #778 |
---|
1580 | Kevan Carstensen <kevan@isnotajoke.com>**20091104112849 |
---|
1581 | Ignore-this: 3bb2edd299a944cc9586e14d5d83ec8c |
---|
1582 | ] |
---|
1583 | [Add a test for upload.shares_by_server |
---|
1584 | Kevan Carstensen <kevan@isnotajoke.com>**20091104111324 |
---|
1585 | Ignore-this: f9802e82d6982a93e00f92e0b276f018 |
---|
1586 | ] |
---|
1587 | [Minor tweak to an existing test -- make the first server read-write, instead of read-only |
---|
1588 | Kevan Carstensen <kevan@isnotajoke.com>**20091104034232 |
---|
1589 | Ignore-this: a951a46c93f7f58dd44d93d8623b2aee |
---|
1590 | ] |
---|
1591 | [Alter tests to use the new form of set_shareholders |
---|
1592 | Kevan Carstensen <kevan@isnotajoke.com>**20091104033602 |
---|
1593 | Ignore-this: 3deac11fc831618d11441317463ef830 |
---|
1594 | ] |
---|
1595 | [Refactor some behavior into a mixin, and add tests for the behavior described in #778 |
---|
1596 | "Kevan Carstensen" <kevan@isnotajoke.com>**20091030091908 |
---|
1597 | Ignore-this: a6f9797057ca135579b249af3b2b66ac |
---|
1598 | ] |
---|
1599 | [Alter NoNetworkGrid to allow the creation of readonly servers for testing purposes. |
---|
1600 | Kevan Carstensen <kevan@isnotajoke.com>**20091018013013 |
---|
1601 | Ignore-this: e12cd7c4ddeb65305c5a7e08df57c754 |
---|
1602 | ] |
---|
1603 | [Update 'docs/architecture.txt' to reflect readonly share discovery |
---|
1604 | kevan@isnotajoke.com**20100514003852 |
---|
1605 | Ignore-this: 7ead71b34df3b1ecfdcfd3cb2882e4f9 |
---|
1606 | ] |
---|
1607 | [Alter the wording in docs/architecture.txt to more accurately describe the servers_of_happiness behavior. |
---|
1608 | Kevan Carstensen <kevan@isnotajoke.com>**20100428002455 |
---|
1609 | Ignore-this: 6eff7fa756858a1c6f73728d989544cc |
---|
1610 | ] |
---|
1611 | [Alter wording in 'interfaces.py' to be correct wrt #778 |
---|
1612 | "Kevan Carstensen" <kevan@isnotajoke.com>**20091205034005 |
---|
1613 | Ignore-this: c9913c700ac14e7a63569458b06980e0 |
---|
1614 | ] |
---|
1615 | [Update 'docs/configuration.txt' to reflect the servers_of_happiness behavior. |
---|
1616 | Kevan Carstensen <kevan@isnotajoke.com>**20091205033813 |
---|
1617 | Ignore-this: 5e1cb171f8239bfb5b565d73c75ac2b8 |
---|
1618 | ] |
---|
1619 | [Clarify quickstart instructions for installing pywin32 |
---|
1620 | david-sarah@jacaranda.org**20100511180300 |
---|
1621 | Ignore-this: d4668359673600d2acbc7cd8dd44b93c |
---|
1622 | ] |
---|
1623 | [web: add a simple test that you can load directory.xhtml |
---|
1624 | zooko@zooko.com**20100510063729 |
---|
1625 | Ignore-this: e49b25fa3c67b3c7a56c8b1ae01bb463 |
---|
1626 | ] |
---|
1627 | [setup: fix typos in misc/show-tool-versions.py |
---|
1628 | zooko@zooko.com**20100510063615 |
---|
1629 | Ignore-this: 2181b1303a0e288e7a9ebd4c4855628 |
---|
1630 | ] |
---|
1631 | [setup: show code-coverage tool versions in show-tools-versions.py |
---|
1632 | zooko@zooko.com**20100510062955 |
---|
1633 | Ignore-this: 4b4c68eb3780b762c8dbbd22b39df7cf |
---|
1634 | ] |
---|
1635 | [docs: update README, mv it to README.txt, update setup.py |
---|
1636 | zooko@zooko.com**20100504094340 |
---|
1637 | Ignore-this: 40e28ca36c299ea1fd12d3b91e5b421c |
---|
1638 | ] |
---|
1639 | [Dependency on Windmill test framework is not needed yet. |
---|
1640 | david-sarah@jacaranda.org**20100504161043 |
---|
1641 | Ignore-this: be088712bec650d4ef24766c0026ebc8 |
---|
1642 | ] |
---|
1643 | [tests: pass z to tar so that BSD tar will know to ungzip |
---|
1644 | zooko@zooko.com**20100504090628 |
---|
1645 | Ignore-this: 1339e493f255e8fc0b01b70478f23a09 |
---|
1646 | ] |
---|
1647 | [setup: update comments and URLs in setup.cfg |
---|
1648 | zooko@zooko.com**20100504061653 |
---|
1649 | Ignore-this: f97692807c74bcab56d33100c899f829 |
---|
1650 | ] |
---|
1651 | [setup: reorder and extend the show-tool-versions script, the better to glean information about our new buildslaves |
---|
1652 | zooko@zooko.com**20100504045643 |
---|
1653 | Ignore-this: 836084b56b8d4ee8f1de1f4efb706d36 |
---|
1654 | ] |
---|
1655 | [CLI: Support for https url in option --node-url |
---|
1656 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100430185609 |
---|
1657 | Ignore-this: 1717176b4d27c877e6bc67a944d9bf34 |
---|
1658 | |
---|
1659 | This patch modifies the regular expression used for verifying of '--node-url' |
---|
1660 | parameter. Support for accessing a Tahoe gateway over HTTPS was already |
---|
1661 | present, thanks to Python's urllib. |
---|
1662 | |
---|
1663 | ] |
---|
1664 | [backupdb.did_create_directory: use REPLACE INTO, not INSERT INTO + ignore error |
---|
1665 | Brian Warner <warner@lothar.com>**20100428050803 |
---|
1666 | Ignore-this: 1fca7b8f364a21ae413be8767161e32f |
---|
1667 | |
---|
1668 | This handles the case where we upload a new tahoe directory for a |
---|
1669 | previously-processed local directory, possibly creating a new dircap (if the |
---|
1670 | metadata had changed). Now we replace the old dirhash->dircap record. The |
---|
1671 | previous behavior left the old record in place (with the old dircap and |
---|
1672 | timestamps), so we'd never stop creating new directories and never converge |
---|
1673 | on a null backup. |
---|
1674 | ] |
---|
1675 | ["tahoe webopen": add --info flag, to get ?t=info |
---|
1676 | Brian Warner <warner@lothar.com>**20100424233003 |
---|
1677 | Ignore-this: 126b0bb6db340fabacb623d295eb45fa |
---|
1678 | |
---|
1679 | Also fix some trailing whitespace. |
---|
1680 | ] |
---|
1681 | [docs: install.html http-equiv refresh to quickstart.html |
---|
1682 | zooko@zooko.com**20100421165708 |
---|
1683 | Ignore-this: 52b4b619f9dde5886ae2cd7f1f3b734b |
---|
1684 | ] |
---|
1685 | [docs: install.html -> quickstart.html |
---|
1686 | zooko@zooko.com**20100421155757 |
---|
1687 | Ignore-this: 6084e203909306bed93efb09d0e6181d |
---|
1688 | It is not called "installing" because that implies that it is going to change the configuration of your operating system. It is not called "building" because that implies that you need developer tools like a compiler. Also I added a stern warning against looking at the "InstallDetails" wiki page, which I have renamed to "AdvancedInstall". |
---|
1689 | ] |
---|
1690 | [Fix another typo in tahoe_storagespace munin plugin |
---|
1691 | david-sarah@jacaranda.org**20100416220935 |
---|
1692 | Ignore-this: ad1f7aa66b554174f91dfb2b7a3ea5f3 |
---|
1693 | ] |
---|
1694 | [Add dependency on windmill >= 1.3 |
---|
1695 | david-sarah@jacaranda.org**20100416190404 |
---|
1696 | Ignore-this: 4437a7a464e92d6c9012926b18676211 |
---|
1697 | ] |
---|
1698 | [licensing: phrase the OpenSSL-exemption in the vocabulary of copyright instead of computer technology, and replicate the exemption from the GPL to the TGPPL |
---|
1699 | zooko@zooko.com**20100414232521 |
---|
1700 | Ignore-this: a5494b2f582a295544c6cad3f245e91 |
---|
1701 | ] |
---|
1702 | [munin-tahoe_storagespace |
---|
1703 | freestorm77@gmail.com**20100221203626 |
---|
1704 | Ignore-this: 14d6d6a587afe1f8883152bf2e46b4aa |
---|
1705 | |
---|
1706 | Plugin configuration rename |
---|
1707 | |
---|
1708 | ] |
---|
1709 | [setup: add licensing declaration for setuptools (noticed by the FSF compliance folks) |
---|
1710 | zooko@zooko.com**20100309184415 |
---|
1711 | Ignore-this: 2dfa7d812d65fec7c72ddbf0de609ccb |
---|
1712 | ] |
---|
1713 | [setup: fix error in licensing declaration from Shawn Willden, as noted by the FSF compliance division |
---|
1714 | zooko@zooko.com**20100309163736 |
---|
1715 | Ignore-this: c0623d27e469799d86cabf67921a13f8 |
---|
1716 | ] |
---|
1717 | [CREDITS to Jacob Appelbaum |
---|
1718 | zooko@zooko.com**20100304015616 |
---|
1719 | Ignore-this: 70db493abbc23968fcc8db93f386ea54 |
---|
1720 | ] |
---|
1721 | [desert-island-build-with-proper-versions |
---|
1722 | jacob@appelbaum.net**20100304013858] |
---|
1723 | [docs: a few small edits to try to guide newcomers through the docs |
---|
1724 | zooko@zooko.com**20100303231902 |
---|
1725 | Ignore-this: a6aab44f5bf5ad97ea73e6976bc4042d |
---|
1726 | These edits were suggested by my watching over Jake Appelbaum's shoulder as he completely ignored/skipped/missed install.html and also as he decided that debian.txt wouldn't help him with basic installation. Then I threw in a few docs edits that have been sitting around in my sandbox asking to be committed for months. |
---|
1727 | ] |
---|
1728 | [TAG allmydata-tahoe-1.6.1 |
---|
1729 | david-sarah@jacaranda.org**20100228062314 |
---|
1730 | Ignore-this: eb5f03ada8ea953ee7780e7fe068539 |
---|
1731 | ] |
---|
1732 | Patch bundle hash: |
---|
1733 | 8c1bc2e740154de1c93500887c62f80be9476a84 |
---|