Ticket #1678: 1678-incident-on-truncate.darcs.patch

File 1678-incident-on-truncate.darcs.patch, 71.6 KB (added by davidsarah, at 2012-02-16T18:15:24Z)

S3 backend: make truncated GET Bucket responses trigger an incident. Does not include tests. refs #1678 [This depends on the patch for #1589 due to an import in s3_common.py needed by both.]

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