1 | 3 patches for repository https://tahoe-lafs.org/source/tahoe/ticket999-S3-backend: |
---|
2 | |
---|
3 | Thu Feb 16 04:17:32 GMT 2012 david-sarah@jacaranda.org |
---|
4 | * Make S3 error tracebacks include the status code and response, and trigger an incident. fixes #1589 |
---|
5 | |
---|
6 | Thu Feb 16 18:48:08 GMT 2012 david-sarah@jacaranda.org |
---|
7 | * S3 backend: make truncated GET Bucket responses trigger an incident. Does not include tests. refs #1678 |
---|
8 | |
---|
9 | Mon Feb 20 17:57:57 GMT 2012 david-sarah@jacaranda.org |
---|
10 | * Test that a truncated bucket listing triggers an incident. refs #1678 |
---|
11 | |
---|
12 | New patches: |
---|
13 | |
---|
14 | [Make S3 error tracebacks include the status code and response, and trigger an incident. fixes #1589 |
---|
15 | david-sarah@jacaranda.org**20120216041732 |
---|
16 | Ignore-this: 8a9be026e9db19ae9325760aee139687 |
---|
17 | ] { |
---|
18 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 3 |
---|
19 | |
---|
20 | from twisted.internet import defer |
---|
21 | +from twisted.web.error import Error |
---|
22 | |
---|
23 | from zope.interface import implements |
---|
24 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 6 |
---|
25 | -from allmydata.storage.backends.s3.s3_common import IS3Bucket |
---|
26 | +from allmydata.storage.backends.s3.s3_common import IS3Bucket, S3BucketMixin |
---|
27 | from allmydata.util.time_format import iso_utc |
---|
28 | from allmydata.util import fileutil |
---|
29 | from allmydata.util.deferredutil import async_iterate |
---|
30 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 23 |
---|
31 | |
---|
32 | MAX_KEYS = 1000 |
---|
33 | |
---|
34 | -class MockS3Bucket(object): |
---|
35 | +class MockS3Bucket(S3BucketMixin): |
---|
36 | implements(IS3Bucket) |
---|
37 | """ |
---|
38 | I represent a mock S3 bucket that stores its data in the local filesystem, |
---|
39 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 39 |
---|
40 | def __repr__(self): |
---|
41 | return ("<%s at %r>" % (self.__class__.__name__, self._storagedir,)) |
---|
42 | |
---|
43 | - def create(self): |
---|
44 | + def _create(self): |
---|
45 | return defer.execute(self._not_implemented) |
---|
46 | |
---|
47 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 42 |
---|
48 | - def delete(self): |
---|
49 | + def _delete(self): |
---|
50 | return defer.execute(self._not_implemented) |
---|
51 | |
---|
52 | def _iterate_dirs(self): |
---|
53 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 56 |
---|
54 | shnumstr = sharefp.basename() |
---|
55 | yield (sharefp, "%s/%s" % (sikey, shnumstr)) |
---|
56 | |
---|
57 | - def list_all_objects(self): |
---|
58 | + def _list_all_objects(self): |
---|
59 | contents = [] |
---|
60 | def _next_share(res): |
---|
61 | if res is None: |
---|
62 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 78 |
---|
63 | # This method is also called by tests. |
---|
64 | sharefp = self._storagedir.preauthChild(object_name) |
---|
65 | if must_exist and not sharefp.exists(): |
---|
66 | - raise MockS3Error(404, "not found") |
---|
67 | + raise MockS3Error("", 404, "not found") |
---|
68 | return sharefp |
---|
69 | |
---|
70 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 81 |
---|
71 | - def put_object(self, object_name, data, content_type=None, metadata={}): |
---|
72 | + def _put_object(self, object_name, data, content_type, metadata): |
---|
73 | assert content_type is None, content_type |
---|
74 | assert metadata == {}, metadata |
---|
75 | sharefp = self._get_filepath(object_name) |
---|
76 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 89 |
---|
77 | sharefp.setContent(data) |
---|
78 | return defer.succeed(None) |
---|
79 | |
---|
80 | - def get_object(self, object_name): |
---|
81 | + def _get_object(self, object_name): |
---|
82 | return defer.succeed(self._get_filepath(object_name, must_exist=True).getContent()) |
---|
83 | |
---|
84 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 92 |
---|
85 | - def head_object(self, object_name): |
---|
86 | + def _head_object(self, object_name): |
---|
87 | return defer.execute(self._not_implemented) |
---|
88 | |
---|
89 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 95 |
---|
90 | - def delete_object(self, object_name): |
---|
91 | + def _delete_object(self, object_name): |
---|
92 | self._get_filepath(object_name, must_exist=True).remove() |
---|
93 | return defer.succeed(None) |
---|
94 | |
---|
95 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 102 |
---|
96 | def _not_implemented(self): |
---|
97 | raise NotImplementedError |
---|
98 | |
---|
99 | + # methods that use error handling from S3BucketMixin |
---|
100 | + |
---|
101 | + def create(self): |
---|
102 | + return self._do_aws(self._create) |
---|
103 | + |
---|
104 | + def delete(self): |
---|
105 | + return self._do_aws(self._delete) |
---|
106 | + |
---|
107 | + def list_all_objects(self): |
---|
108 | + return self._do_aws(self._list_all_objects) |
---|
109 | + |
---|
110 | + def put_object(self, object_name, data, content_type=None, metadata={}): |
---|
111 | + return self._do_aws(self._put_object, object_name, data, content_type, metadata) |
---|
112 | + |
---|
113 | + def get_object(self, object_name): |
---|
114 | + return self._do_aws(self._get_object, object_name) |
---|
115 | + |
---|
116 | + def head_object(self, object_name): |
---|
117 | + return self._do_aws(self._head_object, object_name) |
---|
118 | + |
---|
119 | + def delete_object(self, object_name): |
---|
120 | + return self._do_aws(self._delete_object, object_name) |
---|
121 | + |
---|
122 | |
---|
123 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 126 |
---|
124 | -class MockS3Error(Exception): |
---|
125 | +class MockS3Error(Error): |
---|
126 | """ |
---|
127 | A error class providing custom methods on S3 errors. |
---|
128 | """ |
---|
129 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 130 |
---|
130 | - def __init__(self, error_code, error_message, request_id="", host_id=""): |
---|
131 | - Exception.__init__(self, "%r: %r" % (error_code, error_message)) |
---|
132 | - self.error_code = error_code |
---|
133 | - self.error_message = error_message |
---|
134 | + def __init__(self, xml_bytes, status, message=None, response=None, request_id="", host_id=""): |
---|
135 | + Error.__init__(self, status, message, response) |
---|
136 | + self.original = xml_bytes |
---|
137 | + self.status = str(status) |
---|
138 | + self.message = str(message) |
---|
139 | self.request_id = request_id |
---|
140 | self.host_id = host_id |
---|
141 | |
---|
142 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 139 |
---|
143 | def get_error_code(self): |
---|
144 | - return self.error_code |
---|
145 | + return self.status |
---|
146 | |
---|
147 | def get_error_message(self): |
---|
148 | hunk ./src/allmydata/storage/backends/s3/mock_s3.py 142 |
---|
149 | - return self.error_message |
---|
150 | + return self.message |
---|
151 | |
---|
152 | def parse(self, xml_bytes=""): |
---|
153 | raise NotImplementedError |
---|
154 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 2 |
---|
155 | |
---|
156 | -from twisted.internet.defer import maybeDeferred |
---|
157 | - |
---|
158 | from zope.interface import implements |
---|
159 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 3 |
---|
160 | -from allmydata.storage.backends.s3.s3_common import IS3Bucket |
---|
161 | +from allmydata.storage.backends.s3.s3_common import IS3Bucket, S3BucketMixin |
---|
162 | |
---|
163 | |
---|
164 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 6 |
---|
165 | -class S3Bucket(object): |
---|
166 | +class S3Bucket(S3BucketMixin): |
---|
167 | implements(IS3Bucket) |
---|
168 | """ |
---|
169 | I represent a real S3 bucket, accessed using the txaws library. |
---|
170 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 45 |
---|
171 | return ("<%s %r>" % (self.__class__.__name__, self.bucketname,)) |
---|
172 | |
---|
173 | def create(self): |
---|
174 | - return maybeDeferred(self.client.create, self.bucketname) |
---|
175 | + return self._do_aws(self.client.create, self.bucketname) |
---|
176 | |
---|
177 | def delete(self): |
---|
178 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 48 |
---|
179 | - return maybeDeferred(self.client.delete, self.bucketname) |
---|
180 | + return self._do_aws(self.client.delete, self.bucketname) |
---|
181 | |
---|
182 | # We want to be able to do prefix queries, but txaws 0.2 doesn't implement that. |
---|
183 | def list_all_objects(self): |
---|
184 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 52 |
---|
185 | - return maybeDeferred(self.client.get_bucket, self.bucketname) |
---|
186 | + return self._do_aws(self.client.get_bucket, self.bucketname) |
---|
187 | |
---|
188 | def put_object(self, object_name, data, content_type=None, metadata={}): |
---|
189 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 55 |
---|
190 | - return maybeDeferred(self.client.put_object, self.bucketname, |
---|
191 | - object_name, data, content_type, metadata) |
---|
192 | + return self._do_aws(self.client.put_object, self.bucketname, |
---|
193 | + object_name, data, content_type, metadata) |
---|
194 | |
---|
195 | def get_object(self, object_name): |
---|
196 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 59 |
---|
197 | - return maybeDeferred(self.client.get_object, self.bucketname, object_name) |
---|
198 | + return self._do_aws(self.client.get_object, self.bucketname, object_name) |
---|
199 | |
---|
200 | def head_object(self, object_name): |
---|
201 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 62 |
---|
202 | - return maybeDeferred(self.client.head_object, self.bucketname, object_name) |
---|
203 | + return self._do_aws(self.client.head_object, self.bucketname, object_name) |
---|
204 | |
---|
205 | def delete_object(self, object_name): |
---|
206 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 65 |
---|
207 | - return maybeDeferred(self.client.delete_object, self.bucketname, object_name) |
---|
208 | + return self._do_aws(self.client.delete_object, self.bucketname, object_name) |
---|
209 | |
---|
210 | def put_policy(self, policy): |
---|
211 | """ |
---|
212 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 74 |
---|
213 | query = self.client.query_factory( |
---|
214 | action='PUT', creds=self.client.creds, endpoint=self.client.endpoint, |
---|
215 | bucket=self.bucketname, object_name='?policy', data=policy) |
---|
216 | - return maybeDeferred(query.submit) |
---|
217 | + return self._do_aws(query.submit) |
---|
218 | |
---|
219 | def get_policy(self): |
---|
220 | query = self.client.query_factory( |
---|
221 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 80 |
---|
222 | action='GET', creds=self.client.creds, endpoint=self.client.endpoint, |
---|
223 | bucket=self.bucketname, object_name='?policy') |
---|
224 | - return maybeDeferred(query.submit) |
---|
225 | + return self._do_aws(query.submit) |
---|
226 | |
---|
227 | def delete_policy(self): |
---|
228 | query = self.client.query_factory( |
---|
229 | hunk ./src/allmydata/storage/backends/s3/s3_bucket.py 86 |
---|
230 | action='DELETE', creds=self.client.creds, endpoint=self.client.endpoint, |
---|
231 | bucket=self.bucketname, object_name='?policy') |
---|
232 | - return maybeDeferred(query.submit) |
---|
233 | + return self._do_aws(query.submit) |
---|
234 | hunk ./src/allmydata/storage/backends/s3/s3_common.py 2 |
---|
235 | |
---|
236 | -import re |
---|
237 | +import re, sys |
---|
238 | + |
---|
239 | +from twisted.internet import defer |
---|
240 | +from foolscap.logging import log |
---|
241 | |
---|
242 | from zope.interface import Interface |
---|
243 | |
---|
244 | hunk ./src/allmydata/storage/backends/s3/s3_common.py 75 |
---|
245 | Delete an object from this bucket. |
---|
246 | Once deleted, there is no method to restore or undelete an object. |
---|
247 | """ |
---|
248 | + |
---|
249 | + |
---|
250 | +class TahoeS3Error(Exception): |
---|
251 | + pass |
---|
252 | + |
---|
253 | + |
---|
254 | +class S3BucketMixin: |
---|
255 | + def _do_aws(self, operation, *args): |
---|
256 | + d = defer.maybeDeferred(operation, *args) |
---|
257 | + def _handle_error(f): |
---|
258 | + f.trap(self.S3Error) |
---|
259 | + try: |
---|
260 | + raise f.value |
---|
261 | + except self.S3Error: |
---|
262 | + typ, val, tb = sys.exc_info() |
---|
263 | + xml = f.value.original |
---|
264 | + fargs = f.value.args |
---|
265 | + err = TahoeS3Error(xml, *fargs) |
---|
266 | + log.msg(format="%(err)s", err=err, level=log.WEIRD) |
---|
267 | + raise err.__class__, err, tb |
---|
268 | + d.addErrback(_handle_error) |
---|
269 | + return d |
---|
270 | hunk ./src/allmydata/test/test_storage.py 9 |
---|
271 | from twisted.internet import defer |
---|
272 | from twisted.application import service |
---|
273 | from twisted.python.filepath import FilePath |
---|
274 | +from twisted.python.failure import Failure |
---|
275 | from foolscap.api import fireEventually |
---|
276 | hunk ./src/allmydata/test/test_storage.py 11 |
---|
277 | +from foolscap.logging.log import WEIRD |
---|
278 | |
---|
279 | from allmydata import interfaces |
---|
280 | from allmydata.util import fileutil, hashutil, base32, pollmixin, time_format |
---|
281 | hunk ./src/allmydata/test/test_storage.py 21 |
---|
282 | from allmydata.storage.backends.disk.disk_backend import DiskBackend |
---|
283 | from allmydata.storage.backends.disk.immutable import load_immutable_disk_share, create_immutable_disk_share |
---|
284 | from allmydata.storage.backends.disk.mutable import MutableDiskShare |
---|
285 | +from allmydata.storage.backends.s3 import s3_common |
---|
286 | from allmydata.storage.backends.s3.s3_backend import S3Backend |
---|
287 | hunk ./src/allmydata/test/test_storage.py 23 |
---|
288 | -from allmydata.storage.backends.s3.mock_s3 import MockS3Bucket |
---|
289 | +from allmydata.storage.backends.s3.mock_s3 import MockS3Bucket, MockS3Error |
---|
290 | from allmydata.storage.bucket import BucketWriter, BucketReader |
---|
291 | from allmydata.storage.common import DataTooLargeError, UnknownContainerVersionError, \ |
---|
292 | UnknownMutableContainerVersionError, UnknownImmutableContainerVersionError |
---|
293 | hunk ./src/allmydata/test/test_storage.py 1338 |
---|
294 | |
---|
295 | |
---|
296 | class ServerWithS3Backend(ServerTest, CreateS3Backend, unittest.TestCase): |
---|
297 | - pass |
---|
298 | + def test_s3_errors(self): |
---|
299 | + def call_put_object(self, object_name, data, content_type=None, metadata={}): |
---|
300 | + return defer.fail(MockS3Error("XML", 500, "Internal error", "response")) |
---|
301 | + self.patch(MockS3Bucket, '_put_object', call_put_object) |
---|
302 | + |
---|
303 | + s = {"level": 0} |
---|
304 | + def call_log_msg(*args, **kwargs): |
---|
305 | + s["level"] = max(s["level"], kwargs["level"]) |
---|
306 | + self.patch(s3_common.log, 'msg', call_log_msg) |
---|
307 | + |
---|
308 | + ss = self.create("test_s3_errors") |
---|
309 | + |
---|
310 | + d = self.allocate(ss, "vid", [0], 75) |
---|
311 | + d.addCallback(lambda (already, writers): for_items(self._write_and_close, writers)) |
---|
312 | + # shouldFail would check repr(res.value.args[0]) which is not what we want |
---|
313 | + def done(res): |
---|
314 | + if isinstance(res, Failure): |
---|
315 | + res.trap(s3_common.TahoeS3Error) |
---|
316 | + self.failUnlessIn("('XML', 500, 'Internal error', 'response')", str(res.value)) |
---|
317 | + self.failUnless(s["level"] >= WEIRD, s["level"]) |
---|
318 | + else: |
---|
319 | + self.fail("was supposed to raise TahoeS3Error, not get %r" % (res,)) |
---|
320 | + d.addBoth(done) |
---|
321 | + return d |
---|
322 | |
---|
323 | |
---|
324 | class ServerWithDiskBackend(ServerTest, CreateDiskBackend, unittest.TestCase): |
---|
325 | } |
---|
326 | [S3 backend: make truncated GET Bucket responses trigger an incident. Does not include tests. refs #1678 |
---|
327 | david-sarah@jacaranda.org**20120216184808 |
---|
328 | Ignore-this: 932e3ae0279cb335d5e337823db89ade |
---|
329 | ] hunk ./src/allmydata/storage/backends/s3/s3_common.py 26 |
---|
330 | #d = self._s3bucket.list_objects('shares/%s/' % (prefix,), marker) |
---|
331 | d = s3bucket.list_all_objects() |
---|
332 | def _filter(res): |
---|
333 | + if res.is_truncated: |
---|
334 | + log.msg(format="truncated get_bucket response (%(num)d objects)", num=len(res.contents), level=log.WEIRD) |
---|
335 | res.contents = [item for item in res.contents if item.key.startswith(prefix)] |
---|
336 | return res |
---|
337 | d.addCallback(_filter) |
---|
338 | [Test that a truncated bucket listing triggers an incident. refs #1678 |
---|
339 | david-sarah@jacaranda.org**20120220175757 |
---|
340 | Ignore-this: f78d11c6803bb2b488460d05ced22ae8 |
---|
341 | ] { |
---|
342 | hunk ./src/allmydata/test/test_storage.py 23 |
---|
343 | from allmydata.storage.backends.disk.mutable import MutableDiskShare |
---|
344 | from allmydata.storage.backends.s3 import s3_common |
---|
345 | from allmydata.storage.backends.s3.s3_backend import S3Backend |
---|
346 | -from allmydata.storage.backends.s3.mock_s3 import MockS3Bucket, MockS3Error |
---|
347 | +from allmydata.storage.backends.s3.mock_s3 import MockS3Bucket, MockS3Error, BucketListing |
---|
348 | from allmydata.storage.bucket import BucketWriter, BucketReader |
---|
349 | from allmydata.storage.common import DataTooLargeError, UnknownContainerVersionError, \ |
---|
350 | UnknownMutableContainerVersionError, UnknownImmutableContainerVersionError |
---|
351 | hunk ./src/allmydata/test/test_storage.py 378 |
---|
352 | f2.close() |
---|
353 | |
---|
354 | |
---|
355 | +class S3Common(unittest.TestCase): |
---|
356 | + def test_list_objects_truncated(self): |
---|
357 | + # A truncated bucket listing should cause an incident. |
---|
358 | + |
---|
359 | + class MockBucket(object): |
---|
360 | + def list_all_objects(self): |
---|
361 | + return defer.succeed(BucketListing("bucket", "", "/", 0, True, contents=[])) |
---|
362 | + |
---|
363 | + s = {"level": 0} |
---|
364 | + def call_log_msg(*args, **kwargs): |
---|
365 | + s["level"] = max(s["level"], kwargs["level"]) |
---|
366 | + self.patch(s3_common.log, 'msg', call_log_msg) |
---|
367 | + |
---|
368 | + d = s3_common.list_objects(MockBucket(), "") |
---|
369 | + d.addCallback(lambda ign: self.failUnless(s["level"] >= WEIRD, s["level"])) |
---|
370 | + return d |
---|
371 | + |
---|
372 | + |
---|
373 | class ServerMixin: |
---|
374 | def setUp(self): |
---|
375 | self.sparent = LoggingServiceParent() |
---|
376 | } |
---|
377 | |
---|
378 | Context: |
---|
379 | |
---|
380 | [Correct some cases where it was incorrectly assumed that FilePath.basename always returns a str, rather than unicode. |
---|
381 | david-sarah@jacaranda.org**20111120044556 |
---|
382 | Ignore-this: d0dc8bafe4820d7a155100962a98f3e0 |
---|
383 | ] |
---|
384 | [Changes to support desktop products (allowing to use less powerful credentials on the storage server). |
---|
385 | david-sarah@jacaranda.org**20111103222422 |
---|
386 | Ignore-this: 9702bdf288f58bc9130dfe59c2b04e4b |
---|
387 | ] |
---|
388 | [update NEWS for the 1.9.0 release |
---|
389 | warner@lothar.com**20111031052252 |
---|
390 | Ignore-this: df9d16c29e54803869e7172c90f96972 |
---|
391 | ] |
---|
392 | [more docs updates |
---|
393 | warner@lothar.com**20111031050831 |
---|
394 | Ignore-this: af8c82696b1b1c712238dd631342f8c7 |
---|
395 | ] |
---|
396 | [improve relnotes |
---|
397 | warner@lothar.com**20111031033704 |
---|
398 | Ignore-this: 904c768314dfcb34581b9d585df8dc13 |
---|
399 | ] |
---|
400 | [update relnotes, rotate known_issues, for 1.9 |
---|
401 | Brian Warner <warner@lothar.com>**20111031032439 |
---|
402 | Ignore-this: e2f63298b7665fd7d7460e2ebc70699d |
---|
403 | ] |
---|
404 | [add user-oriented notes to NEWS and mutable.rst about SDMF-vs-MDMF |
---|
405 | Brian Warner <warner@lothar.com>**20111031030512 |
---|
406 | Ignore-this: 78e5518b8f8c5d529329f291537c9b07 |
---|
407 | ] |
---|
408 | [show-tool-versions.py: remove setuptools_trial, unused |
---|
409 | Brian Warner <warner@lothar.com>**20111031004742 |
---|
410 | Ignore-this: c1dc9dd7138f0a59c633340520f6d783 |
---|
411 | ] |
---|
412 | [Makefile/upload-tarballs: remove bash-ism in shell conditional |
---|
413 | Brian Warner <warner@lothar.com>**20111031004721 |
---|
414 | Ignore-this: 9ffe81a2cfafac5a53fc0503e0141c0d |
---|
415 | |
---|
416 | The "[" command is defined to accept "=" as an is-equal test. Bash extends |
---|
417 | this to accept "==" too, but normal /bin/sh does not. I think this command |
---|
418 | was developed on a box where /bin/sh is bash, but on standard ubuntu boxes, |
---|
419 | /bin/sh is a smaller+faster non-Bash shell, and this gave "[: 1: X: |
---|
420 | unexpected operator" errors. |
---|
421 | ] |
---|
422 | [update project-home URLs: /trac/tahoe/ was replaced by /trac/tahoe-lafs/ |
---|
423 | Brian Warner <warner@lothar.com>**20111030191428 |
---|
424 | Ignore-this: cb37679ad62845787064d94587caa48e |
---|
425 | ] |
---|
426 | [quickstart.rst: remove trailing whitespace |
---|
427 | Brian Warner <warner@lothar.com>**20111030174411 |
---|
428 | Ignore-this: 4c2738c023916de8cd3ad77bf9a9dcc7 |
---|
429 | ] |
---|
430 | [quickstart.rst: update the release URL in preparation for 1.9 |
---|
431 | Brian Warner <warner@lothar.com>**20111030173318 |
---|
432 | Ignore-this: f00af87789bbbdc4c520c486367cebd6 |
---|
433 | ] |
---|
434 | [and about.rst |
---|
435 | warner@lothar.com**20111029195816 |
---|
436 | Ignore-this: 1cddc3c3cf57cf7f588a660ba0b065c1 |
---|
437 | ] |
---|
438 | [update README for HTTPS too |
---|
439 | warner@lothar.com**20111029194240 |
---|
440 | Ignore-this: 37c5f34927ef5aaa46e111563fa5d14a |
---|
441 | ] |
---|
442 | [small changes to test migrated trac and posthook |
---|
443 | warner@lothar.com**20111029191807 |
---|
444 | Ignore-this: 8110a6c1b4ea318528e8023ce1f75fae |
---|
445 | ] |
---|
446 | [more http->https changes |
---|
447 | warner@lothar.com**20111029190905 |
---|
448 | Ignore-this: 9d0e6ed5f24858f7742f584da50cadc0 |
---|
449 | ] |
---|
450 | [tahoe-lafs.org is now HTTPS-always. Update most URLs. |
---|
451 | warner@lothar.com**20111029183946 |
---|
452 | Ignore-this: 1d490ee1983b1ef30045a545250f18a8 |
---|
453 | ] |
---|
454 | [undo the effects of a patch I hadn't intended to commit, named "debugprint the values of blocks and hashes thereof; make the test data and the seg size small in order to make the debugprints easy to look at" |
---|
455 | zooko@zooko.com**20111028220349 |
---|
456 | Ignore-this: 6390dd943f87d4340368b1e174cba6be |
---|
457 | |
---|
458 | rolling back: |
---|
459 | |
---|
460 | Thu Sep 29 23:46:28 MDT 2011 zooko@zooko.com |
---|
461 | * debugprint the values of blocks and hashes thereof; make the test data and the seg size small in order to make the debugprints easy to look at |
---|
462 | |
---|
463 | M ./src/allmydata/mutable/publish.py -1 +2 |
---|
464 | M ./src/allmydata/mutable/retrieve.py +3 |
---|
465 | M ./src/allmydata/test/test_mutable.py -2 +2 |
---|
466 | ] |
---|
467 | [docs/about.rst: correct the description of availability to take into account that shares may not be stored on distinct servers. |
---|
468 | david-sarah@jacaranda.org**20111025132550 |
---|
469 | Ignore-this: 975fde31c73512c4c0f278182d576861 |
---|
470 | ] |
---|
471 | [debugprint the values of blocks and hashes thereof; make the test data and the seg size small in order to make the debugprints easy to look at |
---|
472 | zooko@zooko.com**20110930054628 |
---|
473 | Ignore-this: bcfedc06aeedb090dfb02440f6e6c3bc |
---|
474 | ] |
---|
475 | [S3 backend: support DevPay. Includes tests of config option, but interoperability with S3 has not been tested yet. refs #999 |
---|
476 | david-sarah@jacaranda.org**20111027215314 |
---|
477 | Ignore-this: 554870770ce7ce393d8cea195d365ab9 |
---|
478 | ] |
---|
479 | [docs/backends/S3.rst: document the requirement for the storage server to have the correct time to within 15 minutes. refs #999 |
---|
480 | david-sarah@jacaranda.org**20111025100827 |
---|
481 | Ignore-this: dee22e41bee85abe107c4a8457321ce6 |
---|
482 | ] |
---|
483 | [S3 backend: the s3.region option is unnecessary; it is only used for EC2 endpoints, and we only need an S3 one. Also simplify wording in S3.rst. refs #999 |
---|
484 | david-sarah@jacaranda.org**20111023235033 |
---|
485 | Ignore-this: b28b72e9047f996b7774e9279daadd9 |
---|
486 | ] |
---|
487 | [S3 backend: remove support for [storage]readonly option. refs #999, #1568 |
---|
488 | david-sarah@jacaranda.org**20111022045644 |
---|
489 | Ignore-this: 546eee72a9c708a7f101178fcc044261 |
---|
490 | ] |
---|
491 | [mock_s3.py: remove bucketname argument to MockS3Bucket constructor, since it is not needed. refs #999 |
---|
492 | david-sarah@jacaranda.org**20111022045341 |
---|
493 | Ignore-this: 872d91c8475e1fbbccb6fd580aad8c4e |
---|
494 | ] |
---|
495 | [test_system.py: check that there is no error output from invocations of 'tahoe debug'. refs #999 |
---|
496 | david-sarah@jacaranda.org**20111021044102 |
---|
497 | Ignore-this: 8dfb3a668bfebdcbf7f3f295d345fb98 |
---|
498 | ] |
---|
499 | [scripts/debug.py: in catalog-shares, gracefully handle the case where a share has no leases (for example because it is an S3 share). refs #999 |
---|
500 | david-sarah@jacaranda.org**20111021034138 |
---|
501 | Ignore-this: 28ce846977095e9bfcb55364e2388e70 |
---|
502 | ] |
---|
503 | [test_system.py: fix SystemWithS3Backend.test_mutable by only requiring the line specifying which nodeid the lease secrets are for when the node has a disk backend. refs #999 |
---|
504 | david-sarah@jacaranda.org**20111021032106 |
---|
505 | Ignore-this: dc5e6e6f9f7d5a898408f2070afca4a2 |
---|
506 | ] |
---|
507 | [test_system.py: ensure that subclasses of SystemTest use different test directories. refs #999 |
---|
508 | david-sarah@jacaranda.org**20111021014630 |
---|
509 | Ignore-this: 938ab8addc92dcd14fccc179ae095feb |
---|
510 | ] |
---|
511 | [test_system.py: make checks in _test_runner more picky about field names to avoid accidental suffix matches. refs #999 |
---|
512 | david-sarah@jacaranda.org**20111021014527 |
---|
513 | Ignore-this: f46c364efd86b0b40f6448bc0a95c495 |
---|
514 | ] |
---|
515 | [test_system.py: rename ServerTestWith*Backend to ServerWith*Backend, for consistency with tst_storage.py. refs #999 |
---|
516 | david-sarah@jacaranda.org**20111021011001 |
---|
517 | Ignore-this: 47435b4ef02d4267d528b3a99bb2ec07 |
---|
518 | ] |
---|
519 | [test_system.py: fix a typo. refs #999 |
---|
520 | david-sarah@jacaranda.org**20111021010846 |
---|
521 | Ignore-this: f8daf272b0266d6df6a13f88f2dd67 |
---|
522 | ] |
---|
523 | [test_system.py: enable system tests to run against S3 backend as well as disk backend. refs #999 |
---|
524 | david-sarah@jacaranda.org**20111021001632 |
---|
525 | Ignore-this: bbe5c7479a05db40165800211c68ce54 |
---|
526 | ] |
---|
527 | [Add a '[storage]backend = mock_s3' option for use by tests. Move mock_s3.py to src/allmydataa/storage/backends/s3 since it is now imported by non-test code. refs #999 |
---|
528 | david-sarah@jacaranda.org**20111021001518 |
---|
529 | Ignore-this: 8e0643a81a55b319b0f757f7da9acfd6 |
---|
530 | ] |
---|
531 | [mutable/retrieve: don't write() after we've been pauseProducer'ed |
---|
532 | Brian Warner <warner@lothar.com>**20111017002400 |
---|
533 | Ignore-this: 417880ec53285c4887f8080e1ddeedc8 |
---|
534 | |
---|
535 | This fixes a test failure found against current Twisted trunk in |
---|
536 | test_mutable.Filenode.test_retrieve_producer_mdmf (when it uses |
---|
537 | PausingAndStoppingConsumer). There must be some sort of race: I could |
---|
538 | make it fail against Twisted-11.0 if I just increased the 0.5s delay in |
---|
539 | test_download.PausingAndStoppingConsumer to about 0.6s, and could make |
---|
540 | Twisted-trunk pass by reducing it to about 0.3s . |
---|
541 | |
---|
542 | I fixed the test (as opposed to the bug) by replacing the delay with a |
---|
543 | simple reliable eventually(), and adding extra asserts to fail the test |
---|
544 | if the consumer's write() method is called while the producer is |
---|
545 | supposed to be paused |
---|
546 | |
---|
547 | The bug itself was that mutable.retrieve.Retrieve wasn't checking the |
---|
548 | "stopped" flag after resuming from a pause, and thus delivered one |
---|
549 | segment to a consumer that wasn't expecting it. I split out |
---|
550 | stopped-flag-checking to separate function, which is now called |
---|
551 | immediately after _check_for_paused(). I also cleaned up some Deferred |
---|
552 | usage and whitespace. |
---|
553 | ] |
---|
554 | [remove interpreter shbang lines from non-executables |
---|
555 | Brian Warner <warner@lothar.com>**20111014172301 |
---|
556 | Ignore-this: a1ad931ed2e4379fed9bf480382ad801 |
---|
557 | |
---|
558 | thanks to Greg Troxel for the catch |
---|
559 | ] |
---|
560 | [TAG allmydata-tahoe-1.9.0b1 |
---|
561 | warner@lothar.com**20111014055532 |
---|
562 | Ignore-this: f00238ed3d8d1f5e15b0262c4373a3c3 |
---|
563 | ] |
---|
564 | [NEWS: mention --format, bring up-to-date |
---|
565 | warner@lothar.com**20111014055500 |
---|
566 | Ignore-this: 6c70a87cd8894cee954fd2deeada61f6 |
---|
567 | ] |
---|
568 | [CLI: don't deprecate --mutable, small docs fixes. refs #1561 |
---|
569 | Brian Warner <warner@lothar.com>**20111014040002 |
---|
570 | Ignore-this: 6133c130e7060fc4240194bc08ed9c9d |
---|
571 | |
---|
572 | Also don't accept 'tahoe mkdir --format=chk'. |
---|
573 | ] |
---|
574 | [add --format= to 'tahoe put'/'mkdir', remove --mutable-type. Closes #1561 |
---|
575 | Brian Warner <warner@lothar.com>**20111014031500 |
---|
576 | Ignore-this: ac38ac429847942e6383e7374bf0e1bf |
---|
577 | ] |
---|
578 | [web/filenode.py: rely on Request.notifyFinish. Closes #1366. |
---|
579 | Brian Warner <warner@lothar.com>**20111013201219 |
---|
580 | Ignore-this: cf7677bf15cb8e469ec16c3372fdfa35 |
---|
581 | |
---|
582 | This is safe now that tahoe depends upon Twisted>=10.1, since notifyFinish |
---|
583 | first appeared in Twisted-9.0 |
---|
584 | ] |
---|
585 | [docs: fix several imprecise or inaccurate values in performance.rst |
---|
586 | zooko@zooko.com**20110508124228 |
---|
587 | Ignore-this: f1ecc5cb32eebec9760c8fc437799eb4 |
---|
588 | add cpu values for each operation |
---|
589 | sort the list of values into the same order in each operation |
---|
590 | refs #1398 |
---|
591 | ] |
---|
592 | [oops, missed a test failure |
---|
593 | Brian Warner <warner@lothar.com>**20111013163713 |
---|
594 | Ignore-this: d8cb188d8dd664e335f19b9fa342da4a |
---|
595 | ] |
---|
596 | [misc mutable-type fixes: |
---|
597 | warner@lothar.com**20111013163229 |
---|
598 | Ignore-this: ab62dc2f27aa1f793e7bd02e360ee471 |
---|
599 | |
---|
600 | * fix tahoe.cfg control of default mutable type |
---|
601 | * tolerate arbitrary case in [client]mutable.format value |
---|
602 | * small docs improvements |
---|
603 | * use get_mutable_type() as a format-is-mutable predicate |
---|
604 | * tighten up error message |
---|
605 | ] |
---|
606 | [webapi: use all-caps "SDMF"/"MDMF" acronyms in t=json response |
---|
607 | warner@lothar.com**20111013163143 |
---|
608 | Ignore-this: 945eaa5ce7f108793b0bb6cae0239965 |
---|
609 | |
---|
610 | docs: upcase examples of t=json output and format= input |
---|
611 | ] |
---|
612 | [webapi.rst: fix whitespace (detabify) t=json examples |
---|
613 | warner@lothar.com**20111013163056 |
---|
614 | Ignore-this: c095687413876507c5cc46864459c054 |
---|
615 | ] |
---|
616 | [webapi: handle format=, remove mutable-type= |
---|
617 | warner@lothar.com**20111013162951 |
---|
618 | Ignore-this: de7d9c5516385d002dbc21f31c23204c |
---|
619 | |
---|
620 | * fix CLI commands (put, mkdir) to send format=, not mutable-type= |
---|
621 | * fix tests |
---|
622 | * test_cli: fix tests that observe t=json output, don't ignore failures in |
---|
623 | 'tahoe put' |
---|
624 | * fix handling of version= to make it easier to use the default |
---|
625 | * interpret ?mutable=true&format=MDMF as MDMF, not SDMF |
---|
626 | ] |
---|
627 | [docs/frontends/webapi.rst: document the format argument |
---|
628 | kevan@isnotajoke.com**20111010025529 |
---|
629 | Ignore-this: 2a7b8d711dc369bd9a23e2853824cfb0 |
---|
630 | ] |
---|
631 | [Tests for ref #1547 |
---|
632 | david-sarah@jacaranda.org**20111002035316 |
---|
633 | Ignore-this: 933f2b6ff148523f40475fe2d2578170 |
---|
634 | ] |
---|
635 | [Change the file upload forms on directory and welcome pages to use a 3-way radio button to select immutable, SDMF, or MDMF. Add '(experimental)' to the label for creating an MDMF directory. Also improve the spacing of form elements. refs #1547 |
---|
636 | david-sarah@jacaranda.org**20111002034503 |
---|
637 | Ignore-this: 46a8b966fddc8ccaa7e70bffbd68b52f |
---|
638 | ] |
---|
639 | [test_web.py: minor cleanups, mainly to make the first argument to shouldFail tests consistent |
---|
640 | david-sarah@jacaranda.org**20111002040332 |
---|
641 | Ignore-this: 234ba793f78f112717e02755e1fa81b5 |
---|
642 | ] |
---|
643 | [Tests for ref #1552 |
---|
644 | david-sarah@jacaranda.org**20111002040036 |
---|
645 | Ignore-this: abdc5c39d90ea7f314834fff7ecd6784 |
---|
646 | ] |
---|
647 | [test_storage.py: the part of test_remove that checks non-existence of the share directory after deleting a share, is only applicable to the disk backend; but, we can check that the shareset has no overhead at that point. refs #999 |
---|
648 | david-sarah@jacaranda.org**20111020173349 |
---|
649 | Ignore-this: 8c7b93afeabf090d2615db81a4556fd6 |
---|
650 | ] |
---|
651 | [test_storage.py: reenable MutableServer.test_container_size for the S3 backend. refs #999 |
---|
652 | david-sarah@jacaranda.org**20111020115355 |
---|
653 | Ignore-this: 33a2e41ec2d3b917dc5be897ce50c152 |
---|
654 | ] |
---|
655 | [Disk backend: make sure that the size limit is checked before writing. Also, the size limit is on the data length, not the container size. refs #999 |
---|
656 | david-sarah@jacaranda.org**20111020114919 |
---|
657 | Ignore-this: 32a278af8e2a6464e193b635c7f17ff4 |
---|
658 | ] |
---|
659 | [S3 backend: the mutable size limit should be on the data length, not the container size. Also simplify by removing _check_size_limit. refs #999 |
---|
660 | david-sarah@jacaranda.org**20111020114529 |
---|
661 | Ignore-this: ef64c7f68969ff550f81af2f17e5b14a |
---|
662 | ] |
---|
663 | [S3 backend: new_length argument to MutableS3Share.writev should only be able to truncate the share (after applying writes), not extend it. refs #999 |
---|
664 | david-sarah@jacaranda.org**20111020114356 |
---|
665 | Ignore-this: 3da64b01af2ea86aa1b73d9e3af65024 |
---|
666 | ] |
---|
667 | [S3 backend: make precondition failures show more information. refs #999 |
---|
668 | david-sarah@jacaranda.org**20111020111611 |
---|
669 | Ignore-this: bb2fc7ad6962e2a4f394eaf5cde1795d |
---|
670 | ] |
---|
671 | [S3 backend: make sure that the container size limit is checked before writing. refs #999 |
---|
672 | david-sarah@jacaranda.org**20111020111519 |
---|
673 | Ignore-this: add18e2273a84d75bd491a13c6f6451a |
---|
674 | ] |
---|
675 | [test_storage.py: reduce duplicated code by factoring 'create' methods into CreateS3Backend and CreateDiskBackend classes. refs #999 |
---|
676 | david-sarah@jacaranda.org**20111020111350 |
---|
677 | Ignore-this: 1362efb0293bc7e62fafd9f1227c47d9 |
---|
678 | ] |
---|
679 | [S3 backend: finish implementation of mutable shares. refs #999 |
---|
680 | david-sarah@jacaranda.org**20111020030522 |
---|
681 | Ignore-this: 53bf3fdc4d243069880b39295601af06 |
---|
682 | ] |
---|
683 | [test_storage.py: move the test_container_size test to MutableServerWithDiskBackend for now, because it tries to create a very large container which will wedge your machine. refs #999 |
---|
684 | david-sarah@jacaranda.org**20111020030447 |
---|
685 | Ignore-this: 62f2b5df800bf1ab631853e8ad4a4267 |
---|
686 | ] |
---|
687 | [Disk backend: fix incorrect arguments in a call to create_mutable_disk_share. refs #999 |
---|
688 | david-sarah@jacaranda.org**20111020030301 |
---|
689 | Ignore-this: ec4496f4a0cbb32eb5f9d6d32cc0221d |
---|
690 | ] |
---|
691 | [storage/backends/disk/mutable.py: correct a typo. refs #999 |
---|
692 | david-sarah@jacaranda.org**20111020012427 |
---|
693 | Ignore-this: af896e2496c15e06d1eec6c0af49b695 |
---|
694 | ] |
---|
695 | [Enable mutable tests for S3 backend (they all fail, as expected). refs #999 |
---|
696 | david-sarah@jacaranda.org**20111019061735 |
---|
697 | Ignore-this: f058dba13bd4f1d4273739d2823605f |
---|
698 | ] |
---|
699 | [S3 backend: remove max_space option. refs #999 |
---|
700 | david-sarah@jacaranda.org**20111018224057 |
---|
701 | Ignore-this: 6fc56d5ea43dae4ac9604a7cf15e7ce6 |
---|
702 | ] |
---|
703 | [test_storage.py, test_crawler.py: change 'bucket' terminology to 'shareset' where appropriate. refs #999 |
---|
704 | david-sarah@jacaranda.org**20111018183242 |
---|
705 | Ignore-this: b8cf782836d1558fc99ff13fa08b2b9f |
---|
706 | ] |
---|
707 | [Add some __repr__ methods. refs #999 |
---|
708 | david-sarah@jacaranda.org**20111018064409 |
---|
709 | Ignore-this: 9b901ee8aaaa9f9895f6a3b4e5f41a21 |
---|
710 | ] |
---|
711 | [Fix race conditions in crawler tests. (storage.LeaseCrawler.test_unpredictable_future may still be racy.) refs #999 |
---|
712 | david-sarah@jacaranda.org**20111018064303 |
---|
713 | Ignore-this: 58b2791250d14f7e8a6284190d7872e8 |
---|
714 | ] |
---|
715 | [Allow crawlers and storage servers to use a deterministic clock, for testing. We do not yet take advantage of this in tests. refs #999 |
---|
716 | david-sarah@jacaranda.org**20111018063926 |
---|
717 | Ignore-this: 171bf7275a978a93108b0835d06834ea |
---|
718 | ] |
---|
719 | [Change IShareSet.get_shares[_synchronous] to return a pair (list of share objects, set of corrupt shnums). This is necessary to allow crawlers to record but skip over corrupt shares. This patch also changes the behaviour of storage servers to ignore corrupt shares on read, which may or may not be what we want. Note that the S3 backend does not yet report corrupt shares. refs #999 |
---|
720 | david-sarah@jacaranda.org**20111018063423 |
---|
721 | Ignore-this: 35abee65334aa3a92471266f5789f452 |
---|
722 | ] |
---|
723 | [test_storage.py: cleanup to style of test_limited_history to match other tests. refs #999 |
---|
724 | david-sarah@jacaranda.org**20111016044311 |
---|
725 | Ignore-this: 3024764ffb419917eeeb3ecd554fb421 |
---|
726 | ] |
---|
727 | [Change accesses of ._sharehomedir on a disk shareset to _get_sharedir(). refs #999 |
---|
728 | david-sarah@jacaranda.org**20111016044229 |
---|
729 | Ignore-this: 5b2b9e11f56f0af0588c69ca930f60fd |
---|
730 | ] |
---|
731 | [Disk backend: make sure that disk shares with a storageindex of None (as sometimes created by test code) can be printed using __repr__. refs #999 |
---|
732 | david-sarah@jacaranda.org**20111016035131 |
---|
733 | Ignore-this: a811b53c20fdde5ad60471c5e4961a24 |
---|
734 | ] |
---|
735 | [scripts/debug.py: fix stale code in describe_share that had not been updated for changes in share interfaces. refs #999 |
---|
736 | david-sarah@jacaranda.org**20111016034913 |
---|
737 | Ignore-this: 7f2469392b9e6fc64c354ce5a5568a68 |
---|
738 | ] |
---|
739 | [test_storage.py: fix a bug in _backdate_leases (it was returning too early). refs #999 |
---|
740 | david-sarah@jacaranda.org**20111016014038 |
---|
741 | Ignore-this: 658cf2e2c0dc87032988f1d4db62f267 |
---|
742 | ] |
---|
743 | [Undo partial asyncification of crawlers, and enable crawlers only for the disk backend. refs #999 |
---|
744 | david-sarah@jacaranda.org**20111014061902 |
---|
745 | Ignore-this: ce7303610878b1b051cf54604796bdde |
---|
746 | ] |
---|
747 | [test_storage.py: fix two bugs in test_no_st_blocks -- the _cleanup function was being called too early, and we needed to treat directories as using no space in order for the configured-sharebytes == configured-diskbytes check to be correct. refs #999 |
---|
748 | david-sarah@jacaranda.org**20111014025840 |
---|
749 | Ignore-this: a20434e28eda165bed2021f0dafa676c |
---|
750 | ] |
---|
751 | [test_storage.py: print more info when checks fail. refs #999 |
---|
752 | david-sarah@jacaranda.org**20111013234159 |
---|
753 | Ignore-this: 2989f30c24362ee6a80a7f8f3d5aad9 |
---|
754 | ] |
---|
755 | [test_storage.py: remove some redundant coercions to bool. refs #999 |
---|
756 | david-sarah@jacaranda.org**20111013233520 |
---|
757 | Ignore-this: 3fa9baaf7e41831a24b8cfa0ef5ec5e4 |
---|
758 | ] |
---|
759 | [test_storage: in test_no_st_blocks, print the rec 'dict' if checking one of its fields fails. refs #999 |
---|
760 | david-sarah@jacaranda.org**20111013232802 |
---|
761 | Ignore-this: cf18a119d80f11b1ba8681c4285c0198 |
---|
762 | ] |
---|
763 | [test_storage: fix some typos introduced when asyncifying test_immutable_leases. refs #999 |
---|
764 | david-sarah@jacaranda.org**20111013232618 |
---|
765 | Ignore-this: 28a5e1377d7198191d5771e09826af5b |
---|
766 | ] |
---|
767 | [test_storage: rename the two test_leases methods to ServerTest.test_immutable_leases and MutableServer.test_mutable_leases. refs #999 |
---|
768 | david-sarah@jacaranda.org**20111013232538 |
---|
769 | Ignore-this: 7a3ccfd237db7a3c5053fe90c3bed1f3 |
---|
770 | ] |
---|
771 | [test_storage.py: fix a typo (d vs d2) in test_remove_incoming. refs #999 |
---|
772 | david-sarah@jacaranda.org**20111013222822 |
---|
773 | Ignore-this: 71ad69489698865748cd32bc2c8b2fc1 |
---|
774 | ] |
---|
775 | [docs/backends/S3.rst: note that storage servers should use different buckets. refs #999 |
---|
776 | david-sarah@jacaranda.org**20111013050647 |
---|
777 | Ignore-this: fec8d3bf114bbcf20165a5850aa25aac |
---|
778 | ] |
---|
779 | [S3 backend: keep track of incoming shares, so that the storage server can avoid creating BucketWriters for shnums that have an incoming share. refs #999 |
---|
780 | david-sarah@jacaranda.org**20111013035040 |
---|
781 | Ignore-this: f1c33357553d68748f970c0c9e19d538 |
---|
782 | ] |
---|
783 | [test_storage.py: test_read_old_share and test_write_and_read_share should only expect to be able to read input share data. refs #999 |
---|
784 | david-sarah@jacaranda.org**20111013032825 |
---|
785 | Ignore-this: bec4a26f13f105cc84261f2e1b028302 |
---|
786 | ] |
---|
787 | [misc/check-interfaces.py: print a warning if a .pyc or .pyo file exists without a corresponding .py file. |
---|
788 | david-sarah@jacaranda.org**20111012233609 |
---|
789 | Ignore-this: 35f04939360c6d3b1e8e0c2e9e712d80 |
---|
790 | ] |
---|
791 | [storage/backends/base.py: allow readv to work for both mutable and immutable shares. refs #999 |
---|
792 | david-sarah@jacaranda.org**20111012232802 |
---|
793 | Ignore-this: a266704981739e7c1217f352aee153fe |
---|
794 | ] |
---|
795 | [S3 backend: correct list_objects to list_all_objects in IS3Bucket. refs #999 |
---|
796 | david-sarah@jacaranda.org**20111012232713 |
---|
797 | Ignore-this: 7f9dc7946e9866f71e16f3a595f0218e |
---|
798 | ] |
---|
799 | [Null backend: make NullShareSet inherit from ShareSet, which should implement readv correctly. Remove its implementation of testv_and_readv_and_writev since the one from ShareSet should work (if it doesn't that would be a separate bug). refs #999 |
---|
800 | david-sarah@jacaranda.org**20111012232600 |
---|
801 | Ignore-this: 404757cc6f7e29c2b927258af31d55ce |
---|
802 | ] |
---|
803 | [Remove test_backends.py, since all its tests are now redundant with tests in test_storage.py or test_client.py. refs #999 |
---|
804 | david-sarah@jacaranda.org**20111012232316 |
---|
805 | Ignore-this: f601a8165058773075ce80d96586b0d9 |
---|
806 | ] |
---|
807 | [test_storage.py: add test_write_and_read_share and test_read_old_share originally from test_backends.py. refs #999 |
---|
808 | david-sarah@jacaranda.org**20111012232124 |
---|
809 | Ignore-this: 805cd42094d3948ffdf957f44e0d146d |
---|
810 | ] |
---|
811 | [test_download.py: fix and reenable Corruption.test_each_byte. Add a comment noting that catalog_detection = True has bitrotted. refs #999 |
---|
812 | david-sarah@jacaranda.org**20111012041219 |
---|
813 | Ignore-this: b9fa9ce7406811cd5a9d4a49666b1ab0 |
---|
814 | ] |
---|
815 | [no_network.py: fix delete_all_shares. refs #999 |
---|
816 | david-sarah@jacaranda.org**20111012033458 |
---|
817 | Ignore-this: bfe9225562454f153a921277b43ac848 |
---|
818 | ] |
---|
819 | [S3 backend: fix corruption advisories and listing of shares for mock S3 bucket. refs #999 |
---|
820 | david-sarah@jacaranda.org**20111012033443 |
---|
821 | Ignore-this: 9d655501062888be6ee391e426c90a13 |
---|
822 | ] |
---|
823 | [test_storage.py: asyncify some more tests, and fix create methods. refs #999 |
---|
824 | david-sarah@jacaranda.org**20111012025739 |
---|
825 | Ignore-this: 1574d8175917665f44d278d13f815bb9 |
---|
826 | ] |
---|
827 | [test_storage.py: add a test that we can create a share, exercising the backend's get_share and get_shares methods. This may explicate particular kinds of backend failure better than the existing tests. refs #999 |
---|
828 | david-sarah@jacaranda.org**20111012025514 |
---|
829 | Ignore-this: f52983e4f3d96ea26ef25856d4cc92ce |
---|
830 | ] |
---|
831 | [test_storage.py: Move test_seek to its own class, since it is independent of the backend. Also move test_reserved_space to ServerWithDiskBackend, since reserved_space is specific to that backend. refs #999 |
---|
832 | david-sarah@jacaranda.org**20111012025149 |
---|
833 | Ignore-this: 281de8befe51e24cd638886fb5063cd2 |
---|
834 | ] |
---|
835 | [util/deferredutil.py: remove unneeded utility functions. refs #999 |
---|
836 | david-sarah@jacaranda.org**20111012024440 |
---|
837 | Ignore-this: 17380afd9079442785d0cb78876c7fd5 |
---|
838 | ] |
---|
839 | [Move configuration of each backend into the backend itself. refs #999 |
---|
840 | david-sarah@jacaranda.org**20111012014004 |
---|
841 | Ignore-this: c337c43e4c4a05617de62f4acf7119d0 |
---|
842 | ] |
---|
843 | [test_storage.py: fix test failures in MDMFProxies. refs #999 |
---|
844 | david-sarah@jacaranda.org**20111012000848 |
---|
845 | Ignore-this: 798f2a4e960ee444e401a10748afeb08 |
---|
846 | ] |
---|
847 | [test_storage.py: cosmetics. refs #999 |
---|
848 | david-sarah@jacaranda.org**20111012000442 |
---|
849 | Ignore-this: d3514fa8d69f38d3b45204e2224152d5 |
---|
850 | ] |
---|
851 | [storage/backends/disk/disk_backend.py: trivial fix to a comment. #refs 999 |
---|
852 | david-sarah@jacaranda.org**20111011165704 |
---|
853 | Ignore-this: b9031b01ef643cb973a41af277d941c0 |
---|
854 | ] |
---|
855 | [check-miscaptures.py: report the number of files that were not analysed due to syntax errors (and don't count them in the number of suspicious captures). refs #1555 |
---|
856 | david-sarah@jacaranda.org**20111009050301 |
---|
857 | Ignore-this: 62ee03f4b8a96c292e75c097ad87d52e |
---|
858 | ] |
---|
859 | [check-miscaptures.py: handle corner cases around default arguments correctly. Also make a minor optimization when there are no assigned variables to consider. refs #1555 |
---|
860 | david-sarah@jacaranda.org**20111009045023 |
---|
861 | Ignore-this: f49ece515620081da1d745ae6da19d21 |
---|
862 | ] |
---|
863 | [check-miscaptures.py: Python doesn't really have declarations; report the topmost assignment. refs #1555 |
---|
864 | david-sarah@jacaranda.org**20111009044800 |
---|
865 | Ignore-this: 4905c9dfe7726f433333e216a6760a4b |
---|
866 | ] |
---|
867 | [check-miscaptures.py: handle destructuring function arguments correctly. refs #1555 |
---|
868 | david-sarah@jacaranda.org**20111009044710 |
---|
869 | Ignore-this: f9de7d95e94446507a206c88d3f98a23 |
---|
870 | ] |
---|
871 | [check-miscaptures.py: check while loops and list comprehensions as well as for loops. Also fix a pyflakes warning. refs #1555 |
---|
872 | david-sarah@jacaranda.org**20111009044022 |
---|
873 | Ignore-this: 6526e4e315ca6461b1fbc2da5568e444 |
---|
874 | ] |
---|
875 | [Fix pyflakes warnings in misc/ directories other than misc/build_helpers. refs #1557 |
---|
876 | david-sarah@jacaranda.org**20111007033031 |
---|
877 | Ignore-this: 7daf5862469732d8cabc355266622b74 |
---|
878 | ] |
---|
879 | [Makefile: include misc/ directories other than misc/build_helpers in SOURCES. refs #1557 |
---|
880 | david-sarah@jacaranda.org**20111007032958 |
---|
881 | Ignore-this: 31376ec01401df7972e83341dc65aa05 |
---|
882 | ] |
---|
883 | [util/happinessutil.py: suppress a warning from check-miscaptures. (It is not a bug because the capturing function is only used by a 'map' in the same iteration.) refs #1556 |
---|
884 | david-sarah@jacaranda.org**20111009052106 |
---|
885 | Ignore-this: 16a62844bae083800d6b6a7334abc9bc |
---|
886 | ] |
---|
887 | [misc/coding_tools/make-canary-files.py: fix a suspicious capture reported by check-miscaptures (although it happens not to be a bug because the callback will be processed synchronously). refs #1556 |
---|
888 | david-sarah@jacaranda.org**20111009050531 |
---|
889 | Ignore-this: 2d1a696955a4c1f7d9c649d4ecefd7de |
---|
890 | ] |
---|
891 | [Fix two pyflakes warnings about unused imports. refs #999 |
---|
892 | david-sarah@jacaranda.org**20111011051745 |
---|
893 | Ignore-this: 23c17f8eb36a30f4e3b662a778bc4bb7 |
---|
894 | ] |
---|
895 | [test_storage.py: fix asyncification of three tests in MDMFProxies. refs #999 |
---|
896 | david-sarah@jacaranda.org**20111011051319 |
---|
897 | Ignore-this: a746cc2ed1f4fbcf95bad7624a0544e9 |
---|
898 | ] |
---|
899 | [test_storage.py: fix a trivial bug in MDMFProxies.test_write. refs #999 |
---|
900 | david-sarah@jacaranda.org**20111011045645 |
---|
901 | Ignore-this: 943c6da82eca7b2d247cfb7d75afc9b7 |
---|
902 | ] |
---|
903 | [test_storage.py: fix a typo in test_null_backend. refs #999 |
---|
904 | david-sarah@jacaranda.org**20111011045133 |
---|
905 | Ignore-this: ddf00d1d65182d520904168827c792c4 |
---|
906 | ] |
---|
907 | [test_storage.py: fix a bug introduced by asyncification of test_allocate. refs #999 |
---|
908 | david-sarah@jacaranda.org**20111011044131 |
---|
909 | Ignore-this: 1460b8a713081c8bbe4d298ab39f264f |
---|
910 | ] |
---|
911 | [test_storage.py: make MutableServer.test_leases pass. refs #999 |
---|
912 | david-sarah@jacaranda.org**20111011002917 |
---|
913 | Ignore-this: dce275f6508a7cfe31c0af82483eea97 |
---|
914 | ] |
---|
915 | [test/common.py: in shouldFail and shouldHTTPError, when the raised exception does not include the expected substring (or, for shouldHTTPError, when the status code is wrong), mention which test that happened in. |
---|
916 | david-sarah@jacaranda.org**20111011002227 |
---|
917 | Ignore-this: 836cabe9ef774617122905b214a0b8e8 |
---|
918 | ] |
---|
919 | [test/mock_s3.py: fix a bug that was causing us to use the wrong directory for share files. refs #999 |
---|
920 | david-sarah@jacaranda.org**20111010231344 |
---|
921 | Ignore-this: bc63757f5dd8d31643bd9919f2ecd98c |
---|
922 | ] |
---|
923 | [Add fileutil.fp_list(fp) which is like fp.children(), but returns [] in case of a directory that does not exist. Use it to simplify the disk backend and mock S3 bucket implementations. refs #999 |
---|
924 | david-sarah@jacaranda.org**20111010231146 |
---|
925 | Ignore-this: fd4fa8b1446fc7e5c03631b4092c20cc |
---|
926 | ] |
---|
927 | [S3 backend: move the implementation of list_objects from s3_bucket.py to s3_common.py, making s3_bucket.py simpler and list_objects easier to test independently. refs #999 |
---|
928 | david-sarah@jacaranda.org**20111010230751 |
---|
929 | Ignore-this: 2f9a8f75671e87d2caba2ac6c6d4bdfd |
---|
930 | ] |
---|
931 | [Make unlink() on share objects consistently idempotent. refs #999 |
---|
932 | david-sarah@jacaranda.org**20111010204417 |
---|
933 | Ignore-this: 1dc559fdd89b7135cec64ffca62fc96a |
---|
934 | ] |
---|
935 | [Null backend: implement unlink and readv more correctly. refs #999 |
---|
936 | david-sarah@jacaranda.org**20111010204404 |
---|
937 | Ignore-this: 3386bc2a1cd0ff6268def31c5c5ce3a1 |
---|
938 | ] |
---|
939 | [test_download.py: fix test_download_failover (it should tolerate non-existing shares in _clobber_most_shares). refs #999 |
---|
940 | david-sarah@jacaranda.org**20111010204142 |
---|
941 | Ignore-this: db648ffcbd5e37cf236f49ecc1e720fc |
---|
942 | ] |
---|
943 | [interfaces.py: resolve another conflict with trunk. refs #999 |
---|
944 | david-sarah@jacaranda.org**20111010200903 |
---|
945 | Ignore-this: 163067eab9a5c71e12c6cac058a03832 |
---|
946 | ] |
---|
947 | [interfaces.py: fix a typo in the name of IMutableSlotWriter.put_encprivkey. refs #393 |
---|
948 | david-sarah@jacaranda.org**20111010194642 |
---|
949 | Ignore-this: eb65439e8dd891c169b43b1679c29238 |
---|
950 | ] |
---|
951 | [interfaces.py: resolve conflicts with trunk. refs #999 |
---|
952 | david-sarah@jacaranda.org**20111010195634 |
---|
953 | Ignore-this: 8e02c7933392491ba3deb678c5bc5876 |
---|
954 | ] |
---|
955 | [interfaces.py: remove get_extension_params and set_extension_params methods from IMutableFileURI. refs #393, #1526 |
---|
956 | david-sarah@jacaranda.org**20111010194842 |
---|
957 | Ignore-this: 6012be6fcc12f560aeeeac0be2d337d1 |
---|
958 | ] |
---|
959 | [Instrument some assertions to report the failed values. refs #999 |
---|
960 | david-sarah@jacaranda.org**20111010191733 |
---|
961 | Ignore-this: 4e886faa5909bf703af8228194ae759c |
---|
962 | ] |
---|
963 | [test_storage.py: move some tests that were not applicable to all backends out of ServerTest. refs #999 |
---|
964 | david-sarah@jacaranda.org**20111010181214 |
---|
965 | Ignore-this: d2310591c71c4d2d2c5ff4e316f15542 |
---|
966 | ] |
---|
967 | [storage/backends/disk/mutable.py: put back a correct assertion that had been disabled. storage/base.py: fix the bug that was causing that assertion to fail. refs #999 |
---|
968 | david-sarah@jacaranda.org**20111009232142 |
---|
969 | Ignore-this: dbb644f596bf3c42575b9d9fadc2c9d9 |
---|
970 | ] |
---|
971 | [test_storage.py: fix a trivial bug in LeaseCrawler.test_unpredictable_future. refs #999 |
---|
972 | david-sarah@jacaranda.org**20111007195753 |
---|
973 | Ignore-this: 357539b4cf8b7455c1787ac591b0ee23 |
---|
974 | ] |
---|
975 | [Asyncification, and resolution of conflicts. #999 |
---|
976 | david-sarah@jacaranda.org**20111007193418 |
---|
977 | Ignore-this: 29b15345aecd3adeef2c2392ca90d4ff |
---|
978 | ] |
---|
979 | [disk backend: size methods should no longer return Deferreds. refs #999 |
---|
980 | david-sarah@jacaranda.org**20111007193327 |
---|
981 | Ignore-this: 8d32ffdbb81d88a30352f344e385feff |
---|
982 | ] |
---|
983 | [Ensure that helper classes are not treated as test cases. Also fix a missing mixin. refs #999 |
---|
984 | david-sarah@jacaranda.org**20111007081439 |
---|
985 | Ignore-this: a222110248f378d91c232799bcd5d3a6 |
---|
986 | ] |
---|
987 | [More miscapture fixes. refs #999 |
---|
988 | david-sarah@jacaranda.org**20111007080916 |
---|
989 | Ignore-this: 85004d4e3a609a2ef70a38164897ff02 |
---|
990 | ] |
---|
991 | [Partially asyncify crawlers. refs #999 |
---|
992 | david-sarah@jacaranda.org**20111007080657 |
---|
993 | Ignore-this: f6a15b81592bfff33ccf09301dbdfca1 |
---|
994 | ] |
---|
995 | [unlink() on share objects should be idempotent. refs #999 |
---|
996 | david-sarah@jacaranda.org**20111007080615 |
---|
997 | Ignore-this: ff87d0b30fc81dd8e90bc5c6852955eb |
---|
998 | ] |
---|
999 | [Make sure that get_size etc. work correctly on an ImmutableS3ShareForWriting after it has been closed. Also simplify by removing the _end_offset attribute. refs #999 |
---|
1000 | david-sarah@jacaranda.org**20111007080342 |
---|
1001 | Ignore-this: 9d8ce463daee2ef1b7dc33aca70a0379 |
---|
1002 | ] |
---|
1003 | [Remove an inapplicable comment. refs #999 |
---|
1004 | david-sarah@jacaranda.org**20111007080128 |
---|
1005 | Ignore-this: 1c7fae3ffc9ac412ad9ab6e411ef9be7 |
---|
1006 | ] |
---|
1007 | [Remove unused load method and _loaded attribute from s3/mutable.py. refs #999 |
---|
1008 | david-sarah@jacaranda.org**20111007080051 |
---|
1009 | Ignore-this: b92ed543f7dcf56df0510de8515230e1 |
---|
1010 | ] |
---|
1011 | [Fix a duplicate umid. refs #999 |
---|
1012 | david-sarah@jacaranda.org**20111007080001 |
---|
1013 | Ignore-this: bb9519d15220ab7350731abf19038c2e |
---|
1014 | ] |
---|
1015 | [Fix some miscapture bugs. refs #999 |
---|
1016 | david-sarah@jacaranda.org**20111007075915 |
---|
1017 | Ignore-this: 88dc8ec49e93e5d62c2abb8f496706cb |
---|
1018 | ] |
---|
1019 | [Add a _get_sharedir() method on IShareSet, implemented by the disk and mock S3 backends, for use by tests. refs #999 |
---|
1020 | david-sarah@jacaranda.org**20111007075645 |
---|
1021 | Ignore-this: 9e9ce0d244785da8ac4a3c0aa948ddce |
---|
1022 | ] |
---|
1023 | [Add misc/coding_tools/check-miscaptures.py to detect incorrect captures of variables declared in a for loop, and a 'make check-miscaptures' Makefile target to run it. (It is also run by 'make code-checks'.) This is a rewritten version that reports much fewer false positives, by determining captured variables more accurately. fixes #1555 |
---|
1024 | david-sarah@jacaranda.org**20111007074121 |
---|
1025 | Ignore-this: 51318e9678d132c374ea557ab955e79e |
---|
1026 | ] |
---|
1027 | [Add a get_share method to IShareSet, to get a specific share. refs #999 |
---|
1028 | david-sarah@jacaranda.org**20111007075426 |
---|
1029 | Ignore-this: 493ddfe83414208f08a22b9f327d6b69 |
---|
1030 | ] |
---|
1031 | [Fix some more potential bugs in test code exposed by check-miscaptures.py. refs #1556 |
---|
1032 | david-sarah@jacaranda.org**20111007033847 |
---|
1033 | Ignore-this: aec8a543e9b5c3563b60692c647439a8 |
---|
1034 | ] |
---|
1035 | [Fix some potential bugs (in non-test code) exposed by check-miscaptures.py. refs #1556 |
---|
1036 | david-sarah@jacaranda.org**20111007032444 |
---|
1037 | Ignore-this: bac9ed65b21c2136c4db2482b3c093f7 |
---|
1038 | ] |
---|
1039 | [Fix some potential bugs in test code exposed by check-miscaptures.py. refs #1556 |
---|
1040 | david-sarah@jacaranda.org**20111007023443 |
---|
1041 | Ignore-this: e48b2c2d200521d6f28c737994ce3a2a |
---|
1042 | ] |
---|
1043 | [misc/simulators/hashbasedsig.py: simplify by removing unnecessary local function that captured a variable declared in a for loop (this was not a bug, but the code was unclear). Also fix a pyflakes warning about an import. refs #1556 |
---|
1044 | david-sarah@jacaranda.org**20111007023001 |
---|
1045 | Ignore-this: 446c94efae02ded5e85eb3335ca5e69 |
---|
1046 | ] |
---|
1047 | [immutable/literal.py: add pauseProducing method to LiteralProducer. refs #1537 |
---|
1048 | david-sarah@jacaranda.org**20111003195239 |
---|
1049 | Ignore-this: 385ee3379a2819381937357f1eac457 |
---|
1050 | ] |
---|
1051 | [docs: fix the rst formatting of COPYING.TGPPL.rst |
---|
1052 | zooko@zooko.com**20111003043333 |
---|
1053 | Ignore-this: c5fbc83f4a3db81a0c95b27053c463c5 |
---|
1054 | Now it renders correctly both on trac and with rst2html --verbose from docutils v0.8.1. |
---|
1055 | ] |
---|
1056 | [MDMF: remove extension fields from caps, tolerate arbitrary ones. Fixes #1526 |
---|
1057 | Brian Warner <warner@lothar.com>**20111001233553 |
---|
1058 | Ignore-this: 335e1690aef1146a2c0b8d8c18c1cb21 |
---|
1059 | |
---|
1060 | The filecaps used to be produced with hints for 'k' and segsize, but they |
---|
1061 | weren't actually used, and doing so had the potential to limit how we change |
---|
1062 | those filecaps in the future. Also the parsing code had some problems dealing |
---|
1063 | with other numbers of extensions. Removing the existing fields and making the |
---|
1064 | parser tolerate (and ignore) extra ones makes MDMF more future-proof. |
---|
1065 | ] |
---|
1066 | [More asyncification of tests. Also fix some bugs due to capture of slots in for loops. refs #999 |
---|
1067 | david-sarah@jacaranda.org**20111004010813 |
---|
1068 | Ignore-this: 15bf68748ab737d1edc24552ce192f8b |
---|
1069 | ] |
---|
1070 | [s3/s3_common.py: remove incorrect 'self' arguments from interface methods in IS3Bucket. refs #999 |
---|
1071 | david-sarah@jacaranda.org**20111004010745 |
---|
1072 | Ignore-this: d5f66be90062292164d3f017aef3d6f4 |
---|
1073 | ] |
---|
1074 | [no_network.py: Clean up whitespace around code changed by previous patch. |
---|
1075 | david-sarah@jacaranda.org**20111004010407 |
---|
1076 | Ignore-this: 647ec8a9346dca1a41212ab250619b72 |
---|
1077 | ] |
---|
1078 | [no_network.py: Fix potential bugs in some tests due to capture of slots in for loops. |
---|
1079 | david-sarah@jacaranda.org**20111004010231 |
---|
1080 | Ignore-this: 9c496877613a3befd54979e5de6e63d2 |
---|
1081 | ] |
---|
1082 | [Add a share._get_filepath() method used by tests to get the FilePath for a share, rather than accessing the _home attribute. refs #999 |
---|
1083 | david-sarah@jacaranda.org**20111004004604 |
---|
1084 | Ignore-this: ec873e356b7ebd74f52336dd92dea8aa |
---|
1085 | ] |
---|
1086 | [s3/immutable.py: minor simplification in ImmutableS3ShareForReading. refs #999 |
---|
1087 | david-sarah@jacaranda.org**20110930212714 |
---|
1088 | Ignore-this: d71e2466231f695891a6b8d1df945687 |
---|
1089 | ] |
---|
1090 | [free up the buffer used to hold data while it is being written to ImmutableS3ShareForWriting |
---|
1091 | zooko@zooko.com**20110930060238 |
---|
1092 | Ignore-this: 603b2c8bb1f4656bdde5876ac95aa5c9 |
---|
1093 | ] |
---|
1094 | [FIX THE BUG! |
---|
1095 | zooko@zooko.com**20110930032140 |
---|
1096 | Ignore-this: fd32c4ac3054ae6fc2b9433f113b2fd6 |
---|
1097 | ] |
---|
1098 | [fix another bug in ImmutableShareS3ForWriting |
---|
1099 | zooko@zooko.com**20110930025701 |
---|
1100 | Ignore-this: 6ad7bd17111b12d96991172fbe04d76 |
---|
1101 | ] |
---|
1102 | [really fix the bug in ImmutableS3ShareForWriting |
---|
1103 | zooko@zooko.com**20110930023501 |
---|
1104 | Ignore-this: 36a7804433cab667566d119af7223425 |
---|
1105 | ] |
---|
1106 | [Add dummy lease methods to immutable S3 share objects. refs #999 |
---|
1107 | david-sarah@jacaranda.org**20110930021703 |
---|
1108 | Ignore-this: 7c21f140020edd64027c71be0f32c2b2 |
---|
1109 | ] |
---|
1110 | [fix bug in ImmutableS3ShareForWriting |
---|
1111 | zooko@zooko.com**20110930020535 |
---|
1112 | Ignore-this: f7f63d2fc2086903a195cc000f306b88 |
---|
1113 | ] |
---|
1114 | [test_storage.py: Server class uses ShouldFailMixin. refs #999 |
---|
1115 | david-sarah@jacaranda.org**20110930001349 |
---|
1116 | Ignore-this: 4cf1ef21bbf85d7fe52ab660f59ff237 |
---|
1117 | ] |
---|
1118 | [mock_s3.py: fix bug in MockS3Error constructor. refs #999 |
---|
1119 | david-sarah@jacaranda.org**20110930001326 |
---|
1120 | Ignore-this: 4d0ebd9120fc8e99b15924c671cd0927 |
---|
1121 | ] |
---|
1122 | [return res |
---|
1123 | zooko@zooko.com**20110930000446 |
---|
1124 | Ignore-this: 6f73b3e389612c73c6590007229ad8e |
---|
1125 | ] |
---|
1126 | [fix doc to say that secret access key goes into private/s3secret |
---|
1127 | zooko@zooko.com**20110930000256 |
---|
1128 | Ignore-this: c054ff78041a05b3177b3c1b3e9d4ae7 |
---|
1129 | ] |
---|
1130 | [s3_bucket.py: fix an incorrect argument signature for list_objects. refs #999 |
---|
1131 | david-sarah@jacaranda.org**20110929235646 |
---|
1132 | Ignore-this: f02e3a23f28fadef71c70fd0b1592ba6 |
---|
1133 | ] |
---|
1134 | [Make sure that the statedir is created before trying to use it. refs #999 |
---|
1135 | david-sarah@jacaranda.org**20110929234845 |
---|
1136 | Ignore-this: b5f0529b1f2a5b5250c2ee2091cbe24b |
---|
1137 | ] |
---|
1138 | [test/mock_s3.py: fix a typo. refs #999 |
---|
1139 | david-sarah@jacaranda.org**20110929234808 |
---|
1140 | Ignore-this: ccdff591f9b301f7f486454a4366c2b3 |
---|
1141 | ] |
---|
1142 | [test_storage.py: only run test_large_share on the disk backend. (It will wedge your machine if run on the S3 backend with MockS3Bucket.) refs #999 |
---|
1143 | david-sarah@jacaranda.org**20110929234725 |
---|
1144 | Ignore-this: ffa7c08458ee0159455b6f1cd1c3ff48 |
---|
1145 | ] |
---|
1146 | [Fixes to S3 config parsing, with tests. refs #999 |
---|
1147 | david-sarah@jacaranda.org**20110929225014 |
---|
1148 | Ignore-this: 19aa5a3e9575b0c2f77b19fe1bcbafcb |
---|
1149 | ] |
---|
1150 | [Add missing src/allmydata/test/mock_s3.py (mock implementation of an S3 bucket). refs #999 |
---|
1151 | david-sarah@jacaranda.org**20110929212229 |
---|
1152 | Ignore-this: a1433555d4bb0b8b36fb80feb122187b |
---|
1153 | ] |
---|
1154 | [Make the s3.region option case-insensitive (txaws expects uppercase). refs #999 |
---|
1155 | david-sarah@jacaranda.org**20110929211606 |
---|
1156 | Ignore-this: def83d3fa368c315573e5f1bad5ee7f9 |
---|
1157 | ] |
---|
1158 | [Fix missing add_lease method on ImmutableS3ShareForWriting. refs #999 |
---|
1159 | david-sarah@jacaranda.org**20110929211524 |
---|
1160 | Ignore-this: 832f0d94f912b17006b0dbaab94846b6 |
---|
1161 | ] |
---|
1162 | [Add missing src/allmydata/storage/backends/s3/s3_bucket.py. refs #999 |
---|
1163 | david-sarah@jacaranda.org**20110929211416 |
---|
1164 | Ignore-this: aa783c5d7c32af172b5c5a3d62c3faf2 |
---|
1165 | ] |
---|
1166 | [scripts/debug.py: repair stale code, and use the get_disk_share function defined by disk_backend instead of duplicating it. refs #999 |
---|
1167 | david-sarah@jacaranda.org**20110929211252 |
---|
1168 | Ignore-this: 5dda548e8703e35f0c103467346627ef |
---|
1169 | ] |
---|
1170 | [Fix a bug in the new config parsing code when reserved_space is not present for a disk backend. refs #999 |
---|
1171 | david-sarah@jacaranda.org**20110929211106 |
---|
1172 | Ignore-this: b05bd3c4ff7d90b5ecb1e6a54717b735 |
---|
1173 | ] |
---|
1174 | [test_storage.py: Avoid using the same working directory for different test classes. refs #999 |
---|
1175 | david-sarah@jacaranda.org**20110929210954 |
---|
1176 | Ignore-this: 3a01048e941c61c603eec603d064bebb |
---|
1177 | ] |
---|
1178 | [More asycification of tests. refs #999 |
---|
1179 | david-sarah@jacaranda.org**20110929210727 |
---|
1180 | Ignore-this: 87690a62f89a07e63b859c24948d262d |
---|
1181 | ] |
---|
1182 | [Fix a bug in disk_backend.py. refs #999 |
---|
1183 | david-sarah@jacaranda.org**20110929182511 |
---|
1184 | Ignore-this: 4f9a62adf03fc3221e46b54f7a4a960b |
---|
1185 | ] |
---|
1186 | [docs/backends/S3.rst: add s3.region option. Also minor changes to configuration.rst. refs #999 |
---|
1187 | david-sarah@jacaranda.org**20110929182442 |
---|
1188 | Ignore-this: 2992ead5f8d9357a0d9b912b1e0bd932 |
---|
1189 | ] |
---|
1190 | [Updates to test_backends.py. refs #999 |
---|
1191 | david-sarah@jacaranda.org**20110929182016 |
---|
1192 | Ignore-this: 3bac19179308e6f27e54c45c7cad4dc6 |
---|
1193 | ] |
---|
1194 | [Implement selection of backends from tahoe.cfg options. Also remove the discard_storage parameter from the disk backend. refs #999 |
---|
1195 | david-sarah@jacaranda.org**20110929181754 |
---|
1196 | Ignore-this: c7f78e7db98326723033f44e56858683 |
---|
1197 | ] |
---|
1198 | [test_storage.py: fix an incorrect argument in construction of S3Backend. refs #999 |
---|
1199 | david-sarah@jacaranda.org**20110929081331 |
---|
1200 | Ignore-this: 33ad68e0d3a15e3fa1dda90df1b8365c |
---|
1201 | ] |
---|
1202 | [Move the implementation of lease methods to disk_backend.py, and add stub implementations in s3_backend.py that raise NotImplementedError. Fix the lease methods in the disk backend to be synchronous. Also make sure that get_shares() returns a Deferred list sorted by shnum. refs #999 |
---|
1203 | david-sarah@jacaranda.org**20110929081132 |
---|
1204 | Ignore-this: 32cbad21c7236360e2e8e84a07f88597 |
---|
1205 | ] |
---|
1206 | [Make the make_bucket_writer method synchronous. refs #999 |
---|
1207 | david-sarah@jacaranda.org**20110929080712 |
---|
1208 | Ignore-this: 1de299e791baf1cf1e2a8d4b593e8ba1 |
---|
1209 | ] |
---|
1210 | [Add get_s3_share function in place of S3ShareSet._load_shares. refs #999 |
---|
1211 | david-sarah@jacaranda.org**20110929080530 |
---|
1212 | Ignore-this: f99665979612e42ecefa293bda0db5de |
---|
1213 | ] |
---|
1214 | [Complete the splitting of the immutable IStoredShare interface into IShareForReading and IShareForWriting. Also remove the 'load' method from shares, and other minor interface changes. refs #999 |
---|
1215 | david-sarah@jacaranda.org**20110929075544 |
---|
1216 | Ignore-this: 8c923051869cf162d9840770b4a08573 |
---|
1217 | ] |
---|
1218 | [split Immutable S3 Share into for-reading and for-writing classes, remove unused (as far as I can tell) methods, use cStringIO for buffering the writes |
---|
1219 | zooko@zooko.com**20110929055038 |
---|
1220 | Ignore-this: 82d8c4488a8548936285a975ef5a1559 |
---|
1221 | TODO: define the interfaces that the new classes claim to implement |
---|
1222 | ] |
---|
1223 | [Comment out an assertion that was causing all mutable tests to fail. THIS IS PROBABLY WRONG. refs #999 |
---|
1224 | david-sarah@jacaranda.org**20110929041110 |
---|
1225 | Ignore-this: 1e402d51ec021405b191757a37b35a94 |
---|
1226 | ] |
---|
1227 | [Fix some incorrect or incomplete asyncifications. refs #999 |
---|
1228 | david-sarah@jacaranda.org**20110929040800 |
---|
1229 | Ignore-this: ed70e9af2190217c84fd2e8c41de4c7e |
---|
1230 | ] |
---|
1231 | [Add some debugging assertions that share objects are not Deferred. refs #999 |
---|
1232 | david-sarah@jacaranda.org**20110929040657 |
---|
1233 | Ignore-this: 5c7f56a146f5a3c353c6fe5b090a7dc5 |
---|
1234 | ] |
---|
1235 | [scripts/debug.py: take account of some API changes. refs #999 |
---|
1236 | david-sarah@jacaranda.org**20110929040539 |
---|
1237 | Ignore-this: 933c3d44b993c041105038c7d4514386 |
---|
1238 | ] |
---|
1239 | [Make get_sharesets_for_prefix synchronous for the time being (returning a Deferred breaks crawlers). refs #999 |
---|
1240 | david-sarah@jacaranda.org**20110929040136 |
---|
1241 | Ignore-this: e94b93d4f3f6173d9de80c4121b68748 |
---|
1242 | ] |
---|
1243 | [More asyncification of tests. refs #999 |
---|
1244 | david-sarah@jacaranda.org**20110929035644 |
---|
1245 | Ignore-this: 28b650a9ef593b3fd7524f6cb562ad71 |
---|
1246 | ] |
---|
1247 | [no_network.py: add some assertions that the things we wrap using LocalWrapper are not Deferred (which is not supported and causes hard-to-debug failures). refs #999 |
---|
1248 | david-sarah@jacaranda.org**20110929035537 |
---|
1249 | Ignore-this: fd103fbbb54fbbc17b9517c78313120e |
---|
1250 | ] |
---|
1251 | [Add some debugging code (switched off) to no_network.py. When switched on (PRINT_TRACEBACKS = True), this prints the stack trace associated with the caller of a remote method, mitigating the problem that the traceback normally gets lost at that point. TODO: think of a better way to preserve the traceback that can be enabled by default. refs #999 |
---|
1252 | david-sarah@jacaranda.org**20110929035341 |
---|
1253 | Ignore-this: 2a593ec3ee450719b241ea8d60a0f320 |
---|
1254 | ] |
---|
1255 | [Use factory functions to create share objects rather than their constructors, to allow the factory to return a Deferred. Also change some methods on IShareSet and IStoredShare to return Deferreds. Refactor some constants associated with mutable shares. refs #999 |
---|
1256 | david-sarah@jacaranda.org**20110928052324 |
---|
1257 | Ignore-this: bce0ac02f475bcf31b0e3b340cd91198 |
---|
1258 | ] |
---|
1259 | [Work in progress for asyncifying the backend interface (necessary to call txaws methods that return Deferreds). This is incomplete so lots of tests fail. refs #999 |
---|
1260 | david-sarah@jacaranda.org**20110927073903 |
---|
1261 | Ignore-this: ebdc6c06c3baa9460af128ec8f5b418b |
---|
1262 | ] |
---|
1263 | [mutable/publish.py: don't crash if there are no writers in _report_verinfo. refs #999 |
---|
1264 | david-sarah@jacaranda.org**20110928014126 |
---|
1265 | Ignore-this: 9999c82bb3057f755a6e86baeafb8a39 |
---|
1266 | ] |
---|
1267 | [scripts/debug.py: fix incorrect arguments to dump_immutable_share. refs #999 |
---|
1268 | david-sarah@jacaranda.org**20110928014049 |
---|
1269 | Ignore-this: 1078ee3f06a2f36b29e0cf694d2851cd |
---|
1270 | ] |
---|
1271 | [test_system.py: more debug output for a failing check in test_filesystem. refs #999 |
---|
1272 | david-sarah@jacaranda.org**20110928014019 |
---|
1273 | Ignore-this: e8bb77b8f7db12db7cd69efb6e0ed130 |
---|
1274 | ] |
---|
1275 | [test_system.py: incorrect arguments were being passed to the constructor for MutableDiskShare. refs #999 |
---|
1276 | david-sarah@jacaranda.org**20110928013857 |
---|
1277 | Ignore-this: e9719f74e7e073e37537f9a71614b8a0 |
---|
1278 | ] |
---|
1279 | [Undo an incompatible change to RIStorageServer. refs #999 |
---|
1280 | david-sarah@jacaranda.org**20110928013729 |
---|
1281 | Ignore-this: bea4c0f6cb71202fab942cd846eab693 |
---|
1282 | ] |
---|
1283 | [mutable/publish.py: resolve conflicting patches. refs #999 |
---|
1284 | david-sarah@jacaranda.org**20110927073530 |
---|
1285 | Ignore-this: 6154a113723dc93148151288bd032439 |
---|
1286 | ] |
---|
1287 | [test_storage.py: fix test_no_st_blocks. refs #999 |
---|
1288 | david-sarah@jacaranda.org**20110927072848 |
---|
1289 | Ignore-this: 5f12b784920f87d09c97c676d0afa6f8 |
---|
1290 | ] |
---|
1291 | [Cleanups to S3 backend (not including Deferred changes). refs #999 |
---|
1292 | david-sarah@jacaranda.org**20110927071855 |
---|
1293 | Ignore-this: f0dca788190d92b1edb1ee1498fb34dc |
---|
1294 | ] |
---|
1295 | [Cleanups to disk backend. refs #999 |
---|
1296 | david-sarah@jacaranda.org**20110927071544 |
---|
1297 | Ignore-this: e9d3fd0e85aaf301c04342fffdc8f26 |
---|
1298 | ] |
---|
1299 | [test_storage.py: fix test_status_bad_disk_stats. refs #999 |
---|
1300 | david-sarah@jacaranda.org**20110927071403 |
---|
1301 | Ignore-this: 6108fee69a60962be2df2ad11b483a11 |
---|
1302 | ] |
---|
1303 | [util/deferredutil.py: add some utilities for asynchronous iteration. refs #999 |
---|
1304 | david-sarah@jacaranda.org**20110927070947 |
---|
1305 | Ignore-this: ac4946c1e5779ea64b85a1a420d34c9e |
---|
1306 | ] |
---|
1307 | [Add 'has-immutable-readv' to server version information. refs #999 |
---|
1308 | david-sarah@jacaranda.org**20110923220935 |
---|
1309 | Ignore-this: c3c4358f2ab8ac503f99c968ace8efcf |
---|
1310 | ] |
---|
1311 | [Minor cleanup to disk backend. refs #999 |
---|
1312 | david-sarah@jacaranda.org**20110923205510 |
---|
1313 | Ignore-this: 79f92d7c2edb14cfedb167247c3f0d08 |
---|
1314 | ] |
---|
1315 | [Update the S3 backend. refs #999 |
---|
1316 | david-sarah@jacaranda.org**20110923205345 |
---|
1317 | Ignore-this: 5ca623a17e09ddad4cab2f51b49aec0a |
---|
1318 | ] |
---|
1319 | [Update the null backend to take into account interface changes. Also, it now records which shares are present, but not their contents. refs #999 |
---|
1320 | david-sarah@jacaranda.org**20110923205219 |
---|
1321 | Ignore-this: 42a23d7e253255003dc63facea783251 |
---|
1322 | ] |
---|
1323 | [Make EmptyShare.check_testv a simple function. refs #999 |
---|
1324 | david-sarah@jacaranda.org**20110923204945 |
---|
1325 | Ignore-this: d0132c085f40c39815fa920b77fc39ab |
---|
1326 | ] |
---|
1327 | [The cancel secret needs to be unique, even if it isn't explicitly provided. refs #999 |
---|
1328 | david-sarah@jacaranda.org**20110923204914 |
---|
1329 | Ignore-this: 6c44bb908dd4c0cdc59506b2d87a47b0 |
---|
1330 | ] |
---|
1331 | [Implement readv for immutable shares. refs #999 |
---|
1332 | david-sarah@jacaranda.org**20110923204611 |
---|
1333 | Ignore-this: 24f14b663051169d66293020e40c5a05 |
---|
1334 | ] |
---|
1335 | [Remove redundant si_s argument from check_write_enabler. refs #999 |
---|
1336 | david-sarah@jacaranda.org**20110923204425 |
---|
1337 | Ignore-this: 25be760118dbce2eb661137f7d46dd20 |
---|
1338 | ] |
---|
1339 | [interfaces.py: add fill_in_space_stats method to IStorageBackend. refs #999 |
---|
1340 | david-sarah@jacaranda.org**20110923203723 |
---|
1341 | Ignore-this: 59371c150532055939794fed6c77dcb6 |
---|
1342 | ] |
---|
1343 | [Add incomplete S3 backend. refs #999 |
---|
1344 | david-sarah@jacaranda.org**20110923041314 |
---|
1345 | Ignore-this: b48df65699e3926dcbb87b5f755cdbf1 |
---|
1346 | ] |
---|
1347 | [Move advise_corrupt_share to allmydata/storage/backends/base.py, since it will be common to the disk and S3 backends. refs #999 |
---|
1348 | david-sarah@jacaranda.org**20110923041115 |
---|
1349 | Ignore-this: 782b49f243bd98fcb6c249f8e40fd9f |
---|
1350 | ] |
---|
1351 | [A few comment cleanups. refs #999 |
---|
1352 | david-sarah@jacaranda.org**20110923041003 |
---|
1353 | Ignore-this: f574b4a3954b6946016646011ad15edf |
---|
1354 | ] |
---|
1355 | [mutable/publish.py: elements should not be removed from a dictionary while it is being iterated over. refs #393 |
---|
1356 | david-sarah@jacaranda.org**20110923040825 |
---|
1357 | Ignore-this: 135da94bd344db6ccd59a576b54901c1 |
---|
1358 | ] |
---|
1359 | [Blank line cleanups. |
---|
1360 | david-sarah@jacaranda.org**20110923012044 |
---|
1361 | Ignore-this: 8e1c4ecb5b0c65673af35872876a8591 |
---|
1362 | ] |
---|
1363 | [Reinstate the cancel_lease methods of ImmutableDiskShare and MutableDiskShare, since they are needed for lease expiry. refs #999 |
---|
1364 | david-sarah@jacaranda.org**20110922183323 |
---|
1365 | Ignore-this: a11fb0dd0078ff627cb727fc769ec848 |
---|
1366 | ] |
---|
1367 | [Fix most of the crawler tests. refs #999 |
---|
1368 | david-sarah@jacaranda.org**20110922183008 |
---|
1369 | Ignore-this: 116c0848008f3989ba78d87c07ec783c |
---|
1370 | ] |
---|
1371 | [Fix some more test failures. refs #999 |
---|
1372 | david-sarah@jacaranda.org**20110922045451 |
---|
1373 | Ignore-this: b726193cbd03a7c3d343f6e4a0f33ee7 |
---|
1374 | ] |
---|
1375 | [uri.py: resolve a conflict between trunk and the pluggable-backends patches. refs #999 |
---|
1376 | david-sarah@jacaranda.org**20110921222038 |
---|
1377 | Ignore-this: ffeeab60d8e71a6a29a002d024d76fcf |
---|
1378 | ] |
---|
1379 | [Fix more shallow bugs, mainly FilePathification. Also, remove the max_space_per_bucket parameter from BucketWriter since it can be obtained from the _max_size attribute of the share (via a new get_allocated_size() accessor). refs #999 |
---|
1380 | david-sarah@jacaranda.org**20110921221421 |
---|
1381 | Ignore-this: 600e3ccef8533aa43442fa576c7d88cf |
---|
1382 | ] |
---|
1383 | [More fixes to tests needed for pluggable backends. refs #999 |
---|
1384 | david-sarah@jacaranda.org**20110921184649 |
---|
1385 | Ignore-this: 9be0d3a98e350fd4e17a07d2c00bb4ca |
---|
1386 | ] |
---|
1387 | [docs/backends/S3.rst, disk.rst: describe type of space settings as 'quantity of space', not 'str'. refs #999 |
---|
1388 | david-sarah@jacaranda.org**20110921031705 |
---|
1389 | Ignore-this: a74ed8e01b0a1ab5f07a1487d7bf138 |
---|
1390 | ] |
---|
1391 | [docs/backends/S3.rst: remove Issues section. refs #999 |
---|
1392 | david-sarah@jacaranda.org**20110921031625 |
---|
1393 | Ignore-this: c83d8f52b790bc32488869e6ee1df8c2 |
---|
1394 | ] |
---|
1395 | [Fix some incorrect attribute accesses. refs #999 |
---|
1396 | david-sarah@jacaranda.org**20110921031207 |
---|
1397 | Ignore-this: f1ea4c3ea191f6d4b719afaebd2b2bcd |
---|
1398 | ] |
---|
1399 | [docs/backends: document the configuration options for the pluggable backends scheme. refs #999 |
---|
1400 | david-sarah@jacaranda.org**20110920171737 |
---|
1401 | Ignore-this: 5947e864682a43cb04e557334cda7c19 |
---|
1402 | ] |
---|
1403 | [Work-in-progress, includes fix to bug involving BucketWriter. refs #999 |
---|
1404 | david-sarah@jacaranda.org**20110920033803 |
---|
1405 | Ignore-this: 64e9e019421454e4d08141d10b6e4eed |
---|
1406 | ] |
---|
1407 | [Pluggable backends -- all other changes. refs #999 |
---|
1408 | david-sarah@jacaranda.org**20110919233256 |
---|
1409 | Ignore-this: 1a77b6b5d178b32a9b914b699ba7e957 |
---|
1410 | ] |
---|
1411 | [Pluggable backends -- new and moved files, changes to moved files. refs #999 |
---|
1412 | david-sarah@jacaranda.org**20110919232926 |
---|
1413 | Ignore-this: ec5d2d1362a092d919e84327d3092424 |
---|
1414 | ] |
---|
1415 | [interfaces.py: 'which -> that' grammar cleanup. |
---|
1416 | david-sarah@jacaranda.org**20110825003217 |
---|
1417 | Ignore-this: a3e15f3676de1b346ad78aabdfb8cac6 |
---|
1418 | ] |
---|
1419 | [test/test_runner.py: BinTahoe.test_path has rare nondeterministic failures; this patch probably fixes a problem where the actual cause of failure is masked by a string conversion error. |
---|
1420 | david-sarah@jacaranda.org**20110927225336 |
---|
1421 | Ignore-this: 6f1ad68004194cc9cea55ace3745e4af |
---|
1422 | ] |
---|
1423 | [docs/configuration.rst: add section about the types of node, and clarify when setting web.port enables web-API service. fixes #1444 |
---|
1424 | zooko@zooko.com**20110926203801 |
---|
1425 | Ignore-this: ab94d470c68e720101a7ff3c207a719e |
---|
1426 | ] |
---|
1427 | [TAG allmydata-tahoe-1.9.0a2 |
---|
1428 | warner@lothar.com**20110925234811 |
---|
1429 | Ignore-this: e9649c58f9c9017a7d55008938dba64f |
---|
1430 | ] |
---|
1431 | Patch bundle hash: |
---|
1432 | 1c1ccb4330b0a9ef240741001e0bb26cc5da8250 |
---|