1 | 2 patches for repository zooko@tahoe-lafs.org:/home/source/darcs/tahoe-lafs/trunk: |
---|
2 | |
---|
3 | Fri Mar 25 14:35:14 MDT 2011 wilcoxjg@gmail.com |
---|
4 | * storage: new mocking tests of storage server read and write |
---|
5 | There are already tests of read and functionality in test_storage.py, but those tests let the code under test use a real filesystem whereas these tests mock all file system calls. |
---|
6 | |
---|
7 | Wed Apr 6 14:38:12 MDT 2011 zooko@zooko.com |
---|
8 | * a bunch of incomplete work on #999, to be unrecorded in arctic's repo |
---|
9 | |
---|
10 | New patches: |
---|
11 | |
---|
12 | [storage: new mocking tests of storage server read and write |
---|
13 | wilcoxjg@gmail.com**20110325203514 |
---|
14 | Ignore-this: df65c3c4f061dd1516f88662023fdb41 |
---|
15 | There are already tests of read and functionality in test_storage.py, but those tests let the code under test use a real filesystem whereas these tests mock all file system calls. |
---|
16 | ] { |
---|
17 | addfile ./src/allmydata/test/test_server.py |
---|
18 | hunk ./src/allmydata/test/test_server.py 1 |
---|
19 | +from twisted.trial import unittest |
---|
20 | + |
---|
21 | +from StringIO import StringIO |
---|
22 | + |
---|
23 | +from allmydata.test.common_util import ReallyEqualMixin |
---|
24 | + |
---|
25 | +import mock |
---|
26 | + |
---|
27 | +# This is the code that we're going to be testing. |
---|
28 | +from allmydata.storage.server import StorageServer |
---|
29 | + |
---|
30 | +# The following share file contents was generated with |
---|
31 | +# storage.immutable.ShareFile from Tahoe-LAFS v1.8.2 |
---|
32 | +# with share data == 'a'. |
---|
33 | +share_data = 'a\x00\x00\x00\x00xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy\x00(\xde\x80' |
---|
34 | +share_file_data = '\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01' + share_data |
---|
35 | + |
---|
36 | +sharefname = 'testdir/shares/or/orsxg5dtorxxeylhmvpws3temv4a/0' |
---|
37 | + |
---|
38 | +class TestServerConstruction(unittest.TestCase, ReallyEqualMixin): |
---|
39 | + @mock.patch('__builtin__.open') |
---|
40 | + def test_create_server(self, mockopen): |
---|
41 | + """ This tests whether a server instance can be constructed. """ |
---|
42 | + |
---|
43 | + def call_open(fname, mode): |
---|
44 | + if fname == 'testdir/bucket_counter.state': |
---|
45 | + raise IOError(2, "No such file or directory: 'testdir/bucket_counter.state'") |
---|
46 | + elif fname == 'testdir/lease_checker.state': |
---|
47 | + raise IOError(2, "No such file or directory: 'testdir/lease_checker.state'") |
---|
48 | + elif fname == 'testdir/lease_checker.history': |
---|
49 | + return StringIO() |
---|
50 | + mockopen.side_effect = call_open |
---|
51 | + |
---|
52 | + # Now begin the test. |
---|
53 | + s = StorageServer('testdir', 'testnodeidxxxxxxxxxx') |
---|
54 | + |
---|
55 | + # You passed! |
---|
56 | + |
---|
57 | +class TestServer(unittest.TestCase, ReallyEqualMixin): |
---|
58 | + @mock.patch('__builtin__.open') |
---|
59 | + def setUp(self, mockopen): |
---|
60 | + def call_open(fname, mode): |
---|
61 | + if fname == 'testdir/bucket_counter.state': |
---|
62 | + raise IOError(2, "No such file or directory: 'testdir/bucket_counter.state'") |
---|
63 | + elif fname == 'testdir/lease_checker.state': |
---|
64 | + raise IOError(2, "No such file or directory: 'testdir/lease_checker.state'") |
---|
65 | + elif fname == 'testdir/lease_checker.history': |
---|
66 | + return StringIO() |
---|
67 | + mockopen.side_effect = call_open |
---|
68 | + |
---|
69 | + self.s = StorageServer('testdir', 'testnodeidxxxxxxxxxx') |
---|
70 | + |
---|
71 | + |
---|
72 | + @mock.patch('time.time') |
---|
73 | + @mock.patch('os.mkdir') |
---|
74 | + @mock.patch('__builtin__.open') |
---|
75 | + @mock.patch('os.listdir') |
---|
76 | + @mock.patch('os.path.isdir') |
---|
77 | + def test_write_share(self, mockisdir, mocklistdir, mockopen, mockmkdir, mocktime): |
---|
78 | + """Handle a report of corruption.""" |
---|
79 | + |
---|
80 | + def call_listdir(dirname): |
---|
81 | + self.failUnlessReallyEqual(dirname, 'testdir/shares/or/orsxg5dtorxxeylhmvpws3temv4a') |
---|
82 | + raise OSError(2, "No such file or directory: 'testdir/shares/or/orsxg5dtorxxeylhmvpws3temv4a'") |
---|
83 | + |
---|
84 | + mocklistdir.side_effect = call_listdir |
---|
85 | + |
---|
86 | + class MockFile: |
---|
87 | + def __init__(self): |
---|
88 | + self.buffer = '' |
---|
89 | + self.pos = 0 |
---|
90 | + def write(self, instring): |
---|
91 | + begin = self.pos |
---|
92 | + padlen = begin - len(self.buffer) |
---|
93 | + if padlen > 0: |
---|
94 | + self.buffer += '\x00' * padlen |
---|
95 | + end = self.pos + len(instring) |
---|
96 | + self.buffer = self.buffer[:begin]+instring+self.buffer[end:] |
---|
97 | + self.pos = end |
---|
98 | + def close(self): |
---|
99 | + pass |
---|
100 | + def seek(self, pos): |
---|
101 | + self.pos = pos |
---|
102 | + def read(self, numberbytes): |
---|
103 | + return self.buffer[self.pos:self.pos+numberbytes] |
---|
104 | + def tell(self): |
---|
105 | + return self.pos |
---|
106 | + |
---|
107 | + mocktime.return_value = 0 |
---|
108 | + |
---|
109 | + sharefile = MockFile() |
---|
110 | + def call_open(fname, mode): |
---|
111 | + self.failUnlessReallyEqual(fname, 'testdir/shares/incoming/or/orsxg5dtorxxeylhmvpws3temv4a/0' ) |
---|
112 | + return sharefile |
---|
113 | + |
---|
114 | + mockopen.side_effect = call_open |
---|
115 | + # Now begin the test. |
---|
116 | + alreadygot, bs = self.s.remote_allocate_buckets('teststorage_index', 'x'*32, 'y'*32, set((0,)), 1, mock.Mock()) |
---|
117 | + print bs |
---|
118 | + bs[0].remote_write(0, 'a') |
---|
119 | + self.failUnlessReallyEqual(sharefile.buffer, share_file_data) |
---|
120 | + |
---|
121 | + |
---|
122 | + @mock.patch('os.path.exists') |
---|
123 | + @mock.patch('os.path.getsize') |
---|
124 | + @mock.patch('__builtin__.open') |
---|
125 | + @mock.patch('os.listdir') |
---|
126 | + def test_read_share(self, mocklistdir, mockopen, mockgetsize, mockexists): |
---|
127 | + """ This tests whether the code correctly finds and reads |
---|
128 | + shares written out by old (Tahoe-LAFS <= v1.8.2) |
---|
129 | + servers. There is a similar test in test_download, but that one |
---|
130 | + is from the perspective of the client and exercises a deeper |
---|
131 | + stack of code. This one is for exercising just the |
---|
132 | + StorageServer object. """ |
---|
133 | + |
---|
134 | + def call_listdir(dirname): |
---|
135 | + self.failUnlessReallyEqual(dirname,'testdir/shares/or/orsxg5dtorxxeylhmvpws3temv4a') |
---|
136 | + return ['0'] |
---|
137 | + |
---|
138 | + mocklistdir.side_effect = call_listdir |
---|
139 | + |
---|
140 | + def call_open(fname, mode): |
---|
141 | + self.failUnlessReallyEqual(fname, sharefname) |
---|
142 | + self.failUnless('r' in mode, mode) |
---|
143 | + self.failUnless('b' in mode, mode) |
---|
144 | + |
---|
145 | + return StringIO(share_file_data) |
---|
146 | + mockopen.side_effect = call_open |
---|
147 | + |
---|
148 | + datalen = len(share_file_data) |
---|
149 | + def call_getsize(fname): |
---|
150 | + self.failUnlessReallyEqual(fname, sharefname) |
---|
151 | + return datalen |
---|
152 | + mockgetsize.side_effect = call_getsize |
---|
153 | + |
---|
154 | + def call_exists(fname): |
---|
155 | + self.failUnlessReallyEqual(fname, sharefname) |
---|
156 | + return True |
---|
157 | + mockexists.side_effect = call_exists |
---|
158 | + |
---|
159 | + # Now begin the test. |
---|
160 | + bs = self.s.remote_get_buckets('teststorage_index') |
---|
161 | + |
---|
162 | + self.failUnlessEqual(len(bs), 1) |
---|
163 | + b = bs[0] |
---|
164 | + self.failUnlessReallyEqual(b.remote_read(0, datalen), share_data) |
---|
165 | + # If you try to read past the end you get the as much data as is there. |
---|
166 | + self.failUnlessReallyEqual(b.remote_read(0, datalen+20), share_data) |
---|
167 | + # If you start reading past the end of the file you get the empty string. |
---|
168 | + self.failUnlessReallyEqual(b.remote_read(datalen+1, 3), '') |
---|
169 | } |
---|
170 | [a bunch of incomplete work on #999, to be unrecorded in arctic's repo |
---|
171 | zooko@zooko.com**20110406203812 |
---|
172 | Ignore-this: bece4514b60b4a972e57fa50c87c9d0 |
---|
173 | ] { |
---|
174 | move ./src/allmydata/test/test_server.py ./src/allmydata/test/test_backends.py |
---|
175 | hunk ./docs/configuration.rst 582 |
---|
176 | [storage] |
---|
177 | enabled = True |
---|
178 | readonly = True |
---|
179 | - sizelimit = 10000000000 |
---|
180 | |
---|
181 | [helper] |
---|
182 | enabled = True |
---|
183 | hunk ./docs/garbage-collection.rst 16 |
---|
184 | |
---|
185 | When a file or directory in the virtual filesystem is no longer referenced, |
---|
186 | the space that its shares occupied on each storage server can be freed, |
---|
187 | -making room for other shares. Tahoe currently uses a garbage collection |
---|
188 | +making room for other shares. Tahoe uses a garbage collection |
---|
189 | ("GC") mechanism to implement this space-reclamation process. Each share has |
---|
190 | one or more "leases", which are managed by clients who want the |
---|
191 | file/directory to be retained. The storage server accepts each share for a |
---|
192 | hunk ./docs/garbage-collection.rst 34 |
---|
193 | the "lease-tradeoffs.svg" diagram to get an idea for the tradeoffs involved. |
---|
194 | If lease renewal occurs quickly and with 100% reliability, than any renewal |
---|
195 | time that is shorter than the lease duration will suffice, but a larger ratio |
---|
196 | -of duration-over-renewal-time will be more robust in the face of occasional |
---|
197 | +of lease duration to renewal time will be more robust in the face of occasional |
---|
198 | delays or failures. |
---|
199 | |
---|
200 | The current recommended values for a small Tahoe grid are to renew the leases |
---|
201 | replace ./docs/garbage-collection.rst [A-Za-z_0-9\-\.] Tahoe Tahoe-LAFS |
---|
202 | hunk ./src/allmydata/client.py 228 |
---|
203 | sharetypes.append("mutable") |
---|
204 | expiration_sharetypes = tuple(sharetypes) |
---|
205 | |
---|
206 | + if self.get_config("storage", "backend", "filesystem") == "filesystem": |
---|
207 | + xyz |
---|
208 | + xyz |
---|
209 | ss = StorageServer(storedir, self.nodeid, |
---|
210 | reserved_space=reserved, |
---|
211 | discard_storage=discard, |
---|
212 | hunk ./src/allmydata/interfaces.py 250 |
---|
213 | store that on disk. |
---|
214 | """ |
---|
215 | |
---|
216 | +class IStorageBackend(Interface): |
---|
217 | + """ |
---|
218 | + Objects of this kind live on the server side and are used by the |
---|
219 | + storage server object. |
---|
220 | + """ |
---|
221 | + def get_available_space(self, reserved_space): |
---|
222 | + """ Returns available space for share storage in bytes, or |
---|
223 | + None this information is not available or if the available |
---|
224 | + space is unlimited. |
---|
225 | + |
---|
226 | + If the backend is configured for read-only mode then this will |
---|
227 | + return 0. |
---|
228 | + |
---|
229 | + reserved_space is how many bytes to subtract from the answer, so |
---|
230 | + you can pass how many bytes you would like to leave unused on this |
---|
231 | + filesystem as reserved_space. """ |
---|
232 | + |
---|
233 | class IStorageBucketWriter(Interface): |
---|
234 | """ |
---|
235 | Objects of this kind live on the client side. |
---|
236 | hunk ./src/allmydata/interfaces.py 2393 |
---|
237 | |
---|
238 | class EmptyPathnameComponentError(Exception): |
---|
239 | """The webapi disallows empty pathname components.""" |
---|
240 | + |
---|
241 | +class IShareStore(Interface): |
---|
242 | + pass |
---|
243 | + |
---|
244 | hunk ./src/allmydata/storage/crawler.py 68 |
---|
245 | cpu_slice = 1.0 # use up to 1.0 seconds before yielding |
---|
246 | minimum_cycle_time = 300 # don't run a cycle faster than this |
---|
247 | |
---|
248 | - def __init__(self, server, statefile, allowed_cpu_percentage=None): |
---|
249 | + def __init__(self, backend, statefile, allowed_cpu_percentage=None): |
---|
250 | service.MultiService.__init__(self) |
---|
251 | if allowed_cpu_percentage is not None: |
---|
252 | self.allowed_cpu_percentage = allowed_cpu_percentage |
---|
253 | hunk ./src/allmydata/storage/crawler.py 72 |
---|
254 | - self.server = server |
---|
255 | - self.sharedir = server.sharedir |
---|
256 | - self.statefile = statefile |
---|
257 | + self.backend = backend |
---|
258 | self.prefixes = [si_b2a(struct.pack(">H", i << (16-10)))[:2] |
---|
259 | for i in range(2**10)] |
---|
260 | self.prefixes.sort() |
---|
261 | hunk ./src/allmydata/storage/crawler.py 446 |
---|
262 | |
---|
263 | minimum_cycle_time = 60*60 # we don't need this more than once an hour |
---|
264 | |
---|
265 | - def __init__(self, server, statefile, num_sample_prefixes=1): |
---|
266 | - ShareCrawler.__init__(self, server, statefile) |
---|
267 | + def __init__(self, statefile, num_sample_prefixes=1): |
---|
268 | + ShareCrawler.__init__(self, statefile) |
---|
269 | self.num_sample_prefixes = num_sample_prefixes |
---|
270 | |
---|
271 | def add_initial_state(self): |
---|
272 | hunk ./src/allmydata/storage/expirer.py 15 |
---|
273 | removed. |
---|
274 | |
---|
275 | I collect statistics on the leases and make these available to a web |
---|
276 | - status page, including:: |
---|
277 | + status page, including: |
---|
278 | |
---|
279 | Space recovered during this cycle-so-far: |
---|
280 | actual (only if expiration_enabled=True): |
---|
281 | hunk ./src/allmydata/storage/expirer.py 51 |
---|
282 | slow_start = 360 # wait 6 minutes after startup |
---|
283 | minimum_cycle_time = 12*60*60 # not more than twice per day |
---|
284 | |
---|
285 | - def __init__(self, server, statefile, historyfile, |
---|
286 | + def __init__(self, statefile, historyfile, |
---|
287 | expiration_enabled, mode, |
---|
288 | override_lease_duration, # used if expiration_mode=="age" |
---|
289 | cutoff_date, # used if expiration_mode=="cutoff-date" |
---|
290 | hunk ./src/allmydata/storage/expirer.py 71 |
---|
291 | else: |
---|
292 | raise ValueError("GC mode '%s' must be 'age' or 'cutoff-date'" % mode) |
---|
293 | self.sharetypes_to_expire = sharetypes |
---|
294 | - ShareCrawler.__init__(self, server, statefile) |
---|
295 | + ShareCrawler.__init__(self, statefile) |
---|
296 | |
---|
297 | def add_initial_state(self): |
---|
298 | # we fill ["cycle-to-date"] here (even though they will be reset in |
---|
299 | hunk ./src/allmydata/storage/immutable.py 43 |
---|
300 | sharetype = "immutable" |
---|
301 | |
---|
302 | def __init__(self, filename, max_size=None, create=False): |
---|
303 | - """ If max_size is not None then I won't allow more than max_size to be written to me. If create=True and max_size must not be None. """ |
---|
304 | + """ If max_size is not None then I won't allow more than |
---|
305 | + max_size to be written to me. If create=True then max_size |
---|
306 | + must not be None. """ |
---|
307 | precondition((max_size is not None) or (not create), max_size, create) |
---|
308 | self.home = filename |
---|
309 | self._max_size = max_size |
---|
310 | hunk ./src/allmydata/storage/immutable.py 86 |
---|
311 | |
---|
312 | def read_share_data(self, offset, length): |
---|
313 | precondition(offset >= 0) |
---|
314 | - # reads beyond the end of the data are truncated. Reads that start |
---|
315 | - # beyond the end of the data return an empty string. I wonder why |
---|
316 | - # Python doesn't do the following computation for me? |
---|
317 | + # Reads beyond the end of the data are truncated. Reads that start |
---|
318 | + # beyond the end of the data return an empty string. |
---|
319 | seekpos = self._data_offset+offset |
---|
320 | fsize = os.path.getsize(self.home) |
---|
321 | actuallength = max(0, min(length, fsize-seekpos)) |
---|
322 | hunk ./src/allmydata/storage/server.py 7 |
---|
323 | from twisted.application import service |
---|
324 | |
---|
325 | from zope.interface import implements |
---|
326 | -from allmydata.interfaces import RIStorageServer, IStatsProducer |
---|
327 | +from allmydata.interfaces import RIStorageServer, IStatsProducer, IShareStore |
---|
328 | from allmydata.util import fileutil, idlib, log, time_format |
---|
329 | import allmydata # for __full_version__ |
---|
330 | |
---|
331 | hunk ./src/allmydata/storage/server.py 20 |
---|
332 | from allmydata.storage.crawler import BucketCountingCrawler |
---|
333 | from allmydata.storage.expirer import LeaseCheckingCrawler |
---|
334 | |
---|
335 | +from zope.interface import implements |
---|
336 | + |
---|
337 | +# A Backend is a MultiService so that its crawlers (if it has any) can |
---|
338 | +# be started and stopped. |
---|
339 | +class Backend(service.MultiService): |
---|
340 | + implements(RIStorageServer, IStatsProducer) |
---|
341 | + def __init__(self): |
---|
342 | + service.MultiService.__init__(self) |
---|
343 | + |
---|
344 | +class NullBackend(Backend): |
---|
345 | + def __init__(self): |
---|
346 | + Backend.__init__(self) |
---|
347 | + |
---|
348 | +class FSBackend(Backend): |
---|
349 | + def __init__(self, storedir, readonly=False, reserved_space=0): |
---|
350 | + Backend.__init__(self) |
---|
351 | + |
---|
352 | + self._setup_storage(storedir, readonly, reserved_space) |
---|
353 | + self._setup_corruption_advisory() |
---|
354 | + self._setup_bucket_counter() |
---|
355 | + self._setup_lease_checkerf() |
---|
356 | + |
---|
357 | + def _setup_storage(self, storedir, readonly, reserved_space): |
---|
358 | + self.storedir = storedir |
---|
359 | + self.readonly = readonly |
---|
360 | + self.reserved_space = int(reserved_space) |
---|
361 | + if self.reserved_space: |
---|
362 | + if self.get_available_space() is None: |
---|
363 | + log.msg("warning: [storage]reserved_space= is set, but this platform does not support an API to get disk statistics (statvfs(2) or GetDiskFreeSpaceEx), so this reservation cannot be honored", |
---|
364 | + umid="0wZ27w", level=log.UNUSUAL) |
---|
365 | + |
---|
366 | + self.sharedir = os.path.join(self.storedir, "shares") |
---|
367 | + fileutil.make_dirs(self.sharedir) |
---|
368 | + self.incomingdir = os.path.join(self.sharedir, 'incoming') |
---|
369 | + self._clean_incomplete() |
---|
370 | + |
---|
371 | + def _clean_incomplete(self): |
---|
372 | + fileutil.rm_dir(self.incomingdir) |
---|
373 | + fileutil.make_dirs(self.incomingdir) |
---|
374 | + |
---|
375 | + def _setup_corruption_advisory(self): |
---|
376 | + # we don't actually create the corruption-advisory dir until necessary |
---|
377 | + self.corruption_advisory_dir = os.path.join(self.storedir, |
---|
378 | + "corruption-advisories") |
---|
379 | + |
---|
380 | + def _setup_bucket_counter(self): |
---|
381 | + statefile = os.path.join(self.storedir, "bucket_counter.state") |
---|
382 | + self.bucket_counter = BucketCountingCrawler(statefile) |
---|
383 | + self.bucket_counter.setServiceParent(self) |
---|
384 | + |
---|
385 | + def _setup_lease_checkerf(self): |
---|
386 | + statefile = os.path.join(self.storedir, "lease_checker.state") |
---|
387 | + historyfile = os.path.join(self.storedir, "lease_checker.history") |
---|
388 | + self.lease_checker = LeaseCheckingCrawler(statefile, historyfile, |
---|
389 | + expiration_enabled, expiration_mode, |
---|
390 | + expiration_override_lease_duration, |
---|
391 | + expiration_cutoff_date, |
---|
392 | + expiration_sharetypes) |
---|
393 | + self.lease_checker.setServiceParent(self) |
---|
394 | + |
---|
395 | + def get_available_space(self): |
---|
396 | + if self.readonly: |
---|
397 | + return 0 |
---|
398 | + return fileutil.get_available_space(self.storedir, self.reserved_space) |
---|
399 | + |
---|
400 | # storage/ |
---|
401 | # storage/shares/incoming |
---|
402 | # incoming/ holds temp dirs named $START/$STORAGEINDEX/$SHARENUM which will |
---|
403 | hunk ./src/allmydata/storage/server.py 105 |
---|
404 | name = 'storage' |
---|
405 | LeaseCheckerClass = LeaseCheckingCrawler |
---|
406 | |
---|
407 | - def __init__(self, storedir, nodeid, reserved_space=0, |
---|
408 | - discard_storage=False, readonly_storage=False, |
---|
409 | + def __init__(self, nodeid, backend, reserved_space=0, |
---|
410 | + readonly_storage=False, |
---|
411 | stats_provider=None, |
---|
412 | expiration_enabled=False, |
---|
413 | expiration_mode="age", |
---|
414 | hunk ./src/allmydata/storage/server.py 117 |
---|
415 | assert isinstance(nodeid, str) |
---|
416 | assert len(nodeid) == 20 |
---|
417 | self.my_nodeid = nodeid |
---|
418 | - self.storedir = storedir |
---|
419 | - sharedir = os.path.join(storedir, "shares") |
---|
420 | - fileutil.make_dirs(sharedir) |
---|
421 | - self.sharedir = sharedir |
---|
422 | - # we don't actually create the corruption-advisory dir until necessary |
---|
423 | - self.corruption_advisory_dir = os.path.join(storedir, |
---|
424 | - "corruption-advisories") |
---|
425 | - self.reserved_space = int(reserved_space) |
---|
426 | - self.no_storage = discard_storage |
---|
427 | - self.readonly_storage = readonly_storage |
---|
428 | self.stats_provider = stats_provider |
---|
429 | if self.stats_provider: |
---|
430 | self.stats_provider.register_producer(self) |
---|
431 | hunk ./src/allmydata/storage/server.py 120 |
---|
432 | - self.incomingdir = os.path.join(sharedir, 'incoming') |
---|
433 | - self._clean_incomplete() |
---|
434 | - fileutil.make_dirs(self.incomingdir) |
---|
435 | self._active_writers = weakref.WeakKeyDictionary() |
---|
436 | hunk ./src/allmydata/storage/server.py 121 |
---|
437 | + self.backend = backend |
---|
438 | + self.backend.setServiceParent(self) |
---|
439 | log.msg("StorageServer created", facility="tahoe.storage") |
---|
440 | |
---|
441 | hunk ./src/allmydata/storage/server.py 125 |
---|
442 | - if reserved_space: |
---|
443 | - if self.get_available_space() is None: |
---|
444 | - log.msg("warning: [storage]reserved_space= is set, but this platform does not support an API to get disk statistics (statvfs(2) or GetDiskFreeSpaceEx), so this reservation cannot be honored", |
---|
445 | - umin="0wZ27w", level=log.UNUSUAL) |
---|
446 | - |
---|
447 | self.latencies = {"allocate": [], # immutable |
---|
448 | "write": [], |
---|
449 | "close": [], |
---|
450 | hunk ./src/allmydata/storage/server.py 136 |
---|
451 | "renew": [], |
---|
452 | "cancel": [], |
---|
453 | } |
---|
454 | - self.add_bucket_counter() |
---|
455 | - |
---|
456 | - statefile = os.path.join(self.storedir, "lease_checker.state") |
---|
457 | - historyfile = os.path.join(self.storedir, "lease_checker.history") |
---|
458 | - klass = self.LeaseCheckerClass |
---|
459 | - self.lease_checker = klass(self, statefile, historyfile, |
---|
460 | - expiration_enabled, expiration_mode, |
---|
461 | - expiration_override_lease_duration, |
---|
462 | - expiration_cutoff_date, |
---|
463 | - expiration_sharetypes) |
---|
464 | - self.lease_checker.setServiceParent(self) |
---|
465 | |
---|
466 | def __repr__(self): |
---|
467 | return "<StorageServer %s>" % (idlib.shortnodeid_b2a(self.my_nodeid),) |
---|
468 | hunk ./src/allmydata/storage/server.py 140 |
---|
469 | |
---|
470 | - def add_bucket_counter(self): |
---|
471 | - statefile = os.path.join(self.storedir, "bucket_counter.state") |
---|
472 | - self.bucket_counter = BucketCountingCrawler(self, statefile) |
---|
473 | - self.bucket_counter.setServiceParent(self) |
---|
474 | - |
---|
475 | def count(self, name, delta=1): |
---|
476 | if self.stats_provider: |
---|
477 | self.stats_provider.count("storage_server." + name, delta) |
---|
478 | hunk ./src/allmydata/storage/server.py 183 |
---|
479 | kwargs["facility"] = "tahoe.storage" |
---|
480 | return log.msg(*args, **kwargs) |
---|
481 | |
---|
482 | - def _clean_incomplete(self): |
---|
483 | - fileutil.rm_dir(self.incomingdir) |
---|
484 | - |
---|
485 | def get_stats(self): |
---|
486 | # remember: RIStatsProvider requires that our return dict |
---|
487 | # contains numeric values. |
---|
488 | hunk ./src/allmydata/storage/server.py 219 |
---|
489 | stats['storage_server.total_bucket_count'] = bucket_count |
---|
490 | return stats |
---|
491 | |
---|
492 | - def get_available_space(self): |
---|
493 | - """Returns available space for share storage in bytes, or None if no |
---|
494 | - API to get this information is available.""" |
---|
495 | - |
---|
496 | - if self.readonly_storage: |
---|
497 | - return 0 |
---|
498 | - return fileutil.get_available_space(self.storedir, self.reserved_space) |
---|
499 | - |
---|
500 | def allocated_size(self): |
---|
501 | space = 0 |
---|
502 | for bw in self._active_writers: |
---|
503 | hunk ./src/allmydata/storage/server.py 226 |
---|
504 | return space |
---|
505 | |
---|
506 | def remote_get_version(self): |
---|
507 | - remaining_space = self.get_available_space() |
---|
508 | + remaining_space = self.backend.get_available_space() |
---|
509 | if remaining_space is None: |
---|
510 | # We're on a platform that has no API to get disk stats. |
---|
511 | remaining_space = 2**64 |
---|
512 | hunk ./src/allmydata/storage/server.py 267 |
---|
513 | |
---|
514 | max_space_per_bucket = allocated_size |
---|
515 | |
---|
516 | - remaining_space = self.get_available_space() |
---|
517 | + remaining_space = self.backend.get_available_space() |
---|
518 | limited = remaining_space is not None |
---|
519 | if limited: |
---|
520 | # this is a bit conservative, since some of this allocated_size() |
---|
521 | hunk ./src/allmydata/test/common_util.py 20 |
---|
522 | |
---|
523 | def flip_one_bit(s, offset=0, size=None): |
---|
524 | """ flip one random bit of the string s, in a byte greater than or equal to offset and less |
---|
525 | - than offset+size. """ |
---|
526 | + than offset+size. Return the new string. """ |
---|
527 | if size is None: |
---|
528 | size=len(s) |
---|
529 | i = randrange(offset, offset+size) |
---|
530 | hunk ./src/allmydata/test/test_backends.py 10 |
---|
531 | import mock |
---|
532 | |
---|
533 | # This is the code that we're going to be testing. |
---|
534 | -from allmydata.storage.server import StorageServer |
---|
535 | +from allmydata.storage.server import StorageServer, FSBackend, NullBackend |
---|
536 | |
---|
537 | # The following share file contents was generated with |
---|
538 | # storage.immutable.ShareFile from Tahoe-LAFS v1.8.2 |
---|
539 | hunk ./src/allmydata/test/test_backends.py 21 |
---|
540 | sharefname = 'testdir/shares/or/orsxg5dtorxxeylhmvpws3temv4a/0' |
---|
541 | |
---|
542 | class TestServerConstruction(unittest.TestCase, ReallyEqualMixin): |
---|
543 | + @mock.patch('time.time') |
---|
544 | + @mock.patch('os.mkdir') |
---|
545 | + @mock.patch('__builtin__.open') |
---|
546 | + @mock.patch('os.listdir') |
---|
547 | + @mock.patch('os.path.isdir') |
---|
548 | + def test_create_server_null_backend(self, mockisdir, mocklistdir, mockopen, mockmkdir, mocktime): |
---|
549 | + """ This tests whether a server instance can be constructed |
---|
550 | + with a null backend. The server instance fails the test if it |
---|
551 | + tries to read or write to the file system. """ |
---|
552 | + |
---|
553 | + # Now begin the test. |
---|
554 | + s = StorageServer('testnodeidxxxxxxxxxx', backend=NullBackend()) |
---|
555 | + |
---|
556 | + self.failIf(mockisdir.called) |
---|
557 | + self.failIf(mocklistdir.called) |
---|
558 | + self.failIf(mockopen.called) |
---|
559 | + self.failIf(mockmkdir.called) |
---|
560 | + self.failIf(mocktime.called) |
---|
561 | + |
---|
562 | + # You passed! |
---|
563 | + |
---|
564 | + @mock.patch('time.time') |
---|
565 | + @mock.patch('os.mkdir') |
---|
566 | @mock.patch('__builtin__.open') |
---|
567 | hunk ./src/allmydata/test/test_backends.py 45 |
---|
568 | - def test_create_server(self, mockopen): |
---|
569 | - """ This tests whether a server instance can be constructed. """ |
---|
570 | + @mock.patch('os.listdir') |
---|
571 | + @mock.patch('os.path.isdir') |
---|
572 | + def test_create_server_fs_backend(self, mockisdir, mocklistdir, mockopen, mockmkdir, mocktime): |
---|
573 | + """ This tests whether a server instance can be constructed |
---|
574 | + with a filesystem backend. To pass the test, it has to use the |
---|
575 | + filesystem in only the prescribed ways. """ |
---|
576 | |
---|
577 | def call_open(fname, mode): |
---|
578 | if fname == 'testdir/bucket_counter.state': |
---|
579 | hunk ./src/allmydata/test/test_backends.py 59 |
---|
580 | raise IOError(2, "No such file or directory: 'testdir/lease_checker.state'") |
---|
581 | elif fname == 'testdir/lease_checker.history': |
---|
582 | return StringIO() |
---|
583 | + else: |
---|
584 | + self.fail("Server with FS backend tried to open '%s' in mode '%s'" % (fname, mode)) |
---|
585 | mockopen.side_effect = call_open |
---|
586 | |
---|
587 | # Now begin the test. |
---|
588 | hunk ./src/allmydata/test/test_backends.py 64 |
---|
589 | - s = StorageServer('testdir', 'testnodeidxxxxxxxxxx') |
---|
590 | + s = StorageServer('testnodeidxxxxxxxxxx', backend=FSBackend('teststoredir')) |
---|
591 | + |
---|
592 | + self.failIf(mockisdir.called) |
---|
593 | + self.failIf(mocklistdir.called) |
---|
594 | + self.failIf(mockopen.called) |
---|
595 | + self.failIf(mockmkdir.called) |
---|
596 | + self.failIf(mocktime.called) |
---|
597 | |
---|
598 | # You passed! |
---|
599 | |
---|
600 | hunk ./src/allmydata/test/test_backends.py 74 |
---|
601 | -class TestServer(unittest.TestCase, ReallyEqualMixin): |
---|
602 | +class TestServerFSBackend(unittest.TestCase, ReallyEqualMixin): |
---|
603 | @mock.patch('__builtin__.open') |
---|
604 | def setUp(self, mockopen): |
---|
605 | def call_open(fname, mode): |
---|
606 | hunk ./src/allmydata/test/test_backends.py 86 |
---|
607 | return StringIO() |
---|
608 | mockopen.side_effect = call_open |
---|
609 | |
---|
610 | - self.s = StorageServer('testdir', 'testnodeidxxxxxxxxxx') |
---|
611 | - |
---|
612 | + self.s = StorageServer('testnodeidxxxxxxxxxx', backend=FSBackend('teststoredir')) |
---|
613 | |
---|
614 | @mock.patch('time.time') |
---|
615 | @mock.patch('os.mkdir') |
---|
616 | hunk ./src/allmydata/test/test_backends.py 94 |
---|
617 | @mock.patch('os.listdir') |
---|
618 | @mock.patch('os.path.isdir') |
---|
619 | def test_write_share(self, mockisdir, mocklistdir, mockopen, mockmkdir, mocktime): |
---|
620 | - """Handle a report of corruption.""" |
---|
621 | + """ Write a new share. """ |
---|
622 | |
---|
623 | def call_listdir(dirname): |
---|
624 | self.failUnlessReallyEqual(dirname, 'testdir/shares/or/orsxg5dtorxxeylhmvpws3temv4a') |
---|
625 | hunk ./src/allmydata/test/test_backends.py 137 |
---|
626 | bs[0].remote_write(0, 'a') |
---|
627 | self.failUnlessReallyEqual(sharefile.buffer, share_file_data) |
---|
628 | |
---|
629 | - |
---|
630 | @mock.patch('os.path.exists') |
---|
631 | @mock.patch('os.path.getsize') |
---|
632 | @mock.patch('__builtin__.open') |
---|
633 | } |
---|
634 | |
---|
635 | Context: |
---|
636 | |
---|
637 | [immutable: use PrefixingLogMixin to organize logging in Tahoe2PeerSelector and add more detailed messages about peer |
---|
638 | zooko@zooko.com**20100719082000 |
---|
639 | Ignore-this: e034c4988b327f7e138a106d913a3082 |
---|
640 | ] |
---|
641 | [trivial: remove unused import detected by pyflakes, and remove trailing whitespace |
---|
642 | zooko@zooko.com**20090305223204 |
---|
643 | Ignore-this: 991001a50da1a357a519c3cb880d7ee1 |
---|
644 | ] |
---|
645 | [immutable: extend the tests to check that the shares that got uploaded really do make a sufficiently Happy distribution |
---|
646 | zooko@zooko.com**20100719045047 |
---|
647 | Ignore-this: 89c33a7b795e23018667351045a8d5d0 |
---|
648 | This patch also renames some instances of "find_shares()" to "find_all_shares()" and other instances to "find_uri_shares()" as appropriate -- the conflation between those names confused me at first when writing these tests. |
---|
649 | ] |
---|
650 | [test_repairer: add (commented-out) test_each_byte, to see exactly what the |
---|
651 | Brian Warner <warner@lothar.com>**20100110203552 |
---|
652 | Ignore-this: 8e84277d5304752edeff052b97821815 |
---|
653 | Verifier misses |
---|
654 | |
---|
655 | The results (described in #819) match our expectations: it misses corruption |
---|
656 | in unused share fields and in most container fields (which are only visible |
---|
657 | to the storage server, not the client). 1265 bytes of a 2753 byte |
---|
658 | share (hosting a 56-byte file with an artifically small segment size) are |
---|
659 | unused, mostly in the unused tail of the overallocated UEB space (765 bytes), |
---|
660 | and the allocated-but-unwritten plaintext_hash_tree (480 bytes). |
---|
661 | ] |
---|
662 | [Verifier: check the full block-hash-tree on each share |
---|
663 | Brian Warner <warner@lothar.com>**20091005214844 |
---|
664 | Ignore-this: 3f7ccf6d253f32340f1bf1da27803eee |
---|
665 | |
---|
666 | Removed the .todo from two test_repairer tests that check this. The only |
---|
667 | remaining .todos are on the three crypttext-hash-tree tests. |
---|
668 | ] |
---|
669 | [Verifier: check the full share-hash chain on each share |
---|
670 | Brian Warner <warner@lothar.com>**20091005213443 |
---|
671 | Ignore-this: 3d30111904158bec06a4eac22fd39d17 |
---|
672 | |
---|
673 | Removed the .todo from two test_repairer tests that check this. |
---|
674 | ] |
---|
675 | [immutable/checker.py: rearrange code a little bit, make it easier to follow |
---|
676 | Brian Warner <warner@lothar.com>**20091005200252 |
---|
677 | Ignore-this: 91cc303fab66faf717433a709f785fb5 |
---|
678 | ] |
---|
679 | [Correct harmless indentation errors found by pylint |
---|
680 | david-sarah@jacaranda.org**20100226052151 |
---|
681 | Ignore-this: 41335bce830700b18b80b6e00b45aef5 |
---|
682 | ] |
---|
683 | [setup: if executing lsb_release doesn't work, fall back to parsing /etc/lsb-release before falling back to platform.dist() |
---|
684 | zooko@zooko.com**20080923162858 |
---|
685 | An explanatio of why we do it this way is in the docstring. |
---|
686 | ] |
---|
687 | [setup: if invoking lsb_release doesn't work (which it doesn't on our etch buildslave), then fall back to the Python Standard Library's platform.dist() function |
---|
688 | zooko@zooko.com**20080923154820] |
---|
689 | [Improvements to test_hung_server, and fix for status updates in download.py |
---|
690 | david-sarah@jacaranda.org**20100130064303 |
---|
691 | Ignore-this: dd889c643afdcf0f86d55855aafda6ad |
---|
692 | ] |
---|
693 | [immutable: fix bug in tests, change line-endings to unix style, add comment |
---|
694 | zooko@zooko.com**20100129184237 |
---|
695 | Ignore-this: f6bd875fe974c55c881e05eddf8d3436 |
---|
696 | ] |
---|
697 | [New tests for #928 |
---|
698 | david-sarah@jacaranda.org**20100129123845 |
---|
699 | Ignore-this: 5c520f40141f0d9c000ffb05a4698995 |
---|
700 | ] |
---|
701 | [immutable: download from the first servers which provide at least K buckets instead of waiting for all servers to reply |
---|
702 | zooko@zooko.com**20100127233417 |
---|
703 | Ignore-this: c855355a40d96827e1d0c469a8d8ab3f |
---|
704 | This should put an end to the phenomenon I've been seeing that a single hung server can cause all downloads on a grid to hang. Also it should speed up all downloads by (a) not-waiting for responses to queries that it doesn't need, and (b) downloading shares from the servers which answered the initial query the fastest. |
---|
705 | Also, do not count how many buckets you've gotten when deciding whether the download has enough shares or not -- instead count how many buckets to *unique* shares that you've gotten. This appears to improve a slightly weird behavior in the current download code in which receiving >= K different buckets all to the same sharenumber would make it think it had enough to download the file when in fact it hadn't. |
---|
706 | This patch needs tests before it is actually ready for trunk. |
---|
707 | ] |
---|
708 | [M-x whitespace-cleanup |
---|
709 | zooko@zooko.com**20100718032739 |
---|
710 | Ignore-this: babfd4af6ad2fc885c957fd5c8b10c3f |
---|
711 | ] |
---|
712 | [Improve code coverage of the Tahoe2PeerSelector tests. |
---|
713 | Kevan Carstensen <kevan@isnotajoke.com>**20100515032913 |
---|
714 | Ignore-this: 793151b63ffa65fdae6915db22d9924a |
---|
715 | ] |
---|
716 | [immutable: test for #1124 |
---|
717 | zooko@zooko.com**20100718222907 |
---|
718 | Ignore-this: 1766e3cbab92ea2a9e246f40eb6e770b |
---|
719 | ] |
---|
720 | [immutable: test for #1118 |
---|
721 | zooko@zooko.com**20100718221537 |
---|
722 | Ignore-this: 8882aabe2aaec6a0148c87e735d817ad |
---|
723 | ] |
---|
724 | [Revisions of the #778 tests, per reviewers' comments |
---|
725 | Kevan Carstensen <kevan@isnotajoke.com>**20100514012542 |
---|
726 | Ignore-this: 735bbc7f663dce633caeb3b66a53cf6e |
---|
727 | |
---|
728 | - Fix comments and confusing naming. |
---|
729 | - Add tests for the new error messages suggested by David-Sarah |
---|
730 | and Zooko. |
---|
731 | - Alter existing tests for new error messages. |
---|
732 | - Make sure that the tests continue to work with the trunk. |
---|
733 | - Add a test for a mutual disjointedness assertion that I added to |
---|
734 | upload.servers_of_happiness. |
---|
735 | - Fix the comments to correctly reflect read-onlyness |
---|
736 | - Add a test for an edge case in should_add_server |
---|
737 | - Add an assertion to make sure that share redistribution works as it |
---|
738 | should |
---|
739 | - Alter tests to work with revised servers_of_happiness semantics |
---|
740 | - Remove tests for should_add_server, since that function no longer exists. |
---|
741 | - Alter tests to know about merge_peers, and to use it before calling |
---|
742 | servers_of_happiness. |
---|
743 | - Add tests for merge_peers. |
---|
744 | - Add Zooko's puzzles to the tests. |
---|
745 | - Edit encoding tests to expect the new kind of failure message. |
---|
746 | - Edit tests to expect error messages with the word "only" moved as far |
---|
747 | to the right as possible. |
---|
748 | - Extended and cleaned up some helper functions. |
---|
749 | - Changed some tests to call more appropriate helper functions. |
---|
750 | - Added a test for the failing redistribution algorithm |
---|
751 | - Added a test for the progress message |
---|
752 | - Added a test for the upper bound on readonly peer share discovery. |
---|
753 | |
---|
754 | ] |
---|
755 | [Add tests for the behavior described in #834. |
---|
756 | Kevan Carstensen <kevan@isnotajoke.com>**20091123012008 |
---|
757 | Ignore-this: d8e0aa0f3f7965ce9b5cea843c6d6f9f |
---|
758 | ] |
---|
759 | [upload.py: fix #1118 by aborting newly-homeless buckets when reassignment runs. This makes a previously failing assert correct. This version refactors 'abort' into two methods, rather than using a default argument. |
---|
760 | david-sarah@jacaranda.org**20100719044655 |
---|
761 | Ignore-this: 142d182c0739986812140bb8387077d5 |
---|
762 | ] |
---|
763 | [immutable/upload.py: abort buckets if peer selection fails |
---|
764 | Kevan Carstensen <kevan@isnotajoke.com>**20100715231714 |
---|
765 | Ignore-this: 2a0b643a22284df292d8ed9d91b1fd37 |
---|
766 | ] |
---|
767 | [Fix up the behavior of #778, per reviewers' comments |
---|
768 | Kevan Carstensen <kevan@isnotajoke.com>**20100514004917 |
---|
769 | Ignore-this: 9c20b60716125278b5456e8feb396bff |
---|
770 | |
---|
771 | - Make some important utility functions clearer and more thoroughly |
---|
772 | documented. |
---|
773 | - Assert in upload.servers_of_happiness that the buckets attributes |
---|
774 | of PeerTrackers passed to it are mutually disjoint. |
---|
775 | - Get rid of some silly non-Pythonisms that I didn't see when I first |
---|
776 | wrote these patches. |
---|
777 | - Make sure that should_add_server returns true when queried about a |
---|
778 | shnum that it doesn't know about yet. |
---|
779 | - Change Tahoe2PeerSelector.preexisting_shares to map a shareid to a set |
---|
780 | of peerids, alter dependencies to deal with that. |
---|
781 | - Remove upload.should_add_servers, because it is no longer necessary |
---|
782 | - Move upload.shares_of_happiness and upload.shares_by_server to a utility |
---|
783 | file. |
---|
784 | - Change some points in Tahoe2PeerSelector. |
---|
785 | - Compute servers_of_happiness using a bipartite matching algorithm that |
---|
786 | we know is optimal instead of an ad-hoc greedy algorithm that isn't. |
---|
787 | - Change servers_of_happiness to just take a sharemap as an argument, |
---|
788 | change its callers to merge existing_shares and used_peers before |
---|
789 | calling it. |
---|
790 | - Change an error message in the encoder to be more appropriate for |
---|
791 | servers of happiness. |
---|
792 | - Clarify the wording of an error message in immutable/upload.py |
---|
793 | - Refactor a happiness failure message to happinessutil.py, and make |
---|
794 | immutable/upload.py and immutable/encode.py use it. |
---|
795 | - Move the word "only" as far to the right as possible in failure |
---|
796 | messages. |
---|
797 | - Use a better definition of progress during peer selection. |
---|
798 | - Do read-only peer share detection queries in parallel, not sequentially. |
---|
799 | - Clean up logging semantics; print the query statistics whenever an |
---|
800 | upload is unsuccessful, not just in one case. |
---|
801 | |
---|
802 | ] |
---|
803 | [upload: use WriteBucketProxy_v2 when uploading a large file (with shares larger than 4GiB). This finally closes #346. I think we can now handle immutable files up to 48EiB. |
---|
804 | warner@allmydata.com**20090113021442] |
---|
805 | [Alter the signature of set_shareholders in IEncoder to add a 'servermap' parameter, which gives IEncoders enough information to perform a sane check for servers_of_happiness. |
---|
806 | Kevan Carstensen <kevan@isnotajoke.com>**20091104033241 |
---|
807 | Ignore-this: b3a6649a8ac66431beca1026a31fed94 |
---|
808 | ] |
---|
809 | [Alter the error message when an upload fails, per some comments in #778. |
---|
810 | Kevan Carstensen <kevan@isnotajoke.com>**20091230210344 |
---|
811 | Ignore-this: ba97422b2f9737c46abeb828727beb1 |
---|
812 | |
---|
813 | When I first implemented #778, I just altered the error messages to refer to |
---|
814 | servers where they referred to shares. The resulting error messages weren't |
---|
815 | very good. These are a bit better. |
---|
816 | ] |
---|
817 | [Alter the error message returned when peer selection fails |
---|
818 | Kevan Carstensen <kevan@isnotajoke.com>**20091123002405 |
---|
819 | Ignore-this: b2a7dc163edcab8d9613bfd6907e5166 |
---|
820 | |
---|
821 | The Tahoe2PeerSelector returned either NoSharesError or NotEnoughSharesError |
---|
822 | for a variety of error conditions that weren't informatively described by them. |
---|
823 | This patch creates a new error, UploadHappinessError, replaces uses of |
---|
824 | NoSharesError and NotEnoughSharesError with it, and alters the error message |
---|
825 | raised with the errors to be more in line with the new servers_of_happiness |
---|
826 | behavior. See ticket #834 for more information. |
---|
827 | ] |
---|
828 | [Eliminate overcounting iof servers_of_happiness in Tahoe2PeerSelector; also reorganize some things. |
---|
829 | Kevan Carstensen <kevan@isnotajoke.com>**20091118014542 |
---|
830 | Ignore-this: a6cb032cbff74f4f9d4238faebd99868 |
---|
831 | ] |
---|
832 | [Alter Tahoe2PeerSelector to make sure that it recognizes existing shares on readonly servers, fixing an issue in #778 |
---|
833 | Kevan Carstensen <kevan@isnotajoke.com>**20091116192805 |
---|
834 | Ignore-this: 15289f4d709e03851ed0587b286fd955 |
---|
835 | ] |
---|
836 | [trailing-whitespace eradication, no functional changes |
---|
837 | warner@allmydata.com**20071101222247] |
---|
838 | [Alter 'immutable/encode.py' and 'immutable/upload.py' to use servers_of_happiness instead of shares_of_happiness. |
---|
839 | Kevan Carstensen <kevan@isnotajoke.com>**20091104111222 |
---|
840 | Ignore-this: abb3283314820a8bbf9b5d0cbfbb57c8 |
---|
841 | ] |
---|
842 | [upload: remove Tahoe3 peer-selection algorithm |
---|
843 | warner@lothar.com**20070916082611] |
---|
844 | [storage: use fileutil's version of get_disk_stats() and get_available_space(), use mockery/fakery in tests, enable large share test on platforms with sparse files and if > 4 GiB of disk space is currently available |
---|
845 | zooko@zooko.com**20100910173629 |
---|
846 | Ignore-this: 1304f1164c661de6d5304f993eb9b27b |
---|
847 | ] |
---|
848 | [test_storage.py: change skip note for test_large_share to say that Windows doesn't support sparse files. refs #569 |
---|
849 | david-sarah@jacaranda.org**20100805022612 |
---|
850 | Ignore-this: 85c807a536dc4eeb8bf14980028bb05b |
---|
851 | ] |
---|
852 | [storage: disable test_large_share again: my linux laptop has less than 4 GiB free |
---|
853 | zooko@zooko.com**20090131041649 |
---|
854 | Ignore-this: da931a572a88699371057f932106b375 |
---|
855 | ] |
---|
856 | [storage: enable the test of a share larger than 2 GiB; this will probably be too expensive on Mac OS X, but I think it won't be on all the other platforms ; I will probably set it to SkipTest if the sys.platform is Mac after seeing the results of this buildbot run |
---|
857 | zooko@zooko.com**20090128223312 |
---|
858 | Ignore-this: 1b08b73b8f9ec4b5f629b734c556f2ed |
---|
859 | ] |
---|
860 | [immutable: skip the test of large files, because that is too hard on the host if it doesn't efficiently handle sparse files |
---|
861 | zooko@zooko.com**20090105230727 |
---|
862 | Ignore-this: 7d35a6cdb1ea6be2adf0e6dacefe01a7 |
---|
863 | ] |
---|
864 | [fileutil: copy in the get_disk_stats() and get_available_space() functions from storage/server.py |
---|
865 | zooko@zooko.com**20100910173520 |
---|
866 | Ignore-this: 8b15569715f710f4fc5092f7ca109253 |
---|
867 | ] |
---|
868 | [util.fileutil, test.test_util: add abspath_expanduser_unicode function, to work around <http://bugs.python.org/issue3426>. util.encodingutil: add a convenience function argv_to_abspath. |
---|
869 | david-sarah@jacaranda.org**20100721231507 |
---|
870 | Ignore-this: eee6904d1f65a733ff35190879844d08 |
---|
871 | ] |
---|
872 | [util/statistics: add tests, fix mean_repair_cost |
---|
873 | warner@lothar.com**20090215222326 |
---|
874 | Ignore-this: c576eabc74c23b170702018fc3c122d9 |
---|
875 | ] |
---|
876 | [stringutils.py: Add encoding argument to quote_output. Also work around a bug in locale.getpreferredencoding on older Pythons. |
---|
877 | david-sarah@jacaranda.org**20100616042012 |
---|
878 | Ignore-this: 48174c37ad95205997e4d3cdd81f1e28 |
---|
879 | ] |
---|
880 | [Rename stringutils to encodingutil, and drop listdir_unicode and open_unicode (since the Python stdlib functions work fine with Unicode paths). Also move some utility functions to fileutil. |
---|
881 | david-sarah@jacaranda.org**20100712003015 |
---|
882 | Ignore-this: 103b809d180df17a7283077c3104c7be |
---|
883 | ] |
---|
884 | [test_stringutils.py: trivial error in exception message for skipped test. |
---|
885 | david-sarah@jacaranda.org**20100607061455 |
---|
886 | Ignore-this: f261a5d4e2b8fe3bcc37e02539ba1ae2 |
---|
887 | ] |
---|
888 | [Back out Windows-specific Unicode argument support for v1.7. |
---|
889 | david-sarah@jacaranda.org**20100609000803 |
---|
890 | Ignore-this: b230ffe6fdaf9a0d85dfe745b37b42fb |
---|
891 | ] |
---|
892 | [Fix for Unicode-related test failures on Zooko's OS X 10.6 machine. |
---|
893 | david-sarah@jacaranda.org**20100609055448 |
---|
894 | Ignore-this: 395ad16429e56623edfa74457a121190 |
---|
895 | ] |
---|
896 | [test_cli.py: remove invalid 'test_listdir_unicode_bad' test. |
---|
897 | david-sarah@jacaranda.org**20100607183730 |
---|
898 | Ignore-this: fadfe87980dc1862f349bfcc21b2145f |
---|
899 | ] |
---|
900 | [test_stringutils.py: Fix test failure on CentOS builder, possibly Python 2.4.3-related. |
---|
901 | david-sarah@jacaranda.org**20100609065056 |
---|
902 | Ignore-this: 503b561b213baf1b92ae641f2fdf080a |
---|
903 | ] |
---|
904 | [More Unicode test fixes. |
---|
905 | david-sarah@jacaranda.org**20100607053358 |
---|
906 | Ignore-this: 6a271fb77c31f28cb7bdba63b26a2dd2 |
---|
907 | ] |
---|
908 | [Unicode fixes for platforms with non-native-Unicode filesystems. |
---|
909 | david-sarah@jacaranda.org**20100607043238 |
---|
910 | Ignore-this: 2134dc1793c4f8e50350bd749c4c98c2 |
---|
911 | ] |
---|
912 | [Provisional patch to NFC-normalize filenames going in and out of Tahoe directories. |
---|
913 | david-sarah@jacaranda.org**20100616031450 |
---|
914 | Ignore-this: ed08c9d8df37ef0b7cca42bb562c996b |
---|
915 | ] |
---|
916 | [dirnode: fix my remarkably-consistent 'metdadata' typo |
---|
917 | warner@allmydata.com**20081003010845] |
---|
918 | [trivial: removed unused import noticed by pyflakes |
---|
919 | zooko@zooko.com**20090709130513 |
---|
920 | Ignore-this: 63257c9e8481fdcf617f04cc48d95d03 |
---|
921 | ] |
---|
922 | [Add must_exist, must_be_directory, and must_be_file arguments to DirectoryNode.delete. This will be used to fixes a minor condition in the SFTP frontend. |
---|
923 | david-sarah@jacaranda.org**20100527194529 |
---|
924 | Ignore-this: 6d8114cef4450c52c57639f82852716f |
---|
925 | ] |
---|
926 | [stringutils.py: don't NFC-normalize the output of listdir_unicode. |
---|
927 | david-sarah@jacaranda.org**20100617015537 |
---|
928 | Ignore-this: 93c9b6f3d7c6812a0afa8d9e1b0b4faa |
---|
929 | ] |
---|
930 | [test_stringutils.py: take account of the output of listdir_unicode no longer being normalized. Also use Unicode escapes, not UTF-8. |
---|
931 | david-sarah@jacaranda.org**20100617034409 |
---|
932 | Ignore-this: 47f3f072f0e2efea0abeac130f84c56f |
---|
933 | ] |
---|
934 | [test_backupdb.py: skip test_unicode if we can't represent the test filenames. |
---|
935 | david-sarah@jacaranda.org**20100619022620 |
---|
936 | Ignore-this: 6ee564b6c07f9bb0e89a25dc5b37194f |
---|
937 | ] |
---|
938 | [tahoe backup: unicode tests. |
---|
939 | david-sarah@jacaranda.org**20100618035211 |
---|
940 | Ignore-this: 88ebab9f3218f083fdc635bff6599b60 |
---|
941 | ] |
---|
942 | [Allow URIs passed in the initial JSON for t=mkdir-with-children, t=mkdir-immutable to be Unicode. Also pass the name of each child into nodemaker.create_from_cap for error reporting. |
---|
943 | david-sarah@jacaranda.org**20100711195525 |
---|
944 | Ignore-this: deac32d8b91ba26ede18905d3f7d2b93 |
---|
945 | ] |
---|
946 | [docs/configuration.rst: fix a typo in the previous correction, and correct another error ('[storage]readonly_storage' should be '[storage]readonly'). |
---|
947 | david-sarah@jacaranda.org**20110123023955 |
---|
948 | Ignore-this: 2f9d3fe3c25da1b369618b8cf0867a58 |
---|
949 | ] |
---|
950 | [docs/configuration.rst: changes to formatting (mainly putting commands and filenames in monospace). |
---|
951 | david-sarah@jacaranda.org**20101212181828 |
---|
952 | Ignore-this: 8a1480e2d5f43bee678476424615b50f |
---|
953 | ] |
---|
954 | [Update hyperlinks between docs, and linkify some external references. refs #1225 |
---|
955 | david-sarah@jacaranda.org**20101212051459 |
---|
956 | Ignore-this: cd43a4c3d3de1f832abfa88d5fc4ace1 |
---|
957 | ] |
---|
958 | [docs: remove the redundant (and therefore bit-rotting) parts of mutable-DSA.txt and instead refer to mutable.txt |
---|
959 | zooko@zooko.com**20080429225158] |
---|
960 | [docs/historical: move 'tahoe2' from wiki into source tree |
---|
961 | warner@allmydata.com**20080603014331] |
---|
962 | [add docs/proposed/GridID.txt (cleaning out some of my old branches) |
---|
963 | warner@lothar.com**20090621191204] |
---|
964 | [docs: fix tab-vs-spaces, make some CLI examples <tt>/"literal", wrap some to |
---|
965 | Brian Warner <warner@lothar.com>**20101015060606 |
---|
966 | Ignore-this: eae08bdf0afb19a2fbf41c31e70a8122 |
---|
967 | 80-cols, remove spurious whitespace. Add rst2html.py rule to Makefile. |
---|
968 | ] |
---|
969 | [docs/Makefile: rules to turn our SVG images into .png and .eps forms |
---|
970 | warner@lothar.com**20080102230022] |
---|
971 | [docs/known_issues.rst: Add section on traffic analysis. Fix URL for current version of file. |
---|
972 | david-sarah@jacaranda.org**20101024234259 |
---|
973 | Ignore-this: f3416e79d3bb833f5118da23e85723ad |
---|
974 | ] |
---|
975 | [Release v1.8.1. refs #1242 |
---|
976 | david-sarah@jacaranda.org**20101128204738 |
---|
977 | Ignore-this: b0793a8eb0a711cbcaebc566c37920e4 |
---|
978 | ] |
---|
979 | [NEWS: note dependency updates to pycryptopp and pycrypto. |
---|
980 | david-sarah@jacaranda.org**20100924191207 |
---|
981 | Ignore-this: eeaf5c9c9104f24c450c2ec4482ac1ee |
---|
982 | ] |
---|
983 | [minor: remove unused interface declaration, change allmydata.org to tahoe-lafs.org in email address, fix wording in relnotes.txt |
---|
984 | zooko@zooko.com**20100930153708 |
---|
985 | Ignore-this: a452969228afed2774de375e29fa3048 |
---|
986 | ] |
---|
987 | [interfaces.py: wrap some lines to 80cols |
---|
988 | Brian Warner <warner@lothar.com>**20090702015728 |
---|
989 | Ignore-this: e2c777c1e89a684b43ceabeb0042456c |
---|
990 | ] |
---|
991 | [docs: update how-to-make-a-release doc with a few tweaks from the 1.8.0 process |
---|
992 | zooko@zooko.com**20101015054413 |
---|
993 | Ignore-this: ca5e9478531a3393792ae283239549dd |
---|
994 | ] |
---|
995 | [docs: a couple of small edits to CREDITS and how_to_make_a_tahoe-lafs_release.txt |
---|
996 | zooko@zooko.com**20100829222758 |
---|
997 | Ignore-this: cfdb414f86dfd581b5f1d4d94231b85c |
---|
998 | ] |
---|
999 | [how_to_make_a_tahoe-lafs_release.txt: add step to check that release will report itself as the intended version. |
---|
1000 | david-sarah@jacaranda.org**20100807004254 |
---|
1001 | Ignore-this: 7709322e883f4118f38c7f042f5a9a2 |
---|
1002 | ] |
---|
1003 | [docs: update the list of forums to announce Tahoe-LAFS too, add empty checkboxes |
---|
1004 | zooko@zooko.com**20100802063314 |
---|
1005 | Ignore-this: 89d0e8bd43f1749a9e85fcee2205bb04 |
---|
1006 | ] |
---|
1007 | [how_to_make_a_tahoe-lafs_release.txt: reordering, add fuse-sshfs@lists.sourceforge.list as place to send relnotes. |
---|
1008 | david-sarah@jacaranda.org**20100618041854 |
---|
1009 | Ignore-this: 2e380a6e72917d3a20a65ceccd9a4df |
---|
1010 | ] |
---|
1011 | [docs/how_to_make_a_tahoe-lafs_release.txt: trivial correction, install.html should now be quickstart.html. |
---|
1012 | david-sarah@jacaranda.org**20100625223929 |
---|
1013 | Ignore-this: 99a5459cac51bd867cc11ad06927ff30 |
---|
1014 | ] |
---|
1015 | [NEWS: minor wording changes and rewrapping; add entry for #71. |
---|
1016 | david-sarah@jacaranda.org**20101124002122 |
---|
1017 | Ignore-this: 423d31eacce10463f21299860a4fbd4f |
---|
1018 | ] |
---|
1019 | [docs: NEWS: put news items about bugfixes/improvements and packaging before news items about documentation |
---|
1020 | zooko@zooko.com**20101120060716 |
---|
1021 | Ignore-this: 1a4306df950fcdc2ab9771c874d6d0a4 |
---|
1022 | ] |
---|
1023 | [docs: NEWS: add #1255 |
---|
1024 | zooko@zooko.com**20101120071249 |
---|
1025 | Ignore-this: d37ac1a115f6cdebc3dadb32131b6141 |
---|
1026 | ] |
---|
1027 | [docs: NEWS: add #1233 |
---|
1028 | zooko@zooko.com**20101120071634 |
---|
1029 | Ignore-this: 21345072269617999b78405fb314ab28 |
---|
1030 | ] |
---|
1031 | [docs: NEWS: merge two additions |
---|
1032 | zooko@zooko.com**20101111055851 |
---|
1033 | Ignore-this: 13105496bb418ebbd570ba68ef347f2 |
---|
1034 | ] |
---|
1035 | [NEWS: entry for #1242 (tilde expansion in 'tahoe backup --exclude-from'). refs #1242 |
---|
1036 | david-sarah@jacaranda.org**20101104011915 |
---|
1037 | Ignore-this: 1c85e7c74f5a48b4cdae5aa073c6b9fb |
---|
1038 | ] |
---|
1039 | [docs: NEWS: refs #1253 |
---|
1040 | zooko@zooko.com**20101111044118 |
---|
1041 | Ignore-this: 23d1cfbd2d43a68ca496958b55e4688f |
---|
1042 | ] |
---|
1043 | [NEWS: entries for #1190 and #1212, and minor cleanups. refs #1190, #1212 |
---|
1044 | david-sarah@jacaranda.org**20101031051426 |
---|
1045 | Ignore-this: c318dff69296ae1e1a897752b5221870 |
---|
1046 | ] |
---|
1047 | [NEWS: add news entry for #1223 |
---|
1048 | Francois Deppierraz <francois@ctrlaltdel.ch>**20101030111130 |
---|
1049 | Ignore-this: 6b6afd4b0f0527a3c9784c1db95d083 |
---|
1050 | ] |
---|
1051 | [NEWS: add a NEWS entry about bug #1045 |
---|
1052 | Francois Deppierraz <francois@ctrlaltdel.ch>**20101030101351 |
---|
1053 | Ignore-this: 7e758afbbd0f1d22a5d0b4fc38661c1d |
---|
1054 | ] |
---|
1055 | [NEWS: clarify (strengthen) description of what backdoors.rst declares, and add bugfix entries for 'tahoe cp' and Windows console bugs. refs #1216, #1224, #1232 |
---|
1056 | david-sarah@jacaranda.org**20101028180046 |
---|
1057 | Ignore-this: 1c3eef3cd353b06b6ee00ce87c5ef59a |
---|
1058 | ] |
---|
1059 | [docs: update NEWS ref: #1216 |
---|
1060 | zooko@zooko.com**20101015053719 |
---|
1061 | Ignore-this: 2e0b92e4145d667cdf075e64b7965530 |
---|
1062 | ] |
---|
1063 | [Convert docs/frontends and docs/specifications to reStructuredText format (not including file moves). |
---|
1064 | david-sarah@jacaranda.org**20101212004632 |
---|
1065 | Ignore-this: e3ceb2d832d73875abe48624ddbb5622 |
---|
1066 | ] |
---|
1067 | [update thingA/uri-extension docs |
---|
1068 | warner@lothar.com**20070610033148] |
---|
1069 | [mutable.txt: fix offset math in the SDMF layout |
---|
1070 | warner@allmydata.com**20080213233906] |
---|
1071 | [docs/uri.txt: update to reflect mutable files |
---|
1072 | warner@allmydata.com**20080214235929] |
---|
1073 | [webapi: make the /operations/ 't=status' qualifier optional, remove it from examples |
---|
1074 | warner@lothar.com**20081023225658] |
---|
1075 | [webapi.txt: improve t=deep-size output docs |
---|
1076 | warner@lothar.com**20081022005331] |
---|
1077 | [#514: add meta-refresh=60 tag to t=status page for incomplete operations |
---|
1078 | warner@lothar.com**20081022164842] |
---|
1079 | [webapi.txt: minor edits |
---|
1080 | warner@allmydata.com**20081208213256] |
---|
1081 | [webapi/deep-manifest t=JSON: don't return the (large) manifest/SI/verifycap lists unless the operation has completed, to avoid the considerable CPU+memory cost of creating the JSON (for 330k dirnodes, it could take two minutes to generate 275MB of JSON). They must be paid eventually, but not on every poll |
---|
1082 | warner@allmydata.com**20090109015932] |
---|
1083 | [webapi.txt: explain POST /uri/?t=upload, thanks to Toby Murray for the catch |
---|
1084 | warner@allmydata.com**20090115000803] |
---|
1085 | [CLI.txt: improve docs on 'tahoe manifest' to cover --verify-cap, --repair-cap, and streaming JSON |
---|
1086 | warner@allmydata.com**20090123225939] |
---|
1087 | [Added documentation for '--exclude' and friends cli backup command. |
---|
1088 | Alberto Berti <alberto@metapensiero.it>**20090224153049 |
---|
1089 | Ignore-this: bbc791fa56e38535bb82cc3077ffde90 |
---|
1090 | ] |
---|
1091 | [docs: a few edits/updates about dirnodes |
---|
1092 | zooko@zooko.com**20090413160837 |
---|
1093 | Ignore-this: 107fc1796e6c7f5b68b7e2517cce516a |
---|
1094 | ] |
---|
1095 | [dirnodes.txt: update docs a bit, we don't yet do choose-latest-version, just choose-any-version |
---|
1096 | warner@allmydata.com**20080208021405] |
---|
1097 | [update "tahoe backup" docs, and webapi.txt's mkdir-with-children |
---|
1098 | Brian Warner <warner@lothar.com>**20091127055900 |
---|
1099 | Ignore-this: defac1fb9a2335b0af3ef9dbbcc67b7e |
---|
1100 | ] |
---|
1101 | [FTP-and-SFTP.txt: fix ssh-keygen pointer |
---|
1102 | Brian Warner <warner@lothar.com>**20091207052803 |
---|
1103 | Ignore-this: bc2a70ee8c58ec314e79c1262ccb22f7 |
---|
1104 | ] |
---|
1105 | [Address comments by Kevan on 833 and add test for stripping spaces |
---|
1106 | david-sarah@jacaranda.org**20100127230642 |
---|
1107 | Ignore-this: de36aeaf4afb3ba05dbeb49a5e9a6b26 |
---|
1108 | ] |
---|
1109 | [Patch to accept t=set-children as well as t=set_children |
---|
1110 | david-sarah@jacaranda.org**20100124030020 |
---|
1111 | Ignore-this: 2c061f12af817cdf77feeeb64098ec3a |
---|
1112 | ] |
---|
1113 | [Fix example JSON in webapi.txt that cannot occur in practice |
---|
1114 | david-sarah@jacaranda.org**20100129032742 |
---|
1115 | Ignore-this: 361a1ba663d77169aeef93caef870097 |
---|
1116 | ] |
---|
1117 | [Add mutable field to t=json output for unknown nodes, when mutability is known |
---|
1118 | david-sarah@jacaranda.org**20100129031424 |
---|
1119 | Ignore-this: 1516d63559bdfeb6355485dff0f5c04e |
---|
1120 | ] |
---|
1121 | [Show -IMM and -RO suffixes for types of immutable and read-only unknown nodes in directory listings |
---|
1122 | david-sarah@jacaranda.org**20100128220800 |
---|
1123 | Ignore-this: dc5c17c0a566398f88e4303c41321e66 |
---|
1124 | ] |
---|
1125 | [web/directory.py: remove unused imports |
---|
1126 | warner@allmydata.com**20081007194820] |
---|
1127 | [doc_reformat_CLI.txt |
---|
1128 | freestorm77@gmail.com**20100424121512 |
---|
1129 | Ignore-this: 2d3a59326810adcb20ea232cea405645 |
---|
1130 | |
---|
1131 | - Added heading format begining and ending by "==" |
---|
1132 | - Added Index |
---|
1133 | - Added Title |
---|
1134 | |
---|
1135 | Note: No change are made in paragraphs content |
---|
1136 | |
---|
1137 | ] |
---|
1138 | [CLI.txt: introduce 'create-alias' before 'add-alias', document Unicode argument support, and other minor updates. |
---|
1139 | david-sarah@jacaranda.org**20100610225547 |
---|
1140 | Ignore-this: de7326e98d79291cdc15aed86ae61fe8 |
---|
1141 | ] |
---|
1142 | [doc: add mention of "tahoe create-alias" in the security-warning section of CLI.txt |
---|
1143 | zooko@zooko.com**20081224211646 |
---|
1144 | Ignore-this: 6bb0ab3af59a79e05ebccb800d9a12b0 |
---|
1145 | ] |
---|
1146 | [docs/CLI.txt: add a warning about leaking dircaps through argv in add-alias |
---|
1147 | warner@lothar.com**20080721223309] |
---|
1148 | [FTP-and-SFTP.txt: add Known Issues section. |
---|
1149 | david-sarah@jacaranda.org**20100619004311 |
---|
1150 | Ignore-this: 8d9b1da941cbc24657bb6ec268f984dd |
---|
1151 | ] |
---|
1152 | [FTP-and-SFTP.txt: remove description of public key format that is not actually implemented. Document that SFTP does not support server private keys with passphrases, and that FTP cannot list directories containing mutable files. |
---|
1153 | david-sarah@jacaranda.org**20100619001738 |
---|
1154 | Ignore-this: bf9ef53b85b934822ec76060e1fcb3cb |
---|
1155 | ] |
---|
1156 | [webapi.txt: fix statement about leap seconds. |
---|
1157 | david-sarah@jacaranda.org**20100619035603 |
---|
1158 | Ignore-this: 80b685446e915877a421cf3e31cedf30 |
---|
1159 | ] |
---|
1160 | [docs/specifications/dirnodes.txt: bring layer terminology up-to-date with architecture.txt, and a few other updates (e.g. note that the MAC is no longer verified, and that URIs can be unknown). Also 'Tahoe'->'Tahoe-LAFS'. |
---|
1161 | david-sarah@jacaranda.org**20100723054703 |
---|
1162 | Ignore-this: f3b98183e7d0a0f391225b8b93ac6c37 |
---|
1163 | ] |
---|
1164 | [webapi.txt: fix grammatical error. |
---|
1165 | david-sarah@jacaranda.org**20100810064127 |
---|
1166 | Ignore-this: 64f66aa71682195f82ac1066fe947e35 |
---|
1167 | ] |
---|
1168 | [dirnode.py: stop writing 'ctime' and 'mtime' fields. Includes documentation and test changes. |
---|
1169 | david-sarah@jacaranda.org**20100618230119 |
---|
1170 | Ignore-this: 709119898499769dd64c7977db7c84a6 |
---|
1171 | ] |
---|
1172 | [dirnode.py: Fix bug that caused 'tahoe' fields, 'ctime' and 'mtime' not to be updated when new metadata is present. |
---|
1173 | david-sarah@jacaranda.org**20100602014644 |
---|
1174 | Ignore-this: 5bac95aa897b68f2785d481e49b6a66 |
---|
1175 | ] |
---|
1176 | [trivial: remove trailing whitespace and unused import |
---|
1177 | zooko@zooko.com**20090412021742 |
---|
1178 | Ignore-this: e249172dd0ef51ee034819bc4c62cd9d |
---|
1179 | ] |
---|
1180 | [dirnode.py: fix a bug in the no-write change for Adder, and improve test coverage. Add a 'metadata' argument to create_subdirectory, with documentation. Also update some comments in test_dirnode.py made stale by the ctime/mtime change. |
---|
1181 | david-sarah@jacaranda.org**20100602032641 |
---|
1182 | Ignore-this: 48817b54cd63f5422cb88214c053b03b |
---|
1183 | ] |
---|
1184 | [dirnode.py: Fix #1034 (MetadataSetter does not enforce restriction on setting 'tahoe' subkeys), and expose the metadata updater for use by SFTP. Also, support diminishing a child cap to read-only if 'no-write' is set in the metadata. |
---|
1185 | david-sarah@jacaranda.org**20100601045428 |
---|
1186 | Ignore-this: 14f26e17e58db97fad0dcfd350b38e95 |
---|
1187 | ] |
---|
1188 | [docs: doc of the download status page |
---|
1189 | zooko@zooko.com**20100814054117 |
---|
1190 | Ignore-this: a82ec33da3c39a7c0d47a7a6b5f81bbb |
---|
1191 | ref: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1169#comment:1 |
---|
1192 | ] |
---|
1193 | [docs/frontends/FTP-and-SFTP.txt: warn users about connecting to the FTP and SFTP servers remotely. Fixes #1192 |
---|
1194 | david-sarah@jacaranda.org**20100910193234 |
---|
1195 | Ignore-this: 7e403e9f349dc38f49197eb0835d47c5 |
---|
1196 | ] |
---|
1197 | [docs/frontends/FTP-and-SFTP.txt : ftpd and sftpd doesn't listen on loopback interface only |
---|
1198 | marc.doudiet@nimag.net**20100813140853 |
---|
1199 | Ignore-this: 5b5dfd0e5991a2669fe41ba13ea21bd4 |
---|
1200 | ] |
---|
1201 | [docs/frontends/webapi.txt: note that 'count-good-share-hosts' is computed incorrectly; refs #1115 |
---|
1202 | david-sarah@jacaranda.org**20100911002548 |
---|
1203 | Ignore-this: 606989661c95a6db109f8fb7bd9a8bf9 |
---|
1204 | ] |
---|
1205 | [docs/frontends/webapi.txt: document that the meaning of the 'healthy' field may change in future to reflect servers-of-happiness; refs #614 |
---|
1206 | david-sarah@jacaranda.org**20100911003147 |
---|
1207 | Ignore-this: 4661d576c145cc2b641481b70e34e357 |
---|
1208 | ] |
---|
1209 | [docs/configuration.rst: correct an error in the Example section ('[helper]run_helper' should be '[helper]enabled'). |
---|
1210 | david-sarah@jacaranda.org**20110123022304 |
---|
1211 | Ignore-this: d16d7c0d5faea3774dc77e7ae4212138 |
---|
1212 | ] |
---|
1213 | [docs: convert all .txt docs to .rst thanks to Ravi Pinjala |
---|
1214 | zooko@zooko.com**20101015052913 |
---|
1215 | Ignore-this: 178a5122423189ecfc45b142314a78ec |
---|
1216 | fixes #1225 |
---|
1217 | ] |
---|
1218 | [docs/filesystem-notes.txt: add notes about enabling the 'directory index' feature on ext3 filesystems for storage server lookup speed |
---|
1219 | warner@allmydata.com**20080821205901] |
---|
1220 | [logging.txt: explain how to put log.err at the end of Deferred chains, explain FLOGTOTWISTED=1 |
---|
1221 | warner@lothar.com**20080920173500] |
---|
1222 | [node.py: remove support for the old BASEDIR/authorized_keys.PORT file |
---|
1223 | warner@allmydata.com**20081029043420] |
---|
1224 | [docs: fix cutnpasto in source:docs/logging.txt |
---|
1225 | zooko@zooko.com**19700105140422 |
---|
1226 | Ignore-this: de0f9ceb8e0ca4c158492ad2f9a6ba6f |
---|
1227 | ] |
---|
1228 | [tahoe.cfg: add tub.location, to override the location hints we include in our FURL. This replaces advertised_ip_addresses, which doesn't remain useful enough to retain it. Helps with #517 (Tor). |
---|
1229 | warner@allmydata.com**20081113004458] |
---|
1230 | [test_node: improve coverage of advertised_ip_addresses a bit |
---|
1231 | warner@allmydata.com**20080930060816] |
---|
1232 | [docs/configuration.txt: fix minor typo |
---|
1233 | warner@lothar.com**20081202215101] |
---|
1234 | [node.py: use NODEDIR/tmp for the 'tempfile' module's temporary directory, so webapi upload tempfiles are put there instead of /tmp . You can set it to something else by setting [node]tempdir in tahoe.cfg |
---|
1235 | warner@allmydata.com**20090115020015] |
---|
1236 | [util/time_format: new routine to parse dates like 2009-03-18, switch expirer to use it. I'd prefer to use 18-Mar-2009, but it is surprisingly non-trivial to build a parser that will take UTC dates instead of local dates |
---|
1237 | warner@allmydata.com**20090319005814 |
---|
1238 | Ignore-this: 4f08b301c780a78084fa02a09b5dda3 |
---|
1239 | ] |
---|
1240 | [add utility function to parse durations, for lease-expiration config |
---|
1241 | warner@lothar.com**20090317070117 |
---|
1242 | Ignore-this: 2f4fa4352c887b4767969f0ea7931644 |
---|
1243 | ] |
---|
1244 | [move GC docs out of proposed/, since it's all implemented now. Add reference to configuration.txt . Add expire.*= suggestions to tahoe.cfg . |
---|
1245 | warner@allmydata.com**20090323230820 |
---|
1246 | Ignore-this: ce0ec977f49c4a3642cf3a7ea7789dc4 |
---|
1247 | ] |
---|
1248 | [storage server: detect disk space usage on Windows too (fixes #637) |
---|
1249 | david-sarah@jacaranda.org**20091121055644 |
---|
1250 | Ignore-this: 20fb30498174ce997befac7701fab056 |
---|
1251 | ] |
---|
1252 | [storage.py: unbreak readonly_storage=True on windows |
---|
1253 | warner@allmydata.com**20081202014946] |
---|
1254 | [storage.py: oops, fix windows again, readonly_storage wasn't getting picked up properly |
---|
1255 | warner@lothar.com**20081203010317] |
---|
1256 | [test_storage.py: more windows-vs-readonly-storage fixes |
---|
1257 | warner@lothar.com**20081203014102] |
---|
1258 | [BucketCountingCrawler: store just the count, not cycle+count, since it's too easy to make usage mistakes otherwise |
---|
1259 | warner@lothar.com**20090221035831 |
---|
1260 | Ignore-this: 573b6f651af74380cdd64059fbbdda4b |
---|
1261 | ] |
---|
1262 | [BucketCountingCrawler: rename status and state keys to use 'bucket' instead of 'share', because the former is more accurate |
---|
1263 | warner@lothar.com**20090221034606 |
---|
1264 | Ignore-this: cf819f63fac9506c878d6c9715ce35b7 |
---|
1265 | ] |
---|
1266 | [stats: don't return booleans: it violates the schema. Add a test. |
---|
1267 | warner@lothar.com**20081204210124] |
---|
1268 | [backupdb.txt: fix ST_CTIME reference |
---|
1269 | Brian Warner <warner@lothar.com>**20100114194052 |
---|
1270 | Ignore-this: 5a189c7a1181b07dd87f0a08ea31b6d3 |
---|
1271 | ] |
---|
1272 | [docs: fix references to --no-storage, explanation of [storage] section |
---|
1273 | Brian Warner <warner@lothar.com>**20100127200956 |
---|
1274 | Ignore-this: f4be1763a585e1ac6299a4f1b94a59e0 |
---|
1275 | ] |
---|
1276 | [Add create-node CLI command, and make create-client equivalent to create-node --no-storage (fixes #760) |
---|
1277 | david-sarah@jacaranda.org**20100116052055 |
---|
1278 | Ignore-this: 47d08b18c69738685e13ff365738d5a |
---|
1279 | ] |
---|
1280 | [windows installer - changed to update for Mikes recent changes to add AllmydataManager which uses a named pipe to avoid some permissions issues on Vista and fixes some netowkr problems |
---|
1281 | secorp@allmydata.com**20080517011257] |
---|
1282 | [native client - removed unused file (used to be for elevating privileges) and changed installer to start up the AllmydataTray executable directly |
---|
1283 | secorp@allmydata.com**20080328192508] |
---|
1284 | [windows installer - changed to reflect the new StartAllmydata.exe executable that is used to launch the various pieces of the native client. Also verified that the SMB service was stopped when uninstalling. |
---|
1285 | secorp@allmydata.com**20080318174443] |
---|
1286 | [native client - updated to match naming for service and tray executable |
---|
1287 | secorp@allmydata.com**20080222022431] |
---|
1288 | [native client - changing way the executables ask for elevated privileges |
---|
1289 | secorp@allmydata.com**20080328064107] |
---|
1290 | [native client - updated to auto mount drive at start as well as when the drive is opened |
---|
1291 | secorp@allmydata.com**20080327042631] |
---|
1292 | [native client - updated to automatically create a Backup directory, temp directory cleanup, automatic mounting and unmounting of the drive when starting and stopping the service, lots of Vista backup error fixes |
---|
1293 | secorp@allmydata.com**20080327040530] |
---|
1294 | [native client - updated to fix windows vista backup rproblems, edit word documents directly on the drive, requeue files that failed to upload from the node to the helper |
---|
1295 | secorp@allmydata.com**20080326000059] |
---|
1296 | [native client - adding support for special icons for shared and recycling directories |
---|
1297 | secorp@allmydata.com**20080320223026] |
---|
1298 | [native client - adding checks for elevating and managing privileges on Vista |
---|
1299 | secorp@allmydata.com**20080318221259] |
---|
1300 | [native client - added StartAllmydata.exe so that we can start/stop processes in Vista |
---|
1301 | secorp@allmydata.com**20080318171847] |
---|
1302 | [native client - fixes for drive size (now 1TB), running service as adminstrator to allow client stopping and starting in Vista, large number of files fix |
---|
1303 | secorp@allmydata.com**20080317212203] |
---|
1304 | [native client - fixed icon for system tray, improved link batching |
---|
1305 | secorp@allmydata.com**20080313182254] |
---|
1306 | [native client - updated executables and dll's to have green icon, preference for log levels, and force a link every 100 files when uploading large amounts of files |
---|
1307 | secorp@allmydata.com**20080311203126] |
---|
1308 | [native client - updated .exe's and .dll's with better caching, using new multi-child upload call, preferences dialog |
---|
1309 | secorp@allmydata.com**20080311051050] |
---|
1310 | [native client - update to handle large file upload |
---|
1311 | secorp@allmydata.com**20080227061743] |
---|
1312 | [native client - adding ability to mount drives |
---|
1313 | secorp@allmydata.com**20080229201448] |
---|
1314 | [native client - added upload metrics, machine name cfg, better queue resumption |
---|
1315 | secorp@allmydata.com**20080227004331] |
---|
1316 | [native client - added AllmydataTray (replaces TahoeTray) |
---|
1317 | secorp@allmydata.com**20080222023946] |
---|
1318 | [native client - added ability to queue uploads and resume upon service restart |
---|
1319 | secorp@allmydata.com**20080222030207] |
---|
1320 | [native client - renaming things to take Tahoe out of the name, improving caching |
---|
1321 | secorp@allmydata.com**20080222020458] |
---|
1322 | [native client - updating service name to match what the launcher uses |
---|
1323 | secorp@allmydata.com**20080220032034] |
---|
1324 | [WinFUSE updates for beta release |
---|
1325 | secorp@allmydata.com**20080220025837] |
---|
1326 | [doc: warn that unicode might not work, in CLI.txt |
---|
1327 | zooko@zooko.com**20081224211618 |
---|
1328 | Ignore-this: 89355b53aab40af1d45a3746bb90ed10 |
---|
1329 | ] |
---|
1330 | [test_runner.py: revert the CreateNode section to using runner() inline, rather than spawning a process, to get more precise coverage |
---|
1331 | warner@lothar.com**20090209082617 |
---|
1332 | Ignore-this: e7f0ae5c9a2c2d8157289ef39fda371 |
---|
1333 | ] |
---|
1334 | [setup: fix test_runner to assert that lines which are output to stderr must end with a punctuation mark (apparently re.search("x$", "x\r\n") does not match. :-() |
---|
1335 | zooko@zooko.com**20090127203505 |
---|
1336 | Ignore-this: d323b364d7cafb4c5847c0cc8346702e |
---|
1337 | ] |
---|
1338 | [trivial: remove unused imports noticed by pyflakes |
---|
1339 | zooko@zooko.com**20090127211148 |
---|
1340 | Ignore-this: aee8bae8aa6f641fe15c5fe947d92f77 |
---|
1341 | ] |
---|
1342 | [trivial: removed unused imports noticed by pyflakes |
---|
1343 | zooko@zooko.com**20090122215213 |
---|
1344 | Ignore-this: a83aa1f27b31a72aed07caa866abfafe |
---|
1345 | ] |
---|
1346 | [setup: fix test_runner to invoke bin/tahoe.exe instead of bin/tahoe if on Windows (this is what happens when a user invokes bin/tahoe on Windows) |
---|
1347 | zooko@zooko.com**20090127203717 |
---|
1348 | Ignore-this: e8795f2d3c70e871839d893bdfec0186 |
---|
1349 | ] |
---|
1350 | [docs/proposed: new Accounting overview, discuss in #666 |
---|
1351 | warner@allmydata.com**20090324015752 |
---|
1352 | Ignore-this: 7379396536e85194b1c1bec21288adc7 |
---|
1353 | ] |
---|
1354 | [docs: fix the asymptotic network performance of mutable file download in performance.txt, rename the howto-make-a-release file |
---|
1355 | zooko@zooko.com**20100228061439 |
---|
1356 | Ignore-this: c983b2fa7864f717ec17fb556f8a95d2 |
---|
1357 | ] |
---|
1358 | [doc_reformat_backupdb.txt |
---|
1359 | freestorm77@gmail.com**20100424120416 |
---|
1360 | Ignore-this: fed696530e9d2215b6f5058acbedc3ab |
---|
1361 | |
---|
1362 | |
---|
1363 | - Added heading format begining and ending by "==" |
---|
1364 | - Added Index |
---|
1365 | - Added Title |
---|
1366 | |
---|
1367 | Note: No change are made in paragraphs content |
---|
1368 | |
---|
1369 | ] |
---|
1370 | [doc_reformat_debian.txt |
---|
1371 | freestorm77@gmail.com**20100424120537 |
---|
1372 | Ignore-this: 45fe4355bb869e55e683405070f47eff |
---|
1373 | |
---|
1374 | |
---|
1375 | - Added heading format begining and ending by "==" |
---|
1376 | - Added Index |
---|
1377 | - Added Title |
---|
1378 | |
---|
1379 | Note: No change are made in paragraphs content |
---|
1380 | |
---|
1381 | ] |
---|
1382 | [doc_reformat_garbage-collection.txt |
---|
1383 | freestorm77@gmail.com**20100424120830 |
---|
1384 | Ignore-this: aad3e4c99670871b66467062483c977d |
---|
1385 | |
---|
1386 | |
---|
1387 | - Added heading format begining and ending by "==" |
---|
1388 | - Added Index |
---|
1389 | - Added Title |
---|
1390 | |
---|
1391 | Note: No change are made in paragraphs content |
---|
1392 | |
---|
1393 | ] |
---|
1394 | [doc_reformat_helper.txt |
---|
1395 | freestorm77@gmail.com**20100424120649 |
---|
1396 | Ignore-this: de2080d6152ae813b20514b9908e37fb |
---|
1397 | |
---|
1398 | |
---|
1399 | - Added heading format begining and ending by "==" |
---|
1400 | - Added Index |
---|
1401 | - Added Title |
---|
1402 | |
---|
1403 | Note: No change are made in paragraphs content |
---|
1404 | |
---|
1405 | ] |
---|
1406 | [doc_refomat_logging.txt |
---|
1407 | freestorm77@gmail.com**20100424114316 |
---|
1408 | Ignore-this: 593f0f9914516bf1924dfa6eee74e35f |
---|
1409 | |
---|
1410 | - Added heading format begining and ending by "==" |
---|
1411 | - Added Index |
---|
1412 | - Added Title |
---|
1413 | |
---|
1414 | Note: No change are made in paragraphs content |
---|
1415 | |
---|
1416 | ] |
---|
1417 | [doc_reformat_stats.txt |
---|
1418 | freestorm77@gmail.com**20100424114615 |
---|
1419 | Ignore-this: af315db5f7e3a17219ff8fb39bcfcd60 |
---|
1420 | |
---|
1421 | |
---|
1422 | - Added heading format begining and ending by "==" |
---|
1423 | - Added Index |
---|
1424 | - Added Title |
---|
1425 | |
---|
1426 | Note: No change are made in paragraphs content |
---|
1427 | |
---|
1428 | |
---|
1429 | **END OF DESCRIPTION*** |
---|
1430 | |
---|
1431 | Place the long patch description above the ***END OF DESCRIPTION*** marker. |
---|
1432 | The first line of this file will be the patch name. |
---|
1433 | |
---|
1434 | |
---|
1435 | This patch contains the following changes: |
---|
1436 | |
---|
1437 | M ./docs/stats.txt -2 +2 |
---|
1438 | ] |
---|
1439 | [docs/stats.txt: add TOC, notes about controlling gatherer's listening port |
---|
1440 | Brian Warner <warner@lothar.com>**20091224202133 |
---|
1441 | Ignore-this: 8eef63b0e18db5aa8249c2eafde02c05 |
---|
1442 | |
---|
1443 | Thanks to Jody Harris for the suggestions. |
---|
1444 | ] |
---|
1445 | [Minor documentation tweaks. |
---|
1446 | david-sarah@jacaranda.org**20100603054458 |
---|
1447 | Ignore-this: e30ae407b0039dfa5b341d8f88e7f959 |
---|
1448 | ] |
---|
1449 | [doc_reformat_architecture.txt |
---|
1450 | freestorm77@gmail.com**20100424120133 |
---|
1451 | Ignore-this: 6e2cab4635080369f2b8cadf7b2f58e |
---|
1452 | |
---|
1453 | |
---|
1454 | - Added heading format begining and ending by "==" |
---|
1455 | - Added Index |
---|
1456 | - Added Title |
---|
1457 | |
---|
1458 | Note: No change are made in paragraphs content |
---|
1459 | |
---|
1460 | |
---|
1461 | ] |
---|
1462 | [doc_reformat_configuration.txt |
---|
1463 | freestorm77@gmail.com**20100424104903 |
---|
1464 | Ignore-this: 4fbabc51b8122fec69ce5ad1672e79f2 |
---|
1465 | |
---|
1466 | |
---|
1467 | - Added heading format begining and ending by "==" |
---|
1468 | - Added Index |
---|
1469 | - Added Title |
---|
1470 | |
---|
1471 | Note: No change are made in paragraphs content |
---|
1472 | |
---|
1473 | ] |
---|
1474 | [doc_reformat_FTP-and-SFTP.txt |
---|
1475 | freestorm77@gmail.com**20100424121334 |
---|
1476 | Ignore-this: 3736b3d8f9a542a3521fbb566d44c7cf |
---|
1477 | |
---|
1478 | |
---|
1479 | - Added heading format begining and ending by "==" |
---|
1480 | - Added Index |
---|
1481 | - Added Title |
---|
1482 | |
---|
1483 | Note: No change are made in paragraphs content |
---|
1484 | |
---|
1485 | ] |
---|
1486 | [setup: organize misc/ scripts and tools and remove obsolete ones |
---|
1487 | zooko@zooko.com**20100607051618 |
---|
1488 | Ignore-this: 161db1158c6b7be8365b0b3dee2e0b28 |
---|
1489 | This is for ticket #1068. |
---|
1490 | ] |
---|
1491 | [misc cleanup: remove old .tac files, move old stuff into misc/ |
---|
1492 | warner@lothar.com**20070407033738] |
---|
1493 | [misc/figleaf.excludes: exclude simplejson too, since we don't run their tests |
---|
1494 | warner@allmydata.com**20070712232625] |
---|
1495 | [figleaf.excludes: ignore allmydata.Crypto, since so little of it gets used by allmydata.test |
---|
1496 | warner@lothar.com**20070708060009] |
---|
1497 | [do not include foolscap or zfec coverage in the figleaf reports for the moment: they have their own test suites |
---|
1498 | warner@allmydata.com**20070505000018] |
---|
1499 | [logtool: rename get-logs.py to logtool.py |
---|
1500 | warner@lothar.com**20071119003055] |
---|
1501 | [misc/boodlegrid.tac: tool to monitor a grid through its flogports |
---|
1502 | warner@allmydata.com**20080326230934] |
---|
1503 | [misc/delete-old-helper.sh: simple script to delete old+abandoned helper files |
---|
1504 | warner@lothar.com**20080528041720] |
---|
1505 | [setup: quote the results of misc/find_trial.py so that they can be passed through a shell even if they contain spaces |
---|
1506 | zooko@zooko.com**20080605225945] |
---|
1507 | [setup: make find_trial self-contained so that we don't have a bootstrapping problem -- if allmydata can't be imported we still want to be able to run find_trial |
---|
1508 | zooko@zooko.com**20080123160426] |
---|
1509 | [mac/Makefile: upload the .dmg file with foolscap xfer-client.py instead of scp |
---|
1510 | warner@allmydata.com**20080908231943] |
---|
1511 | [mac build: fixed permission problem on upload .dmg |
---|
1512 | robk-tahoe@allmydata.com**20080123205118] |
---|
1513 | [misc/fixshebangs.py |
---|
1514 | zooko@zooko.com**20081105000130 |
---|
1515 | Ignore-this: 13b03ea2d2ed8982f8346a827b46bd2e |
---|
1516 | ] |
---|
1517 | [util: copy in pyutil.fileutil.ReopenableNamedTemporaryFile |
---|
1518 | zooko@zooko.com**20081104234715 |
---|
1519 | Ignore-this: f1131e9b8f249b5f10be4cba2aeb6118 |
---|
1520 | ] |
---|
1521 | [shebang: replace "/usr/bin/python" with "/usr/bin/env python" |
---|
1522 | zooko@zooko.com**20081105000306 |
---|
1523 | Ignore-this: 8ae33a8a7828fa7423422e252f2cfd74 |
---|
1524 | ] |
---|
1525 | [misc/count_dirs.py: dev tool to estimate filetree space consumption |
---|
1526 | warner@lothar.com**20070617045513] |
---|
1527 | [Makefile: add 'find-trailing-spaces' tool and target |
---|
1528 | warner@allmydata.com**20071106033208] |
---|
1529 | [add a munin plugin to display introducer stats |
---|
1530 | warner@allmydata.com**20080325201552] |
---|
1531 | [Copy amd-nodememory munin plugin over to tahoe and point at correct pidfile |
---|
1532 | zandr@allmydata.com**20080326005004] |
---|
1533 | [add munin/tahoe-rootdir-space |
---|
1534 | warner@allmydata.com**20080328231809] |
---|
1535 | [munin/tahoe_estimate_files.py: tool to estimate the total number of slots (mutable and immutable combined) in the grid, from a small sample |
---|
1536 | warner@allmydata.com**20080424182835] |
---|
1537 | [misc/cpu-watcher*: add some tools to monitor CPU usage of arbitrary processes, like tahoe nodes |
---|
1538 | warner@allmydata.com**20080507193429] |
---|
1539 | [munin: add tahoe_cpu_watcher.py, to track the data from misc/cpu-watcher.tac |
---|
1540 | warner@allmydata.com**20080507201908] |
---|
1541 | [misc/munin/tahoe_spacetime.py: add a munin plugin to estimate how much time remains before you run out of space |
---|
1542 | warner@allmydata.com**20080528183354] |
---|
1543 | [start work on 'check-grid' target, for use in an automated prodnet tester. Just a docstring so far. |
---|
1544 | warner@allmydata.com**20080618195747] |
---|
1545 | [misc/munin: add server_latency plugin |
---|
1546 | warner@lothar.com**20080714192919] |
---|
1547 | [munin: add plugin for storage-server operations per second |
---|
1548 | warner@lothar.com**20080714201811] |
---|
1549 | [munin: add tahoe_overhead plugin, to measure effectiveness of GC and deleting data from inactive accounts |
---|
1550 | warner@lothar.com**20080807203925] |
---|
1551 | [misc/make_umid: little script and elisp fragment to insert umid= arguments |
---|
1552 | warner@allmydata.com**20080826015918] |
---|
1553 | [munin: add tahoe_diskleft plugin, update spacetime/diskwatcher.tac to support it |
---|
1554 | warner@allmydata.com**20080828203236] |
---|
1555 | [diskwatcher.tac: include total-bytes-used |
---|
1556 | warner@lothar.com**20080807201214] |
---|
1557 | [diskwatcher.tac: add async-GET code, but leave it commented out: urlopen() seems to work better for now |
---|
1558 | warner@lothar.com**20080807050327] |
---|
1559 | [misc/xfer-client.py: small foolscap utility to transfer a file to a waiting server |
---|
1560 | warner@allmydata.com**20080908231903] |
---|
1561 | [misc/make-canary-files.py: tool to create 'canary files', explained in the docstring |
---|
1562 | warner@allmydata.com**20080925004716] |
---|
1563 | [munin/tahoe_disktotal: new plugin to show total disk space (used and unused) in the grid |
---|
1564 | warner@allmydata.com**20081118065101] |
---|
1565 | [munin/tahoe_diskused: new plugin to show total disk space used across the grid |
---|
1566 | warner@allmydata.com**20081118072525] |
---|
1567 | [misc/*: remove RuntimeError too |
---|
1568 | warner@lothar.com**20090222233401 |
---|
1569 | Ignore-this: b76f8a184f75bb28eb9d8002f957936a |
---|
1570 | ] |
---|
1571 | [logtool: add 'gather' and 'dump' modes |
---|
1572 | warner@lothar.com**20071119003204] |
---|
1573 | [setup: add "test_mac_diskimage" command which attempts to mount and use a .dmg to make sure it has a good Tahoe distribution in it |
---|
1574 | zooko@zooko.com**20090712230940 |
---|
1575 | Ignore-this: e889aaf49699429afeb211f7403fec74 |
---|
1576 | ] |
---|
1577 | [setup: if you sdist_dsc (to produce the input files for dpkg-buildpackage) then run darcsver first |
---|
1578 | zooko@zooko.com**20090216201558 |
---|
1579 | Ignore-this: b85be51b3d4a9a19a3366e690f1063e2 |
---|
1580 | ] |
---|
1581 | [setup: make sure you use darcsver whenever you are going to run trial |
---|
1582 | zooko@zooko.com**20090130203819 |
---|
1583 | Ignore-this: 2bd632d7540020c0dd893d337163d396 |
---|
1584 | This fixes the bug Brian had where he ran "python ./setup.py trial" and the allmydata-tahoe version number came out as 0.0.0. |
---|
1585 | ] |
---|
1586 | [new approach for debian packaging, sharing pieces across distributions. Still experimental, still only works for sid. |
---|
1587 | warner@lothar.com**20090818190527 |
---|
1588 | Ignore-this: a75eb63db9106b3269badbfcdd7f5ce1 |
---|
1589 | ] |
---|
1590 | [new experimental deb-packaging rules. Only works for sid so far. |
---|
1591 | Brian Warner <warner@lothar.com>**20090818014052 |
---|
1592 | Ignore-this: 3a26ad188668098f8f3cc10a7c0c2f27 |
---|
1593 | ] |
---|
1594 | [Add docs/stats.py, explaining Tahoe stats, the gatherer, and the munin plugins. |
---|
1595 | Brian Warner <warner@lothar.com>**20091223052400 |
---|
1596 | Ignore-this: 7c9eeb6e5644eceda98b59a67730ccd5 |
---|
1597 | ] |
---|
1598 | [misc/ringsim.py: tool to discuss #302 |
---|
1599 | Brian Warner <warner@lothar.com>**20091226060339 |
---|
1600 | Ignore-this: fc171369b8f0d97afeeb8213e29d10ed |
---|
1601 | ] |
---|
1602 | [code coverage: replace figleaf with coverage.py, should work on py2.6 now. |
---|
1603 | Brian Warner <warner@lothar.com>**20100203165421 |
---|
1604 | Ignore-this: 46ab590360be6a385cb4fc4e68b6b42c |
---|
1605 | |
---|
1606 | It still lacks the right HTML report (the builtin report is very pretty, but |
---|
1607 | lacks the "lines uncovered" numbers that I want), and the half-finished |
---|
1608 | delta-from-last-run measurements. |
---|
1609 | ] |
---|
1610 | [figleaf.el: announce annotation/deannotation |
---|
1611 | warner@allmydata.com**20070105035240] |
---|
1612 | [figleaf.el: add some emacs22 comments |
---|
1613 | warner@lothar.com**20070107191015] |
---|
1614 | [figleaf.el: add code to auto-enable the annotation mode for all source files |
---|
1615 | Brian Warner <warner@allmydata.com>**20070118070011] |
---|
1616 | [makefile: pass COVERAGEDIR= properly to the target makefile |
---|
1617 | warner@allmydata.com**20070702222249] |
---|
1618 | [makefile: change upload-figleaf target to create a 'current' link |
---|
1619 | warner@allmydata.com**20070702221020] |
---|
1620 | [setup: remove some things from .darcs-boringfile which are no longer boring since we no longer use them |
---|
1621 | zooko@zooko.com**20080122234023] |
---|
1622 | [remove simplejson.egg-info from the repo (and boringfile it), it should never have been in the original tarball |
---|
1623 | warner@lothar.com**20070710225158] |
---|
1624 | [boringfile: add simplejson generated files |
---|
1625 | warner@lothar.com**20070710223436] |
---|
1626 | [.darcs-boringfile: ignore some build/ directories for foolscap and zfec |
---|
1627 | warner@lothar.com**20070504033151] |
---|
1628 | [.darcs-boringfile: update to match misc/dependencies setup.py changes |
---|
1629 | warner@allmydata.com**20080111022110] |
---|
1630 | [setup: update the list of files that we think are boring when we are using darcs |
---|
1631 | zooko@zooko.com**20080101054904] |
---|
1632 | [setup: new name for setuptools_darcs plugin is also boring |
---|
1633 | zooko@zooko.com**20071110002809] |
---|
1634 | [setup: setuptools_darcs_plugin is boring |
---|
1635 | zooko@zooko.com**20071015042201] |
---|
1636 | [trial_figleaf.py: make our figleaf code compatible with both Twisted-8.x and Twisted-2.5.x |
---|
1637 | warner@allmydata.com**20080403004855] |
---|
1638 | [Makefile: add figleaf-delta-output, to render figleaf coverage differences with a previous run |
---|
1639 | warner@lothar.com**20090212211829 |
---|
1640 | Ignore-this: 9c78861c4abed3d6c2d013ff40d9b4fb |
---|
1641 | ] |
---|
1642 | [Makefile: use run_with_pythonpath, move windows targets into a separate Makefile |
---|
1643 | warner@allmydata.com**20080912044508] |
---|
1644 | [Makefile: check-memory: run mode=receive along with everything else |
---|
1645 | Brian Warner <warner@allmydata.com>**20070920033917] |
---|
1646 | [setup.py: add 'setup.py run_with_pythonpath', to run other commands with PYTHONPATH set usefully |
---|
1647 | warner@allmydata.com**20080912044418] |
---|
1648 | [Makefile: include the figleaf pickle in the uploaded coverage data, for later differential analysis |
---|
1649 | warner@allmydata.com**20090212000913 |
---|
1650 | Ignore-this: e31002f4a7d55d8a2ca1131a1066c066 |
---|
1651 | ] |
---|
1652 | [fix quicktest: stop using setuptools, add misc/run-with-pythonpath.py, to make it run faster |
---|
1653 | warner@lothar.com**20090414201400] |
---|
1654 | [makefile: added 'fuse-test' target to makefile, to run 'runtests' |
---|
1655 | robk-tahoe@allmydata.com**20081019132518] |
---|
1656 | [Makefile: use 'setup.py test' for test/quicktest targets (instead of |
---|
1657 | Brian Warner <warner@allmydata.com>**20090130102536 |
---|
1658 | Ignore-this: da07fae8417bc54a610786bc57959c5e |
---|
1659 | 'setup.py trial'). 'setup.py trial' clobbers the tahoe .egg's PKG-INFO |
---|
1660 | "Version:" field (resetting it to 0.0.0), possibly because it isn't invoking |
---|
1661 | the darcsver subcommand that 'setup.py test' does before it runs the 'trial' |
---|
1662 | subcommand. |
---|
1663 | |
---|
1664 | This slows down quicktest by another couple of seconds (see #591) and adds |
---|
1665 | more noise to its output, but without this change, 'make test' and 'make |
---|
1666 | quicktest' fail on test_runner (which spawns bin/tahoe as a subprocess, and |
---|
1667 | with a mangled Version:, the setuptools-based entry point script refuses to |
---|
1668 | recognize our source tree as a usable version of Tahoe). |
---|
1669 | ] |
---|
1670 | [rollback the #591 fix, since it breaks quicktest entirely |
---|
1671 | warner@allmydata.com**20090123232812] |
---|
1672 | [setup: use "trial" executable instead of the setuptools_trial plugin for "make quicktest" |
---|
1673 | zooko@zooko.com**20090123225830 |
---|
1674 | Ignore-this: f70fb8873e0ac94f0c55e57f0f826334 |
---|
1675 | This is to fix #591 ("make quicktest" could be quicker and less noisy). This means that "make quicktest" won't work unless the user has manually installed Twisted already such that the "trial" executable is on their PATH and the Twisted package is on their PYTHONPATH. This bypasses the behavior of setuptools_trial which builds and checks package dependencies before executing the tests. |
---|
1676 | ] |
---|
1677 | [setup: remove a convenience copy of figleaf, to ease inclusion into Ubuntu Karmic Koala |
---|
1678 | zooko@zooko.com**20090924053215 |
---|
1679 | Ignore-this: a0b0c990d6e2ee65c53a24391365ac8d |
---|
1680 | We need to carefully document the licence of figleaf in order to get Tahoe-LAFS into Ubuntu Karmic Koala. However, figleaf isn't really a part of Tahoe-LAFS per se -- this is just a "convenience copy" of a development tool. The quickest way to make Tahoe-LAFS acceptable for Karmic then, is to remove figleaf from the Tahoe-LAFS tarball itself. People who want to run figleaf on Tahoe-LAFS (as everyone should want) can install figleaf themselves. I haven't tested this -- there may be incompatibilities between upstream figleaf and the copy that we had here... |
---|
1681 | ] |
---|
1682 | [fix pyflakes warnings in figleaf |
---|
1683 | warner@allmydata.com**20070105000443] |
---|
1684 | [hush pyflakes warnings |
---|
1685 | warner@allmydata.com**20070201231301] |
---|
1686 | [figleaf_htmlizer: emit stats to stdout, so buildbot can see it |
---|
1687 | warner@lothar.com**20090212211020 |
---|
1688 | Ignore-this: bf5b503717580561c2fdb6c619159c9 |
---|
1689 | ] |
---|
1690 | [figleaf_htmlizer: oops, re-ignore files that aren't under root, like code in auto-built eggs |
---|
1691 | warner@lothar.com**20090213060022 |
---|
1692 | Ignore-this: b4e67d5e025198d01e373728d1a74b11 |
---|
1693 | ] |
---|
1694 | [figleaf_htmlizer: fix order of summary counters |
---|
1695 | warner@lothar.com**20090213155753 |
---|
1696 | Ignore-this: aa6f0cd37e79857482967496252088da |
---|
1697 | ] |
---|
1698 | [figleaf_htmlizer: render changes in coverage relative to a previous test run using --old-coverage |
---|
1699 | warner@lothar.com**20090212210412 |
---|
1700 | Ignore-this: 6c2bfc21a0671f1a07e19d3f9fd17157 |
---|
1701 | ] |
---|
1702 | [figleaf_htmlizer: more rearranging, behavior should still be unchanged |
---|
1703 | warner@allmydata.com**20090212020515 |
---|
1704 | Ignore-this: 8fb7dd723b2d26bdcf1d57685b113bb8 |
---|
1705 | ] |
---|
1706 | [figleaf_htmlizer: break it up into subfunctions, behavior should still be unchanged |
---|
1707 | warner@allmydata.com**20090212015607 |
---|
1708 | Ignore-this: 9644ec95b0f9950722c13ad3c9654e22 |
---|
1709 | ] |
---|
1710 | [figleaf_htmlizer: rewrite in class form, behavior should be the same as before |
---|
1711 | warner@allmydata.com**20090212014050 |
---|
1712 | Ignore-this: d00b838c0af1ea2d71be246bbcf36c53 |
---|
1713 | ] |
---|
1714 | [figleaf_htmlizer: rewrite with twisted.python.usage, remove logging: should behave the same as before |
---|
1715 | warner@allmydata.com**20090212011643 |
---|
1716 | Ignore-this: 86f961e369625e9ab5188e817b083fe4 |
---|
1717 | ] |
---|
1718 | [figleaf_htmlizer: expand tabs, fix to 4-space indents. No functional changes. |
---|
1719 | warner@allmydata.com**20090212010542 |
---|
1720 | Ignore-this: 5c9aa3704eacf1b42a985ade8e43dd1f |
---|
1721 | ] |
---|
1722 | [sort coverage tables by lines uncovered, rather than percentages |
---|
1723 | warner@allmydata.com**20070424184926] |
---|
1724 | [figleaf: add number-of-uncovered-lines to the HTML output |
---|
1725 | warner@allmydata.com**20070419180933] |
---|
1726 | [improve figleaf: fix some line-numbering bugs, add an alphabetically-sorted index HTML page |
---|
1727 | warner@lothar.com**20070104072643] |
---|
1728 | [figleaf output: include a stats.out for parsing by a munin plugin |
---|
1729 | warner@allmydata.com**20070407004101] |
---|
1730 | [figleaf_htmlizer: when all counts are zero, claim 0% instead of 100%, since it probably means that coverage checking has failed completely |
---|
1731 | warner@allmydata.com**20070501180728] |
---|
1732 | [setup: new improved misc/show-tool-versions.py |
---|
1733 | zooko@zooko.com**20100516050122 |
---|
1734 | Ignore-this: ce9b1de1b35b07d733e6cf823b66335a |
---|
1735 | ] |
---|
1736 | [setup: add sys.maxunicode to the show-tool-versions output in order to investigate http://bugs.python.org/setuptools/issue78 |
---|
1737 | zooko@zooko.com**20090709004533 |
---|
1738 | Ignore-this: dce4420d5c626258e1033d924e506de2 |
---|
1739 | ] |
---|
1740 | [setup: reorder and extend the show-tool-versions script, the better to glean information about our new buildslaves |
---|
1741 | zooko@zooko.com**20100504045643 |
---|
1742 | Ignore-this: 836084b56b8d4ee8f1de1f4efb706d36 |
---|
1743 | ] |
---|
1744 | [setup: copy in misc/show-tools-version.py from zfec -- it prints out platform and setuptools versions |
---|
1745 | zooko@zooko.com**20090621055846 |
---|
1746 | Ignore-this: 4e144886ab02414bbaaf0295ce2b337 |
---|
1747 | ] |
---|
1748 | [setup: fix typos in misc/show-tool-versions.py |
---|
1749 | zooko@zooko.com**20100510063615 |
---|
1750 | Ignore-this: 2181b1303a0e288e7a9ebd4c4855628 |
---|
1751 | ] |
---|
1752 | [setup: show code-coverage tool versions in show-tools-versions.py |
---|
1753 | zooko@zooko.com**20100510062955 |
---|
1754 | Ignore-this: 4b4c68eb3780b762c8dbbd22b39df7cf |
---|
1755 | ] |
---|
1756 | [move show-tool-versions out of setup.py and into a separate script in misc/ , since setuptools is trying to build and install a bunch of stuff first |
---|
1757 | warner@lothar.com**20090219073558 |
---|
1758 | Ignore-this: 9e56bc43026379212e6b6671ed6a1fd4 |
---|
1759 | ] |
---|
1760 | [setup.py: add show_tool_versions command, for the benefit of a new buildbot step |
---|
1761 | warner@lothar.com**20090219062436 |
---|
1762 | Ignore-this: 21d761c76a033e481831584bedc60c86 |
---|
1763 | ] |
---|
1764 | [setup.py: wrap to 80 cols, no functional changes |
---|
1765 | warner@lothar.com**20090219055751 |
---|
1766 | Ignore-this: d29e57c6ee555f2ee435667b7e13e60b |
---|
1767 | ] |
---|
1768 | [setup: stop catching EnvironmentError when attempting to copy ./_auto_deps.py to ./src/allmydata/_auto_deps.py |
---|
1769 | zooko@zooko.com**20080924000402 |
---|
1770 | It is no longer the case that we can run okay without _auto_deps.py being in place in ./src/allmydata, so if that cp fails then the build should fail. |
---|
1771 | ] |
---|
1772 | [setup: a new improved way to create tahoe executables |
---|
1773 | zooko@zooko.com**20090129000716 |
---|
1774 | Ignore-this: d1b038ab8efb949125d7592ebcceccba |
---|
1775 | Create the 'tahoe-script.py' file under the 'bin' directory. The 'tahoe-script.py' file is exactly the same as the 'tahoe-script.template' script except that the shebang line is rewritten to use our sys.executable for the interpreter. On Windows, create a tahoe.exe will execute it. On non-Windows, make a symlink to it from 'tahoe'. The tahoe.exe will be copied from the setuptools egg's cli.exe and this will work from a zip-safe and non-zip-safe setuptools egg. |
---|
1776 | ] |
---|
1777 | [Makefile: convert check-auto-deps target into 'setup.py check_auto_deps' |
---|
1778 | warner@allmydata.com**20080912035904] |
---|
1779 | [setup: require new bundled setuptools-0.6c12dev |
---|
1780 | zooko@zooko.com**20090205152923 |
---|
1781 | Ignore-this: 516bbb2195a20493fa72a0ca11a2361c |
---|
1782 | ] |
---|
1783 | [setup: require and automatically use setuptools-0.6c11dev (our own toothpick of setuptools) which is bundled |
---|
1784 | zooko@zooko.com**20090203042323] |
---|
1785 | [setup: require the latest version of the setuptools bootstrap egg |
---|
1786 | zooko@zooko.com**20081025152858 |
---|
1787 | Ignore-this: c0c9923ba3008f410d5cc56f2236edb9 |
---|
1788 | ] |
---|
1789 | [setup: merge in changes to ez_setup.py from the upstream setuptools project |
---|
1790 | zooko@zooko.com**20080326191128] |
---|
1791 | [setup: import bugfix to ez_setup.py |
---|
1792 | zooko@zooko.com**20071004181846] |
---|
1793 | [setup: require the SVN snapshot of setuptools to build |
---|
1794 | zooko@zooko.com**20081025134959 |
---|
1795 | Ignore-this: f68077dd10d85a71a1e06678365e6753 |
---|
1796 | ] |
---|
1797 | [setup: change ez_setup.py to install setuptools-0.6c9 |
---|
1798 | zooko@zooko.com**20080930200502] |
---|
1799 | [setup: bundle setuptools-0.6c9 |
---|
1800 | zooko@zooko.com**20080930200448] |
---|
1801 | [setup: include _pkgutil.py in setuptools bootstrap egg so that it will work on Python 2.4 |
---|
1802 | zooko@zooko.com**20081025152839 |
---|
1803 | Ignore-this: 38d81a037c1a3413d69d580ccb13fd67 |
---|
1804 | ] |
---|
1805 | [setup: bundle an SVN snapshot of setuptools instead of the most recent stable release of setuptools |
---|
1806 | zooko@zooko.com**20081025134837 |
---|
1807 | Ignore-this: 9a0c9a34b186b972650cf9455edb0d28 |
---|
1808 | This SVN snapshot fixes a problem that prevents the setting up of nevow: |
---|
1809 | http://bugs.python.org/setuptools/issue20 |
---|
1810 | ] |
---|
1811 | [setup: bundle setuptools-0.6c11dev (our own toothpick of setuptools) |
---|
1812 | zooko@zooko.com**20090203041950 |
---|
1813 | Hopefully this one fixes the issue with easy_install not searching the sys.path for packages that were requested to be installed, (setuptools #17), thus allowing us to do away with the "--site-dirs=" kludges, which are currently breaking some of our buildbots. |
---|
1814 | ] |
---|
1815 | [setup: remove a couple of horrible work-arounds in setup.py now that we rely on our own toothpick of setuptools which fixes those issues |
---|
1816 | zooko@zooko.com**20090204052405 |
---|
1817 | Ignore-this: a11bc74a5cb879db42c4fe468c375577 |
---|
1818 | also specify that we need our latest revision (11dev) of our toothpick of setuptools |
---|
1819 | also *always* setup_require setuptools_darcs at module import time. Formerly we added setup_require setuptools_darcs only if the PKG-INFO file were not already created. There is some weird, irreproducible bug to do with setuptool_darcs, and I guess that the fact that whether it is required or not depends on that autogenerated file might have something to do with it. Anyway, this is simpler. |
---|
1820 | ] |
---|
1821 | [setup.py: Require simplejson version >= 2.0.5 |
---|
1822 | francois@ctrlaltdel.ch**20081125171727] |
---|
1823 | [setup: always create a support dir and populate it with a site-packages and add same to the PYTHONPATH, just in case someone is going to do "build", "develop", or "test" or something else which triggers a build |
---|
1824 | zooko@zooko.com**20090129045608 |
---|
1825 | Ignore-this: d3740cd285f1d30a111536863a8e8457 |
---|
1826 | I think there must be a much better solution for this -- probably to fix setuptools #54 and ship our own fork of setuptools and rely on it. |
---|
1827 | ] |
---|
1828 | [setup: temporarily comment-out the horrible kludge to work-around setuptools #17, while I figure out how to solve it better |
---|
1829 | zooko@zooko.com**20090129130000 |
---|
1830 | Ignore-this: 9e42491cfa8042c90a6a96081c00a053 |
---|
1831 | ] |
---|
1832 | [setup: if any of "build", "develop", or "test" appear in the sys.argv then that means we'll be doing a develop, so add the workarounds for setuptools #17 in any case |
---|
1833 | zooko@zooko.com**20090129045534 |
---|
1834 | Ignore-this: 38645dfadf3ba7b42370e795b7c90214 |
---|
1835 | I think there must be a much better solution for this -- probably to fix setuptools #17 and ship our own fork of setuptools and rely on it. |
---|
1836 | ] |
---|
1837 | [prevent --site-dirs from being passed to the 'install' command |
---|
1838 | cgalvan@mail.utexas.edu**20090116195732] |
---|
1839 | [setup: require setuptools_trial >= 0.5, and delegate to it the job of deciding which Twisted reactor to use for the current platform |
---|
1840 | zooko@zooko.com**20090130043133 |
---|
1841 | Ignore-this: 9e354184d6c989ddf16c7e16a3295ef2 |
---|
1842 | ] |
---|
1843 | [setup: hack the sys.argv to set poll reactor if "python ./setup.py test" in addition to if "python ./setup.py trial"; remove another hack which has been moved setup.cfg; remove setup_requires Twisted since now we actually setup_require setuptools_trial and it install_requires Twisted. |
---|
1844 | zooko@zooko.com**20090127044046 |
---|
1845 | Ignore-this: 38c5afd730024cca63bc84f8ab7100f4 |
---|
1846 | ] |
---|
1847 | [setup: fix previous patch to set reactor to poll reactor on linux or cygwin |
---|
1848 | zooko@zooko.com**20090114164022 |
---|
1849 | Ignore-this: 9e37242ca3cfd47c6f69ee2438ec743b |
---|
1850 | ] |
---|
1851 | [setup: use poll reactor for trial if on linux2 or cygwin |
---|
1852 | zooko@zooko.com**20090114151546 |
---|
1853 | Ignore-this: f6c4b45745527811c9f72448d74649f5 |
---|
1854 | ] |
---|
1855 | [setup: undo (for the second time) the use of the --multi-version feature |
---|
1856 | zooko@zooko.com**20090119205352 |
---|
1857 | Ignore-this: 80bdbb488c3e4fb042bcd968a9bc120a |
---|
1858 | When this feature is turned on, then setuptools doesn't create easy-install.pth, setuptools.pth, or site.py in the target site-packages dir. I don't know why not and we should probably open a ticket on the setuptools tracker and/or hack setuptools to create those files anyway. But for now (for the Tahoe-1.3.0 release), we're going to leave --multi-version mode off and require users to manually uninstall any packages which are too old and thus conflict with our newer dependencies. |
---|
1859 | |
---|
1860 | ] |
---|
1861 | [adding multi-version support |
---|
1862 | cgalvan@mail.utexas.edu**20090116230326] |
---|
1863 | [set bin/tahoe executable permissions and leave build_tahoe in sys.argv |
---|
1864 | cgalvan@mail.utexas.edu**20090109210640] |
---|
1865 | [fix bin/tahoe executable for Windows |
---|
1866 | cgalvan@mail.utexas.edu**20090109184222] |
---|
1867 | [setup: execute ../support/bin/tahoe from ./bin/tahoe |
---|
1868 | zooko@zooko.com**20080410214037] |
---|
1869 | [bin/allmydata-tahoe: fix handling of PYTHONPATH, we were missing an os.pathsep |
---|
1870 | Brian Warner <warner@lothar.com>**20070917104322 |
---|
1871 | which would cause a pre-existing PYTHONPATH to get mangled |
---|
1872 | ] |
---|
1873 | [bin/tahoe: rename 'allmydata-tahoe' in some comments |
---|
1874 | warner@lothar.com**20071011103929] |
---|
1875 | [run build_tahoe command with trial commmand |
---|
1876 | cgalvan@mail.utexas.edu**20090117000047] |
---|
1877 | [setup: bundle setuptools-0.6c12dev (our own toothpick of setuptools) this version completes my patch to fix http://bugs.python.org/setuptools/issue54 , which is necessary for tahoe to build with --prefix=support without doing a lot of PYTHONPATH gymnastics around the call to setup.py |
---|
1878 | zooko@zooko.com**20090205152818 |
---|
1879 | Ignore-this: da7b1587ee91180c4a1a56f217311de3 |
---|
1880 | ] |
---|
1881 | [run_trial.darcspath |
---|
1882 | freestorm77@gmail.com**20100510232829 |
---|
1883 | Ignore-this: 5ebb4df74e9ea8a4bdb22b65373d1ff2 |
---|
1884 | ] |
---|
1885 | [Remove firewall section from running.html and say to read configuration.txt instead. |
---|
1886 | david-sarah@jacaranda.org**20100617004513 |
---|
1887 | Ignore-this: d2e46fffa4855b01093e8240b5fd1eff |
---|
1888 | ] |
---|
1889 | [running.html: fix overeager replacement of 'tahoe' with 'Tahoe-LAFS', and some simplifications. |
---|
1890 | david-sarah@jacaranda.org**20100617000952 |
---|
1891 | Ignore-this: 472b4b531c866574ed79f076b58495b5 |
---|
1892 | ] |
---|
1893 | [Add a note about running Tahoe-LAFS on a small grid to running.html |
---|
1894 | zooko@zooko.com**20100616140227 |
---|
1895 | Ignore-this: 14dfbff0d47144f7c2375108c6055dc2 |
---|
1896 | also Change "tahoe" and "Tahoe" to "Tahoe-LAFS" in running.html |
---|
1897 | author: Kevan Carstensen |
---|
1898 | ] |
---|
1899 | [docs running.html - "tahoe run ." does not work with the current installation, replaced with "tahoe start ." |
---|
1900 | secorp@allmydata.com**20100206165320 |
---|
1901 | Ignore-this: fdb2dcb0e417d303cd43b1951a4f8c03 |
---|
1902 | ] |
---|
1903 | [Change running.html to describe 'tahoe run' |
---|
1904 | david-sarah@jacaranda.org**20100112044409 |
---|
1905 | Ignore-this: 23ad0114643ce31b56e19bb14e011e4f |
---|
1906 | ] |
---|
1907 | [docs: wording fix, thanks to Jeremy Visser, fix #987 |
---|
1908 | francois@ctrlaltdel.ch**20100609081103 |
---|
1909 | Ignore-this: 6d2e627e0f1cd58c0e1394e193287a4b |
---|
1910 | ] |
---|
1911 | [Debian documentation update |
---|
1912 | jacob@appelbaum.net**20100305003004] |
---|
1913 | [debian-docs-patch-final |
---|
1914 | jacob@appelbaum.net**20100304085955] |
---|
1915 | [desert-island-build-with-proper-versions |
---|
1916 | jacob@appelbaum.net**20100304013858] |
---|
1917 | [docs/frontends/FTP-and-SFTP.txt: docs/performance.txt, architecture.txt: updates taking into account new downloader (revised). refs #798 |
---|
1918 | david-sarah@jacaranda.org**20100910195422 |
---|
1919 | Ignore-this: 5774da17f734231fefe6454a80e81455 |
---|
1920 | ] |
---|
1921 | [docs: mention default values of K, H, and M |
---|
1922 | zooko@zooko.com**20100924020245 |
---|
1923 | Ignore-this: ab825b7415142b4394599f909ea31934 |
---|
1924 | ] |
---|
1925 | [configuration.txt and servers-of-happiness.txt: 1 <= happy <= N, not k <= happy <= N. Also minor wording changes. |
---|
1926 | david-sarah@jacaranda.org**20100618050710 |
---|
1927 | Ignore-this: edac0716e753e1f1c4c755c85bec9a19 |
---|
1928 | ] |
---|
1929 | [Note that servers of happiness only applies to immutable files for the moment |
---|
1930 | Kevan Carstensen <kevan@isnotajoke.com>**20100524042836 |
---|
1931 | Ignore-this: cf83cac7a2b3ed347ae278c1a7d9a176 |
---|
1932 | ] |
---|
1933 | [Update 'docs/configuration.txt' to reflect the servers_of_happiness behavior. |
---|
1934 | Kevan Carstensen <kevan@isnotajoke.com>**20091205033813 |
---|
1935 | Ignore-this: 5e1cb171f8239bfb5b565d73c75ac2b8 |
---|
1936 | ] |
---|
1937 | [docs: update docs/architecture.txt to more fully and correctly explain the upload procedure |
---|
1938 | zooko@zooko.com**20100514043458 |
---|
1939 | Ignore-this: 538b6ea256a49fed837500342092efa3 |
---|
1940 | ] |
---|
1941 | [Alter the wording in docs/architecture.txt to more accurately describe the servers_of_happiness behavior. |
---|
1942 | Kevan Carstensen <kevan@isnotajoke.com>**20100428002455 |
---|
1943 | Ignore-this: 6eff7fa756858a1c6f73728d989544cc |
---|
1944 | ] |
---|
1945 | [Update 'docs/architecture.txt' to reflect readonly share discovery |
---|
1946 | kevan@isnotajoke.com**20100514003852 |
---|
1947 | Ignore-this: 7ead71b34df3b1ecfdcfd3cb2882e4f9 |
---|
1948 | ] |
---|
1949 | [architecture.txt: remove trailing whitespace, wrap lines: no content changes |
---|
1950 | Brian Warner <warner@lothar.com>**20100202055304 |
---|
1951 | Ignore-this: 1662f37d1162858ac2619db27bcc411f |
---|
1952 | ] |
---|
1953 | [Change stray "shares_of_happiness" to "servers_of_happiness" |
---|
1954 | Kevan Carstensen <kevan@isnotajoke.com>**20091116212459 |
---|
1955 | Ignore-this: 1c971ba8c3c4d2e7ba9f020577b28b73 |
---|
1956 | ] |
---|
1957 | [Add a specification for servers of happiness. |
---|
1958 | Kevan Carstensen <kevan@isnotajoke.com>**20100524003508 |
---|
1959 | Ignore-this: 982e2be8a411be5beaf3582bdfde6151 |
---|
1960 | ] |
---|
1961 | [docs/specifications: add an outline of the spec documents we'd like to have some day |
---|
1962 | warner@lothar.com**20090208234748 |
---|
1963 | Ignore-this: b591ad0361810e5aae37cba07fdfbd43 |
---|
1964 | ] |
---|
1965 | [docs: timestamp the 1.8.0 release |
---|
1966 | zooko@zooko.com**20100924021552 |
---|
1967 | Ignore-this: dbacb97c0f9994532f38a5612cecef65 |
---|
1968 | ] |
---|
1969 | [NEWS, docs/known_issues.txt for 1.8.0 release |
---|
1970 | david-sarah@jacaranda.org**20100919044412 |
---|
1971 | Ignore-this: d8901578b0c0c20e42daaae23879b091 |
---|
1972 | ] |
---|
1973 | [relnotes.txt and docs/quickstart.html for 1.8.0 release |
---|
1974 | david-sarah@jacaranda.org**20100919050335 |
---|
1975 | Ignore-this: 9ef6499236d07309fb4df983f9a0a5cd |
---|
1976 | ] |
---|
1977 | [relnotes.txt: update revision of NEWS. |
---|
1978 | david-sarah@jacaranda.org**20100810063243 |
---|
1979 | Ignore-this: cf9eb342802d19f3a8004acd123fd46e |
---|
1980 | ] |
---|
1981 | [docs: update relnotes.txt, NEWS, and quickstart.html for the 1.8.0c4 release |
---|
1982 | zooko@zooko.com**20100912061423 |
---|
1983 | Ignore-this: bb17f4c54ba390fdcc74eb5d5017373 |
---|
1984 | ] |
---|
1985 | [doc_reformat_performance.txt |
---|
1986 | freestorm77@gmail.com**20100424114444 |
---|
1987 | Ignore-this: 55295ff5cd8a5b67034eb661a5b0699d |
---|
1988 | |
---|
1989 | - Added heading format begining and ending by "==" |
---|
1990 | - Added Index |
---|
1991 | - Added Title |
---|
1992 | |
---|
1993 | Note: No change are made in paragraphs content |
---|
1994 | |
---|
1995 | |
---|
1996 | ] |
---|
1997 | [docs/performance.txt: split out CPU from network, expand on mutable costs |
---|
1998 | Brian Warner <warner@lothar.com>**20100224043813 |
---|
1999 | Ignore-this: 4779e78ca0eed1dcbd1652e6287219f1 |
---|
2000 | ] |
---|
2001 | [quickstart.html: update tarball link. |
---|
2002 | david-sarah@jacaranda.org**20100810073832 |
---|
2003 | Ignore-this: 4fcf9a7ec9d0de297c8ed4f29af50d71 |
---|
2004 | ] |
---|
2005 | [docs: update NEWS a bit about New-Downloader |
---|
2006 | zooko@zooko.com**20100819021446 |
---|
2007 | Ignore-this: 31a6e2fb0a6e3d19f73481e99070da7a |
---|
2008 | ] |
---|
2009 | [docs: trivial naming change |
---|
2010 | zooko@zooko.com**20090121025042 |
---|
2011 | Ignore-this: a9c2fe6119c43683c6f88662e60de306 |
---|
2012 | ] |
---|
2013 | [docs: NEWS: edit English usage, remove ticket numbers for regressions vs. 1.7.1 that were fixed again before 1.8.0c2 |
---|
2014 | zooko@zooko.com**20100811071758 |
---|
2015 | Ignore-this: 993f5a1e6a9535f5b7a0bd77b93b66d0 |
---|
2016 | ] |
---|
2017 | [docs: NEWS: more detail about new-downloader |
---|
2018 | zooko@zooko.com**20100811071303 |
---|
2019 | Ignore-this: 9f07da4dce9d794ce165aae287f29a1e |
---|
2020 | ] |
---|
2021 | [docs: update relnotes.txt for v1.8.0c3 |
---|
2022 | zooko@zooko.com**20100902212111 |
---|
2023 | Ignore-this: 7211f79f4c388c9e8ff0d05f22eb3ba2 |
---|
2024 | ] |
---|
2025 | [NEWS, relnotes and known-issues for 1.8.0c2. |
---|
2026 | david-sarah@jacaranda.org**20100810062851 |
---|
2027 | Ignore-this: bf319506558f6ba053fd896823c96a20 |
---|
2028 | ] |
---|
2029 | [NEWS, quickstart.html and known_issues.txt for 1.8.0c1 release. |
---|
2030 | david-sarah@jacaranda.org**20100806235111 |
---|
2031 | Ignore-this: 777cea943685cf2d48b6147a7648fca0 |
---|
2032 | ] |
---|
2033 | [relnotes.txt: 1.8.0c1 release |
---|
2034 | david-sarah@jacaranda.org**20100807003646 |
---|
2035 | Ignore-this: 1994ffcaf55089eb05e96c23c037dfee |
---|
2036 | ] |
---|
2037 | [update NEWS and other docs in preparation for 1.8.0rc1 |
---|
2038 | Brian Warner <warner@lothar.com>**20100806080228 |
---|
2039 | Ignore-this: 6ebdf11806f6dfbfde0b61115421a459 |
---|
2040 | |
---|
2041 | in particular, merge the various 1.8.0b1/b2 sections, and remove the |
---|
2042 | datestamp. NEWS gets updated just before a release, doesn't need to precisely |
---|
2043 | describe pre-release candidates, and the datestamp gets updated just before |
---|
2044 | the final release is tagged |
---|
2045 | |
---|
2046 | Also, I removed the BOM from some files. My toolchain made it hard to retain, |
---|
2047 | and BOMs in UTF-8 don't make a whole lot of sense anyway. Sorry if that |
---|
2048 | messes anything up. |
---|
2049 | ] |
---|
2050 | [NEWS: remove XXX comment and separate description of #890. |
---|
2051 | david-sarah@jacaranda.org**20100803050827 |
---|
2052 | Ignore-this: 6d308f34dc9d929d3d0811f7a1f5c786 |
---|
2053 | ] |
---|
2054 | [docs: more updates to NEWS for 1.8.0β |
---|
2055 | zooko@zooko.com**20100803044618 |
---|
2056 | Ignore-this: 8193a1be38effe2bdcc632fdb570e9fc |
---|
2057 | ] |
---|
2058 | [test_util.py: use SHA-256 from pycryptopp instead of MD5 from hashlib (for uses in which any hash will do), since hashlib was only added to the stdlib in Python 2.5. |
---|
2059 | david-sarah@jacaranda.org**20100806050051 |
---|
2060 | Ignore-this: 552049b5d190a5ca775a8240030dbe3f |
---|
2061 | ] |
---|
2062 | [Add a byte-spans utility class, like perl's Set::IntSpan for .newsrc files. |
---|
2063 | Brian Warner <warner@lothar.com>**20100804072600 |
---|
2064 | Ignore-this: bbad42104aeb2f26b8dd0779de546128 |
---|
2065 | Also a data-spans class, which records a byte (instead of a bit) for each |
---|
2066 | index. |
---|
2067 | ] |
---|
2068 | [Clean up log.err calls, for one of the issues in #889. |
---|
2069 | Brian Warner <warner@lothar.com>**20100112013343 |
---|
2070 | Ignore-this: f58455ce15f1fda647c5fb25d234d2db |
---|
2071 | |
---|
2072 | allmydata.util.log.err() either takes a Failure as the first positional |
---|
2073 | argument, or takes no positional arguments and must be invoked in an |
---|
2074 | exception handler. Fixed its signature to match both foolscap.logging.log.err |
---|
2075 | and twisted.python.log.err . Included a brief unit test. |
---|
2076 | ] |
---|
2077 | [util.log: send log.err to Twisted too, so that Trial tests are flunked |
---|
2078 | warner@lothar.com**20080920173427] |
---|
2079 | [NEWS and docs/quickstart.html for 1.8.0beta2. |
---|
2080 | david-sarah@jacaranda.org**20100806035112 |
---|
2081 | Ignore-this: 3a593cfdc2ae265da8f64c6c8aebae4 |
---|
2082 | ] |
---|
2083 | [docs: incomplete beginnings of a NEWS update for v1.8β |
---|
2084 | zooko@zooko.com**20100802072840 |
---|
2085 | Ignore-this: cb00fcd4f1e0eaed8c8341014a2ba4d4 |
---|
2086 | ] |
---|
2087 | [NEWS: describe #1055 |
---|
2088 | zooko@zooko.com**20100801034338 |
---|
2089 | Ignore-this: 3a16cfa387c2b245c610ea1d1ad8d7f1 |
---|
2090 | ] |
---|
2091 | [tests, NEWS, CREDITS re: #1117 |
---|
2092 | zooko@zooko.com**20100718203225 |
---|
2093 | Ignore-this: 1f08be2c692fb72cc0dd023259f11354 |
---|
2094 | Give Brian and Kevan promotions, move release date in NEWS to the 18th, commit Brian's test for #1117. |
---|
2095 | fixes #1117 |
---|
2096 | ] |
---|
2097 | [Re-work 'test_upload.py' to be more readable; add more tests for #778 |
---|
2098 | Kevan Carstensen <kevan@isnotajoke.com>**20091116192334 |
---|
2099 | Ignore-this: 7e8565f92fe51dece5ae28daf442d659 |
---|
2100 | ] |
---|
2101 | [Alter tests to use the new form of set_shareholders |
---|
2102 | Kevan Carstensen <kevan@isnotajoke.com>**20091104033602 |
---|
2103 | Ignore-this: 3deac11fc831618d11441317463ef830 |
---|
2104 | ] |
---|
2105 | [Minor tweak to an existing test -- make the first server read-write, instead of read-only |
---|
2106 | Kevan Carstensen <kevan@isnotajoke.com>**20091104034232 |
---|
2107 | Ignore-this: a951a46c93f7f58dd44d93d8623b2aee |
---|
2108 | ] |
---|
2109 | [Add more tests for comment:53 in ticket #778 |
---|
2110 | Kevan Carstensen <kevan@isnotajoke.com>**20091104112849 |
---|
2111 | Ignore-this: 3bb2edd299a944cc9586e14d5d83ec8c |
---|
2112 | ] |
---|
2113 | [Test Tahoe2PeerSelector to make sure that it recognizeses existing shares on readonly servers |
---|
2114 | Kevan Carstensen <kevan@isnotajoke.com>**20091109003735 |
---|
2115 | Ignore-this: 12f9b4cff5752fca7ed32a6ebcff6446 |
---|
2116 | ] |
---|
2117 | [Add a test for upload.shares_by_server |
---|
2118 | Kevan Carstensen <kevan@isnotajoke.com>**20091104111324 |
---|
2119 | Ignore-this: f9802e82d6982a93e00f92e0b276f018 |
---|
2120 | ] |
---|
2121 | [Refactor some behavior into a mixin, and add tests for the behavior described in #778 |
---|
2122 | "Kevan Carstensen" <kevan@isnotajoke.com>**20091030091908 |
---|
2123 | Ignore-this: a6f9797057ca135579b249af3b2b66ac |
---|
2124 | ] |
---|
2125 | [docs: update NEWS |
---|
2126 | zooko@zooko.com**20100718053225 |
---|
2127 | Ignore-this: 63d5c782ef84812e6d010f0590866831 |
---|
2128 | ] |
---|
2129 | [docs: tidy up NEWS a little |
---|
2130 | zooko@zooko.com**20100718032434 |
---|
2131 | Ignore-this: 54f2820fd1a37c8967609f6bfc4e5e18 |
---|
2132 | ] |
---|
2133 | [NEWS: add snippet about #1083 |
---|
2134 | zooko@zooko.com**20100718020653 |
---|
2135 | Ignore-this: d353a9d93cbc5a5e6ba4671f78d1e22b |
---|
2136 | ] |
---|
2137 | [NEWS: Forward-compatibility improvements for non-ASCII caps (#1051). |
---|
2138 | david-sarah@jacaranda.org**20100718143622 |
---|
2139 | Ignore-this: 1edfebc4bd38a3b5c35e75c99588153f |
---|
2140 | ] |
---|
2141 | [iputil.py: Add support for FreeBSD 7,8 and 9 |
---|
2142 | francois@ctrlaltdel.ch**20100718022832 |
---|
2143 | Ignore-this: 1829b4cf4b91107f4cf87841e6167e99 |
---|
2144 | committed by: zooko@zooko.com |
---|
2145 | date: 2010-07-17 |
---|
2146 | and I also patched: NEWS and CREDITS |
---|
2147 | ] |
---|
2148 | [support freebsd 6 |
---|
2149 | ben@links.org**20080428074140] |
---|
2150 | [NEWS: reorder NEWS snippets to be in descending order of interestingness |
---|
2151 | zooko@zooko.com**20100718015929 |
---|
2152 | Ignore-this: 146c42e88a9555a868a04a69dd0e5326 |
---|
2153 | ] |
---|
2154 | [CLI: add 'tahoe unlink' as an alias to 'tahoe rm', for forward-compatibility. |
---|
2155 | david-sarah@jacaranda.org**20100717220411 |
---|
2156 | Ignore-this: 3ecdde7f2d0498514cef32e118e0b855 |
---|
2157 | ] |
---|
2158 | [small change to CREDITS |
---|
2159 | david-sarah@jacaranda.org**20100603062421 |
---|
2160 | Ignore-this: 2909cdbedc19da5573dec810fc23243 |
---|
2161 | ] |
---|
2162 | [docs: CREDITS and NEWS |
---|
2163 | zooko@zooko.com**20100714060150 |
---|
2164 | Ignore-this: dc83e612f77d69e50ee975f07f6b16fe |
---|
2165 | ] |
---|
2166 | [CREDITS: jsgf |
---|
2167 | zooko@zooko.com**20100608143052 |
---|
2168 | Ignore-this: 10abe06d40b88e22a9107d30f1b84810 |
---|
2169 | ] |
---|
2170 | [docs: CREDITS for Jeremy Visser |
---|
2171 | zooko@zooko.com**20100524081829 |
---|
2172 | Ignore-this: d7c1465fd8d4e25b8d46d38a1793465b |
---|
2173 | ] |
---|
2174 | [CREDITS to Jacob Appelbaum |
---|
2175 | zooko@zooko.com**20100304015616 |
---|
2176 | Ignore-this: 70db493abbc23968fcc8db93f386ea54 |
---|
2177 | ] |
---|
2178 | [NEWS: add UTF-8 coding declaration. |
---|
2179 | david-sarah@jacaranda.org**20100609234851 |
---|
2180 | Ignore-this: 3e6ef125b278e0a982c88d23180a78ae |
---|
2181 | ] |
---|
2182 | [docs: more CREDITS for Kevan, plus utf-8 BOM |
---|
2183 | zooko@zooko.com**20100619045809 |
---|
2184 | Ignore-this: ee9c3b7cf7e385c8ca396091cebc9ca6 |
---|
2185 | ] |
---|
2186 | [NEWS: add NEWS snippets about two recent patches |
---|
2187 | zooko@zooko.com**20100708162058 |
---|
2188 | Ignore-this: 6c9da6a0ad7351a960bdd60f81532899 |
---|
2189 | ] |
---|
2190 | [docs: update NEWS for release 1.7.0 |
---|
2191 | zooko@zooko.com**20100619045750 |
---|
2192 | Ignore-this: 112c352fd52297ebff8138896fc6353d |
---|
2193 | ] |
---|
2194 | [CREDITS: more creds for Kevan, plus utf-8 BOM |
---|
2195 | zooko@zooko.com**20100619045503 |
---|
2196 | Ignore-this: 72d02bdd7a0f324f1cee8cd399c7c6de |
---|
2197 | ] |
---|
2198 | [fix typo in CREDITS file |
---|
2199 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070506212642] |
---|
2200 | [relnotes.txt and docs/known_issues.txt for 1.8.0beta2. |
---|
2201 | david-sarah@jacaranda.org**20100806040823 |
---|
2202 | Ignore-this: 862ad55d93ee37259ded9e2c9da78eb9 |
---|
2203 | ] |
---|
2204 | [docs/known_issues.txt: update release version and date. |
---|
2205 | david-sarah@jacaranda.org**20100718235940 |
---|
2206 | Ignore-this: dbbb42dbfa6c0d205a0b8e6e58eee9c7 |
---|
2207 | ] |
---|
2208 | [docs: update known_issues.txt with more detail about web browser "safe-browsing" features and slightly tweaked formatting |
---|
2209 | zooko@zooko.com**20100619051734 |
---|
2210 | Ignore-this: afc10be0da2517ddd0b58e42ef9aa46d |
---|
2211 | ] |
---|
2212 | [doc_reformat_known_issues.txt |
---|
2213 | freestorm77@gmail.com**20100424114118 |
---|
2214 | Ignore-this: 9577c3965d77b7ac18698988cfa06049 |
---|
2215 | |
---|
2216 | - Added heading format begining and ending by "==" |
---|
2217 | - Added Index |
---|
2218 | - Added Title |
---|
2219 | |
---|
2220 | Note: No change are made in paragraphs content |
---|
2221 | |
---|
2222 | |
---|
2223 | ] |
---|
2224 | [Document leakage of cap URLs via phishing filters in known_issues.txt |
---|
2225 | david-sarah@jacaranda.org**20100202015238 |
---|
2226 | Ignore-this: 78e668dbca77c0e3a73e10c0b74cf024 |
---|
2227 | ] |
---|
2228 | [docs: relnotes.txt for 1.8.0β |
---|
2229 | zooko@zooko.com**20100803154913 |
---|
2230 | Ignore-this: d9101f72572b18da3cfac3c0e272c907 |
---|
2231 | ] |
---|
2232 | [relnotes.txt: updated for v1.7.1 release! |
---|
2233 | zooko@zooko.com**20100719083059 |
---|
2234 | Ignore-this: 9f10eb19b65a39d652b546c57481da45 |
---|
2235 | ] |
---|
2236 | [relnotes.txt, docs/quickstart.html: prepare for 1.7.1 release. Don't claim to work on Cygwin (this might work but is untested). |
---|
2237 | david-sarah@jacaranda.org**20100718235437 |
---|
2238 | Ignore-this: dfc7334ee4bb76c04ee19304a7f1024b |
---|
2239 | ] |
---|
2240 | [docs: quickstart.html: link to 1.7.0 zip file and add UTF-8 BOM |
---|
2241 | zooko@zooko.com**20100619050124 |
---|
2242 | Ignore-this: 5104fc90af542b97662b4016da975f34 |
---|
2243 | ] |
---|
2244 | [docs: a few tweaks to NEWS and CREDITS and make quickstart.html point to 1.7.0β! |
---|
2245 | zooko@zooko.com**20100609142927 |
---|
2246 | Ignore-this: f8097d3062f41f06c4420a7c84a56481 |
---|
2247 | ] |
---|
2248 | [quickstart.html: We haven't released 1.7beta yet. |
---|
2249 | david-sarah@jacaranda.org**20100606220301 |
---|
2250 | Ignore-this: 4e18898cfdb08cc3ddd1ff94d43fdda7 |
---|
2251 | ] |
---|
2252 | [quickstart.html: link to snapshots page, sorted with most recent first. |
---|
2253 | david-sarah@jacaranda.org**20100606221127 |
---|
2254 | Ignore-this: 93ea7e6ee47acc66f6daac9cabffed2d |
---|
2255 | ] |
---|
2256 | [Remove the 'tahoe debug consolidate' subcommand. |
---|
2257 | david-sarah@jacaranda.org**20100607183757 |
---|
2258 | Ignore-this: 4b14daa3ae557cea07d6e119d25dafe9 |
---|
2259 | ] |
---|
2260 | [consolidate: remove pointless 'else' after for loop |
---|
2261 | warner@allmydata.com**20090313082751 |
---|
2262 | Ignore-this: 517f41316f7ae40b92b9eef8269a4b69 |
---|
2263 | ] |
---|
2264 | [Change relative imports to absolute |
---|
2265 | david-sarah@jacaranda.org**20100226071433 |
---|
2266 | Ignore-this: 32e6ce1a86e2ffaaba1a37d9a1a5de0e |
---|
2267 | ] |
---|
2268 | [confwiz: update the config wiz to open the welcome page |
---|
2269 | robk-tahoe@allmydata.com**20080215021258 |
---|
2270 | |
---|
2271 | regardless of platform, the confwiz now opens the welcoe page upon |
---|
2272 | writing a config. it also provides a 'plat' argument (from python's |
---|
2273 | sys.platform) to help disambiguate our instructions by platform. |
---|
2274 | |
---|
2275 | ] |
---|
2276 | [confwiz: reworked confwiz look and feel |
---|
2277 | robk-tahoe@allmydata.com**20080318231536 |
---|
2278 | |
---|
2279 | this changes the confwiz to have a look and feel much more consistent |
---|
2280 | with that of the innosetup installer it is launched within the context |
---|
2281 | of. this applies, naturally, primarily to windows. |
---|
2282 | ] |
---|
2283 | [confwiz: revise layout |
---|
2284 | robk-tahoe@allmydata.com**20080128203603 |
---|
2285 | |
---|
2286 | fix the make-confwiz-match-installer-size changes, to eliminate some weird |
---|
2287 | layout/rendering bugs. also tweaked the layout slightly to add space between |
---|
2288 | the warning label and the newsletter subscribe checkbox. |
---|
2289 | ] |
---|
2290 | [tweak config wizard window size |
---|
2291 | robk-tahoe@allmydata.com**20080128200713 |
---|
2292 | |
---|
2293 | adjust the confiwiz frames to display at a size comparable to the innosetup |
---|
2294 | installer window |
---|
2295 | ] |
---|
2296 | [installer and config - name changes |
---|
2297 | secorp@allmydata.com**20080227013439] |
---|
2298 | [native client - renaming a few more instances to be consistent with Allmydata naming scheme for the release, maybe should parameterize this |
---|
2299 | secorp@allmydata.com**20080222024657] |
---|
2300 | [native client - updated system tray name, missed it at first |
---|
2301 | secorp@allmydata.com**20080222023811] |
---|
2302 | [config wizard - changing the name |
---|
2303 | secorp@allmydata.com**20080227015554] |
---|
2304 | [gui/macapp: improve 'about' box |
---|
2305 | robk-tahoe@allmydata.com**20080925135415 |
---|
2306 | |
---|
2307 | adds exactly 1 metric dollop of professionalism to the previously |
---|
2308 | rather amateurish looking about box. |
---|
2309 | ] |
---|
2310 | [macapp: changed to remove 'Tahoe' from .app name |
---|
2311 | robk-tahoe@allmydata.com**20080611003145 |
---|
2312 | |
---|
2313 | Change the build product from 'Allmydata Tahoe' to 'Allmydata' |
---|
2314 | more inkeeping with the branding of the Allmydata product |
---|
2315 | ] |
---|
2316 | [macapp: new mac icon |
---|
2317 | robk-tahoe@allmydata.com**20080308004828 |
---|
2318 | |
---|
2319 | this provides a new icon for the .app bundle |
---|
2320 | also removes the setting of the dock icon from within wx |
---|
2321 | (which previously used a different icon) |
---|
2322 | ] |
---|
2323 | [better mac .app icon |
---|
2324 | robk-tahoe@allmydata.com**20080125022347] |
---|
2325 | [util: copy in nummedobj from pyutil |
---|
2326 | zooko@zooko.com**20081104195550] |
---|
2327 | [util: copy in dictutil from pyutil |
---|
2328 | zooko@zooko.com**20081104195327] |
---|
2329 | [trivial: whitespace cleanup |
---|
2330 | zooko@zooko.com**20090106172058 |
---|
2331 | Ignore-this: 50ee40d42cc8d8f39d2f8ed15f6790d4 |
---|
2332 | ] |
---|
2333 | [checker: don't let failures in add-lease affect checker results. Closes #875. |
---|
2334 | Brian Warner <warner@lothar.com>**20091229230108 |
---|
2335 | Ignore-this: ef1a367b93e4d01298c2b1e6ca59c492 |
---|
2336 | |
---|
2337 | Mutable servermap updates and the immutable checker, when run with |
---|
2338 | add_lease=True, send both the do-you-have-block and add-lease commands in |
---|
2339 | parallel, to avoid an extra round trip time. Many older servers have problems |
---|
2340 | with add-lease and raise various exceptions, which don't generally matter. |
---|
2341 | The client-side code was catching+ignoring some of them, but unrecognized |
---|
2342 | exceptions were passed through to the DYHB code, concealing the DYHB results |
---|
2343 | from the checker, making it think the server had no shares. |
---|
2344 | |
---|
2345 | The fix is to separate the code paths. Both commands are sent at the same |
---|
2346 | time, but the errback path from add-lease is handled separately. Known |
---|
2347 | exceptions are ignored, the others (both unknown-remote and all-local) are |
---|
2348 | logged (log.WEIRD, which will trigger an Incident), but neither will affect |
---|
2349 | the DYHB results. |
---|
2350 | |
---|
2351 | The add-lease message is sent first, and we know that the server handles them |
---|
2352 | synchronously. So when the checker is done, we can be sure that all the |
---|
2353 | add-lease messages have been retired. This makes life easier for unit tests. |
---|
2354 | ] |
---|
2355 | [cli: suppress DeprecationWarnings emitted from importing nevow and twisted. Fixes #859 |
---|
2356 | david-sarah@jacaranda.org**20100201004429 |
---|
2357 | Ignore-this: 22d7216921cd5f04381c0194ed501bbe |
---|
2358 | ] |
---|
2359 | [setup: don't catch ImportError when importing _auto_deps in allmydata/__init__.py |
---|
2360 | zooko@zooko.com**20080430202204 |
---|
2361 | Nowadays pkg_resources is a runtime requirement, and if there is something screwed up in the installation, we want an explicit ImportError exception as early as possible. |
---|
2362 | ] |
---|
2363 | [versioning: include an "appname" in the application version string in the versioning protocol, and make that appname be controlled by setup.py |
---|
2364 | zooko@zooko.com**20090211231816 |
---|
2365 | Ignore-this: 6a0e62492bd271cdaaf696c4a35bc919 |
---|
2366 | It is currently hardcoded in setup.py to be 'allmydata-tahoe'. Ticket #556 is to make it configurable by a runtime command-line argument to setup.py: "--appname=foo", but I suddenly wondered if we really wanted that and at the same time realized that we don't need that for tahoe-1.3.0 release, so this patch just hardcodes it in setup.py. |
---|
2367 | setup.py inspects a file named 'src/allmydata/_appname.py' and assert that it contains the string "__appname__ = 'allmydata-tahoe'", and creates it if it isn't already present. src/allmydata/__init__.py import _appname and reads __appname__ from it. The rest of the Python code imports allmydata and inspects "allmydata.__appname__", although actually every use it uses "allmydata.__full_version__" instead, where "allmydata.__full_version__" is created in src/allmydata/__init__.py to be: |
---|
2368 | |
---|
2369 | __full_version__ = __appname + '-' + str(__version__). |
---|
2370 | |
---|
2371 | All the code that emits an "application version string" when describing what version of a protocol it supports (introducer server, storage server, upload helper), or when describing itself in general (introducer client), usese allmydata.__full_version__. |
---|
2372 | |
---|
2373 | This fixes ticket #556 at least well enough for tahoe-1.3.0 release. |
---|
2374 | |
---|
2375 | ] |
---|
2376 | [setup: require darcsver >= 1.2.0 and rely exclusively on darcsver to set the version string |
---|
2377 | zooko@zooko.com**20090129185640 |
---|
2378 | Ignore-this: b7ed63526015c0769812f3c6f2342b8c |
---|
2379 | ] |
---|
2380 | [setup: require darcsver always, and not just when we see the string "darcsver" in sys.argv, because the new aliases hack means that the string might not appear in sys.argv |
---|
2381 | zooko@zooko.com**20090120184229 |
---|
2382 | Ignore-this: beecca08d9f59704be7ef1aeca6fd779 |
---|
2383 | ] |
---|
2384 | [setup: setup_requires darcsver >= 1.1.5 |
---|
2385 | zooko@zooko.com**20080621210109] |
---|
2386 | [setup: a tiny tweak to setup to avoid requiring darcsver package if the user isn't invoking "./setup.py darcsver" |
---|
2387 | zooko@zooko.com**20080418050752 |
---|
2388 | The real reason for this patch is to test our patch management infrastructure. |
---|
2389 | ] |
---|
2390 | [setup: setup_require darcsver >= 1.1.2 |
---|
2391 | zooko@zooko.com**20080311025707] |
---|
2392 | [setup: bundle darcsver-1.1.2.tar |
---|
2393 | zooko@zooko.com**20080311025647] |
---|
2394 | [setup: invoke darcsver whenever doing an sdist |
---|
2395 | zooko@zooko.com**20090129165125 |
---|
2396 | Ignore-this: 88b9bf4fae0303250ada810d351b566 |
---|
2397 | ] |
---|
2398 | [setup: always run "build" before running "test" |
---|
2399 | zooko@zooko.com**20090126233240 |
---|
2400 | Ignore-this: 8cf76347ba24f02023f1690a470569df |
---|
2401 | ] |
---|
2402 | [setup: always run build_tahoe before running tests |
---|
2403 | zooko@zooko.com**20090126233024 |
---|
2404 | Ignore-this: da31145fa86a61a307dc5dcc4debc0bb |
---|
2405 | ] |
---|
2406 | [test_runner.py: remove test_client_no_noise: the issue in question is |
---|
2407 | warner@lothar.com**20090601225007 |
---|
2408 | ticketed in http://divmod.org/trac/ticket/2830 and doesn't need a Tahoe-side |
---|
2409 | change, plus this test fails on win32 for unrelated reasons (and test_client |
---|
2410 | is the place to think about the win32 issue). |
---|
2411 | ] |
---|
2412 | [setup: go ahead and check for noise in test_client_no_noise |
---|
2413 | zooko@zooko.com**20090126234616 |
---|
2414 | Ignore-this: dff1a3511fdfad1a61fe73e4277c8981 |
---|
2415 | ] |
---|
2416 | [test_runner: skip all spawnProcess-using tests on cygwin, since spawnProcess just hangs forever |
---|
2417 | warner@lothar.com**20090209083400 |
---|
2418 | Ignore-this: e8c2c85650b61cf084cb8a8852118b86 |
---|
2419 | ] |
---|
2420 | [setup: find a "bin/tahoe" executable to test based on allmydata.__file__ instead of based on the CWD |
---|
2421 | zooko@zooko.com**20090124003437 |
---|
2422 | Ignore-this: 25282068ce695c12a2b1f23c6fd2b205 |
---|
2423 | This means that the tests still work if you are executing them from a CWD other than the src dir -- *if* the "bin/tahoe" is found at os.path.dirname(os.path.dirname(os.path.dirname(allmydata.__file__))). |
---|
2424 | If no file is found at that location, then just skip the tests of executing the "tahoe" executable, because we don't want to accidentally run those tests against an executable from a different version of tahoe. |
---|
2425 | ] |
---|
2426 | [setup: add test that the tests are testing the right source code |
---|
2427 | zooko@zooko.com**20090122215240 |
---|
2428 | Ignore-this: f56c1bc525924154042fefa5d30b04f6 |
---|
2429 | This is a test of #145, and I think that now the code passes this test. |
---|
2430 | ] |
---|
2431 | [setup: add a test for a warning message from importing nevow, marked as TODO, comment-out the assertion of no-noise inside other test_runner tests |
---|
2432 | zooko@zooko.com**20090126233046 |
---|
2433 | Ignore-this: 6b1554ed9268988fd65b8e8aac75ed4e |
---|
2434 | ] |
---|
2435 | [setup: change test_runner to invoke "bin/tahoe" in a subprocess instead of executing runner.runner() |
---|
2436 | zooko@zooko.com**20090122213818 |
---|
2437 | Ignore-this: f7ef67adf1b9508617c9a7d305191627 |
---|
2438 | This is necessary because loading allmydata code now depends on PYTHONPATH manipulation which is done in the "bin/tahoe" script. Unfortunately it makes test_runner slower since it launches and waits for many subprocesses. |
---|
2439 | ] |
---|
2440 | [startstop_node.py: improve test coverage a little bit |
---|
2441 | warner@lothar.com**20070919085027] |
---|
2442 | [startstop_node.py: refactor find_twistd() out so it is only run when you need to start a node |
---|
2443 | warner@lothar.com**20070711021355] |
---|
2444 | [test_runner.RunNode: pass an explicit webport, to avoid using 8123 (which might be in used by a running node). Closes #175. |
---|
2445 | warner@lothar.com**20071013230639] |
---|
2446 | [test_runner.py: test launching an introducer too |
---|
2447 | warner@lothar.com**20080218062856] |
---|
2448 | [#542 'tahoe create-key-generator': fix the .tac file this creates to be compatible with modern code, add a test |
---|
2449 | warner@allmydata.com**20081201234721] |
---|
2450 | [key_generator: make default key size be a constructor argument instead of a class variable, pass default key size of 522 (the smallest that we can do) in unit tests to make them faster |
---|
2451 | zooko@zooko.com**20080422192818] |
---|
2452 | [key_generator: fix timing, make tests more robust |
---|
2453 | robk-tahoe@allmydata.com**20080404014346 |
---|
2454 | |
---|
2455 | previously there was an edge case in the timing of expected behaviour |
---|
2456 | of the key_generator (w.r.t. the refresh delay and twisted/foolscap |
---|
2457 | delivery). if it took >6s for a key to be generated, then it was |
---|
2458 | possible for the pool refresh delay to transpire _during_ the |
---|
2459 | synchronous creation of a key in remote_get_rsa_key_pair. this could |
---|
2460 | lead to the timer elapsing during key creation and hence the pool |
---|
2461 | being refilled before control returned to the client. |
---|
2462 | |
---|
2463 | this change ensures that the time window from a get key request |
---|
2464 | until the key gen reactor blocks to refill the pool is the time |
---|
2465 | since a request was answered, not since a request was asked. |
---|
2466 | this causes the behaviour to match expectations, as embodied in |
---|
2467 | test_keygen, even if the delay window is dropped to 0.1s |
---|
2468 | ] |
---|
2469 | [key_generator: fix a typo in the .tac generating create-key-generator |
---|
2470 | robk-tahoe@allmydata.com**20080408180606 |
---|
2471 | |
---|
2472 | verbose is an object attribute, no longer settable via init args |
---|
2473 | ] |
---|
2474 | [test: extend timeout on the hotline file that prevents the client from stopping itself |
---|
2475 | zooko@zooko.com**20081222030629 |
---|
2476 | Ignore-this: 391f48caef9d6ad558e540ded56a8075 |
---|
2477 | The 20-second timeout was apparently tripped on my Powerbook G4 "draco". |
---|
2478 | ] |
---|
2479 | [client.py: increase hotline timeout, the check_memory test is failing |
---|
2480 | warner@allmydata.com**20070926022233] |
---|
2481 | [Unicode fixes. |
---|
2482 | david-sarah@jacaranda.org**20100607010215 |
---|
2483 | Ignore-this: d58727b5cd2ce00e6b6dae3166030138 |
---|
2484 | ] |
---|
2485 | [test_cli: pass rc out of do_cli() too |
---|
2486 | warner@lothar.com**20081203020828] |
---|
2487 | [cli: if response code from wapi server is not 200 then stop instead of proceeding |
---|
2488 | zooko@zooko.com**20081220134918 |
---|
2489 | Ignore-this: 907481c941fc5696630b9c118137fb52 |
---|
2490 | Also, include the data that failed to json parse in an exception raised by the json parser. |
---|
2491 | ] |
---|
2492 | [cli: tests: skip symlink test if there is no os.symlink |
---|
2493 | zooko@zooko.com**20090115001010 |
---|
2494 | Ignore-this: 4987fea4fe070c2dd5ff75401fbf89e1 |
---|
2495 | ] |
---|
2496 | [Added tests for the fixed alias related command's synopsis |
---|
2497 | Alberto Berti <alberto@metapensiero.it>**20090222163732 |
---|
2498 | Ignore-this: 4432b4e88e990ba53a5b3fe0f12db2ac |
---|
2499 | ] |
---|
2500 | [Use failUnlessEqual instead of failUnless(a == b) |
---|
2501 | Alberto Berti <alberto@metapensiero.it>**20090222224214 |
---|
2502 | Ignore-this: 8f9144632e3ac9acb4726fb48a083bf4 |
---|
2503 | ] |
---|
2504 | [scripts: stop using RuntimeError, for #639 |
---|
2505 | warner@lothar.com**20090222233106 |
---|
2506 | Ignore-this: 686a424442670fffbd4d1816c284a601 |
---|
2507 | ] |
---|
2508 | [consolidator: add progress to scan-old-directory passes |
---|
2509 | warner@allmydata.com**20090313054728 |
---|
2510 | Ignore-this: adc67a34f4f19fd58c5bc76301b3df36 |
---|
2511 | ] |
---|
2512 | [consolidate: tolerate unicode dirnames |
---|
2513 | warner@allmydata.com**20090313065402 |
---|
2514 | Ignore-this: 7e65703ed3d12d4bd5ec14b693e5f61f |
---|
2515 | ] |
---|
2516 | [consolidate: add eta, flush stdout |
---|
2517 | warner@allmydata.com**20090313082451 |
---|
2518 | Ignore-this: 845f63adccc32557c6864ae6120ba836 |
---|
2519 | ] |
---|
2520 | [consolidator: fix cycle detection to not trigger on merely shared directories, add snapshot counter to progress |
---|
2521 | warner@allmydata.com**20090313042229 |
---|
2522 | Ignore-this: eba2cf9f1b1364b8e4c5ae4fa030a99f |
---|
2523 | ] |
---|
2524 | [consolidator: re-use more directories, add total directories seen-vs-used counts |
---|
2525 | warner@allmydata.com**20090313034801 |
---|
2526 | Ignore-this: 6e743d2940a9fe129cee31008c894d70 |
---|
2527 | ] |
---|
2528 | [consolidate: create multiple numbered backups of the original Archives directory, not just the first time |
---|
2529 | warner@allmydata.com**20090312230427 |
---|
2530 | Ignore-this: e4985f76969b584d099b050781aa561c |
---|
2531 | ] |
---|
2532 | [consolidator: add more verbose traversal of directories |
---|
2533 | warner@allmydata.com**20090312232900 |
---|
2534 | Ignore-this: 8ff0e17c6174566832a566a111032db4 |
---|
2535 | ] |
---|
2536 | [tahoe_get: don't create the output file on error. Closes #121. |
---|
2537 | Brian Warner <warner@lothar.com>**20091227220404 |
---|
2538 | Ignore-this: 58d5e793a77ec6e87d9394ade074b926 |
---|
2539 | ] |
---|
2540 | [tahoe backup: skip all symlinks, with warning. Fixes #850, addresses #641. |
---|
2541 | Brian Warner <warner@lothar.com>**20100127223517 |
---|
2542 | Ignore-this: ab5cf05158d32a575ca8efc0f650033f |
---|
2543 | ] |
---|
2544 | [Improve behaviour of 'tahoe ls' for unknown objects, addressing kevan's comments |
---|
2545 | david-sarah@jacaranda.org**20100220061313 |
---|
2546 | Ignore-this: 6205025c477f1c999473a4ae67e1c83 |
---|
2547 | ] |
---|
2548 | [CLI: Support for https url in option --node-url |
---|
2549 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100430185609 |
---|
2550 | Ignore-this: 1717176b4d27c877e6bc67a944d9bf34 |
---|
2551 | |
---|
2552 | This patch modifies the regular expression used for verifying of '--node-url' |
---|
2553 | parameter. Support for accessing a Tahoe gateway over HTTPS was already |
---|
2554 | present, thanks to Python's urllib. |
---|
2555 | |
---|
2556 | ] |
---|
2557 | [test_stringutils.py: Fix a trivial Python 2.4 syntax incompatibility |
---|
2558 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100521093345 |
---|
2559 | Ignore-this: 9297e3d14a0dd37d0c1a4c6954fd59d3 |
---|
2560 | ] |
---|
2561 | [test_stringutils.py: Mock the open() call in test_open_unicode |
---|
2562 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100521135817 |
---|
2563 | Ignore-this: d8be4e56a6eefe7d60f97f01ea20ac67 |
---|
2564 | |
---|
2565 | This test ensure that open(a_unicode_string) is used on Unicode platforms |
---|
2566 | (Windows or MacOS X) and that open(a_correctly_encoded_bytestring) on other |
---|
2567 | platforms such as Unix. |
---|
2568 | |
---|
2569 | ] |
---|
2570 | [test_stringutils.py: Add a test class for OpenBSD 4.1 with LANG=C |
---|
2571 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100521140053 |
---|
2572 | Ignore-this: 63f568aec259cef0e807752fc8150b73 |
---|
2573 | ] |
---|
2574 | [test_stringutils.py: Skip test_listdir_unicode on mocked platform which cannot store non-ASCII filenames |
---|
2575 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100521160559 |
---|
2576 | Ignore-this: b93fde736a8904712b506e799250a600 |
---|
2577 | ] |
---|
2578 | [test_stringutils.py: Skip test test_listdir_unicode_good if filesystem supports only ASCII filenames |
---|
2579 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100521160839 |
---|
2580 | Ignore-this: f2ccdbd04c8d9f42f1efb0eb80018257 |
---|
2581 | ] |
---|
2582 | [fix flakes |
---|
2583 | zooko@zooko.com**20100604075845 |
---|
2584 | Ignore-this: 3e6a84b78771b0ad519e771a13605f0 |
---|
2585 | ] |
---|
2586 | [setup: fix "tahoe start" to work on Windows even when a Tahoe base dir hasn't been configured in the Windows registry |
---|
2587 | zooko@zooko.com**20090121184720 |
---|
2588 | Ignore-this: ba147a8f75e8aa9cdc3ee0a56dbf7413 |
---|
2589 | ] |
---|
2590 | [change default node-directory on windows to do registry lookup, not ~/.tahoe |
---|
2591 | robk-tahoe@allmydata.com**20080111013218] |
---|
2592 | [runner: make most commands use ~/.tahoe by default (create-client, start/stop/restart, all CLI tools, but *not* create-introducer |
---|
2593 | warner@lothar.com**20071011085423] |
---|
2594 | [SFTP: changes for #1063 ('no-write' field) including comment:1 (clearing owner write permission diminishes to a read cap). Includes documentation changes, but not tests for the new behaviour. |
---|
2595 | david-sarah@jacaranda.org**20100601051139 |
---|
2596 | Ignore-this: eff7c08bd47fd52bfe2b844dabf02558 |
---|
2597 | ] |
---|
2598 | [docs/FTP: the Twisted patch (t3462) has landed, will be in the next release |
---|
2599 | Brian Warner <warner@lothar.com>**20100223210402 |
---|
2600 | Ignore-this: ddc5c8da8c95d8c19380d8c7ecbaf18 |
---|
2601 | ] |
---|
2602 | [ftpd: update docs, point to Twisted ticket for the proposed patch |
---|
2603 | Brian Warner <warner@lothar.com>**20090731183226 |
---|
2604 | Ignore-this: f1e93258a0700a529d9fef6ff93847a4 |
---|
2605 | ] |
---|
2606 | [SFTP: fix silly bug in _sync_heisenfiles ('f is not ignore' vs 'not (f is ignore)'). |
---|
2607 | david-sarah@jacaranda.org**20100530053807 |
---|
2608 | Ignore-this: 71c4bc62613bf8fef835886d8eb61c27 |
---|
2609 | ] |
---|
2610 | [SFTP: another try at fixing the _sync_heisenfiles bug. |
---|
2611 | david-sarah@jacaranda.org**20100530055254 |
---|
2612 | Ignore-this: c15f76f32a60083a6b7de6ca0e917934 |
---|
2613 | ] |
---|
2614 | [SFTP: fix bug in previous logging patch. |
---|
2615 | david-sarah@jacaranda.org**20100530050000 |
---|
2616 | Ignore-this: 613e4c115f03fe2d04c621b510340817 |
---|
2617 | ] |
---|
2618 | [SFTP: more logging to track down OpenOffice hang. |
---|
2619 | david-sarah@jacaranda.org**20100530040809 |
---|
2620 | Ignore-this: 6c11f2d1eac9f62e2d0f04f006476a03 |
---|
2621 | ] |
---|
2622 | [SFTP: avoid blocking close on a heisenfile that has been abandoned or never changed. Also, improve the logging to help track down a case where OpenOffice hangs on opening a file with FXF_READ|FXF_WRITE. |
---|
2623 | david-sarah@jacaranda.org**20100530025544 |
---|
2624 | Ignore-this: 9919dddd446fff64de4031ad51490d1c |
---|
2625 | ] |
---|
2626 | [SFTP: the same bug as in _sync_heisenfiles also occurred in two other places. |
---|
2627 | david-sarah@jacaranda.org**20100530060127 |
---|
2628 | Ignore-this: 8d137658fc6e4596fa42697476c39aa3 |
---|
2629 | ] |
---|
2630 | [SFTP: further improvements to test coverage. |
---|
2631 | david-sarah@jacaranda.org**20100602234422 |
---|
2632 | Ignore-this: 87eeee567e8d7562659442ea491e187c |
---|
2633 | ] |
---|
2634 | [SFTP: cater to clients that assume a file is created as soon as they have made an open request; also, fix some race conditions associated with closing a file at about the same time as renaming or removing it. |
---|
2635 | david-sarah@jacaranda.org**20100529045253 |
---|
2636 | Ignore-this: 2404076b2154ff2659e2b10e0b9e813c |
---|
2637 | ] |
---|
2638 | [SFTP: fix pyflakes warnings; drop 'noisy' versions of eventually_callback and eventually_errback; robustify conversion of exception messages to UTF-8. |
---|
2639 | david-sarah@jacaranda.org**20100523140905 |
---|
2640 | Ignore-this: 420196fc58646b05bbc9c3732b6eb314 |
---|
2641 | ] |
---|
2642 | [SFTP: avoid logging all data passed to callbacks. |
---|
2643 | david-sarah@jacaranda.org**20100519000651 |
---|
2644 | Ignore-this: ade6d69a473ada50acef6389fc7fdf69 |
---|
2645 | ] |
---|
2646 | [SFTP: Increase test_sftp timeout to cater for francois' ARM buildslave. |
---|
2647 | david-sarah@jacaranda.org**20100522191639 |
---|
2648 | Ignore-this: a5acf9660d304677048ab4dd72908ad8 |
---|
2649 | ] |
---|
2650 | [SFTP: log tracebacks for RAISEd exceptions. |
---|
2651 | david-sarah@jacaranda.org**20100523221535 |
---|
2652 | Ignore-this: c76a7852df099b358642f0631237cc89 |
---|
2653 | ] |
---|
2654 | [SFTP: more logging to investigate behaviour of getAttrs(path). |
---|
2655 | david-sarah@jacaranda.org**20100523204236 |
---|
2656 | Ignore-this: e58fd35dc9015316e16a9f49f19bb469 |
---|
2657 | ] |
---|
2658 | [SFTP: fix time handling to make sure floats are not passed into twisted.conch, and to print times in the future less ambiguously in directory listings. |
---|
2659 | david-sarah@jacaranda.org**20100524230412 |
---|
2660 | Ignore-this: eb1a3fb72492fa2fb19667b6e4300440 |
---|
2661 | ] |
---|
2662 | [SFTP: 'sync' any open files at a direntry before opening any new file at that direntry. This works around the sshfs misbehaviour of returning success to clients immediately on close. |
---|
2663 | david-sarah@jacaranda.org**20100525230257 |
---|
2664 | Ignore-this: 63245d6d864f8f591c86170864d7c57f |
---|
2665 | ] |
---|
2666 | [SFTP: handle removing a file while it is open. Also some simplifications of the logout handling. |
---|
2667 | david-sarah@jacaranda.org**20100525184210 |
---|
2668 | Ignore-this: 660ee80be6ecab783c60452a9da896de |
---|
2669 | ] |
---|
2670 | [SFTP: fixes and test cases for renaming of open files. |
---|
2671 | david-sarah@jacaranda.org**20100523032549 |
---|
2672 | Ignore-this: 32e0726be0fc89335f3035157e202c68 |
---|
2673 | ] |
---|
2674 | [SFTP: Fix error in support for getAttrs on an open file, to index open files by directory entry rather than path. Extend that support to renaming open files. Also, implement the extposix-rename@openssh.org extension, and some other minor refactoring. |
---|
2675 | david-sarah@jacaranda.org**20100522035836 |
---|
2676 | Ignore-this: 8ef93a828e927cce2c23b805250b81a4 |
---|
2677 | ] |
---|
2678 | [SFTP: allow getAttrs to succeed on a file that has been opened for creation but not yet uploaded or linked (part of #1050). |
---|
2679 | david-sarah@jacaranda.org**20100520035613 |
---|
2680 | Ignore-this: 2f59107d60d5476edac19361ccf6cf94 |
---|
2681 | ] |
---|
2682 | [SFTP: fixed bugs that caused hangs during write (#1037). |
---|
2683 | david-sarah@jacaranda.org**20100517044228 |
---|
2684 | Ignore-this: b8b95e82c4057367388a1e6baada993b |
---|
2685 | ] |
---|
2686 | [SFTP: add tests for more combinations of open flags. |
---|
2687 | david-sarah@jacaranda.org**20100519053933 |
---|
2688 | Ignore-this: b97ee351b1e8ecfecabac70698060665 |
---|
2689 | ] |
---|
2690 | [SFTP: allow FXF_WRITE | FXF_TRUNC (#1050). |
---|
2691 | david-sarah@jacaranda.org**20100519043240 |
---|
2692 | Ignore-this: bd70009f11d07ac6e9fd0d1e3fa87a9b |
---|
2693 | ] |
---|
2694 | [SFTP: improve logging so that results of requests are (usually) logged. |
---|
2695 | david-sarah@jacaranda.org**20100520003652 |
---|
2696 | Ignore-this: 3f59eeee374a3eba71db9be31d5a95 |
---|
2697 | ] |
---|
2698 | [SFTP: change error code returned for ExistingChildError to FX_FAILURE (fixes gvfs with some picky programs such as gedit). |
---|
2699 | david-sarah@jacaranda.org**20100518004205 |
---|
2700 | Ignore-this: c194c2c9aaf3edba7af84b7413cec375 |
---|
2701 | ] |
---|
2702 | [SFTP: fixes related to reporting of permissions (needed for sshfs). |
---|
2703 | david-sarah@jacaranda.org**20100518054521 |
---|
2704 | Ignore-this: c51f8a5d0dc76b80d33ffef9b0541325 |
---|
2705 | ] |
---|
2706 | [Eliminate Windows newlines from sftpd.py. |
---|
2707 | david-sarah@jacaranda.org**20100515005656 |
---|
2708 | Ignore-this: cd54fd25beb957887514ae76e08c277 |
---|
2709 | ] |
---|
2710 | [SFTP: work around a probable bug in twisted.conch.ssh.session:loseConnection(). Also some minor error handling cleanups. |
---|
2711 | david-sarah@jacaranda.org**20100517012606 |
---|
2712 | Ignore-this: 5d3da7c4219cb0c14547e7fd70c74204 |
---|
2713 | ] |
---|
2714 | [SFTP: avoid race condition where .write could be called on an OverwriteableFileConsumer after it had been closed. |
---|
2715 | david-sarah@jacaranda.org**20100523233830 |
---|
2716 | Ignore-this: 55d381064a15bd64381163341df4d09f |
---|
2717 | ] |
---|
2718 | [SFTP: Support statvfs extensions, avoid logging actual data, and decline shell sessions politely. |
---|
2719 | david-sarah@jacaranda.org**20100516154347 |
---|
2720 | Ignore-this: 9d05d23ba77693c03a61accd348ccbe5 |
---|
2721 | ] |
---|
2722 | [SFTP: implement execCommand to interoperate with clients that issue a 'df -P -k /' command. Also eliminate use of Zope adaptation. |
---|
2723 | david-sarah@jacaranda.org**20100516012754 |
---|
2724 | Ignore-this: 2d0ed28b759f67f83875b1eaf5778992 |
---|
2725 | ] |
---|
2726 | [sftpd.py: 'log.OPERATIONAL' should be just 'OPERATIONAL'. |
---|
2727 | david-sarah@jacaranda.org**20100515155533 |
---|
2728 | Ignore-this: f2347cb3301bbccc086356f6edc685 |
---|
2729 | ] |
---|
2730 | [Attempt to fix #1040 by making SFTPUser implement ISession. |
---|
2731 | david-sarah@jacaranda.org**20100515005719 |
---|
2732 | Ignore-this: b3baaf088ba567e861e61e347195dfc4 |
---|
2733 | ] |
---|
2734 | [Update SFTP implementation and tests: fix #1038 and switch to foolscap logging; also some code reorganization. |
---|
2735 | david-sarah@jacaranda.org**20100514043113 |
---|
2736 | Ignore-this: 262f76d953dcd4317210789f2b2bf5da |
---|
2737 | ] |
---|
2738 | [New SFTP implementation: mutable files, read/write support, streaming download, Unicode filenames, and more |
---|
2739 | david-sarah@jacaranda.org**20100512055407 |
---|
2740 | Ignore-this: 906f51c48d974ba9cf360c27845c55eb |
---|
2741 | ] |
---|
2742 | [sftpd: minor debug-logging tweak |
---|
2743 | warner@allmydata.com**20081105194511] |
---|
2744 | [ftpd/sftpd: stop using RuntimeError, for #639 |
---|
2745 | warner@lothar.com**20090222232426 |
---|
2746 | Ignore-this: 97001362c4ba9e94b2e254e229b79987 |
---|
2747 | ] |
---|
2748 | [rollback [20090226150237-b2345-1e916a746a7f4627b050f02f0e442fae5caf69d4] for 1.4.0 release; #645 |
---|
2749 | zooko@zooko.com**20090411181906 |
---|
2750 | Ignore-this: 15aa9ce6d1d49e9447f32e233d136bab |
---|
2751 | ] |
---|
2752 | [Fix for bug #645, correct path handling logic so that it works from sshfs |
---|
2753 | Alberto Berti <alberto@metapensiero.it>**20090226150237 |
---|
2754 | Ignore-this: e9c1b2d48ebf4ba68100d76e54154a78 |
---|
2755 | ] |
---|
2756 | [Tests for new SFTP implementation |
---|
2757 | david-sarah@jacaranda.org**20100512060552 |
---|
2758 | Ignore-this: 20308d4a59b3ebc868aad55ae0a7a981 |
---|
2759 | ] |
---|
2760 | [unicode: make test_cli test a non-ascii argument, and make the fallback term encoding be locale.getpreferredencoding() |
---|
2761 | zooko@zooko.com**20100604141251 |
---|
2762 | Ignore-this: b2bfc07942f69141811e59891842bd8c |
---|
2763 | ] |
---|
2764 | [test_cli.py: Fix tests when sys.stdout.encoding=None and refactor this code into functions |
---|
2765 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100520084447 |
---|
2766 | Ignore-this: cf2286e225aaa4d7b1927c78c901477f |
---|
2767 | ] |
---|
2768 | [More cleanups to test_cli using new utilities for reading and writing files. |
---|
2769 | david-sarah@jacaranda.org**20100206013855 |
---|
2770 | Ignore-this: 9fd2294406b346bfe9144fff6a61f789 |
---|
2771 | ] |
---|
2772 | [debug catalog-shares: tolerate even more errors on bad files/directories |
---|
2773 | warner@allmydata.com**20081030215447] |
---|
2774 | [unicode: always decode json manifest as utf-8 then encode for stdout |
---|
2775 | zooko@zooko.com**20100604084840 |
---|
2776 | Ignore-this: ac481692315fae870a0f3562bd7db48e |
---|
2777 | pyflakes pointed out that the exception handler fallback called an un-imported function, showing that the fallback wasn't being exercised. |
---|
2778 | I'm not 100% sure that this patch is right and would appreciate François or someone reviewing it. |
---|
2779 | ] |
---|
2780 | [Test behaviour of 'tahoe ls' for unknown objects (#837) |
---|
2781 | david-sarah@jacaranda.org**20100224025913 |
---|
2782 | Ignore-this: b999f6239796a90cadb41e8650aa3782 |
---|
2783 | ] |
---|
2784 | [addendum to "Fix 'tahoe ls' on files (#771)" |
---|
2785 | Brian Warner <warner@lothar.com>**20091227232149 |
---|
2786 | Ignore-this: 6dd5e25f8072a3153ba200b7fdd49491 |
---|
2787 | |
---|
2788 | tahoe_ls.py: tolerate missing metadata |
---|
2789 | web/filenode.py: minor cleanups |
---|
2790 | test_cli.py: test 'tahoe ls FILECAP' |
---|
2791 | ] |
---|
2792 | [Fix 'tahoe ls' on files (#771). Patch adapted from Kevan Carstensen. |
---|
2793 | Brian Warner <warner@lothar.com>**20091227225443 |
---|
2794 | Ignore-this: 8bf8c7b1cd14ea4b0ebd453434f4fe07 |
---|
2795 | |
---|
2796 | web/filenode.py: also serve edge metadata when using t=json on a |
---|
2797 | DIRCAP/childname object. |
---|
2798 | tahoe_ls.py: list file objects as if we were listing one-entry directories. |
---|
2799 | Show edge metadata if we have it, which will be true when doing |
---|
2800 | 'tahoe ls DIRCAP/filename' and false when doing 'tahoe ls |
---|
2801 | FILECAP' |
---|
2802 | ] |
---|
2803 | [unicode tests: fix missing import |
---|
2804 | zooko@zooko.com**20100604142630 |
---|
2805 | Ignore-this: db437fe8009971882aaea9de05e2bc3 |
---|
2806 | ] |
---|
2807 | [stringutils.py: Unicode helper functions + associated tests |
---|
2808 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100520004105 |
---|
2809 | Ignore-this: 7a73fc31de2fd39d437d6abd278bfa9a |
---|
2810 | |
---|
2811 | This file contains a bunch of helper functions which converts |
---|
2812 | unicode string from and to argv, filenames and stdout. |
---|
2813 | ] |
---|
2814 | [tests: drastically increase timeout of this very time-consuming test in honor of François's ARM box |
---|
2815 | zooko@zooko.com**20100607115929 |
---|
2816 | Ignore-this: bf1bb52ffb6b5ccae71d4dde14621bc8 |
---|
2817 | ] |
---|
2818 | [add 'tahoe debug consolidate' command, to merge directories created by repeated 'tahoe cp -r' or the allmydata win32 backup tool, into the form that would have been created by 'tahoe backup'. |
---|
2819 | warner@allmydata.com**20090312205606 |
---|
2820 | Ignore-this: 66569ca2190aa7b0f9199bcf09dcb27e |
---|
2821 | ] |
---|
2822 | [CREDITS: update François's Description |
---|
2823 | zooko@zooko.com**20100608155513 |
---|
2824 | Ignore-this: a266b438d25ca2cb28eafff75aa4b2a |
---|
2825 | ] |
---|
2826 | [docs: Update NEWS file with new features and bugfixes in 1.7.0 |
---|
2827 | francois@ctrlaltdel.ch**20100609091120 |
---|
2828 | Ignore-this: 8c1014e4469ef530e5ff48d7d6ae71c5 |
---|
2829 | ] |
---|
2830 | [docs: update relnotes.txt for Tahoe-LAFS v1.7.0! |
---|
2831 | zooko@zooko.com**20100619052048 |
---|
2832 | Ignore-this: 1dd2c851f02adf3ab5a33040051fe05a |
---|
2833 | ... and remove relnotes-short.txt (just use the first section of relnotes.txt for that purpose) |
---|
2834 | ] |
---|
2835 | [docs: update relnote.txt for Tahoe-LAFS v1.7.0β |
---|
2836 | zooko@zooko.com**20100609054602 |
---|
2837 | Ignore-this: 52e1bf86a91d45315960fb8806b7a479 |
---|
2838 | ] |
---|
2839 | [docs: update relnotes.txt for v1.6.1 |
---|
2840 | zooko@zooko.com**20100224065755 |
---|
2841 | Ignore-this: 6d078e94425462ac8d074e3e7c82da28 |
---|
2842 | ] |
---|
2843 | [quickstart.html: python 2.5 -> 2.6 as recommended version |
---|
2844 | david-sarah@jacaranda.org**20100705175858 |
---|
2845 | Ignore-this: bc3a14645ea1d5435002966ae903199f |
---|
2846 | ] |
---|
2847 | [Raise Python version requirement to 2.4.4 for non-UCS-2 builds, to avoid a critical Python security bug. |
---|
2848 | david-sarah@jacaranda.org**20100605031713 |
---|
2849 | Ignore-this: 2df2b6d620c5d8191c79eefe655059e2 |
---|
2850 | ] |
---|
2851 | [setup: fix bug (wrong import) in error message, as noticed by pyflakes |
---|
2852 | zooko@zooko.com**20090519195642 |
---|
2853 | Ignore-this: f1b9f8c00b46c1b5f2f20e5fc424f341 |
---|
2854 | ] |
---|
2855 | [setup: fix trivial bug in recent patch to test base64.py at startup |
---|
2856 | zooko@zooko.com**20090519195129 |
---|
2857 | Ignore-this: f6be038f74b53ca69e7109fe34adfbc |
---|
2858 | ] |
---|
2859 | [setup: make Tahoe exit at startup with a useful error message if the base64.py module is buggy (fixes part of #710) |
---|
2860 | zooko@zooko.com**20090519194555 |
---|
2861 | Ignore-this: aa4d398235ddca8d417d61c9688e154 |
---|
2862 | ] |
---|
2863 | [setup: doc string describing what the require_auto_deps() function is for |
---|
2864 | zooko@zooko.com**20080815172234] |
---|
2865 | [setup: remove the try: except: around the import of pkg_resources -- we now require setuptools at run time and at build time |
---|
2866 | zooko@zooko.com**20080418202459] |
---|
2867 | [setup: don't try __import__(name) in _auto_deps.py |
---|
2868 | zooko@zooko.com**20080418191722 |
---|
2869 | This happens to work, because all of our "distribution" (i.e. distributable packaged Python code) names to coincide with all of their "package" (i.e. a directory with a __init__.py in it, which is "import"-able) names, except, I think for Twisted on Brian's debian sid system. |
---|
2870 | |
---|
2871 | But there's no reason why it should always work, and the only reason for that __import__() was to give us an explicit error message indicating missing requirements in the case that pkg_resources isn't importable or that the requirements don't have correct .egg-info metadata. So, by removing this stanza we may allow certain places to get a more ad-hoc failure message, i.e. an ImportError from somewhere, instead of an ImportError from _auto_deps.py, but that's okay. |
---|
2872 | |
---|
2873 | Note that dependencies which do not have their .egg-info metadata with them are increasingly rare, since Python 2.5 distutils creates the .egg-info file by default, and Linux distributions have stopped their former practice of actively deleting the .egg-info files. |
---|
2874 | |
---|
2875 | ] |
---|
2876 | [_auto_deps.py: update comment |
---|
2877 | warner@allmydata.com**20080129195321] |
---|
2878 | [_auto_deps: tolerate DistributionNotFound (but not VersionConflict), to accomodate distributions (i.e. gutsy) which provide our dependencies but don't include .egg-info files |
---|
2879 | warner@allmydata.com**20080129195237] |
---|
2880 | [quickstart.html: warn against installing Python at a path containing spaces. |
---|
2881 | david-sarah@jacaranda.org**20100604032413 |
---|
2882 | Ignore-this: c7118332573abd7762d9a897e650bc6a |
---|
2883 | ] |
---|
2884 | [docs: install.html: link into Python 2.5.5 download page |
---|
2885 | zooko@zooko.com**20100202065852 |
---|
2886 | Ignore-this: 1a9471b8175b7de5741d8445a7ede29d |
---|
2887 | ] |
---|
2888 | [docs: install.html: recommend Python 2.5 (because I can build extension modules for it with mingw), architecture.txt: point out that our Proof of Retrievability feature is client-side-only |
---|
2889 | zooko@zooko.com**20100202053842 |
---|
2890 | Ignore-this: e33fd413a91771c77b17d7de0f215bea |
---|
2891 | ] |
---|
2892 | [Clarify quickstart instructions for installing pywin32 |
---|
2893 | david-sarah@jacaranda.org**20100511180300 |
---|
2894 | Ignore-this: d4668359673600d2acbc7cd8dd44b93c |
---|
2895 | ] |
---|
2896 | [docs: install.html -> quickstart.html |
---|
2897 | zooko@zooko.com**20100421155757 |
---|
2898 | Ignore-this: 6084e203909306bed93efb09d0e6181d |
---|
2899 | It is not called "installing" because that implies that it is going to change the configuration of your operating system. It is not called "building" because that implies that you need developer tools like a compiler. Also I added a stern warning against looking at the "InstallDetails" wiki page, which I have renamed to "AdvancedInstall". |
---|
2900 | ] |
---|
2901 | [docs: a few small edits to try to guide newcomers through the docs |
---|
2902 | zooko@zooko.com**20100303231902 |
---|
2903 | Ignore-this: a6aab44f5bf5ad97ea73e6976bc4042d |
---|
2904 | These edits were suggested by my watching over Jake Appelbaum's shoulder as he completely ignored/skipped/missed install.html and also as he decided that debian.txt wouldn't help him with basic installation. Then I threw in a few docs edits that have been sitting around in my sandbox asking to be committed for months. |
---|
2905 | ] |
---|
2906 | [docs/debian.txt: add notes on how to build Tahoe on a debian system |
---|
2907 | warner@allmydata.com**20080617204132] |
---|
2908 | [add misc/simulate_load.py in an attempt to understand why permuting the peerlist per each storage index matters |
---|
2909 | zooko@zooko.com**20080712212622] |
---|
2910 | [docs: a few small edits to performance.txt and README |
---|
2911 | zooko@zooko.com**20100202052750 |
---|
2912 | Ignore-this: bf8b1b7438e8fb6da09eec9713c78533 |
---|
2913 | ] |
---|
2914 | [setup: update README to point to known_issues.txt |
---|
2915 | zooko@zooko.com**20080722010229] |
---|
2916 | [docs: a few edits to architecture.txt, most significantly highlighting "future work" to avoid confusing it with the current version, and adding a "future work" about a random-sampling Proof of Retrievability verifier |
---|
2917 | zooko@zooko.com**20100202045117 |
---|
2918 | Ignore-this: 81122b3042ea9ee6bc12e795c2386d59 |
---|
2919 | ] |
---|
2920 | [Fill in 'docs/performance.txt' with some performance information |
---|
2921 | Kevan Carstensen <kevan@isnotajoke.com>**20100202005914 |
---|
2922 | Ignore-this: c66b255b2bd2e7e11f5707b25e7b38be |
---|
2923 | ] |
---|
2924 | [Add 'docs/performance.txt', which (for the moment) describes mutable file performance issues |
---|
2925 | Kevan Carstensen <kevan@isnotajoke.com>**20100115204500 |
---|
2926 | Ignore-this: ade4e500217db2509aee35aacc8c5dbf |
---|
2927 | ] |
---|
2928 | [Change install.html to reference 1.6.1 instead of 1.6.0 |
---|
2929 | david-sarah@jacaranda.org**20100228061941 |
---|
2930 | Ignore-this: 4738440e66a12dcf2cadf968fba5337 |
---|
2931 | ] |
---|
2932 | [Fix handling of correctly encoded unicode filenames (#534) |
---|
2933 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100520004356 |
---|
2934 | Ignore-this: 8a3a7df214a855f5a12dc0eeab6f2e39 |
---|
2935 | |
---|
2936 | Tahoe CLI commands working on local files, for instance 'tahoe cp' or 'tahoe |
---|
2937 | backup', have been improved to correctly handle filenames containing non-ASCII |
---|
2938 | characters. |
---|
2939 | |
---|
2940 | In the case where Tahoe encounters a filename which cannot be decoded using the |
---|
2941 | system encoding, an error will be returned and the operation will fail. Under |
---|
2942 | Linux, this typically happens when the filesystem contains filenames encoded |
---|
2943 | with another encoding, for instance latin1, than the system locale, for |
---|
2944 | instance UTF-8. In such case, you'll need to fix your system with tools such |
---|
2945 | as 'convmv' before using Tahoe CLI. |
---|
2946 | |
---|
2947 | All CLI commands have been improved to support non-ASCII parameters such as |
---|
2948 | filenames and aliases on all supported Operating Systems except Windows as of |
---|
2949 | now. |
---|
2950 | ] |
---|
2951 | [Fix an filename encoding issue with "tahoe cp" |
---|
2952 | francois@ctrlaltdel.ch**20081111200803] |
---|
2953 | [test_cli.py: Ensure that we can read our uploaded files back |
---|
2954 | francois@ctrlaltdel.ch**20081114134458] |
---|
2955 | [cli: undo the effects of [http://allmydata.org/trac/tahoe/changeset/20081222235453-92b7f-f841e18afb94e1fd95e6dafb799a3d876dd85c69] |
---|
2956 | zooko@zooko.com**20081224155317 |
---|
2957 | Ignore-this: d34ee20d89221357e32872d721d7685f |
---|
2958 | We're just going to mark unicode in the cli as unsupported for tahoe-lafs-1.3.0. Unicode filenames on the command-line do actually work for some platforms and probably only if the platform encoding is utf-8, but I'm not sure, and in any case for it to be marked as "supported" it would have to work on all platforms, be thoroughly tested, and also we would have to understand why it worked. :-) |
---|
2959 | |
---|
2960 | ] |
---|
2961 | [cli: decode all cli arguments, assuming that they are utf-8 encoded |
---|
2962 | zooko@zooko.com**20081222235453 |
---|
2963 | Ignore-this: d92b4d146e1dc9848c6a4b6aaaa3d1e9 |
---|
2964 | Also encode all args to urllib as utf-8 because urllib doesn't handle unicode objects. |
---|
2965 | I'm not sure if it is appropriate to *assume* utf-8 encoding of cli args. Perhaps the Right thing to do is to detect the platform encoding. Any ideas? |
---|
2966 | This patch is mostly due to François Deppierraz. |
---|
2967 | |
---|
2968 | ] |
---|
2969 | [util/base32: allow unicode inputs to a2b() or could_be_base32_encoded(), and encode them with utf-8 before processing them |
---|
2970 | zooko@zooko.com**20081222234713 |
---|
2971 | Ignore-this: e1eb4caed2f78b2fef0df4bbf8bb26f7 |
---|
2972 | ] |
---|
2973 | [util/base32: loosen the precondition forbidding unicode and requiring str -- now it requires either unicode or str |
---|
2974 | zooko@zooko.com**20081222222237 |
---|
2975 | Ignore-this: 3481d644bdc5345facbc199d33653f37 |
---|
2976 | Hopefully this will make it so that tests pass with François Deppierraz's patch to fix the tahoe cli's handling of unicode argument. |
---|
2977 | ] |
---|
2978 | [idlib: make failures much clearer when encountering unicode |
---|
2979 | robk-tahoe@allmydata.com**20080214232307 |
---|
2980 | |
---|
2981 | while investigating fuse related stuff, I spent quite a while staring at |
---|
2982 | very cryptic explosions I got from idlib. it turns out that unicode |
---|
2983 | objects and str objects have .translate() methods with differing signatures. |
---|
2984 | to save anyone else the headache, this makes it very clear if you accidentally |
---|
2985 | try to pass a unicode object in to a2b() etc. |
---|
2986 | ] |
---|
2987 | [cli: mark unicode filenames as unsupported -- see #534 for details |
---|
2988 | zooko@zooko.com**20081224192802 |
---|
2989 | Ignore-this: b209ccbd838f633ec201e2e97156847c |
---|
2990 | ] |
---|
2991 | [test_cli: use explicit (and stable) testdirs, instead of using self.mktemp |
---|
2992 | warner@lothar.com**20090307090428 |
---|
2993 | Ignore-this: 7c58d159e4f33d01635c3445d9e591f9 |
---|
2994 | ] |
---|
2995 | [Fixed tests again so they will pass on windows. |
---|
2996 | Alberto Berti <alberto@metapensiero.it>**20090223003502 |
---|
2997 | Ignore-this: 80d5074e7153642a2fa2a77958bfb50d |
---|
2998 | ] |
---|
2999 | [Fixed tests so that they pass also on buildbots. |
---|
3000 | Alberto Berti <alberto@metapensiero.it>**20090222224311 |
---|
3001 | Ignore-this: fcb91cd6acf028382411d23d380a4576 |
---|
3002 | ] |
---|
3003 | [Added tests for the cse when listdir is an iterator |
---|
3004 | Alberto Berti <alberto@metapensiero.it>**20090222224356 |
---|
3005 | Ignore-this: 218fb2aba02c28b4b1e5324bdb5adeaa |
---|
3006 | ] |
---|
3007 | [tests: raise the timeout for test_cli since Zandr's ARM machine totally burst through the old one |
---|
3008 | zooko@zooko.com**20090609210509] |
---|
3009 | [tahoe_add_alias.py: minor refactoring |
---|
3010 | Brian Warner <warner@lothar.com>**20100115064220 |
---|
3011 | Ignore-this: 29910e81ad11209c9e493d65fd2dab9b |
---|
3012 | ] |
---|
3013 | [tahoe add-alias/create-alias: don't corrupt non-newline-terminated alias |
---|
3014 | Brian Warner <warner@lothar.com>**20100114210246 |
---|
3015 | Ignore-this: 9c994792e53a85159d708760a9b1b000 |
---|
3016 | file. Closes #741. |
---|
3017 | ] |
---|
3018 | [Alter CLI utilities to handle nonexistent aliases better |
---|
3019 | Kevan Carstensen <kevan@isnotajoke.com>**20100211024318 |
---|
3020 | Ignore-this: e698ea4a57f5fe27c24336581ca0cf65 |
---|
3021 | ] |
---|
3022 | [tahoe_ls: improve error message when the target is missing |
---|
3023 | warner@allmydata.com**20080522003452] |
---|
3024 | [Implement more clearly defined moving semantics in tahoe_mv.py |
---|
3025 | kevan@isnotajoke.com**20090720034523 |
---|
3026 | Ignore-this: aaa592156f6fa93cb087824a74b0f2cb |
---|
3027 | ] |
---|
3028 | [Prevent mutable objects from being retrieved from an immutable directory, and associated forward-compatibility improvements. |
---|
3029 | david-sarah@jacaranda.org**20100127064430 |
---|
3030 | Ignore-this: 5ef6a3554cf6bef0bf0712cc7d6c0252 |
---|
3031 | ] |
---|
3032 | [test/common: oops, forgot the FakeMutableFileNode.get_readonly fix |
---|
3033 | warner@allmydata.com**20080520015219] |
---|
3034 | [web: add test for unicode POST when the name comes from name=, not the filename attribute |
---|
3035 | warner@allmydata.com**20080604000939] |
---|
3036 | [fuse/blackmatch: added asynchronous (background) file download |
---|
3037 | robk-tahoe@allmydata.com**20081020233333 |
---|
3038 | |
---|
3039 | previously, upon opening a file for reading, the open() call would block |
---|
3040 | while the entire file was retrieved from tahoe into the cache directory. |
---|
3041 | This change adds a DownloaderWithReadQueue class, and associated plumbing, |
---|
3042 | such that an open() will return promptly with the download initiated 'in |
---|
3043 | the background'. Subsequent read() operations will block until enough |
---|
3044 | data has been downloaded to satisfy that request. This provides a behaviour |
---|
3045 | similar to streaming, i.e. the client application will be able to read |
---|
3046 | data from the fuse interface while the remainder of the file is still being |
---|
3047 | downloaded. |
---|
3048 | |
---|
3049 | ] |
---|
3050 | [fuse/blackmatch: add readability to some logging, fix a permissions problem |
---|
3051 | robk-tahoe@allmydata.com**20081017004421 |
---|
3052 | |
---|
3053 | adds a couple of functions to unpack 'mode' and 'flags' for open() calls, to |
---|
3054 | facilitate debugging. |
---|
3055 | |
---|
3056 | adds a fix to ensure that all tmp files created for writing are opened with |
---|
3057 | permissions 0600 - one problem I had with testing with the Finder was that |
---|
3058 | files were being opened write only (0200) and were then failing to upload |
---|
3059 | to tahoe due to internal permission denied errors. |
---|
3060 | |
---|
3061 | there remain a variety of problems with finder access which I'm unable to |
---|
3062 | comprehend at this time. sometimes copies to tahoe will work fine, sometimes |
---|
3063 | they yield "the finder cannot complete the operation because some data ... |
---|
3064 | could not be read or written. (Error code -36)" sometimes "You may need to |
---|
3065 | enter the name and password for an administrator on this computer to change |
---|
3066 | the item" sometimes "The operation cannot be completed because an item with |
---|
3067 | the name ... already exists." and sometimes "The operation cannot be completed |
---|
3068 | because the item ... is locked." What seems to be absent is rhyme or reason. |
---|
3069 | |
---|
3070 | unix operations (cp, mv) work fine, rsync works fine. |
---|
3071 | |
---|
3072 | ] |
---|
3073 | [fuse/blackmatch: log exception in server startup |
---|
3074 | robk-tahoe@allmydata.com**20081017014650 |
---|
3075 | |
---|
3076 | humphf. my build runs the fuse stuff fine, but the build from the buildslave |
---|
3077 | doesn't seem to start up properly. hopefully this will elicit some useful info |
---|
3078 | ] |
---|
3079 | [fuse/blackmatch: split into client/server (twisted server) |
---|
3080 | robk-tahoe@allmydata.com**20081016150846 |
---|
3081 | |
---|
3082 | This implements a client/server split for blackmatch, where the client |
---|
3083 | implements the fuse_main bindings and a simple blocking rpc client mechanism. |
---|
3084 | The server implements the other half of that rpc mechanism, and contains all |
---|
3085 | the actual logic for interpreting fuse requests in the context of the on disk |
---|
3086 | cache and requests to the tahoe node. The server is based on a twisted reactor. |
---|
3087 | |
---|
3088 | The rpc mechanism implements a simple method dispatch including marshalling, |
---|
3089 | using json, of basic inert data types, in a flat namespace (no objects). |
---|
3090 | The client side is written in a blocking idiom, to interface with the threading |
---|
3091 | model used by the fuse_main bindings, whereas the server side is written for a |
---|
3092 | twisted reactor-based environment, intended to facilitate implementing more |
---|
3093 | sophisticated logic in that paradigm. The two communicate over a unix domain |
---|
3094 | socket, allocated within the nodedir. |
---|
3095 | |
---|
3096 | Command line usage is unchanged; the server is launched automatically by the |
---|
3097 | client. The server daemonizes itself, to avoid preventing the original parent |
---|
3098 | process (e.g. 'runtests') from waiting upon the server exiting. |
---|
3099 | |
---|
3100 | The client keeps open a 'keepalive' connection to the server; upon loss thereof |
---|
3101 | the server will exit. This addresses the fact that the python-fuse bindings |
---|
3102 | provide no notification of exit of the client process upon unmount. |
---|
3103 | |
---|
3104 | The client thus provides a relatively thin 'shim' proxying requests from the |
---|
3105 | fuse_main bindings across the rpc to the server process, which handles the |
---|
3106 | logic behind each request. |
---|
3107 | |
---|
3108 | For the time being, a '--no-split' option is provided to surpress the splitting |
---|
3109 | into client/server, yielding the prior behaviour. Once the server logic gets |
---|
3110 | more complex and more entrenched in a twisted idiom, this might be removed. |
---|
3111 | The 'runtests' test harness currently tests both modes, as 'impl_c' and |
---|
3112 | 'impl_c_no_split' |
---|
3113 | |
---|
3114 | ] |
---|
3115 | [macfuse: fix unicode handling |
---|
3116 | robk-tahoe@allmydata.com**20080306234325 |
---|
3117 | |
---|
3118 | at one point I'd thrown in a 'str' since fuse api bits required a str instance |
---|
3119 | but tahoe returns unicode objects from its json parsing. that, naturally |
---|
3120 | enough should really be a utf8 encoded str of the unicode object... |
---|
3121 | ] |
---|
3122 | [tahoefuse: return bogus but useful data to statfs call |
---|
3123 | robk-tahoe@allmydata.com**20080507234009 |
---|
3124 | |
---|
3125 | previously tahoefuse returned the fs stat for the filesystem the fuse plugin |
---|
3126 | was running upon (e.g. '/'). this works ok until you need to copy more to |
---|
3127 | tahoe than the local machine has free disk space, at which point Finder will |
---|
3128 | refuse to copy 'too much' data. |
---|
3129 | |
---|
3130 | this changes it so that tahoe always reports 2TiB used of an 8TiB filesystem |
---|
3131 | this is entirely bogus, but allows copies of up to 2TiB to be initiated. |
---|
3132 | ] |
---|
3133 | [fuse/impl_c: UNDO --auto-fsid option |
---|
3134 | robk-tahoe@allmydata.com**20080925134730 |
---|
3135 | |
---|
3136 | rolling back: |
---|
3137 | |
---|
3138 | Thu Sep 25 14:42:23 BST 2008 robk-tahoe@allmydata.com |
---|
3139 | * fuse/impl_c: add --auto-fsid option |
---|
3140 | |
---|
3141 | this was inspired by reading the fuse docs and discovering the 'fsid' option |
---|
3142 | to fuse_main, and was _intended_ to support a sort of 'stability' to the |
---|
3143 | filesystem (specifically derived from the root-uri mounted, whether directly |
---|
3144 | or via an alias) to support mac aliases across unmount/remount etc. |
---|
3145 | |
---|
3146 | some experimentation shows that that doesn't actually work, and that, at |
---|
3147 | least for mac aliases in my testing, they're tied to path-to-mountpoint and |
---|
3148 | not to the fsid - which seems to have no bearing. perhaps the 'local' flag |
---|
3149 | is causing weirdness therein. |
---|
3150 | |
---|
3151 | at any rate, I'm recording it simply for posterity, in case it turns out to |
---|
3152 | be useful after all somewhere down the road. |
---|
3153 | |
---|
3154 | |
---|
3155 | M ./contrib/fuse/impl_c/blackmatch.py +13 |
---|
3156 | ] |
---|
3157 | [fuse/impl_c: add --auto-fsid option |
---|
3158 | robk-tahoe@allmydata.com**20080925134223 |
---|
3159 | |
---|
3160 | this was inspired by reading the fuse docs and discovering the 'fsid' option |
---|
3161 | to fuse_main, and was _intended_ to support a sort of 'stability' to the |
---|
3162 | filesystem (specifically derived from the root-uri mounted, whether directly |
---|
3163 | or via an alias) to support mac aliases across unmount/remount etc. |
---|
3164 | |
---|
3165 | some experimentation shows that that doesn't actually work, and that, at |
---|
3166 | least for mac aliases in my testing, they're tied to path-to-mountpoint and |
---|
3167 | not to the fsid - which seems to have no bearing. perhaps the 'local' flag |
---|
3168 | is causing weirdness therein. |
---|
3169 | |
---|
3170 | at any rate, I'm recording it simply for posterity, in case it turns out to |
---|
3171 | be useful after all somewhere down the road. |
---|
3172 | |
---|
3173 | ] |
---|
3174 | [fuse/runtests: added --tests, renamed --suites |
---|
3175 | robk-tahoe@allmydata.com**20081016142836 |
---|
3176 | |
---|
3177 | changed the --tests option to be --suites, as it takes a prefix, e.g. 'read' |
---|
3178 | 'write' (or 'all', the default) and runs those suites which are applicable to |
---|
3179 | each implementation being tested. |
---|
3180 | |
---|
3181 | added a --tests option, which takes a list of tests, e.g. 'read_file_contents' |
---|
3182 | 'write_overlapping_large_writes' and runs all tests specified without regard |
---|
3183 | to whether the implementation(s) under test are declared to support them. |
---|
3184 | |
---|
3185 | this is basically to allow a specific test or two to be run, saving time |
---|
3186 | during development and debugging by not running the entire suite |
---|
3187 | ] |
---|
3188 | [fuse/impl_c: move mac tahoefuse impl out into contrib/fuse |
---|
3189 | robk-tahoe@allmydata.com**20080925014214 |
---|
3190 | |
---|
3191 | For a variety of reasons, high amongst them the fact that many people |
---|
3192 | interested in fuse support for tahoe seem to have missed its existence, |
---|
3193 | the existing fuse implementation for tahoe, previously 'mac/tahoefuse.py' |
---|
3194 | has been renamed and moved. |
---|
3195 | |
---|
3196 | It was suggested that, even though the mac build depends upon it, that |
---|
3197 | the mac/tahoefuse implementation be moved into contrib/fuse along with |
---|
3198 | the other fuse implementations. The fact that it's not as extensively |
---|
3199 | covered by unit tests as mainline tahoe was given as corroboration. |
---|
3200 | |
---|
3201 | In a bid to try and stem the confusion inherent in having tahoe_fuse, |
---|
3202 | tfuse and tahoefuse jumbled together (not necessarily helped by |
---|
3203 | referring to them as impl_a, b and c respectively) I'm hereby renaming |
---|
3204 | tahoefuse as 'blackmatch' (black match is, per wikipedia "a type of |
---|
3205 | crude fuse" hey, I'm a punny guy) Maybe one day it'll be promoted to |
---|
3206 | be 'quickmatch' instead... |
---|
3207 | |
---|
3208 | Anyway, this patch moves mac/tahoefuse.py out to contrib/fuse/impl_c/ |
---|
3209 | as blackmatch.py, and makes appropriate changes to the mac build process |
---|
3210 | to transclude blackmatch therein. this leaves the extant fuse.py and |
---|
3211 | fuseparts business in mac/ as-is and doesn't attempt to address such |
---|
3212 | issues in contrib/fuse/impl_c. |
---|
3213 | |
---|
3214 | it is left as an exercise to the reader (or the reader of a message |
---|
3215 | to follow) as to how to deal with the 'fuse' python module on the mac. |
---|
3216 | |
---|
3217 | as of this time, blackmatch should work on both mac and linux, and |
---|
3218 | passes the four extant tests in runtests. (fwiw neither impl_a nor |
---|
3219 | impl_b have I managed to get working on the mac yet) |
---|
3220 | |
---|
3221 | since blackmatch supports a read-write and caching fuse interface to |
---|
3222 | tahoe, some write tests obviously need to be added to runtests. |
---|
3223 | |
---|
3224 | ] |
---|
3225 | [macfuse: move macfuse files around to simplify pythonpath |
---|
3226 | robk-tahoe@allmydata.com**20080219231817 |
---|
3227 | |
---|
3228 | the mac/macfuse subdirectory needed to be added to the pythonpath in order |
---|
3229 | to build a binary incorporating the mac fuse system. this change should |
---|
3230 | make those modules accessible relative to the mac/ directory which is |
---|
3231 | implicitly included in the .app build process. |
---|
3232 | ] |
---|
3233 | [mac build: updates to respect UPLOAD_DEST argument to make |
---|
3234 | robk-tahoe@allmydata.com**20080226230353 |
---|
3235 | |
---|
3236 | the make mac-upload target now requires an UPLOAD_DEST argument to be given, |
---|
3237 | which is the rsync destination (including trailing '/') to which the version |
---|
3238 | stamped directory containing the .dmg should be placed. the account the |
---|
3239 | build is running as (e.g. 'buildslave') should have ssh access to the account |
---|
3240 | specified in that dest. one might also consider locking the key down to the |
---|
3241 | target directory by adding something like |
---|
3242 | command="rsync --server -vlogDtpr . /home/amduser/public_html/dist/mac-blah/" |
---|
3243 | to the corresponding authorized_key entry on the target machine. |
---|
3244 | |
---|
3245 | ] |
---|
3246 | [Makefile: split mac 'make .dmg' and 'upload' into separate steps |
---|
3247 | warner@allmydata.com**20080125222913] |
---|
3248 | [mac build: ahem. fix makefile probs |
---|
3249 | robk-tahoe@allmydata.com**20080227004822 |
---|
3250 | |
---|
3251 | oops. I screwed up the makefile syntax further. buildslave would spend a |
---|
3252 | lot of fruitless time trawling the entire drive. this fixes that. and a |
---|
3253 | stray -n. ahem. [looks down sheepishly] |
---|
3254 | ] |
---|
3255 | [mac build: fix makefile bug |
---|
3256 | robk-tahoe@allmydata.com**20080227002010 |
---|
3257 | |
---|
3258 | blah $( foo ) is more explicit than blah ` foo ` in a bash-like context |
---|
3259 | unfortunately it doesn't translate very well to makefiles, for which $( |
---|
3260 | means something else entirely |
---|
3261 | ] |
---|
3262 | [mac build: tweaks to build fuse for 10.4 and 10.5 |
---|
3263 | robk-tahoe@allmydata.com**20080227000844 |
---|
3264 | |
---|
3265 | rather than trying to build a single .app with both 10.4 and 10.5 fuse |
---|
3266 | libraries embedded within it, for the time being, we're just going to |
---|
3267 | have independant 10.4 and 10.5 builds. |
---|
3268 | |
---|
3269 | this provides a 10.5 _fusemodule.so, and build changes to copy the |
---|
3270 | appropriate versions of files for 10.4 or 10.5 from sub dirs of mac/ |
---|
3271 | into the build tree before triggering py2app |
---|
3272 | ] |
---|
3273 | [fuse/runtests: added a --web-open option |
---|
3274 | robk-tahoe@allmydata.com**20081003172026 |
---|
3275 | |
---|
3276 | similar to the --debug-wait option which causes the test harness to |
---|
3277 | pause at various stages of the process to facilitate debugging, this |
---|
3278 | option simplifies that debugging by automatically opening a web browser |
---|
3279 | to the root dir of that implementation's tests when tests are commenced. |
---|
3280 | |
---|
3281 | in addition, if --web-open is specfied but --debug-wait is not, the |
---|
3282 | harness will still pause after running tests but before tearing down |
---|
3283 | the tahoe grid - this allows all tests to run to completion, but |
---|
3284 | provide a debugging hook to investigate the end state of the grid's |
---|
3285 | contents thereafter. |
---|
3286 | ] |
---|
3287 | [fuse/tests: slew of changes to fuse 'runtests' |
---|
3288 | robk-tahoe@allmydata.com**20080924183601 |
---|
3289 | |
---|
3290 | This patch makes a significant number of changes to the fuse 'runtests' script |
---|
3291 | which stem from my efforts to integrate the third fuse implementation into this |
---|
3292 | framework. Perhaps not all were necessary to that end, and I beg nejucomo's |
---|
3293 | forebearance if I got too carried away. |
---|
3294 | |
---|
3295 | - cleaned up the blank lines; imho blank lines should be empty |
---|
3296 | |
---|
3297 | - made the unmount command switch based on platform, since macfuse just uses |
---|
3298 | 'umount' not the 'fusermount' command (which doesn't exist) |
---|
3299 | |
---|
3300 | - made the expected working dir for runtests the contrib/fuse dir, not the |
---|
3301 | top-level tahoe source tree - see also discussion of --path-to-tahoe below |
---|
3302 | |
---|
3303 | - significantly reworked the ImplProcManager class. rather than subclassing |
---|
3304 | for each fuse implementation to be tested, the new version is based on |
---|
3305 | instantiating objects and providing relevant config info to the constructor. |
---|
3306 | this was motivated by a desire to eliminate the duplication of similar but |
---|
3307 | subtly different code between instances, framed by consideration of increasing |
---|
3308 | the number of platforms and implementations involved. each implementation to |
---|
3309 | test is thus reduced to the pertinent import and an entry in the |
---|
3310 | 'implementations' table defining how to handle that implementation. this also |
---|
3311 | provides a way to specify which sets of tests to run for each implementation, |
---|
3312 | more on that below. |
---|
3313 | |
---|
3314 | |
---|
3315 | - significantly reworked the command line options parsing, using twisted.usage; |
---|
3316 | |
---|
3317 | what used to be a single optional argument is now represented by the |
---|
3318 | --test-type option which allows one to choose between running unittests, the |
---|
3319 | system tests, or both. |
---|
3320 | |
---|
3321 | the --implementations option allows for a specific (comma-separated) list of |
---|
3322 | implemenations to be tested, or the default 'all' |
---|
3323 | |
---|
3324 | the --tests option allows for a specific (comma-separated) list of tests sets |
---|
3325 | to be run, or the default 'all'. note that only the intersection of tests |
---|
3326 | requested on the command line and tests relevant to each implementation will |
---|
3327 | be run. see below for more on tests sets. |
---|
3328 | |
---|
3329 | the --path-to-tahoe open allows for the path to the 'tahoe' executable to be |
---|
3330 | specified. it defaults to '../../bin/tahoe' which is the location of the tahoe |
---|
3331 | script in the source tree relative to the contrib/fuse dir by default. |
---|
3332 | |
---|
3333 | the --tmp-dir option controls where temporary directories (and hence |
---|
3334 | mountpoints) are created during the test. this defaults to /tmp - a change |
---|
3335 | from the previous behaviour of using the system default dir for calls to |
---|
3336 | tempfile.mkdtemp(), a behaviour which can be obtained by providing an empty |
---|
3337 | value, e.g. "--tmp-dir=" |
---|
3338 | |
---|
3339 | the --debug-wait flag causes the test runner to pause waiting upon user |
---|
3340 | input at various stages through the testing, which facilitates debugging e.g. |
---|
3341 | by allowing the user to open a browser and explore or modify the contents of |
---|
3342 | the ephemeral grid after it has been instantiated but before tests are run, |
---|
3343 | or make environmental adjustments before actually triggering fuse mounts etc. |
---|
3344 | note that the webapi url for the first client node is printed out upon its |
---|
3345 | startup to facilitate this sort of debugging also. |
---|
3346 | |
---|
3347 | |
---|
3348 | - the default tmp dir was changed, and made configurable. previously the |
---|
3349 | default behaviour of tempfile.mkdtemp() was used. it turns out that, at least |
---|
3350 | on the mac, that led to temporary directories to be created in a location |
---|
3351 | which ultimately led to mountpoint paths longer than could be handled by |
---|
3352 | macfuse - specifically mounted filesystems could not be unmounted and would |
---|
3353 | 'leak'. by changing the default location to be rooted at /tmp this leads to |
---|
3354 | mountpoint paths short enough to be supported without problems. |
---|
3355 | |
---|
3356 | - tests are now grouped into 'sets' by method name prefix. all the existing |
---|
3357 | tests have been moved into the 'read' set, i.e. with method names starting |
---|
3358 | 'test_read_'. this is intended to facilitate the fact that some implementations |
---|
3359 | are read-only, and some support write, so the applicability of tests will vary |
---|
3360 | by implementation. the 'implementations' table, which governs the configuration |
---|
3361 | of the ImplProcManager responsible for a given implementation, provides a list |
---|
3362 | of 'test' (i.e test set names) which are applicable to that implementation. |
---|
3363 | note no 'write' tests yet exist, this is merely laying the groundwork. |
---|
3364 | |
---|
3365 | - the 'expected output' of the tahoe command, which is checked for 'surprising' |
---|
3366 | output by regex match, can be confused by spurious output from libraries. |
---|
3367 | specfically, testing on the mac produced a warning message about zope interface |
---|
3368 | resolution various multiple eggs. the 'check_tahoe_output()' function now has |
---|
3369 | a list of 'ignorable_lines' (each a regex) which will be discarded before the |
---|
3370 | remainder of the output of the tahoe script is matched against expectation. |
---|
3371 | |
---|
3372 | - cleaned up a typo, and a few spurious imports caught by pyflakes |
---|
3373 | |
---|
3374 | ] |
---|
3375 | [fuse: runtests: Move exception classes to top scope. |
---|
3376 | nejucomo@gmail.com**20080607070600] |
---|
3377 | [tahoe_fuse: system test: Verify file contents can be properly read. |
---|
3378 | nejucomo@gmail.com**20080130091448] |
---|
3379 | [fuse: runtests.py: Fix bug in polling_operation error that always referred to introducer.furl. |
---|
3380 | nejucomo@gmail.com**20080607061719] |
---|
3381 | [tahoe_fuse: system test: Replace repeated attempts at webapi calls with single calls, abstract webapi calls into a single function. |
---|
3382 | nejucomo@gmail.com**20080130085625] |
---|
3383 | [tahoe_fuse: system test: webapi connection: bug fix and small log output change. |
---|
3384 | nejucomo@gmail.com**20080121021031] |
---|
3385 | [fuse: runtests: Create an interface for setup/cleanup of the two implementations... |
---|
3386 | nejucomo@gmail.com**20080607070825 |
---|
3387 | |
---|
3388 | The impl_b cleanup appears incorrect. I'm not sure what the proper behavior is. |
---|
3389 | |
---|
3390 | ] |
---|
3391 | [tahoe_fuse: system test: Populate a testdir with files and empty children directories, then test the fuse interface for proper listings and size metadata. |
---|
3392 | nejucomo@gmail.com**20080130085943] |
---|
3393 | [tahoe_fuse: system test: Make output checking into non-fatal warnings, and make patterns looser. |
---|
3394 | nejucomo@gmail.com**20080130071053] |
---|
3395 | [fuse: runtests.py: Fix a typo bug in fusermount output checking. |
---|
3396 | nejucomo@gmail.com**20080607061815] |
---|
3397 | [fuse: runtests: Make test numbers (and everything in general) 0-indexed for consistency. |
---|
3398 | nejucomo@gmail.com**20080607061915] |
---|
3399 | [fuse/blackmatch: 'flatten' the fuse api implementation |
---|
3400 | robk-tahoe@allmydata.com**20081016143547 |
---|
3401 | |
---|
3402 | the previous revision of blackmatch used a file_class to delegate all fuse |
---|
3403 | api operations on files to a specific per-file class, which is an option |
---|
3404 | given by the python-fuse bindings. |
---|
3405 | |
---|
3406 | this is a pre-cursor to the 'split' client/server version, which uses a |
---|
3407 | simple, moreover flat, rpc mechanism to broker access to methods. |
---|
3408 | ] |
---|
3409 | [test_web.py: one more line of test coverage |
---|
3410 | warner@allmydata.com**20081029050015] |
---|
3411 | [uri: add abbrev_si() method, which returns the abbreviated storage index |
---|
3412 | warner@allmydata.com**20090131013110 |
---|
3413 | Ignore-this: bb3d9483570dbe0dc9ecdc1f31d8d79f |
---|
3414 | ] |
---|
3415 | [web: make sure that PUT /uri?mutable=false really means immutable, fixes #675 |
---|
3416 | warner@lothar.com**20090408021340] |
---|
3417 | [Tweak wording in directory page: not-read-only is "modifiable", mention creating a directory _in this directory_. |
---|
3418 | Kevin Reid <kpreid@mac.com>**20090526232414 |
---|
3419 | Ignore-this: f006ec52ba2051802e025a60bcface56 |
---|
3420 | ] |
---|
3421 | [directories: fix semantic conflict between my "keep track of position" optimization patch and Kevan's "cache serialized entries" optimization patch |
---|
3422 | zooko@zooko.com**20090710032028 |
---|
3423 | Ignore-this: 46f8b00fd3eca4adf89dec437e65d696 |
---|
3424 | ] |
---|
3425 | [directories: keep track of your position as you decode netstring after netstring from an input buffer instead of copying the trailing part |
---|
3426 | zooko@zooko.com**20090705025109 |
---|
3427 | Ignore-this: bee1ae76060fbc920bddb6e839b7dd1a |
---|
3428 | This makes decoding linear in the number of netstrings instead of O(N^2). |
---|
3429 | ] |
---|
3430 | [netstring: add required_trailer= argument |
---|
3431 | warner@allmydata.com**20080926165754] |
---|
3432 | [test_netstring.py: move netstring tests to a separate file |
---|
3433 | warner@allmydata.com**20080926165526] |
---|
3434 | [webapi.txt: document t=set_children, other small edits |
---|
3435 | Brian Warner <warner@lothar.com>**20091009200446 |
---|
3436 | Ignore-this: 4d7e76b04a7b8eaa0a981879f778ea5d |
---|
3437 | ] |
---|
3438 | [webapi: fix t=check for DIR2-LIT (i.e. empty immutable directories) |
---|
3439 | Brian Warner <warner@lothar.com>**20091126232731 |
---|
3440 | Ignore-this: 8513c890525c69c1eca0e80d53a231f8 |
---|
3441 | ] |
---|
3442 | [control.py: fix speedtest: use download_best_version (not read) on mutable nodes |
---|
3443 | Brian Warner <warner@lothar.com>**20091207060512 |
---|
3444 | Ignore-this: 7125eabfe74837e05f9291dd6414f917 |
---|
3445 | ] |
---|
3446 | [Simplify immutable download API: use just filenode.read(consumer, offset, size) |
---|
3447 | Brian Warner <warner@lothar.com>**20091201225330 |
---|
3448 | Ignore-this: bdedfb488ac23738bf52ae6d4ab3a3fb |
---|
3449 | |
---|
3450 | * remove Downloader.download_to_data/download_to_filename/download_to_filehandle |
---|
3451 | * remove download.Data/FileName/FileHandle targets |
---|
3452 | * remove filenode.download/download_to_data/download_to_filename methods |
---|
3453 | * leave Downloader.download (the whole Downloader will go away eventually) |
---|
3454 | * add util.consumer.MemoryConsumer/download_to_data, for convenience |
---|
3455 | (this is mostly used by unit tests, but it gets used by enough non-test |
---|
3456 | code to warrant putting it in allmydata.util) |
---|
3457 | * update tests |
---|
3458 | * removes about 180 lines of code. Yay negative code days! |
---|
3459 | |
---|
3460 | Overall plan is to rewrite immutable/download.py and leave filenode.read() as |
---|
3461 | the sole read-side API. |
---|
3462 | ] |
---|
3463 | [SFTP/FTP: merge user/account code, merge docs |
---|
3464 | warner@allmydata.com**20081106012558] |
---|
3465 | [ftpd: make sure we're using a patched/fixed Twisted, to avoid confusion later |
---|
3466 | warner@allmydata.com**20081007011411] |
---|
3467 | [ftpd: hush pyflakes |
---|
3468 | warner@allmydata.com**20081007014513] |
---|
3469 | [ftpd: add native_client.php -based HTTP authentication scheme |
---|
3470 | warner@allmydata.com**20081006231511] |
---|
3471 | [docs/ftp.txt: correct Twisted dependency: we don't need VFS, we can use a release, as long as you apply the patch |
---|
3472 | warner@allmydata.com**20081104235840] |
---|
3473 | [ftp/sftp: move to a new frontends/ directory in preparation for factoring out password-auth component |
---|
3474 | warner@allmydata.com**20081105200733] |
---|
3475 | [ftp: change the twisted hack necessary for async-write-close, to one more agreeable to the twisted-dev folks, add a copy of the necessary patch to docs/ftp.txt |
---|
3476 | warner@allmydata.com**20081007010605] |
---|
3477 | [ftpd: remove debug messages |
---|
3478 | warner@allmydata.com**20081006231620] |
---|
3479 | [ftpd: add ftp.accounts checker, remove InMemoryPasswordChecker |
---|
3480 | warner@allmydata.com**20081006225124] |
---|
3481 | [trivial: M-x whitespace-cleanup on src/immutable/download.py |
---|
3482 | zooko@zooko.com**20090108164901 |
---|
3483 | Ignore-this: bb62daf511e41a69860be657cde8df04 |
---|
3484 | ] |
---|
3485 | [immutable/download.py: wrap to 80cols, no functional changes |
---|
3486 | Brian Warner <warner@lothar.com>**20091005192542 |
---|
3487 | Ignore-this: 6b05fe3dc6d78832323e708b9e6a1fe |
---|
3488 | ] |
---|
3489 | [immutable: when downloading an immutable file, use primary shares if they are available |
---|
3490 | zooko@zooko.com**20081220131456 |
---|
3491 | Ignore-this: f7b8b76fd7df032673ab072384eaa989 |
---|
3492 | Primary shares require no erasure decoding so the more primary shares you have, the less CPU is used. |
---|
3493 | ] |
---|
3494 | [immutable: handle another form of share corruption with LayoutInvalid exception instead of AssertionError |
---|
3495 | zooko@zooko.com**20090105234645 |
---|
3496 | Ignore-this: fee5f6572efca5435ef54ed32552ca9d |
---|
3497 | ] |
---|
3498 | [contrib: fix fuse_impl_c to use new Python API |
---|
3499 | zooko@zooko.com**20100109174956 |
---|
3500 | Ignore-this: 51ca1ec7c2a92a0862e9b99e52542179 |
---|
3501 | original patch by Thomas Delaet, fixed by François, reviewed by Brian, committed by me |
---|
3502 | ] |
---|
3503 | [hush pyflakes-0.4.0 warnings: remove trivial unused variables. For #900. |
---|
3504 | Brian Warner <warner@lothar.com>**20100114221529 |
---|
3505 | Ignore-this: e96106c8f1a99fbf93306fbfe9a294cf |
---|
3506 | ] |
---|
3507 | [provisioning: more repair/survivability data |
---|
3508 | warner@lothar.com**20070907055453] |
---|
3509 | [test_system: assert that BASEDIR/node.url is created properly |
---|
3510 | warner@allmydata.com**20080107234622] |
---|
3511 | [mutable/servermap.py: fix needs_merge(), it was incorrectly claiming that mixed shares with distinct seqnums needed a merge, causing repair(force=False) to fail |
---|
3512 | warner@lothar.com**20081024040024] |
---|
3513 | [reliability.py: fix the numpy conversion, it was completely broken. Thanks to Terrell Russell for the help. |
---|
3514 | warner@lothar.com**20090219195515 |
---|
3515 | Ignore-this: f2b1eb65855111b338e1487feee1bbcf |
---|
3516 | ] |
---|
3517 | [reliability: switch to NumPy, since Numeric is deprecated |
---|
3518 | warner@lothar.com**20090219074435 |
---|
3519 | Ignore-this: f588a68e9bcd3b0bc3653570882b6fd5 |
---|
3520 | ] |
---|
3521 | [storage/immutable: raise a specific error upon seeing a bad version number, instead of using assert. Also wrap to 80cols. |
---|
3522 | warner@lothar.com**20090309030732 |
---|
3523 | Ignore-this: 5331d9680ffceff029fbbbcdece7f282 |
---|
3524 | ] |
---|
3525 | [storage/mutable: raise a specific error upon seeing bad magic, instead of using assert |
---|
3526 | warner@lothar.com**20090309020201 |
---|
3527 | Ignore-this: 8daa77362902f5d6ef793e9602a1383b |
---|
3528 | ] |
---|
3529 | [hashtree: fix O(N**2) behavior, to improve fatal alacrity problems in a 10GB file (#670). Also improve docstring. |
---|
3530 | warner@lothar.com**20090331202127 |
---|
3531 | Ignore-this: a04f72ed2b783fc880932fc5c482182b |
---|
3532 | ] |
---|
3533 | [Fix broken link from Provisioning to Reliability page. |
---|
3534 | Kevin Reid <kpreid@mac.com>**20090501191050 |
---|
3535 | Ignore-this: 56dc1a5e659b70cc02dc4df7b5d518cd |
---|
3536 | ] |
---|
3537 | [dirnode.set_children: take a dict, not a list |
---|
3538 | Brian Warner <warner@lothar.com>**20091013002440 |
---|
3539 | Ignore-this: 540ce72ce2727ee053afaae1ff124e21 |
---|
3540 | ] |
---|
3541 | [dirnode.set_uri/set_children: change signature to take writecap+readcap |
---|
3542 | Brian Warner <warner@lothar.com>**20091012235126 |
---|
3543 | Ignore-this: 5df617b2d379a51c79148a857e6026b1 |
---|
3544 | instead of a single cap. The webapi t=set_children call benefits too. |
---|
3545 | ] |
---|
3546 | [tolerate simplejson-2.0.0 and newer, which frequently return bytestrings instead of unicode objects. Closes #523 |
---|
3547 | warner@allmydata.com**20080930222106] |
---|
3548 | [check_load: add stats-gathering |
---|
3549 | warner@allmydata.com**20071218200737] |
---|
3550 | [dirnode.pack_children(): add deep_immutable= argument |
---|
3551 | Brian Warner <warner@lothar.com>**20091026162809 |
---|
3552 | Ignore-this: d5a2371e47662c4bc6eff273e8181b00 |
---|
3553 | |
---|
3554 | This will be used by DIR2:CHK to enforce the deep-immutability requirement. |
---|
3555 | ] |
---|
3556 | [repairer: add deterministic test for #819, mark as TODO |
---|
3557 | zooko@zooko.com**20100110013619 |
---|
3558 | Ignore-this: 4cb8bb30b25246de58ed2b96fa447d68 |
---|
3559 | ] |
---|
3560 | [test_repairer: rename Verifier test cases to be more precise and less verbose |
---|
3561 | Brian Warner <warner@lothar.com>**20091005201115 |
---|
3562 | Ignore-this: 64be7094e33338c7c2aea9387e138771 |
---|
3563 | ] |
---|
3564 | [Fix webapi t=mkdir with multpart/form-data, as on the Welcome page. Closes #919. |
---|
3565 | Brian Warner <warner@lothar.com>**20100121065052 |
---|
3566 | Ignore-this: 1f20ea0a0f1f6d6c1e8e14f193a92c87 |
---|
3567 | ] |
---|
3568 | [Fix race conditions and missing callback in allmydata.test.test_cli.Cp.test_copy_using_filecap, add utilities for one-liner reading and writing of files, and fix cases in test_cli where files were not being closed after writing. |
---|
3569 | david-sarah@jacaranda.org**20100206013727 |
---|
3570 | Ignore-this: 49da6c33190d526a4ae84c472f04d5f4 |
---|
3571 | ] |
---|
3572 | [fix test_cli to put the root_dir.cap in the private subdir |
---|
3573 | zooko@zooko.com**20080103234853] |
---|
3574 | [test_cli.py: use str objects instead of unicode ones |
---|
3575 | francois@ctrlaltdel.ch**20081114134137 |
---|
3576 | |
---|
3577 | This will hopefully fix failing tests with LC_ALL=C |
---|
3578 | ] |
---|
3579 | [docs: NEWS and relnotes-short.txt and CREDITS for v1.6.1 |
---|
3580 | zooko@zooko.com**20100224065231 |
---|
3581 | Ignore-this: 41c056ae48c639e5a934d4c1983bc118 |
---|
3582 | ] |
---|
3583 | [docs: CREDITS: where due |
---|
3584 | zooko@zooko.com**20100202053831 |
---|
3585 | Ignore-this: 11646dd603ac715ae8277a4bb9562215 |
---|
3586 | ] |
---|
3587 | [docs: further CREDITS level-ups for Nils, Kevan, David-Sarah |
---|
3588 | zooko@zooko.com**20100126170021 |
---|
3589 | Ignore-this: 1e513e85cf7b7abf57f056e6d7544b38 |
---|
3590 | ] |
---|
3591 | [docs: more CREDITS for François, Kevan, and David-Sarah |
---|
3592 | zooko@zooko.com**20100126132133 |
---|
3593 | Ignore-this: f37d4977c13066fcac088ba98a31b02e |
---|
3594 | ] |
---|
3595 | [docs: CREDITS |
---|
3596 | zooko@zooko.com**20090213034228 |
---|
3597 | Ignore-this: d6bb651d657ed8967ca1dfb23afbd00e |
---|
3598 | ] |
---|
3599 | [CREDITS: format to <= 79 columns, add Marc Tooley, update Kevan Carstensen |
---|
3600 | zooko@zooko.com**20090720131354 |
---|
3601 | Ignore-this: 3b8bbf952e69eb26597c7bce15e830e0 |
---|
3602 | ] |
---|
3603 | [docs: CREDITS for Nathan and for Armin Rigo |
---|
3604 | zooko@zooko.com**20080610231424] |
---|
3605 | [docs: CREDITS: add David-Sarah to the CREDITS file |
---|
3606 | zooko@zooko.com**20100109060435 |
---|
3607 | Ignore-this: 896062396ad85f9d2d4806762632f25a |
---|
3608 | ] |
---|
3609 | [docs: edits for docs/running.html from Sam Mason |
---|
3610 | zooko@zooko.com**20090809201416 |
---|
3611 | Ignore-this: 2207e80449943ebd4ed50cea57c43143 |
---|
3612 | ] |
---|
3613 | [docs: a couple of small edits to release notes (thanks Peter) |
---|
3614 | zooko@zooko.com**20100202054832 |
---|
3615 | Ignore-this: 1d0963c43ff19c92775b124c49c8a88a |
---|
3616 | ] |
---|
3617 | [docs: a few edits and updates to relnotes.txt, relnotes-short.txt, and NEWS in preparation for v1.6.0 |
---|
3618 | zooko@zooko.com**20100202043222 |
---|
3619 | Ignore-this: d90c644fa61d78e33cbdf0be428bb07a |
---|
3620 | ] |
---|
3621 | [docs: updates to relnotes.txt, NEWS, architecture, historical_known_issues, install.html, etc. |
---|
3622 | zooko@zooko.com**20100201181809 |
---|
3623 | Ignore-this: f4fc924652af746862c8ee4d9ba97bf6 |
---|
3624 | ] |
---|
3625 | [architecture.txt: explain the introducer SPOF and why it really isn't that bad. Closes #323. |
---|
3626 | warner@allmydata.com**20080530015111] |
---|
3627 | [docs: mention issues using flogtool on Windows |
---|
3628 | zooko@zooko.com**20090204033410 |
---|
3629 | Ignore-this: 6122bcb82eea32d2a936a59d77233743 |
---|
3630 | ] |
---|
3631 | [docs: some small edits to install.html |
---|
3632 | zooko@zooko.com**20090413160414 |
---|
3633 | Ignore-this: 1e7142ea444fef61c684c089407d675 |
---|
3634 | ] |
---|
3635 | [setup: simplify install.html a tad |
---|
3636 | zooko@zooko.com**20090119210447 |
---|
3637 | Ignore-this: 529b2f225b3d98ed3bc99a4962e781ee |
---|
3638 | ] |
---|
3639 | [setup: use setup.cfg aliases to map "setup.py test" to "setup.py trial" and "setup.py build" to "setup.py darcsver --count-all-patches build_tahoe" |
---|
3640 | zooko@zooko.com**20090120183723 |
---|
3641 | Ignore-this: f390676787f4d521c17fbe96fb2cd2a6 |
---|
3642 | Thanks to dpeterson for the suggestion. |
---|
3643 | ] |
---|
3644 | [setup: attempt to remove the custom setuptools-ish logic in setup.py -- the result works on my Windows box but doesn't yield a working ./bin/tahoe on Windows, and hasn't been tested yet on other platforms |
---|
3645 | zooko@zooko.com**20081205233054 |
---|
3646 | Ignore-this: 843e7514870d7a4e708646acaa7c9699 |
---|
3647 | ] |
---|
3648 | [setup: require setuptools >= v0.6c8 |
---|
3649 | zooko@zooko.com**20080326191302] |
---|
3650 | [setup: fix the md5sum of the bundled setuptools egg |
---|
3651 | zooko@zooko.com**20080206183529] |
---|
3652 | [setup: use a customized version of ez_setup.py which bootstraps from Python-version-agnostic setuptools bootstrap eggs |
---|
3653 | zooko@zooko.com**20080122170056] |
---|
3654 | [setup: add a setuptools bootstrap egg that works on all versions of Python |
---|
3655 | zooko@zooko.com**20080122170012 |
---|
3656 | For versions of Python >= 2.3. |
---|
3657 | ] |
---|
3658 | [setup: bundle setuptools-0.6c8, we need a bugfix in it |
---|
3659 | zooko@zooko.com**20080326191234] |
---|
3660 | [setup: fix site-dirs to find system installed twisted on mac. |
---|
3661 | robk-tahoe@allmydata.com**20080924174255 |
---|
3662 | |
---|
3663 | zooko helped me unravel a build weirdness today. somehow the system installed |
---|
3664 | twisted (/System/Library) was pulling in parts of the other twisted (/Library) |
---|
3665 | which had been installed by easy_install, and exploding. |
---|
3666 | |
---|
3667 | getting rid of the latter helped, but it took this change to get the tahoe |
---|
3668 | build to stop trying to rebuild twisted and instead use the one that was |
---|
3669 | already installed. c.f. tkt #229 |
---|
3670 | ] |
---|
3671 | [setup: turn off --multi-version until I can figure out why it breaks test_runner |
---|
3672 | zooko@zooko.com**20081121043645 |
---|
3673 | Ignore-this: 36bf5db4122e6bc4e12588d9717a1e32 |
---|
3674 | ] |
---|
3675 | [setup: use "setup.py develop --multi-version" so that if there is a too-old version of a dependency installed this doesn't prevent Tahoe's "develop" and run-in-place from working |
---|
3676 | zooko@zooko.com**20081120201545 |
---|
3677 | Ignore-this: 898f21fc1b16ae39c292fdd1ef42c446 |
---|
3678 | ] |
---|
3679 | [setup.py,Makefile: move the 'chmod +x bin/tahoe' into setup.py |
---|
3680 | warner@lothar.com**20080917230756] |
---|
3681 | [Makefile: touch .built on every build, so other targets can depend upon .built and avoid redundant rebuilds |
---|
3682 | warner@lothar.com**20080130073257] |
---|
3683 | [setup: remove custom Trial class inside our setup.py and use the setuptools_trial plugin |
---|
3684 | zooko@zooko.com**20081205232207 |
---|
3685 | Ignore-this: e0f68169e8ac1b5a54b796e8905c7b80 |
---|
3686 | ] |
---|
3687 | [setup: integrate the bundled setuptools_trial plugin with Chris Galvan's patch to use that plugin |
---|
3688 | zooko@zooko.com**20081201174804 |
---|
3689 | Ignore-this: 5d03e936cf45f67a39f993704024788c |
---|
3690 | ] |
---|
3691 | [setup: bundle setuptools_trial in misc/dependencies/ |
---|
3692 | zooko@zooko.com**20081201174438 |
---|
3693 | Ignore-this: f13a4a1af648f9ab9b3b3438cf94053f |
---|
3694 | ] |
---|
3695 | [use_setuptools_trial.patch |
---|
3696 | cgalvan@mail.utexas.edu**20081121205759] |
---|
3697 | [setup.py trial: improve --verbose suggestion a bit |
---|
3698 | warner@lothar.com**20080919193922] |
---|
3699 | [setup: pretend the tahoe requires twisted to set up, so that twisted will be there for nevow |
---|
3700 | zooko@zooko.com**20081025135042 |
---|
3701 | Ignore-this: 4e6c7e580f7e30df571e2e63be663734 |
---|
3702 | ] |
---|
3703 | [docs: remove extra <h1> from install.html (thanks, David-Sarah Hopwood) |
---|
3704 | zooko@zooko.com**20090726142436 |
---|
3705 | Ignore-this: a6fcab5e6524505b5b8514f62d9a97f3 |
---|
3706 | ] |
---|
3707 | [docs: update install.html to point to 1.5.0 and edit the instructions (broadening the recommendation on Python versions to bless >= v2.4.2 <= v2.6.x) |
---|
3708 | zooko@zooko.com**20090802030523 |
---|
3709 | Ignore-this: 6aabf53148df1bc7a5dd25b1d290829a |
---|
3710 | ] |
---|
3711 | [docs: mention pywin32 earlier |
---|
3712 | zooko@zooko.com**20090726133452 |
---|
3713 | Ignore-this: 67e0d5b32af136113ec5b4e6c6d6c37 |
---|
3714 | ] |
---|
3715 | [docs: remove warning about inability to build modules on py2.6 on Windows with mingw, differentiate between clients and servers, reflow to a consistent column width (79), add hint about firewall/NAT docs. |
---|
3716 | zooko@zooko.com**20090621175005 |
---|
3717 | Ignore-this: 85e7c1ccb258317ca4dd37917afb48f5 |
---|
3718 | ] |
---|
3719 | [docs: edit running.html |
---|
3720 | zooko@zooko.com**20080215170219] |
---|
3721 | [docs: shorter running.html |
---|
3722 | zooko@zooko.com**20080506222904] |
---|
3723 | [docs: edits to [source:docs/install.html] and [source:docs/running.html] |
---|
3724 | zooko@zooko.com**20080611022200] |
---|
3725 | [docs: mention configuration, suggested by ben hyde's question about storage servers |
---|
3726 | zooko@zooko.com**20080506203935] |
---|
3727 | [docs: explain better how to invoke the tahoe executable when creating and starting nodes |
---|
3728 | zooko@zooko.com**20080611021923] |
---|
3729 | [docs: lowercase "introducer" |
---|
3730 | zooko@zooko.com**20080611022314 |
---|
3731 | He's not that important. |
---|
3732 | ] |
---|
3733 | [setup: edit install.html to warn Windows users away from Python v2.6 |
---|
3734 | zooko@zooko.com**20090611225506 |
---|
3735 | Ignore-this: 89ad63eab49ede883ef92f2de5b5fc54 |
---|
3736 | ] |
---|
3737 | [docs: edit install.html regarding versions of Python |
---|
3738 | zooko@zooko.com**20090413160612 |
---|
3739 | Ignore-this: 1de165ad7645be32ef671ece3fcae9ea |
---|
3740 | ] |
---|
3741 | [docs: setup: Norm Hardy suggested that it would be easier if users realized that they already had Python (especially true for Mac users) |
---|
3742 | zooko@zooko.com**20090325035459 |
---|
3743 | Ignore-this: e1bb76a1be4d6d541090d8d9e7e73db9 |
---|
3744 | ] |
---|
3745 | [docs: suggest Python 2.5 -- Python 2.6 is not as well tested yet |
---|
3746 | zooko@zooko.com**20090210054421 |
---|
3747 | Ignore-this: 3ef6988c693330d4937b4d8e1a996c39 |
---|
3748 | ] |
---|
3749 | [doc: specify Python >= 2.4.2 |
---|
3750 | zooko@zooko.com**20090204213840 |
---|
3751 | Ignore-this: 108c60b69fdb1d0fcb95810703ce415a |
---|
3752 | ] |
---|
3753 | [docs: update install.html to recommend Python v2 instead of Python v2.5.2 |
---|
3754 | zooko@zooko.com**20090103183100 |
---|
3755 | Ignore-this: 5dbea379c59e0d9be817cdd9c8393d65 |
---|
3756 | ] |
---|
3757 | [docs: install.html: instruct Debian users to use this document and not to go find the DownloadDebianPackages page, ignore the warning at the top of it, and try it |
---|
3758 | zooko@zooko.com**20090804123840 |
---|
3759 | Ignore-this: 49da654f19d377ffc5a1eff0c820e026 |
---|
3760 | http://allmydata.org/pipermail/tahoe-dev/2009-August/002507.html |
---|
3761 | ] |
---|
3762 | [docs: add note about pywin32 to install.html |
---|
3763 | zooko@zooko.com**20090413185210 |
---|
3764 | Ignore-this: d386abfccfdc1015b8f1216d95b4792f |
---|
3765 | ] |
---|
3766 | [docs: fix helper.txt to describe new config style |
---|
3767 | zooko@zooko.com**20091224223522 |
---|
3768 | Ignore-this: 102e7692dc414a4b466307f7d78601fe |
---|
3769 | ] |
---|
3770 | [NEWS: improve "tahoe backup" notes, mention first-backup-after-upgrade duration |
---|
3771 | Brian Warner <warner@lothar.com>**20100111190132 |
---|
3772 | Ignore-this: 10347c590b3375964579ba6c2b0edb4f |
---|
3773 | |
---|
3774 | Thanks to Francois Deppierraz for the suggestion. |
---|
3775 | ] |
---|
3776 | [NEWS: update with all recent user-visible changes |
---|
3777 | Brian Warner <warner@lothar.com>**20100127222209 |
---|
3778 | Ignore-this: 277d24568018bf4f3fb7736fda64eceb |
---|
3779 | ] |
---|
3780 | [NEWS: update with all user-visible changes since the last release |
---|
3781 | Brian Warner <warner@lothar.com>**20091127224217 |
---|
3782 | Ignore-this: 741da6cd928e939fb6d21a61ea3daf0b |
---|
3783 | ] |
---|
3784 | [docs: add a couple of details to NEWS, change date and a bit of formatting, name of 'Tahoe-LAFS' project |
---|
3785 | zooko@zooko.com**20090802022601 |
---|
3786 | Ignore-this: 9c35cdaaec10613570225b19c902b0ef |
---|
3787 | ] |
---|
3788 | [NEWS: more minor edits |
---|
3789 | Brian Warner <warner@lothar.com>**20090722024522 |
---|
3790 | Ignore-this: e2c199cfdbaa32a125819f14df971d45 |
---|
3791 | ] |
---|
3792 | [docs: update relnotes.txt for Tahoe-LAFS v1.6 |
---|
3793 | zooko@zooko.com**20100128171257 |
---|
3794 | Ignore-this: 920df92152aead69ef861b9b2e8ff218 |
---|
3795 | ] |
---|
3796 | [Miscellaneous documentation, test, and code formatting tweaks. |
---|
3797 | david-sarah@jacaranda.org**20100127070309 |
---|
3798 | Ignore-this: 84ca7e4bb7c64221ae2c61144ef5edef |
---|
3799 | ] |
---|
3800 | [fuse/impl_c: reworking of mac/tahoefuse, command line options, test integration |
---|
3801 | robk-tahoe@allmydata.com**20080925001535 |
---|
3802 | |
---|
3803 | a handful of changes to the tahoefuse implementation used by the mac build, to |
---|
3804 | make command line option parsing more flexible and robust, and moreover to |
---|
3805 | facilitate integration of this implementation with the 'runtests' test harness |
---|
3806 | used to test the other two implementations. |
---|
3807 | |
---|
3808 | this patch includes; |
---|
3809 | - improvements to command line option parsing [ see below ] |
---|
3810 | - support for 'aliases' akin to other tahoe tools |
---|
3811 | - tweaks to support linux (ubuntu hardy) |
---|
3812 | |
---|
3813 | the linux support tweaks are, or at least seem to be, a result of the fact that |
---|
3814 | hardy ships with fuse 0.2pre3, as opposed to the fuse0.2 that macfuse is based |
---|
3815 | upon. at least the versions I was working with have discrepencies in their |
---|
3816 | interfaces, but on reflection this is probably a 'python-fuse' version issue |
---|
3817 | rather than fuse per se. At any rate, the fixes to handling the Stat objects |
---|
3818 | should be safe against either version, it's just that the bindings on hardy |
---|
3819 | lacked code that was in the 'fuse' python module on the mac... |
---|
3820 | |
---|
3821 | command line options: |
---|
3822 | |
---|
3823 | the need for more flexible invocation in support of the runtests harness led |
---|
3824 | me to rework the argument parsing from some simple positional hacks with a |
---|
3825 | pass-through of the remainder to the fuse binding's 'fuse_main' to a system |
---|
3826 | using twisted.usage to parse arguments, and having just one option '-o' being |
---|
3827 | explicitly a pass-through for -o options to fuse_main. the options are now: |
---|
3828 | |
---|
3829 | --node-directory NODEDIR : this is used to look up the node-url to connect |
---|
3830 | to if that's not specified concretely on the command line, and also used to |
---|
3831 | determine the location of the cache directory used by the implementation, |
---|
3832 | specifically '_cache' within the nodedir. default value: ~/.tahoe |
---|
3833 | |
---|
3834 | --node-url NODEURL : specify a node-url taking precendence over that found |
---|
3835 | in the node.url file within the nodedir |
---|
3836 | |
---|
3837 | --alias ALIAS : specifies the named alias should be mounted. a lookup is |
---|
3838 | performed in the alias table within 'nodedir' to find the root dir cap |
---|
3839 | the named alias must exist in the alias table of the specified nodedir |
---|
3840 | |
---|
3841 | --root-uri ROOTURI : specifies that the given directory uri should be mounted |
---|
3842 | |
---|
3843 | at least one of --alias and --root-uri must be given (which directory to mount |
---|
3844 | must be specified somehow) if both are given --alias takes precedence. |
---|
3845 | |
---|
3846 | --cache-timeout TIMEOUTSECS : specifies the number of seconds that cached |
---|
3847 | directory data should be considered valid for. this tahoefuse implementation |
---|
3848 | implements directory caching for a limited time; largely because the mac (i.e. |
---|
3849 | the Finder in particular) tends to make a large number of requests in quick |
---|
3850 | successsion when browsing the filesystem. on the flip side, the 'runtests' |
---|
3851 | unit tests fail in the face of such caching because the changes made to the |
---|
3852 | underlying tahoe directories are not reflected in the fuse presentation. by |
---|
3853 | specifying a cache-timeout of 0 seconds, runtests can force the fuse layer |
---|
3854 | into refetching directory data upon each request. |
---|
3855 | |
---|
3856 | any number of -oname=value options may be specified on the command line, |
---|
3857 | and they will all be passed into the underlying fuse_main call. |
---|
3858 | |
---|
3859 | a single non-optional argument, the mountpoint, must also be given. |
---|
3860 | |
---|
3861 | |
---|
3862 | |
---|
3863 | ] |
---|
3864 | [macfuse: slew of updates |
---|
3865 | robk-tahoe@allmydata.com**20080301021241 |
---|
3866 | |
---|
3867 | various updates to improve the functionality of the mac fuse plugin |
---|
3868 | |
---|
3869 | |
---|
3870 | 1. caching |
---|
3871 | |
---|
3872 | previously, the experimental tahoefuse plugin pre-loaded the whole |
---|
3873 | structure of the specified mount into memory at launch time. changes |
---|
3874 | which were made through that fuse plugin would be remembered, but any |
---|
3875 | changes made through other tahoe clients would not be reflected. |
---|
3876 | |
---|
3877 | now directory contents are only loaded when needed, and the data is |
---|
3878 | cached for a limited time. any use of Directory objects should first |
---|
3879 | call maybe_refresh() which will check the time since the cache was last |
---|
3880 | loaded, and if the data is older than some validity period (currently |
---|
3881 | 26s) then the directory's contents will be refetched and reloaded. |
---|
3882 | this replaces the 'load_dir()' method of TFS |
---|
3883 | |
---|
3884 | whenever a local change is made to a Directory object, or when the |
---|
3885 | aforementioned cache reloading notices a change in directory data, the |
---|
3886 | mtime of the directory is automatically updated. |
---|
3887 | |
---|
3888 | |
---|
3889 | 2. stat / metadata |
---|
3890 | |
---|
3891 | the retrieval of 'stat' information for getattr(), and the way that |
---|
3892 | metadata is handled, has been refactored to better reflect the fact that |
---|
3893 | metadata in tahoe is only represented by 'edges' (i.e entries in |
---|
3894 | directories) not on 'nodes' (files or directories themselves) hence a |
---|
3895 | stat lookup should be a query to the parent directory (specifically the |
---|
3896 | parent specified by the path being queried in the case that a node has |
---|
3897 | multiple parents) for details known by that directory for the given |
---|
3898 | child, rather than a query to the child itself. |
---|
3899 | |
---|
3900 | the TStat utility class for returning stat information to the python- |
---|
3901 | fuse layer has been extended to accept a 'metadata' argument in its |
---|
3902 | constructor. any fields found in the metadata dict which match the |
---|
3903 | names of the stat attributes are loaded into the TStat object. the |
---|
3904 | 'ctime' and 'mtime' attributes are translated to st_ctime and st_mtime |
---|
3905 | to mesh with the existing timestamp handling code. any fields specified |
---|
3906 | by kwargs to the constructor override things that might be loaded from |
---|
3907 | the metadata dict. |
---|
3908 | |
---|
3909 | Directory objects now track their children as a dict mapping name to |
---|
3910 | (child_obj, metadata) tuples. This is because the metadata in tahoe |
---|
3911 | will be stored exclusively on the edges of the graph. each Directory |
---|
3912 | maintains its own mtime however, and get_stat() calls will report the |
---|
3913 | mtime of a directory based on the last modification of the Directory |
---|
3914 | object, not based on any mtime records from the parent directory's |
---|
3915 | metadata for that child. This addresses the fact that since directories |
---|
3916 | may be shared, a given parent may or may not reflect the latest changes, |
---|
3917 | however one of the Finder's behaviours is to examine the stat of a |
---|
3918 | directory, and not to bother doing a readdir() if the stat is unchanged. |
---|
3919 | i.e. unless directories report their changes in their stat info, the |
---|
3920 | Finder will not show changes within that directory. |
---|
3921 | |
---|
3922 | |
---|
3923 | 3. refactoring |
---|
3924 | |
---|
3925 | reporting of many error codes has been refactored to raise IOError |
---|
3926 | subclasses with the appropriate errno. this exploits python-fuse's |
---|
3927 | built-in mechanism for catching IOError and reporting the errno |
---|
3928 | embedded within it automatically, while simplifying the code within |
---|
3929 | the plugin. |
---|
3930 | |
---|
3931 | the add_child() method on TFS was removed in favour of simply having an |
---|
3932 | add_child() method on Directory objects. this provides a more OO |
---|
3933 | approach in that Directory is responsible for maintaining its own in |
---|
3934 | memory state and also writing changes back to the node. similarly for |
---|
3935 | remove_child() |
---|
3936 | |
---|
3937 | these changes, along with the new tfs.compose_url() method, |
---|
3938 | significantly simplify and improve readability of mkdir, rename methods |
---|
3939 | along with the newer link and unlink. these also get improved error |
---|
3940 | reporting. |
---|
3941 | |
---|
3942 | various operations (chmod, chown, truncate, utime) are now ignored. |
---|
3943 | previously they would report an unsupported operation (EOPNOTSUPP) |
---|
3944 | but now are simply logged and ignored. this surpresses errors caused |
---|
3945 | by some client programs which try to use these operations, but at the |
---|
3946 | moment those operations are meaningless to the tahoe filesystem anyway. |
---|
3947 | |
---|
3948 | |
---|
3949 | 4. link / unlink / rmdir |
---|
3950 | |
---|
3951 | link, symlink calls are now supported, though with semantics differing |
---|
3952 | from posix, both equivalent. unlink, rmdir calls are now supported, |
---|
3953 | also equivalent. |
---|
3954 | |
---|
3955 | link or symlink calls duplicate the uri of the named source and adds it |
---|
3956 | as a child of another directory according to the destination path. for |
---|
3957 | directories, this creates a 'hard' link, i.e. the same directory will |
---|
3958 | appear in multiple locations within the filesystem, and changes in |
---|
3959 | any place will be reflected everywhere. for files, by contrast, since |
---|
3960 | the uri being duplicated is an immutable CHK uri, link/symlink for files |
---|
3961 | is equivalent to a copy - though significantly cheaper. (a file copy |
---|
3962 | with the fuse plugin is likely to cause a new file to be written and |
---|
3963 | uploaded, the link command simply adds an entry referring to an |
---|
3964 | existing uri) |
---|
3965 | |
---|
3966 | in testing, the 'ln' command is unable to make hard links (i.e. call |
---|
3967 | link()) for directories, though symlink ('ln -s') is supported. |
---|
3968 | either forms works equivalently for files. |
---|
3969 | |
---|
3970 | unlink and rmdir both remove the specified entry from its parent |
---|
3971 | directory. |
---|
3972 | |
---|
3973 | |
---|
3974 | 5. logging |
---|
3975 | |
---|
3976 | the 'tfuse.log' file now only reports launches of the fuse plugin. once |
---|
3977 | the plugin has parsed the options, it reopens the log file with the |
---|
3978 | name of the mount, e.g. tfuse.root_dir.log, so that multiple instances |
---|
3979 | running concurrently will not interfere with each others' logging. |
---|
3980 | |
---|
3981 | |
---|
3982 | 6. bug fixes |
---|
3983 | |
---|
3984 | the tmp_file in the cache dir backing files opened for write was |
---|
3985 | intermittently failing to open the file. added O_CREAT to the os.open |
---|
3986 | call so that files will be created if missing, not throw errors. |
---|
3987 | |
---|
3988 | a failure to correctly parse arguments if no mount (dir_cap) name was |
---|
3989 | given but also no fuse options were given has been fixed. now the |
---|
3990 | command 'tahoe fuse mountpoint' will correctly default to root_dir |
---|
3991 | also when running from source, arguments to tahoefuse were not handled |
---|
3992 | to correctly match the 'tahoe fuse ...' behaviour. |
---|
3993 | |
---|
3994 | ] |
---|
3995 | [macfuse: rework fuse initialisation, integrate with 'tahoe' |
---|
3996 | robk-tahoe@allmydata.com**20080219231608 |
---|
3997 | |
---|
3998 | this provides a variety of changes to the macfuse 'tahoefuse' implementation. |
---|
3999 | most notably it extends the 'tahoe' command available through the mac build |
---|
4000 | to provide a 'fuse' subcommand, which invokes tahoefuse. this addresses |
---|
4001 | various aspects of main(argv) handling, sys.argv manipulation to provide an |
---|
4002 | appropriate command line syntax that meshes with the fuse library's built- |
---|
4003 | in command line parsing. |
---|
4004 | |
---|
4005 | this provides a "tahoe fuse [dir_cap_name] [fuse_options] mountpoint" |
---|
4006 | command, where dir_cap_name is an optional name of a .cap file to be found |
---|
4007 | in ~/.tahoe/private defaulting to the standard root_dir.cap. fuse_options |
---|
4008 | if given are passed into the fuse system as its normal command line options |
---|
4009 | and the mountpoint is checked for existence before launching fuse. |
---|
4010 | |
---|
4011 | the tahoe 'fuse' command is provided as an additional_command to the tahoe |
---|
4012 | runner in the case that it's launched from the mac .app binary. |
---|
4013 | |
---|
4014 | this also includes a tweak to the TFS class which incorporates the ctime |
---|
4015 | and mtime of files into the tahoe fs model, if available. |
---|
4016 | ] |
---|
4017 | [uri: generalize regexp that recognizes tahoe URLs to work for any host and port |
---|
4018 | zooko@zooko.com**20081216234930 |
---|
4019 | Ignore-this: 4a7716b8034c8e5ed9698a99f1ec5cb4 |
---|
4020 | ] |
---|
4021 | [Touch up #705 changes: |
---|
4022 | Brian Warner <warner@lothar.com>**20090720153803 |
---|
4023 | Ignore-this: 583517a3d80c2c1c6a397b6934b78b73 |
---|
4024 | |
---|
4025 | webapi.txt: clarify replace=only-files argument, mention replace= on POST t=uri |
---|
4026 | test_cli.py: insert whitespace between logical operations |
---|
4027 | web.common.parse_replace_arg: make it case-insensitive, to match the docs |
---|
4028 | ] |
---|
4029 | [Update webapi docs to reference new PUT behavior. |
---|
4030 | kevan@isnotajoke.com**20090720034447 |
---|
4031 | Ignore-this: 981c43767ee4d7d3e7711dfbea89b590 |
---|
4032 | ] |
---|
4033 | [Add a function to parse arguments for the replace parameter |
---|
4034 | kevan@isnotajoke.com**20090720034723 |
---|
4035 | Ignore-this: f27aae3befa76b7bec1b697b5588332 |
---|
4036 | ] |
---|
4037 | [docs: relnotes.txt: reflow to 63 chars wide because google groups and some web forms seem to wrap to that |
---|
4038 | zooko@zooko.com**20090802135016 |
---|
4039 | Ignore-this: 53b1493a0491bc30fb2935fad283caeb |
---|
4040 | ] |
---|
4041 | [docs: relnotes.txt: fix edits noticed by Amber |
---|
4042 | zooko@zooko.com**20090802031003 |
---|
4043 | Ignore-this: 5ea62f161924d2ce8477b59c50d9ecc0 |
---|
4044 | ] |
---|
4045 | [docs: update relnotes.txt, relnotes-short.txt, and others documentation bits for v1.5.0 release! |
---|
4046 | zooko@zooko.com**20090802025710 |
---|
4047 | Ignore-this: cd95f569a2c0b4fada453e409f101679 |
---|
4048 | ] |
---|
4049 | [amdlib.util: merge in changes to humanreadable.py that were made in pyutil |
---|
4050 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070525224957] |
---|
4051 | [trivial: source code metadata |
---|
4052 | zooko@zooko.com**20090403233315 |
---|
4053 | Ignore-this: 23858d0320b9b7ba0e6d2fe4adeccea8 |
---|
4054 | ] |
---|
4055 | [clean up debian packaging: we have control files for etch/lenny/sid, and |
---|
4056 | "Brian Warner <warner@lothar.com>"**20090703072804 |
---|
4057 | everything else uses one of those. Add dependency on python-pysqlite2 for |
---|
4058 | platforms that use py2.4 by default. Update foolscap dependency to 0.4.1. |
---|
4059 | ] |
---|
4060 | [debian/changelog: remove all versions but 0.0.1, so debchange can always override it. The 'deb-X' Makefile targets should not be used; run 'make deb-X-head' instead |
---|
4061 | warner@allmydata.com**20080715222341] |
---|
4062 | [debian: oops, set debian/changelog version to 0.6.0-1+, to be less than everything the buildbot is creating |
---|
4063 | warner@allmydata.com**20070927011513] |
---|
4064 | [debian: put a version string of '0.6.0+' in the debian changelog |
---|
4065 | warner@allmydata.com**20070927005842] |
---|
4066 | [debian/control: update dependencies to match _auto_deps: foolscap-0.3.0, pycryptopp-0.5 |
---|
4067 | warner@lothar.com**20080806013222] |
---|
4068 | [debian: add python-setuptools to the debian install-time dependencies. Should close #382. |
---|
4069 | warner@allmydata.com**20080424230104] |
---|
4070 | [debian: include misc/cpu-watcher.tac in the debian package |
---|
4071 | warner@allmydata.com**20080827223026] |
---|
4072 | [misc/spacetime: add munin plugins, add everything to .deb |
---|
4073 | warner@lothar.com**20080807060003] |
---|
4074 | [debian/rules: put munin plugins in /usr/share/PACKAGENAME/munin/, make them +x, remove packagename from rules to make branches easier to manage |
---|
4075 | warner@allmydata.com**20080716014741] |
---|
4076 | [debian: use our own /usr/bin/tahoe, remove runtime dependency on setuptools (since it required egg-aware versions of all dependencies too) |
---|
4077 | warner@allmydata.com**20080410232959] |
---|
4078 | [debian: use setuptools-generated support/bin/tahoe instead of bin/tahoe, to match Zooko's change that makes our in-tree bin/tahoe spawn support/bin/tahoe |
---|
4079 | warner@allmydata.com**20080410213627] |
---|
4080 | [debian: we now require setuptools at build time, and that or pkg_resources at runtime |
---|
4081 | warner@allmydata.com**20080410224356] |
---|
4082 | [oops, change debian dependency on zfec to 1.1, not 1.1.0 |
---|
4083 | warner@allmydata.com**20080410004552] |
---|
4084 | [make debian dependencies match _auto_deps.py ones, for foolscap and zfec |
---|
4085 | warner@allmydata.com**20080409172301] |
---|
4086 | [debian/sid: add more docs to package, including munin plugins |
---|
4087 | warner@lothar.com**20080714195534] |
---|
4088 | [copy debian/sid changes to debian/feisty |
---|
4089 | warner@lothar.com**20080714195638] |
---|
4090 | [disk-watcher: first draft of a daemon to use the HTTP stats interface and its new storage_server.disk_avail feature, to track changes in disk space over time |
---|
4091 | warner@lothar.com**20080807042222] |
---|
4092 | [setup: update the debian/copyright text to reflect the current licences |
---|
4093 | zooko@zooko.com**20090311152952 |
---|
4094 | Ignore-this: 806a95b1b79d6bb20507db5c7201af45 |
---|
4095 | ] |
---|
4096 | [setup: specify in the debian/control files that tahoe is compatible with Python 2.6 |
---|
4097 | zooko@zooko.com**20090311225902 |
---|
4098 | Ignore-this: d0793013e4c868d92793d932ef92a62d |
---|
4099 | ] |
---|
4100 | [sid/control: set python versions to 2.4,2.5 , to match feisty/control, since sid has had 2.5 available forever now |
---|
4101 | warner@allmydata.com**20080716014238] |
---|
4102 | [Makefile: add jaunty support, rearrange debian sections in order of release |
---|
4103 | warner@lothar.com**20090618050502] |
---|
4104 | [makefile: fix deb-edgy-head and deb-etch-head targets |
---|
4105 | warner@allmydata.com**20070711202623] |
---|
4106 | [setup: create a "make deb-lenny-head" target |
---|
4107 | zooko@zooko.com**20090306191057 |
---|
4108 | Ignore-this: 4b2ff187a3d08dcfe9318980ca92f097 |
---|
4109 | I made this patch by copying [20090305220021-92b7f-89d987c7d05306b5cb03a64f2956a652c10a7296] and changing the name from "intrepid" to "lenny". I haven't tested it. |
---|
4110 | ] |
---|
4111 | [docs: edit about.html, add P.S. about expansion of LAFS, add Andrew Orlowski to media list |
---|
4112 | zooko@zooko.com**20090722022430 |
---|
4113 | Ignore-this: 6717610239104d273a417769c8cf66a5 |
---|
4114 | ] |
---|
4115 | [docs: how_to_make_a_tahoe_release.txt: a couple of small edits |
---|
4116 | zooko@zooko.com**20090507214932 |
---|
4117 | Ignore-this: ae92aa835ad369f4b9e6e49d681957a3 |
---|
4118 | ] |
---|
4119 | [docs: modify how-to-relase notes a tiny bit |
---|
4120 | warner@lothar.com**20090407021135] |
---|
4121 | [docs: add "darcs pull" to how_to_make_a_tahoe_release.txt, and renumber |
---|
4122 | zooko@zooko.com**20090414024342 |
---|
4123 | Ignore-this: d54d33e5f7e170eea12b6d6a16d0fc87 |
---|
4124 | ] |
---|
4125 | [doc: update how_to_make_a_tahoe_release.txt |
---|
4126 | zooko@zooko.com**20090222175739 |
---|
4127 | Ignore-this: 6a2e1592741b362bc170167a9cadc0b |
---|
4128 | ] |
---|
4129 | [docs: add a note about the process of making a new Tahoe release |
---|
4130 | zooko@zooko.com**20080917170839] |
---|
4131 | [docs: add some notes about things to do for a Tahoe release on pypi, freshmeat, and launchpad |
---|
4132 | zooko@zooko.com**20081001210703] |
---|
4133 | [docs: update NEWS, about.html, relnotes-short.txt, and known_issues.txt in preparation for v1.5.0 |
---|
4134 | zooko@zooko.com**20090721234311 |
---|
4135 | Ignore-this: bc81915d7d4f48c231fa86f0b8308d83 |
---|
4136 | Especially note that strong claims of specialness that I've added, e.g. in about.html . |
---|
4137 | ] |
---|
4138 | [docs: known_issues.txt: my version of #615, remove "issue numbers", edits, move tahoe-1.1.0 issues to historical |
---|
4139 | zooko@zooko.com**20090213041621 |
---|
4140 | Ignore-this: 58dee952a3139791ba0fe03f03fcf8bb |
---|
4141 | ] |
---|
4142 | [known_issues.txt: edits suggested by Brian |
---|
4143 | zooko@zooko.com**20080721174406] |
---|
4144 | [docs: editing changes and updated news in known_issues.txt |
---|
4145 | zooko@zooko.com**20081230070116 |
---|
4146 | Ignore-this: e5dddc4446e3335a6c4eee7472e0670e |
---|
4147 | ] |
---|
4148 | [docs: known_issues.txt: edit to emphasize that other sorts of local-filesystem-unwritability will lead to the same problems |
---|
4149 | zooko@zooko.com**20080611193857] |
---|
4150 | [docs: split historical/historical_known_issues.txt out of known_issues.txt |
---|
4151 | zooko@zooko.com**20081230065226 |
---|
4152 | Ignore-this: 9b6d0d679294110deeb0ea18b4ad7ac8 |
---|
4153 | All issues which are relevant to users of v1.1, v1.2, or v1.3 go in known_issues.txt. All issues which are relevant to users of v1.0 go in historical/historical_known_issues.txt. |
---|
4154 | ] |
---|
4155 | [move historical docs from wiki pages into the source tree, clearly marked as historical |
---|
4156 | warner@allmydata.com**20080603013832] |
---|
4157 | [docs: known_issues.txt: change the release data of Tahoe v1.1.0 to 2008-06-11 from 2008-06-10 |
---|
4158 | zooko@zooko.com**20080611194033] |
---|
4159 | [docs/known_issues: mention #615 javascript-vs-frames, for zooko to improve/rewrite |
---|
4160 | warner@allmydata.com**20090211201453 |
---|
4161 | Ignore-this: b4805670c3700d90db39fb008b0f2c92 |
---|
4162 | ] |
---|
4163 | [known_issues.txt: fix up the argv leakage issue -- it applies to Tahoe 1.2.0. Other editing corrections. |
---|
4164 | zooko@zooko.com**20080722010249] |
---|
4165 | [known_issues.txt: command-line arguments are leaked to other processes |
---|
4166 | zooko@zooko.com**20080722004334] |
---|
4167 | [known_issues.txt: add issue #491 and renumber issues |
---|
4168 | zooko@zooko.com**20080721172101] |
---|
4169 | [docs: known_issues.txt: add the issue of files > 12 GiB being silently corrupted |
---|
4170 | zooko@zooko.com**20080611195159] |
---|
4171 | [docs: known_issues.txt: add the security issue concerning leakage of file cap by active content or referrer-bearing hyperlinks embedded in the file |
---|
4172 | zooko@zooko.com**20080611193937] |
---|
4173 | [docs: reformat for 70 columns plus a few small edits |
---|
4174 | zooko@zooko.com**20080610233725] |
---|
4175 | [docs: explain exactly what false alarms are caused in the unit tests by Twisted v8 and pyOpenSSL v0.7 |
---|
4176 | zooko@zooko.com**20080610233126] |
---|
4177 | [docs: [source:docs/known_issues.txt] |
---|
4178 | zooko@zooko.com**20080610232425] |
---|
4179 | [docs: relnotes-short.txt |
---|
4180 | zooko@zooko.com**20090215163510 |
---|
4181 | Ignore-this: 683649bb13499bbe0e5cea2e1716ff59 |
---|
4182 | linkedin.com imposed a strict limit on the number of characters I could post. This forced me to prune and prune and edit and edit until relnotes.txt was a quarter of its former size. Here's the short version. |
---|
4183 | ] |
---|
4184 | [docs: small edit to about.html |
---|
4185 | zooko@zooko.com**20090528233422 |
---|
4186 | Ignore-this: 1cfbb1f8426ed6d63b2d3952e4464ddc |
---|
4187 | ] |
---|
4188 | [docs: add links to Tahoe-LAFS for Paranoids and Tahoe-LAFS for Corporates in about.html |
---|
4189 | zooko@zooko.com**20090528232717 |
---|
4190 | Ignore-this: 7b70baa700d6b6f6e9ceec4132efe5 |
---|
4191 | ] |
---|
4192 | [docs: edit about.html and include network-and-reliance-topology.png (loaded from http://allmydata.org ) |
---|
4193 | zooko@zooko.com**20090527150916 |
---|
4194 | Ignore-this: 44adc61cde8ced8be2f0a7dfc7d95dad |
---|
4195 | ] |
---|
4196 | [docs: small edit to about.html |
---|
4197 | zooko@zooko.com**20090210170219 |
---|
4198 | Ignore-this: fa79838f4cdac17c09b6c3332e8a68b5 |
---|
4199 | ] |
---|
4200 | [setup: tidy up formatting and comments in _auto_deps.py |
---|
4201 | zooko@zooko.com**20090727193008 |
---|
4202 | Ignore-this: 99fcb61a27caae0e63ae8ce8d7505c05 |
---|
4203 | ] |
---|
4204 | [setup: increase requirement on pycryptopp to >= 0.5.15 |
---|
4205 | zooko@zooko.com**20090706140815 |
---|
4206 | Ignore-this: f3839c7c1f9ebff1fcf2eea47ed3c48b |
---|
4207 | ] |
---|
4208 | [setup: require pycryptopp>=0.5.14 if on Windows and with Python>=2.6 |
---|
4209 | zooko@zooko.com**20090630184807 |
---|
4210 | Ignore-this: f7e9beeb5d5613a7c0ffed14d1dda3c6 |
---|
4211 | ] |
---|
4212 | [setup: require pycryptopp >= v0.5 |
---|
4213 | zooko@zooko.com**20080506181747] |
---|
4214 | [setup: loosen our requirement on pycryptopp from >= 0.2.9 to >= 0.2.8 |
---|
4215 | zooko@zooko.com**20080123170035 |
---|
4216 | Again, tahoecs2 has pycryptopp v0.2.8, and reviewing the pycryptopp change history shows that there were no important bugfixes added since 0.2.8. |
---|
4217 | ] |
---|
4218 | [setup: require pysqlite >= v2.0.5. if we are running on Python < 2.5 |
---|
4219 | zooko@zooko.com**20090604154548 |
---|
4220 | Ignore-this: cf04f46079821df209d01dad2e24b40b |
---|
4221 | ] |
---|
4222 | [setup: remove attempt to automatically satisfy dependency on pywin32 |
---|
4223 | zooko@zooko.com**20090213234939 |
---|
4224 | Ignore-this: ac02d54a956f7cc58bd3c0802764005f |
---|
4225 | ] |
---|
4226 | ["tahoe webopen": add --info flag, to get ?t=info |
---|
4227 | Brian Warner <warner@lothar.com>**20100424233003 |
---|
4228 | Ignore-this: 126b0bb6db340fabacb623d295eb45fa |
---|
4229 | |
---|
4230 | Also fix some trailing whitespace. |
---|
4231 | ] |
---|
4232 | [change docs and --help to use "grid" instead of "virtual drive": closes #892. |
---|
4233 | Brian Warner <warner@lothar.com>**20100114201119 |
---|
4234 | Ignore-this: a20d4a4dcc4de4e3b404ff72d40fc29b |
---|
4235 | |
---|
4236 | Thanks to David-Sarah Hopwood for the patch. |
---|
4237 | ] |
---|
4238 | [cli.py: fix typo in synopsis |
---|
4239 | warner@allmydata.com**20070817004724] |
---|
4240 | [add a simple load-generating tool to do random reads and writes |
---|
4241 | warner@allmydata.com**20071218030607] |
---|
4242 | [architecture.txt: make it clear that accounting/leases are not yet implemented |
---|
4243 | warner@allmydata.com**20080310192519] |
---|
4244 | [test_client.py: improve test coverage a bit |
---|
4245 | warner@allmydata.com**20081029044335] |
---|
4246 | [CLI: fix examples in tahoe put --help |
---|
4247 | warner@allmydata.com**20090127213909 |
---|
4248 | Ignore-this: 1fe319f70c3791482bb381c06d4a066b |
---|
4249 | ] |
---|
4250 | [test_cli: add test coverage for help strings |
---|
4251 | warner@lothar.com**20090216210833 |
---|
4252 | Ignore-this: d2020849107f687448e159a19d0e5dab |
---|
4253 | ] |
---|
4254 | [Add missing synopsis and descriptions for alias commands. |
---|
4255 | Alberto Berti <alberto@metapensiero.it>**20090221003106 |
---|
4256 | Ignore-this: 8aedd03d36d92d912102c7f29e4ca697 |
---|
4257 | ] |
---|
4258 | [Removed '.hgrags' from vcs excludes |
---|
4259 | Alberto Berti <alberto@metapensiero.it>**20090222223946 |
---|
4260 | Ignore-this: 3e94c22fc9d85f380ee11fb8bdb4d1e9 |
---|
4261 | ] |
---|
4262 | [tahoe cp -r: add --caps-only flag, to write filecaps into local files instead of actual file contents. Used only for debugging and as a quick tree-comparison tool. |
---|
4263 | warner@lothar.com**20090315231958 |
---|
4264 | Ignore-this: 8ecdf2b08601ae9e9fec5885bf640262 |
---|
4265 | ] |
---|
4266 | [test_system: even more 'cp -r' coverage |
---|
4267 | warner@allmydata.com**20080522014049] |
---|
4268 | [test_system.py: improve 'cp -r' coverage: exercise copy from tahoe to local disk |
---|
4269 | warner@allmydata.com**20080522013625] |
---|
4270 | [backup: remove the --no-backupdb command, the handling of "can't import sqlite", and the related tests, and change an error message to more correctly indicate failure to load the database from disk rather than failure to import sqlite module |
---|
4271 | zooko@zooko.com**20090604173131 |
---|
4272 | Ignore-this: 8200a9fdfc49243c280ecd1d0c44fa19 |
---|
4273 | Fixes #728. |
---|
4274 | ] |
---|
4275 | [backupdb: cosmetic: capitalize the no-pysqlite instructions properly. Thanks to Terrell Russell for the catch. |
---|
4276 | warner@allmydata.com**20090211212830 |
---|
4277 | Ignore-this: a17b34a12bbe96ad5b531ef5d293471e |
---|
4278 | ] |
---|
4279 | [cli: add some --help text to 'tahoe cp' |
---|
4280 | warner@lothar.com**20090625235751] |
---|
4281 | [cli: webopen: when called with no arguments, open the Welcome page |
---|
4282 | Brian Warner <warner@lothar.com>**20090701200548 |
---|
4283 | Ignore-this: ae7d6cb42165d0c751926065378343dd |
---|
4284 | ] |
---|
4285 | [Update tahoe mv help text. |
---|
4286 | kevan@isnotajoke.com**20090720034503 |
---|
4287 | Ignore-this: 9124164acf459a4aa030c25e286bcb19 |
---|
4288 | ] |
---|
4289 | [docs: reflow architecture.txt to 78-char lines |
---|
4290 | zooko@zooko.com**20091208232943 |
---|
4291 | Ignore-this: 88f55166415f15192e39407815141f77 |
---|
4292 | ] |
---|
4293 | [docs: warn that the "garbage-collection and accounting" section of architecture.txt is out of date, and clarify that "deleted" therein means ciphertext getting garbage-collected |
---|
4294 | zooko@zooko.com**20080822154605] |
---|
4295 | [docs: update architecture.txt 's section on the vdrive a.k.a. filesystem layer |
---|
4296 | zooko@zooko.com**20081006210500 |
---|
4297 | Remove some obsolete parts (correct at the time, now incorrect), change terminology to reflect my preference: s/vdrive/filesystem/ and s/dirnode/directory/, and make a few other small changes. |
---|
4298 | ] |
---|
4299 | [docs: a couple of minor edits to NEWS and docs/architecture.txt |
---|
4300 | zooko@zooko.com**20090721014112 |
---|
4301 | Ignore-this: f82d77a46e442d38d5a17609f4b3dfa5 |
---|
4302 | ] |
---|
4303 | [more minor architecture.txt changes |
---|
4304 | warner@allmydata.com**20080214022043] |
---|
4305 | [update NEWS to cover all recent changes, sort by end-user importance |
---|
4306 | Brian Warner <warner@lothar.com>**20090703014303 |
---|
4307 | Ignore-this: 6ddac78075d7547a19712d505818949c |
---|
4308 | ] |
---|
4309 | [edit NEWS |
---|
4310 | Brian Warner <warner@lothar.com>**20090630174115 |
---|
4311 | Ignore-this: c4461a2304fcd45bee95e11418693a18 |
---|
4312 | ] |
---|
4313 | [docs: start updating the NEWS and relnotes.txt files, add Kevan to CREDITS |
---|
4314 | zooko@zooko.com**20090621055114 |
---|
4315 | Ignore-this: 35e05a5739549ffa693d55df51ffcfd |
---|
4316 | ] |
---|
4317 | [setup: enable build of .debs for Ubuntu Intrepid, thanks to DarKNesS_WolF |
---|
4318 | zooko@zooko.com**20090305220021 |
---|
4319 | Ignore-this: 88dbb3f72c2446b7734ac437189b67df |
---|
4320 | ] |
---|
4321 | [Makefile: add ubuntu/hardy deb targets |
---|
4322 | warner@allmydata.com**20080617222618] |
---|
4323 | [Makefile: add ubuntu 'gutsy' as a .deb target |
---|
4324 | warner@allmydata.com**20071017203511] |
---|
4325 | [cease producing .debs for dapper, since they'd depend upon a library (simplejson) that isn't packaged for dapper. Feisty++ are fine. Dapper users are encouraged to build from source. |
---|
4326 | warner@allmydata.com**20070711213104] |
---|
4327 | [update debian/copying to reflect GPLv2+12months license |
---|
4328 | warner@lothar.com**20070426083833] |
---|
4329 | [docs: CREDITS to Alberto Berti |
---|
4330 | zooko@zooko.com**20090222193314 |
---|
4331 | Ignore-this: 74d370ada3234cce9e58aec15d739f71 |
---|
4332 | ] |
---|
4333 | [NEWS: list all user-visible changes since 1.4.1 . Needs lots of editing. |
---|
4334 | Brian Warner <warner@lothar.com>**20090630170734 |
---|
4335 | Ignore-this: f606a5d678d0db8065b9f84e796d59b0 |
---|
4336 | ] |
---|
4337 | [docs: update NEWS, relnotes.txt, CREDITS to mention WUI Style |
---|
4338 | zooko@zooko.com**20090526233654 |
---|
4339 | Ignore-this: 72d16ec833bc4a22af23d29ea1d5ff8b |
---|
4340 | ] |
---|
4341 | [docs: CREDITS |
---|
4342 | zooko@zooko.com**20090213201245 |
---|
4343 | Ignore-this: 5d3101e680739e6cdacb4351b518ae33 |
---|
4344 | ] |
---|
4345 | [doc: add Toby Murray to the CREDITS |
---|
4346 | zooko@zooko.com**20090120043857 |
---|
4347 | Ignore-this: eedb7e9d47ddee5cbe189b55251d0859 |
---|
4348 | ] |
---|
4349 | [doc: add Larry Hosken to CREDITS |
---|
4350 | zooko@zooko.com**20090117164943 |
---|
4351 | Ignore-this: f2433a296ab2485872d22538bd0f64b2 |
---|
4352 | ] |
---|
4353 | [New credit file entry |
---|
4354 | francois@ctrlaltdel.ch**20081114140548] |
---|
4355 | [CREDITS: thanks to Chris Galvan |
---|
4356 | zooko@zooko.com**20080827183950] |
---|
4357 | [docs: CREDITS for Justin |
---|
4358 | zooko@zooko.com**20080611020547] |
---|
4359 | [CREDITS: add Paul Gerhardt, who submitted a small patch for make check-deps to be more newbie-friendly |
---|
4360 | zooko@zooko.com**20080325184739] |
---|
4361 | [CREDITS |
---|
4362 | zooko@zooko.com**20080313160444] |
---|
4363 | [CREDITS for nejucomo |
---|
4364 | zooko@zooko.com**20080108165417] |
---|
4365 | [CREDITS: more credit to nejucomo since we accepted a doc patch |
---|
4366 | zooko@zooko.com**20071107160107] |
---|
4367 | [CREDITS: Nathan Wilcox ++ |
---|
4368 | zooko@zooko.com**20071015021312] |
---|
4369 | [docs: edit relnotes.txt and promote Tahoe from filesystem to cloud storage thingie |
---|
4370 | zooko@zooko.com**20090414021913 |
---|
4371 | Ignore-this: 78cc79078c234d0467f6290dcae456b9 |
---|
4372 | ] |
---|
4373 | [docs: inaugurate Tahoe-1.4.1, since I left out a handful of patches from the Tahoe-1.4.0 release |
---|
4374 | zooko@zooko.com**20090414025430 |
---|
4375 | Ignore-this: 12d5ff7dc842668bdf318c5539272089 |
---|
4376 | ] |
---|
4377 | [docs: update relnotes.txt, NEWS for Tahoe-1.4.0 release! |
---|
4378 | zooko@zooko.com**20090413041405 |
---|
4379 | Ignore-this: d2eacb26b359a020956ee14b63d95dc5 |
---|
4380 | ] |
---|
4381 | [docs: edit about.html |
---|
4382 | zooko@zooko.com**20090210080102 |
---|
4383 | Ignore-this: d96f9b21f88d4c7a552f9ed3db5c6af4 |
---|
4384 | ] |
---|
4385 | [docs: about.html: a couple of edits suggested by kpreid's comments |
---|
4386 | zooko@zooko.com**20080227150138] |
---|
4387 | [setup: relnotes.txt mention the iPhone app and CIFS/SMB (tahoe-w32-client) |
---|
4388 | zooko@zooko.com**20090213044121 |
---|
4389 | Ignore-this: 2c9b8720579c4c146e4416c5a02c77a5 |
---|
4390 | ] |
---|
4391 | [doc: a few edits to docs made after the 1.3.0 release |
---|
4392 | zooko@zooko.com**20090216201539 |
---|
4393 | Ignore-this: dbff3b929d88134d862f1dffd1ef068a |
---|
4394 | ] |
---|
4395 | [NEWS: format some (but not all) items |
---|
4396 | warner@lothar.com**20090407211514] |
---|
4397 | [NEWS: add unformatted list of code changes since previous release |
---|
4398 | warner@lothar.com**20090407021155] |
---|
4399 | [docs: change install.html to point to the 1.4.0 release zip file instead of 1.3.0 |
---|
4400 | zooko@zooko.com**20090413160649 |
---|
4401 | Ignore-this: ec6b177d6689894b9842a012da04e5dc |
---|
4402 | ] |
---|
4403 | [docs: a few last-minute edits to the docs for 1.3.0 (also this patch will accompany the tag and conveniently trigger the buildbots to build a 1.3.0 version) |
---|
4404 | zooko@zooko.com**20090214000500 |
---|
4405 | Ignore-this: 879c9b10f0e5b9ed0031236e0714ddfa |
---|
4406 | ] |
---|
4407 | [docs/install.html: reference InstallDetails instead of debian-specific stuff |
---|
4408 | warner@lothar.com**20080917225742] |
---|
4409 | [setup: add link to the DownloadDebianPackages page |
---|
4410 | zooko@zooko.com**20080908215451 |
---|
4411 | Because I want that link off of the front page of the wiki... |
---|
4412 | ] |
---|
4413 | [merge_install.patch |
---|
4414 | cgalvan@mail.utexas.edu**20090102164434 |
---|
4415 | Ignore-this: aa6d4c05d583a0724eb218fef04c3940 |
---|
4416 | ] |
---|
4417 | [remove_sumo_install.patch |
---|
4418 | cgalvan@mail.utexas.edu**20090102162347 |
---|
4419 | Ignore-this: f328570b1da1ccfbaebc770d40748046 |
---|
4420 | ] |
---|
4421 | [setup: new install doc -- doesn't require GNU make or a C++ compiler any more! |
---|
4422 | zooko@zooko.com**20081201180933 |
---|
4423 | Ignore-this: 753e8d1e6f32e2ddcd7a082050114725 |
---|
4424 | ] |
---|
4425 | [docs: edit to install.html suggested by Brian |
---|
4426 | zooko@zooko.com**20080506193115] |
---|
4427 | [doc: mention that "Mac Developer Tools" is the way to get gcc/g++ for Mac |
---|
4428 | zooko@zooko.com**20080610231934] |
---|
4429 | [setup: edit the text of install.html |
---|
4430 | zooko@zooko.com**20080908215549] |
---|
4431 | [docs: a couple of tiny docs updates |
---|
4432 | zooko@zooko.com**20080409225759] |
---|
4433 | [docs: update install.html to reflect Justin's user test |
---|
4434 | zooko@zooko.com**20080611020458] |
---|
4435 | [Make the purpose and location of the tahoe executable more explicit in install.html. |
---|
4436 | nejucomo@gmail.com**20080108173326 |
---|
4437 | |
---|
4438 | ] |
---|
4439 | [Makefile,docs: tahoe-deps.tar.gz now lives in separate source/deps/ directory on http://allmydata.org |
---|
4440 | warner@lothar.com**20080917204452] |
---|
4441 | [#249: get dependent libs from tahoe-deps and ../tahoe-deps |
---|
4442 | warner@lothar.com**20080917013627] |
---|
4443 | [setup: add a setup.cfg file which instructs setuptools to install all eggs in unzipped form and to always copy them into the target directory (even if they are already installed somewhere else on the path that setuptools searches, which includes the CWD) |
---|
4444 | zooko@zooko.com**20080122194647] |
---|
4445 | [rewrite parts of the Makefile in setup.py. Add 'build_tahoe' and 'trial' subcommands. |
---|
4446 | warner@allmydata.com**20080912010321 |
---|
4447 | |
---|
4448 | The 'make build' target now runs 'setup.py build_tahoe', which figures out |
---|
4449 | where the target 'supportlib' directory should go, and invokes 'setup.py |
---|
4450 | develop' with the appropriate arguments. |
---|
4451 | |
---|
4452 | The 'make test' target now runs 'setup.py trial', which manages sys.path and |
---|
4453 | runs trial as a subroutine instead of spawning an external process. This |
---|
4454 | simplifies the case where Twisted was built as a dependent library (and thus |
---|
4455 | the 'trial' executable is not on PATH). |
---|
4456 | |
---|
4457 | setup.py now manages sys.path and PYTHONPATH for its internal subcommands, so |
---|
4458 | the $(PP) prefix was removed from all Makefile targets that invoke setup.py . |
---|
4459 | For the remaining ones, the 'setup.py -q show_pythonpath' subcommand was |
---|
4460 | added to compute this prefix with python rather than with fragile |
---|
4461 | shell/Makefile syntax. |
---|
4462 | |
---|
4463 | |
---|
4464 | ] |
---|
4465 | [setup: remove obsolete makefile target build-deps |
---|
4466 | zooko@zooko.com**20080422190712] |
---|
4467 | [setup: test depends on build, which means it invokes setup.py every time, which is slower but does "the right thing" more often |
---|
4468 | zooko@zooko.com**20080424165704 |
---|
4469 | There is a new target "quicktest" which depends on the .built and .checked-deps files. test-figleaf also depends on the build target now. |
---|
4470 | ] |
---|
4471 | [tests: test depends on _version.py |
---|
4472 | zooko@zooko.com**20080228202924 |
---|
4473 | because there is a test that asserts that our version is not "unknown" |
---|
4474 | |
---|
4475 | ] |
---|
4476 | [Makefile: add quicktest-figleaf: this is in my edit-test-repeat loop, and I need it to be fast |
---|
4477 | warner@allmydata.com**20080424183038] |
---|
4478 | [setup: don't use "python" in Makefile, use $(PYTHON) everywhere |
---|
4479 | zooko@zooko.com**20080721162849] |
---|
4480 | [setup: whoops, really remove the default reactor=poll this time |
---|
4481 | zooko@zooko.com**20080730032358] |
---|
4482 | [setup: pass --reactor=poll to trial unless REACTOR variable is set, in which case pass --reactor=$(REACTOR) |
---|
4483 | zooko@zooko.com**20080730023906 |
---|
4484 | This hopefully works around the problem that Twisted v8.1.0 has a bug when used |
---|
4485 | with pyOpenSSL v0.7 which bug causes some unit tests to spuriously fail -- see |
---|
4486 | known_issues.txt r2788: |
---|
4487 | |
---|
4488 | http://allmydata.org/trac/tahoe/browser/docs/known_issues.txt?rev=2788#L122 |
---|
4489 | |
---|
4490 | Also it matches with the fact that --reactor=poll is required on cygwin. |
---|
4491 | |
---|
4492 | ] |
---|
4493 | [setup: fix bug in Makefile -- ifeq, not ifneq -- so that now it sets poll reactor only if the user hasn't specified a REACTOR variable, instead of setting poll reactor only if the user has specified a REACTOR variable |
---|
4494 | zooko@zooko.com**20080730160429] |
---|
4495 | [setup: turn back on reactor=poll for cygwin trial (else it runs out of fds) |
---|
4496 | zooko@zooko.com**20080730181217] |
---|
4497 | [setup: instead of setting --reactor=poll for trial in all cases (which fails on platforms that don't have poll reactor, such as Windows and some Mac OS X), just set --reactor=poll for linux2. |
---|
4498 | zooko@zooko.com**20080730031656 |
---|
4499 | |
---|
4500 | ] |
---|
4501 | [setup: patch from Chris Galvan to build sdists with no deps in them normally, but include deps if --sumo |
---|
4502 | zooko@zooko.com**20080827182644] |
---|
4503 | [setup: don't assert that trial is present when the Makefile is evaluated |
---|
4504 | zooko@zooko.com**20080903171837 |
---|
4505 | This should fix #506, but it means that if (for some weird reason) Twisted can't be auto-installed and the find_trial.py script doesn't work, the user will get a weird failure message instead of a clean failure message explaining that trial couldn't be found. Oh well. |
---|
4506 | |
---|
4507 | Chris Galvan is working on a much nicer fix to all these issues -- see #505. |
---|
4508 | |
---|
4509 | ] |
---|
4510 | [Makefile: avoid bare quotes, since the emacs syntax-highlighter gets confused by them |
---|
4511 | warner@lothar.com**20080807183001] |
---|
4512 | [setup: don't attempt to escape quote marks, just delete them. Ugly, but it works okay. |
---|
4513 | zooko@zooko.com**20080806232742] |
---|
4514 | [setup: remove accidentally duplicated lines from Makefile |
---|
4515 | zooko@zooko.com**20080807193029] |
---|
4516 | [setup: if the user passes a TRIALOPT env var then pass that on to trial |
---|
4517 | zooko@zooko.com**20080730205806 |
---|
4518 | This is useful for --reporter=bwverbose, for example. |
---|
4519 | ] |
---|
4520 | [setup: don't quote REACTOROPT -- when it is empty then we want no argument at all to be passed to trial, rather than the empty-string-argument |
---|
4521 | zooko@zooko.com**20080609185324] |
---|
4522 | [setup: don't quote TRIALCMD in Makefile -- it can be a pair of (python executable, path to command) paths |
---|
4523 | zooko@zooko.com**20080605233912] |
---|
4524 | [setup: quote variables which are going to be passed through a shell and which might contain spaces |
---|
4525 | zooko@zooko.com**20080605221951] |
---|
4526 | [setup: escape any double-quote chars in the PATH before using the PATH to find and invoke trial |
---|
4527 | zooko@zooko.com**20080806231143] |
---|
4528 | [setup: quote another place where spaces in paths cause shell command misparsing |
---|
4529 | zooko@zooko.com**20080609232150] |
---|
4530 | [Makefile: give setup.py develop a '--site-dirs' arg to work around the #249 setuptools bug which causes us to unnecessarily rebuild pyopenssl and other support libs installed via debian's python-support. Should be harmless on other platforms. |
---|
4531 | warner@allmydata.com**20080910233432] |
---|
4532 | [setup: indentation |
---|
4533 | zooko@zooko.com**20080605210249] |
---|
4534 | [Makefile: build twice, since sometimes the Nevow build fails the first time. See #455. This ought to be undone once that ticket is fixed by a new release of setuptools |
---|
4535 | warner@allmydata.com**20080609230629] |
---|
4536 | [Makefile: desert-island: don't re-fetch tahoe-deps.tar.gz if it's already there, remove the tahoe-deps/ before untarring directory to avoid unpacking weirdness |
---|
4537 | warner@lothar.com**20080917052204] |
---|
4538 | [#249: add 'test-desert-island', to assert that a tahoe-deps.tar.gz -enabled build does not download anything |
---|
4539 | warner@lothar.com**20080917013702] |
---|
4540 | [add 'tarballs' target, to generate compressed source tarballs |
---|
4541 | warner@allmydata.com**20080131024514] |
---|
4542 | [docs: mention -SUMO tarballs, point users at release tarballs instead of development ones |
---|
4543 | warner@lothar.com**20080917203631] |
---|
4544 | [setup: change URL from which to get source tarballs |
---|
4545 | zooko@zooko.com**20080908215409 |
---|
4546 | So that when you look at that directory you won't see distracting other things such as darcs repositories. |
---|
4547 | ] |
---|
4548 | [docs: install.html: link to http://allmydata.org/source/tahoe/ instead of http://allmydata.org/source/tahoe/tarballs/ |
---|
4549 | zooko@zooko.com**20080611213522] |
---|
4550 | [docs: edit install.html a tad |
---|
4551 | zooko@zooko.com**20080826154929] |
---|
4552 | [setup: remove the developer note about doing without GNU make (the GNU make requirement is about to hurt Peter if he tries to follow this doc, by the way) |
---|
4553 | zooko@zooko.com**20081021163200 |
---|
4554 | add classifiers showing with which versions of Python it is known to work. |
---|
4555 | ] |
---|
4556 | [setup.py: cosmetic, remove trailing whitespace |
---|
4557 | warner@allmydata.com**20080714215325] |
---|
4558 | [setup: update licensing information in setup.py comments and metadata |
---|
4559 | zooko@zooko.com**20080108174500] |
---|
4560 | [comment-out the 'license' field because PyPI rejects upload if you have an invalid value therein |
---|
4561 | zooko@zooko.com**20071016034809 |
---|
4562 | |
---|
4563 | This means that we have no machine-readable licence for now. I will make the |
---|
4564 | human-readable licensing. |
---|
4565 | |
---|
4566 | ] |
---|
4567 | [setup: stop claiming that we are under GPL in the "license" field of the PyPI database |
---|
4568 | zooko@zooko.com**20071016025742 |
---|
4569 | Unfortunately, there is no way to claim that we are under a Free Software/Open |
---|
4570 | Source licence without also claiming to be under a licence that we are not or |
---|
4571 | claiming to have approval from DFSG or OSI, which we haven't. |
---|
4572 | |
---|
4573 | Until now, I erred on the side of choosing the licence that is closest to our |
---|
4574 | from the list (GPL), but that was a bad idea and now I'm erring on the side of |
---|
4575 | not including a machine-readable licensing claim at all. |
---|
4576 | |
---|
4577 | Hopefully humans who are interested will quickly find out that we are actually |
---|
4578 | under a Real Free Software Licence. |
---|
4579 | |
---|
4580 | But really, this underscores that we need to talk to FSF, edit our licence for |
---|
4581 | clarity of intent, and submit it to DFSG/OSI. |
---|
4582 | |
---|
4583 | ] |
---|
4584 | [fix the 'license' field of the PyPI db (not the Trove Classifiers that I was changing in recent patches) to describe our licence and link to it |
---|
4585 | czooko@zooko.com**20071016035510 |
---|
4586 | The earlier patches were changing the Trove Classifiers, which is a different thing to this 'license' field. |
---|
4587 | ] |
---|
4588 | [setup: add excited DEVELOPER NOTE to install.html |
---|
4589 | zooko@zooko.com**20080908215603 |
---|
4590 | It should be removed before 1.3.0 release, of course... |
---|
4591 | ] |
---|
4592 | [docs: relnotes.txt final (!?) update for 1.3.0! |
---|
4593 | zooko@zooko.com**20090213042814 |
---|
4594 | Ignore-this: 7a959eba00115474ff048cd84ecab495 |
---|
4595 | ] |
---|
4596 | [docs: not-quite-final version of relnotes.txt for tahoe-1.3.0 |
---|
4597 | zooko@zooko.com**20090210170227 |
---|
4598 | Ignore-this: 64e11f3619d537eae28f4d33977bd7ab |
---|
4599 | ] |
---|
4600 | [docs: a couple of tiny edits |
---|
4601 | zooko@zooko.com**20080619192619] |
---|
4602 | [docs: relnotes.txt: reflow to 70 cols |
---|
4603 | zooko@zooko.com**20080611230256] |
---|
4604 | [relnotes.txt: update and edit for the 1.2.0 release! |
---|
4605 | zooko@zooko.com**20080722010403] |
---|
4606 | [docs: relnotes.txt: re-arrange sections a bit |
---|
4607 | zooko@zooko.com**20080611195234] |
---|
4608 | [docs: start updating the relnotes.txt in preparation for the next release |
---|
4609 | zooko@zooko.com**20080701201936] |
---|
4610 | [docs: relnotes.txt: trivial change (really just to trigger the buildbot when it comes in a bundle along with the 1.1.0 tag) |
---|
4611 | zooko@zooko.com**20080611213202] |
---|
4612 | [docs: relnotes.txt: update the release notes for the v1.1.0 release! |
---|
4613 | zooko@zooko.com**20080611194055] |
---|
4614 | [docs: fix name of docs dir in relnotes.txt |
---|
4615 | zooko@zooko.com**20080218220805] |
---|
4616 | [docs: small edit to relnotes.txt |
---|
4617 | zooko@zooko.com**20080313185655] |
---|
4618 | [docs: update relnotes.txt for Tahoe v1.0! |
---|
4619 | zooko@zooko.com**20080326012800] |
---|
4620 | [docs: fix typo in relnotes.txt |
---|
4621 | zooko@zooko.com**20080313190147] |
---|
4622 | [docs: link to the current CREDITS file from relnotes.txt |
---|
4623 | zooko@zooko.com**20080313190420] |
---|
4624 | [docs: small edit to relnotes.txt |
---|
4625 | zooko@zooko.com**20080313191326] |
---|
4626 | [docs: update relnotes.txt for allmydata.org "Tahoe" v0.9.0 ! |
---|
4627 | zooko@zooko.com**20080313184326 |
---|
4628 | Whee! |
---|
4629 | |
---|
4630 | ] |
---|
4631 | [docs: update relnotes.txt |
---|
4632 | zooko@zooko.com**20080215233533] |
---|
4633 | [docs: update relnotes.txt for v0.8.0! |
---|
4634 | zooko@zooko.com**20080214150026] |
---|
4635 | [docs: update relnotes, running.html |
---|
4636 | zooko@zooko.com**20080214145434] |
---|
4637 | [docs: beginning of update to relnotes.txt for v0.8 |
---|
4638 | zooko@zooko.com**20080213234302] |
---|
4639 | [docs: relnotes for 0.7.0 |
---|
4640 | zooko@zooko.com**20080108170144] |
---|
4641 | [relnotes.txt: fix bug in relnotes.txt for v0.6.1 -- it incorrectly described v0.6 as having been released in August; it was actually September |
---|
4642 | czooko@zooko.com**20071016043325] |
---|
4643 | [relnote.txt: update relnotes.txt for the v0.6.1 release |
---|
4644 | zooko@zooko.com**20071015215602] |
---|
4645 | [relnotes.txt a few tiny branding edits |
---|
4646 | zooko@zooko.com**20070817203303 |
---|
4647 | Uncertain about the branding, but what the heck. |
---|
4648 | ] |
---|
4649 | [relnotes.txt: tweak #129 description a bit |
---|
4650 | Brian Warner <warner@allmydata.com>**20070920062433] |
---|
4651 | [relnotes.txt: link to the final version of the README for v0.6 |
---|
4652 | zooko@zooko.com**20070924214238] |
---|
4653 | [relnotes.txt: add Performance section, fix link to foolscap |
---|
4654 | zooko@zooko.com**20070924213231] |
---|
4655 | [relnotes.txt: line-wrap to 70-chars and a small edit |
---|
4656 | zooko@zooko.com**20070922030327] |
---|
4657 | [relnotes.txt: correct description of leases |
---|
4658 | zooko@zooko.com**20070919022416] |
---|
4659 | [relnotes.txt: a few final touch-ups for v0.6 |
---|
4660 | zooko@zooko.com**20070923170804] |
---|
4661 | [relnotes.txt: add ticket #129 |
---|
4662 | zooko@zooko.com**20070919212646] |
---|
4663 | [relnotes.txt: update for v0.6 (not complete) |
---|
4664 | zooko@zooko.com**20070918220430] |
---|
4665 | [relnotes.txt: v0.5.1 |
---|
4666 | zooko@zooko.com**20070823205141] |
---|
4667 | [webapi: don't accept zero-length childnames during traversal. Closes #358, #676. |
---|
4668 | Brian Warner <warner@lothar.com>**20091227201043 |
---|
4669 | Ignore-this: a9119dec89e1c7741f2289b0cad6497b |
---|
4670 | |
---|
4671 | This forbids operations that would implicitly create a directory with a |
---|
4672 | zero-length (empty string) name, like what you'd get if you did "tahoe put |
---|
4673 | local /oops/blah" (#358) or "POST /uri/CAP//?t=mkdir" (#676). The error |
---|
4674 | message is fairly friendly too. |
---|
4675 | |
---|
4676 | Also added code to "tahoe put" to catch this error beforehand and suggest the |
---|
4677 | correct syntax (i.e. without the leading slash). |
---|
4678 | ] |
---|
4679 | [interface name cleanups: IFileNode, IImmutableFileNode, IMutableFileNode |
---|
4680 | Brian Warner <warner@lothar.com>**20091120075255 |
---|
4681 | Ignore-this: e3d193c229e2463e1d0b0c92306de27f |
---|
4682 | |
---|
4683 | The proper hierarchy is: |
---|
4684 | IFilesystemNode |
---|
4685 | +IFileNode |
---|
4686 | ++IMutableFileNode |
---|
4687 | ++IImmutableFileNode |
---|
4688 | +IDirectoryNode |
---|
4689 | |
---|
4690 | Also expand test_client.py (NodeMaker) to hit all IFilesystemNode types. |
---|
4691 | ] |
---|
4692 | [interfaces.py: minor improvement to IDirectoryNode.set_node |
---|
4693 | warner@allmydata.com**20080909233416] |
---|
4694 | [Add t=mkdir-immutable to the webapi. Closes #607. |
---|
4695 | Brian Warner <warner@lothar.com>**20091118070900 |
---|
4696 | Ignore-this: 311e5fab9a5f28b9e8a28d3d08f3c0d |
---|
4697 | |
---|
4698 | * change t=mkdir-with-children to not use multipart/form encoding. Instead, |
---|
4699 | the request body is all JSON. t=mkdir-immutable uses this format too. |
---|
4700 | * make nodemaker.create_immutable_dirnode() get convergence from SecretHolder, |
---|
4701 | but let callers override it |
---|
4702 | * raise NotDeepImmutableError instead of using assert() |
---|
4703 | * add mutable= argument to DirectoryNode.create_subdirectory(), default True |
---|
4704 | ] |
---|
4705 | [webapi: use t=mkdir-with-children instead of a children= arg to t=mkdir . |
---|
4706 | Brian Warner <warner@lothar.com>**20091026011321 |
---|
4707 | Ignore-this: 769cab30b6ab50db95000b6c5a524916 |
---|
4708 | |
---|
4709 | This is safer: in the earlier API, an old webapi server would silently ignore |
---|
4710 | the initial children, and clients trying to set them would have to fetch the |
---|
4711 | newly-created directory to discover the incompatibility. In the new API, |
---|
4712 | clients using t=mkdir-with-children against an old webapi server will get a |
---|
4713 | clear error. |
---|
4714 | ] |
---|
4715 | [make get_size/get_current_size consistent for all IFilesystemNode classes |
---|
4716 | Brian Warner <warner@lothar.com>**20091118191624 |
---|
4717 | Ignore-this: bd3449cf96e4827abaaf962672c1665a |
---|
4718 | |
---|
4719 | * stop caching most_recent_size in dirnode, rely upon backing filenode for it |
---|
4720 | * start caching most_recent_size in MutableFileNode |
---|
4721 | * return None when you don't know, not "?" |
---|
4722 | * only render None as "?" in the web "more info" page |
---|
4723 | * add get_size/get_current_size to UnknownNode |
---|
4724 | ] |
---|
4725 | [mutable: add get_size_of_best_version to the interface, to simplify the web HEAD code, and tests |
---|
4726 | warner@allmydata.com**20080813020252] |
---|
4727 | [class name cleanups: s/FileNode/ImmutableFileNode/ |
---|
4728 | Brian Warner <warner@lothar.com>**20091120072239 |
---|
4729 | Ignore-this: 4b3218f2d0e585c62827e14ad8ed8ac1 |
---|
4730 | |
---|
4731 | also fix test/bench_dirnode.py for recent dirnode changes |
---|
4732 | ] |
---|
4733 | [nodemaker: implement immutable directories (internal interface), for #607 |
---|
4734 | Brian Warner <warner@lothar.com>**20091112002233 |
---|
4735 | Ignore-this: d09fccf41813fdf7e0db177ed9e5e130 |
---|
4736 | |
---|
4737 | * nodemaker.create_from_cap() now handles DIR2-CHK and DIR2-LIT |
---|
4738 | * client.create_immutable_dirnode() is used to create them |
---|
4739 | * no webapi yet |
---|
4740 | ] |
---|
4741 | [dirnode.py: move pack_children() out to a function, for eventual use by others |
---|
4742 | Brian Warner <warner@lothar.com>**20091017180707 |
---|
4743 | Ignore-this: 6a823fb61f2c180fd38d6742d3196a7a |
---|
4744 | ] |
---|
4745 | [dirnode.py/_encrypt_rwcap: rename IV to "salt", which is more accurate |
---|
4746 | Brian Warner <warner@lothar.com>**20090712235025 |
---|
4747 | Ignore-this: 1b8d6a4e8667655f52abe2b3be46a0ed |
---|
4748 | ] |
---|
4749 | [dirnode.py: security bug: also use child writecap to derive child enc key, |
---|
4750 | Brian Warner <warner@lothar.com>**20090712234750 |
---|
4751 | Ignore-this: 13867ebc123b521df60e4013b75716e |
---|
4752 | not just the dirnode writecap. The previous code (which only hashed the |
---|
4753 | dirnode writecap) would use the same key for all children, which is very bad. |
---|
4754 | This is the correct implementation of #750. |
---|
4755 | ] |
---|
4756 | [directories: make the IV for the writecaps in directory entries be computed from the secure hash of the writecap itself |
---|
4757 | zooko@zooko.com**20090705024815 |
---|
4758 | Ignore-this: cb9cc29f8f0687f2545e95d5b7b42d44 |
---|
4759 | This makes encoding of directory entries deterministic, and it is also a tad faster on Macbook Pro than getting a random IV with os.urandom(16). |
---|
4760 | ] |
---|
4761 | [move dirnode.CachingDict to dictutil.AuxValueDict, generalize method names, |
---|
4762 | Brian Warner <warner@lothar.com>**20091017180005 |
---|
4763 | Ignore-this: b086933cf429df0fcea16a308d2640dd |
---|
4764 | improve tests. Let dirnode _pack_children accept either dict or AuxValueDict. |
---|
4765 | ] |
---|
4766 | [Add CachingDict dict subclass to dirnode.py |
---|
4767 | kevan@isnotajoke.com**20090705212345 |
---|
4768 | Ignore-this: 484bdcecbc1ae25e04bf659abcfcf834 |
---|
4769 | ] |
---|
4770 | [stop using IURI()/etc as an adapter |
---|
4771 | Brian Warner <warner@lothar.com>**20091111224542 |
---|
4772 | Ignore-this: 9611da7ea6a4696de2a3b8c08776e6e0 |
---|
4773 | ] |
---|
4774 | [upload: fix #758 recursion-loop in peer-selection when servers report errors. |
---|
4775 | Brian Warner <warner@lothar.com>**20090717050709 |
---|
4776 | Ignore-this: 9c28ef13649c4475ede23815b69e51fd |
---|
4777 | The bug was in the code that handles a third-or-later pass, and was |
---|
4778 | previously untested. |
---|
4779 | ] |
---|
4780 | [hush pyflakes |
---|
4781 | warner@lothar.com**20090625021809] |
---|
4782 | [Split out NoSharesError, stop adding attributes to NotEnoughSharesError, change humanize_failure to include the original exception string, update tests, behave better if humanize_failure fails. |
---|
4783 | warner@lothar.com**20090625021707] |
---|
4784 | [test_system.py minor typo |
---|
4785 | warner@allmydata.com**20070926190737] |
---|
4786 | [nodemaker.create_new_mutable_directory: pack_children() in initial_contents= |
---|
4787 | Brian Warner <warner@lothar.com>**20091020005118 |
---|
4788 | Ignore-this: bd43c4eefe06fd32b7492bcb0a55d07e |
---|
4789 | instead of creating an empty file and then adding the children later. |
---|
4790 | |
---|
4791 | This should speed up mkdir(initial_children) considerably, removing two |
---|
4792 | roundtrips and an entire read-modify-write cycle, probably bringing it down |
---|
4793 | to a single roundtrip. A quick test (against the volunteergrid) suggests a |
---|
4794 | 30% speedup. |
---|
4795 | |
---|
4796 | test_dirnode: add new tests to enforce the restrictions that interfaces.py |
---|
4797 | claims for create_new_mutable_directory(): no UnknownNodes, metadata dicts |
---|
4798 | ] |
---|
4799 | [update many dirnode interfaces to accept dict-of-nodes instead of dict-of-caps |
---|
4800 | Brian Warner <warner@lothar.com>**20091017192829 |
---|
4801 | Ignore-this: b35472285143862a856bf4b361d692f0 |
---|
4802 | |
---|
4803 | interfaces.py: define INodeMaker, document argument values, change |
---|
4804 | create_new_mutable_directory() to take dict-of-nodes. Change |
---|
4805 | dirnode.set_nodes() and dirnode.create_subdirectory() too. |
---|
4806 | nodemaker.py: use INodeMaker, update create_new_mutable_directory() |
---|
4807 | client.py: have create_dirnode() delegate initial_children= to nodemaker |
---|
4808 | dirnode.py (Adder): take dict-of-nodes instead of list-of-nodes, which |
---|
4809 | updates set_nodes() and create_subdirectory() |
---|
4810 | web/common.py (convert_initial_children_json): create dict-of-nodes |
---|
4811 | web/directory.py: same |
---|
4812 | web/unlinked.py: same |
---|
4813 | test_dirnode.py: update tests to match |
---|
4814 | ] |
---|
4815 | [dirnode.set_nodes: change return value: fire with self instead of None |
---|
4816 | Brian Warner <warner@lothar.com>**20091013014546 |
---|
4817 | Ignore-this: b75b3829fb53f7399693f1c1a39aacae |
---|
4818 | ] |
---|
4819 | [webapi: t=mkdir now accepts initial children, using the same JSON that t=json |
---|
4820 | Brian Warner <warner@lothar.com>**20091013023444 |
---|
4821 | Ignore-this: 574a46ed46af4251abf8c9580fd31ef7 |
---|
4822 | emits. |
---|
4823 | |
---|
4824 | client.create_dirnode(initial_children=) now works. |
---|
4825 | ] |
---|
4826 | [replace Client.create_empty_dirnode() with create_dirnode(), in anticipation |
---|
4827 | Brian Warner <warner@lothar.com>**20091012224506 |
---|
4828 | Ignore-this: cbdaa4266ecb3c6496ffceab4f95709d |
---|
4829 | of adding initial_children= argument. |
---|
4830 | |
---|
4831 | Includes stubbed-out initial_children= support. |
---|
4832 | ] |
---|
4833 | [test_web: improve test coverage of PUT DIRURL t=uri replace=false |
---|
4834 | warner@allmydata.com**20081029045744] |
---|
4835 | [test_web: test behavior of broken-dirnode GET, both html and json |
---|
4836 | warner@lothar.com**20090307105707 |
---|
4837 | Ignore-this: c0e5b45eee28959f899efa1bd189d6bd |
---|
4838 | ] |
---|
4839 | [The initial_children= argument to nodemaker.create_new_mutable_directory is |
---|
4840 | Brian Warner <warner@lothar.com>**20091013031922 |
---|
4841 | Ignore-this: 72e45317c21f9eb9ec3bd79bd4311f48 |
---|
4842 | now enabled. |
---|
4843 | ] |
---|
4844 | [replace dirnode.create_empty_directory() with create_subdirectory(), which |
---|
4845 | Brian Warner <warner@lothar.com>**20091013021520 |
---|
4846 | Ignore-this: 6b57cb51bcfcc6058d0df569fdc8a9cf |
---|
4847 | takes an initial_children= argument |
---|
4848 | ] |
---|
4849 | [test_dirnode: improve coverage of not-mutable-error a bit |
---|
4850 | warner@allmydata.com**20080508235335] |
---|
4851 | [CLI: modify 'tahoe manifest' and 'tahoe deep-check' to report ERROR: properly. For #590. |
---|
4852 | warner@allmydata.com**20090225054415 |
---|
4853 | Ignore-this: 99162f894fdd24112a869e14848c3dea |
---|
4854 | ] |
---|
4855 | [test_dirnode.py: add tests of initial_children= args to client.create_dirnode |
---|
4856 | Brian Warner <warner@lothar.com>**20091017194159 |
---|
4857 | Ignore-this: 2e2da28323a4d5d815466387914abc1b |
---|
4858 | and nodemaker.create_new_mutable_directory |
---|
4859 | ] |
---|
4860 | [tests: remove obsolete test (it tests functionality that is long gone) which occasionally ERRORs now that we have more metadata (since [20090411225205-92b7f-7adfb89cb4db4ac7d28427934dea3d2c108f6476]) |
---|
4861 | zooko@zooko.com**20090413023621 |
---|
4862 | Ignore-this: b9f1b1225015f59ffd7e0ee1633e4098 |
---|
4863 | ] |
---|
4864 | [dirnode: don't check MAC on entries in dirnodes |
---|
4865 | zooko@zooko.com**20081221233518 |
---|
4866 | Ignore-this: efacb56d18259219c910cf5c84b17340 |
---|
4867 | In an ancient version of directories, we needed a MAC on each entry. In modern times, the entire dirnode comes with a digital signature, so the MAC on each entry is redundant. |
---|
4868 | With this patch, we no longer check those MACs when reading directories, but we still produce them so that older readers will accept directories that we write. |
---|
4869 | |
---|
4870 | ] |
---|
4871 | [clean up uri-vs-cap terminology, emphasize cap instances instead of URI strings |
---|
4872 | Brian Warner <warner@lothar.com>**20091111222619 |
---|
4873 | Ignore-this: 93626385f6e7f039ada71f54feefe267 |
---|
4874 | |
---|
4875 | * "cap" means a python instance which encapsulates a filecap/dircap (uri.py) |
---|
4876 | * "uri" means a string with a "URI:" prefix |
---|
4877 | * FileNode instances are created with (and retain) a cap instance, and |
---|
4878 | generate uri strings on demand |
---|
4879 | * .get_cap/get_readcap/get_verifycap/get_repaircap return cap instances |
---|
4880 | * .get_uri/get_readonly_uri return uri strings |
---|
4881 | |
---|
4882 | * add filenode.download_to_filename() for control.py, should find a better way |
---|
4883 | * use MutableFileNode.init_from_cap, not .init_from_uri |
---|
4884 | * directory URI instances: use get_filenode_cap, not get_filenode_uri |
---|
4885 | * update/cleanup bench_dirnode.py to match, add Makefile target to run it |
---|
4886 | ] |
---|
4887 | [Makefile: add simple 'repl' target to start a python interpreter with a useful PYTHONPATH |
---|
4888 | warner@allmydata.com**20071103053255] |
---|
4889 | [filenode: add get_repair_cap(), which uses the read-write filecap for immutable files, and the verifycap for immutable files |
---|
4890 | warner@allmydata.com**20090123033836] |
---|
4891 | [dirnode: add get_repair_cap() |
---|
4892 | warner@allmydata.com**20090123034449] |
---|
4893 | [directories: in bench_dirnode.py, use a real CacheDirectoryManager instead of a fake one (because CacheDirectoryManager is a significant user of CPU and/or time) |
---|
4894 | zooko@zooko.com**20090707034119 |
---|
4895 | Ignore-this: 207a2dc346ca2c01dc7b341e88a0ca0a |
---|
4896 | ] |
---|
4897 | [Modify bench_dirnode.py to use CachingDict. |
---|
4898 | kevan@isnotajoke.com**20090705223142 |
---|
4899 | Ignore-this: 9ba62a16fd37ef281368715a887fd9f8 |
---|
4900 | ] |
---|
4901 | [immutable.Downloader: pass StorageBroker to constructor, stop being a Service |
---|
4902 | Brian Warner <warner@lothar.com>**20090815192543 |
---|
4903 | Ignore-this: af5ab12dbf75377640a670c689838479 |
---|
4904 | child of the client, access with client.downloader instead of |
---|
4905 | client.getServiceNamed("downloader"). The single "Downloader" instance is |
---|
4906 | scheduled for demolition anyways, to be replaced by individual |
---|
4907 | filenode.download calls. |
---|
4908 | ] |
---|
4909 | [test/common.py: update FakeMutableFileNode to new contents= callable scheme |
---|
4910 | Brian Warner <warner@lothar.com>**20091013052154 |
---|
4911 | Ignore-this: 62f00a76454a2190d1c8641c5993632f |
---|
4912 | ] |
---|
4913 | [Overhaul IFilesystemNode handling, to simplify tests and use POLA internally. |
---|
4914 | Brian Warner <warner@lothar.com>**20090815112846 |
---|
4915 | Ignore-this: 1db1b9c149a60a310228aba04c5c8e5f |
---|
4916 | |
---|
4917 | * stop using IURI as an adapter |
---|
4918 | * pass cap strings around instead of URI instances |
---|
4919 | * move filenode/dirnode creation duties from Client to new NodeMaker class |
---|
4920 | * move other Client duties to KeyGenerator, SecretHolder, History classes |
---|
4921 | * stop passing Client reference to dirnode/filenode constructors |
---|
4922 | - pass less-powerful references instead, like StorageBroker or Uploader |
---|
4923 | * always create DirectoryNodes by wrapping a filenode (mutable for now) |
---|
4924 | * remove some specialized mock classes from unit tests |
---|
4925 | |
---|
4926 | Detailed list of changes (done one at a time, then merged together) |
---|
4927 | |
---|
4928 | always pass a string to create_node_from_uri(), not an IURI instance |
---|
4929 | always pass a string to IFilesystemNode constructors, not an IURI instance |
---|
4930 | stop using IURI() as an adapter, switch on cap prefix in create_node_from_uri() |
---|
4931 | client.py: move SecretHolder code out to a separate class |
---|
4932 | test_web.py: hush pyflakes |
---|
4933 | client.py: move NodeMaker functionality out into a separate object |
---|
4934 | LiteralFileNode: stop storing a Client reference |
---|
4935 | immutable Checker: remove Client reference, it only needs a SecretHolder |
---|
4936 | immutable Upload: remove Client reference, leave SecretHolder and StorageBroker |
---|
4937 | immutable Repairer: replace Client reference with StorageBroker and SecretHolder |
---|
4938 | immutable FileNode: remove Client reference |
---|
4939 | mutable.Publish: stop passing Client |
---|
4940 | mutable.ServermapUpdater: get StorageBroker in constructor, not by peeking into Client reference |
---|
4941 | MutableChecker: reference StorageBroker and History directly, not through Client |
---|
4942 | mutable.FileNode: removed unused indirection to checker classes |
---|
4943 | mutable.FileNode: remove Client reference |
---|
4944 | client.py: move RSA key generation into a separate class, so it can be passed to the nodemaker |
---|
4945 | move create_mutable_file() into NodeMaker |
---|
4946 | test_dirnode.py: stop using FakeClient mockups, use NoNetworkGrid instead. This simplifies the code, but takes longer to run (17s instead of 6s). This should come down later when other cleanups make it possible to use simpler (non-RSA) fake mutable files for dirnode tests. |
---|
4947 | test_mutable.py: clean up basedir names |
---|
4948 | client.py: move create_empty_dirnode() into NodeMaker |
---|
4949 | dirnode.py: get rid of DirectoryNode.create |
---|
4950 | remove DirectoryNode.init_from_uri, refactor NodeMaker for customization, simplify test_web's mock Client to match |
---|
4951 | stop passing Client to DirectoryNode, make DirectoryNode.create_with_mutablefile the normal DirectoryNode constructor, start removing client from NodeMaker |
---|
4952 | remove Client from NodeMaker |
---|
4953 | move helper status into History, pass History to web.Status instead of Client |
---|
4954 | test_mutable.py: fix minor typo |
---|
4955 | ] |
---|
4956 | [added is_uri() function to allmydata.uri |
---|
4957 | robk-tahoe@allmydata.com**20080111024342] |
---|
4958 | [mutable WIP: merge in patches from current trunk |
---|
4959 | warner@allmydata.com**20080417200922] |
---|
4960 | [mutable.py: catch errors during publish.. previously they were ignored. oops. |
---|
4961 | warner@allmydata.com**20080412055102] |
---|
4962 | [test_mutable.py: remove spurious Retrieve during a publish test |
---|
4963 | warner@allmydata.com**20080415182038] |
---|
4964 | [mutable: improve test coverage in Retrieve, when shares change after mapupdate |
---|
4965 | warner@allmydata.com**20080423002514] |
---|
4966 | [test_mutable.py: add tests for no-servers conditions, closes #463. |
---|
4967 | warner@lothar.com**20080707191810] |
---|
4968 | [dirnode: cleanup, make get_verifier() always return a URI instance, not a string |
---|
4969 | warner@lothar.com**20080910083755] |
---|
4970 | [trivial: remove unused imports; thanks, pyflakes |
---|
4971 | zooko@zooko.com**20080925180422] |
---|
4972 | [mutable: respect the new tahoe.cfg 'shares.needed' and 'shares.total' settings |
---|
4973 | warner@allmydata.com**20081119200501] |
---|
4974 | [trivial: whitespace |
---|
4975 | zooko@zooko.com**20090118165815 |
---|
4976 | Ignore-this: 6f97042f221da3ad931c6b545edc6a30 |
---|
4977 | Ran "M-x whitespace-cleanup" on files that Toby's recent patch touched, even though they didn't have trailing whitespace. |
---|
4978 | ] |
---|
4979 | [test_dirnode: #625 run deep-check on a readonly dirnode too |
---|
4980 | warner@lothar.com**20090213205337 |
---|
4981 | Ignore-this: 2a18d33a7cc99c9959b7182e37b35077 |
---|
4982 | ] |
---|
4983 | [tests: bump up the timeout on a bunch of tests that took longer than the default timeout (120s) on François Lenny-armv5tel |
---|
4984 | zooko@zooko.com**20090605031444 |
---|
4985 | Ignore-this: 84d67849b1f8edc88bf7001e31b5f7f3 |
---|
4986 | ] |
---|
4987 | [remove upper limit on SDMF filesize |
---|
4988 | kevan@isnotajoke.com**20090620213130 |
---|
4989 | Ignore-this: 5bc48c7421c73827909a17e651799d0c |
---|
4990 | ] |
---|
4991 | [big rework of introducer client: change local API, split division of responsibilites better, remove old-code testing, improve error logging |
---|
4992 | warner@lothar.com**20090623021047] |
---|
4993 | [test_introducer.py: increase timeouts on poll() calls |
---|
4994 | warner@allmydata.com**20080205223758] |
---|
4995 | [introducer: fix bug in recent simplification caught by Brian's sharp code-reviewing eye |
---|
4996 | zooko@zooko.com**20081208231634 |
---|
4997 | Ignore-this: 29854954577018d658be49142177edf2 |
---|
4998 | ] |
---|
4999 | [#620: storage: allow mutable shares to be deleted, with a writev where new_length=0 |
---|
5000 | warner@allmydata.com**20090211053756 |
---|
5001 | Ignore-this: 81f79e0d72f7572bdc1c9f01bb91620 |
---|
5002 | ] |
---|
5003 | [storage #596: announce 'tolerates-immutable-read-overrun' to the version announcement, to indicate that a read() on an immutable share where offset+length is beyond the end of the file will return a truncated string instead of raising an exception |
---|
5004 | warner@lothar.com**20090209015602 |
---|
5005 | Ignore-this: cbd07102909449da55067184a63fc0d1 |
---|
5006 | ] |
---|
5007 | [test_introducer.py: add a test for the python2.4.0/2.4.1 bug in base64.b32decode |
---|
5008 | warner@lothar.com**20090519034101] |
---|
5009 | [switch to using RemoteException instead of 'wrapped' RemoteReferences. Should fix #653, the rref-EQ problem |
---|
5010 | warner@lothar.com**20090522004632] |
---|
5011 | [trivial: remove unused import -- thanks, pyflakes |
---|
5012 | zooko@zooko.com**20081231212556 |
---|
5013 | Ignore-this: a70cd39a7d633bde2bb5275dfd4d3781 |
---|
5014 | ] |
---|
5015 | [immutable: do not catch arbitrary exceptions/failures from the attempt to get a crypttext hash tree -- catch only ServerFailure, IntegrityCheckReject, LayoutInvalid, ShareVersionIncompatible, and DeadReferenceError |
---|
5016 | zooko@zooko.com**20090108042551 |
---|
5017 | Ignore-this: 35f208af1b9f8603df25ed69047360d1 |
---|
5018 | Once again I inserted a bug into the code, and once again it was hidden by something catching arbitrary exception/failure and assuming that it means the server failed to provide valid data. |
---|
5019 | ] |
---|
5020 | [immutable/checker.py: trap ShareVersionIncompatible too. Also, use f.check |
---|
5021 | warner@lothar.com**20090224041405 |
---|
5022 | Ignore-this: b667e8d3192116293babcacdeed42898 |
---|
5023 | instead of examining the value returned by f.trap, because the latter appears |
---|
5024 | to squash exception types down into their base classes (i.e. since |
---|
5025 | ShareVersionIncompatible is a subclass of LayoutInvalid, |
---|
5026 | f.trap(Failure(ShareVersionIncompatible)) == LayoutInvalid). |
---|
5027 | |
---|
5028 | All this resulted in 'incompatible' shares being misclassified as 'corrupt'. |
---|
5029 | ] |
---|
5030 | [immutable/checker: wrap comments to 80cols, my laptop does not have a wide screen. No functional changes. |
---|
5031 | warner@lothar.com**20090207200439 |
---|
5032 | Ignore-this: ad8f03eb17b217987268f76d15fa5655 |
---|
5033 | ] |
---|
5034 | [servermap add-lease: fix the code that's supposed to catch remote IndexErrors, I forgot that they present as ServerFailures instead. This should stop the deluge of Incidents that occur when you do add-lease against 1.3.0 servers |
---|
5035 | warner@allmydata.com**20090227070426 |
---|
5036 | Ignore-this: 3d7bc87d9587b51d44b27317d9eded23 |
---|
5037 | ] |
---|
5038 | [immutable checker add-lease: catch remote IndexError here too |
---|
5039 | warner@allmydata.com**20090227071724 |
---|
5040 | Ignore-this: 94ee6064ce26409381c6451cd50fdade |
---|
5041 | ] |
---|
5042 | [rrefutil: add check_remote utility function |
---|
5043 | warner@allmydata.com**20090227065957 |
---|
5044 | Ignore-this: d859d0fae87b7e84ad3c2893350ed519 |
---|
5045 | ] |
---|
5046 | [util/pipeline.py: new utility class to manage size-limited work pipelines, for #392 |
---|
5047 | warner@lothar.com**20090518234326] |
---|
5048 | [rrefutil: add trap_remote utility and friends |
---|
5049 | warner@allmydata.com**20090227065524 |
---|
5050 | Ignore-this: a594050cdd9bcca073d8029819dbc35 |
---|
5051 | ] |
---|
5052 | [test_util: get almost full test coverage of dictutil, starting with the original pyutil tests as a base. The remaining three uncovered lines involve funny cases of ValueOrderedDict that I can't figure out how to get at |
---|
5053 | warner@lothar.com**20090216023210 |
---|
5054 | Ignore-this: dc1f0c6d8c003c0ade38bc8f8516b04d |
---|
5055 | ] |
---|
5056 | [switch all foolscap imports to use foolscap.api or foolscap.logging |
---|
5057 | warner@lothar.com**20090522003823] |
---|
5058 | [add in-line doc that Josh wrote as he was trying to understand this code |
---|
5059 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070523221123] |
---|
5060 | [add OneShotObserverList from the amdlib tree |
---|
5061 | warner@lothar.com**20070308210738] |
---|
5062 | [confwiz: add command line options |
---|
5063 | robk-tahoe@allmydata.com**20080215014429 |
---|
5064 | |
---|
5065 | adds command line option parsing to the confwiz. |
---|
5066 | |
---|
5067 | the previous --uninstall option behaves as before, but it parsed |
---|
5068 | more explicitly with the twisted usage library. |
---|
5069 | |
---|
5070 | added is a --server option, which controls which web site the |
---|
5071 | backend script for configuration is to be found on. (it is looked |
---|
5072 | for at /native_client.php on the given server) this option can be |
---|
5073 | used on conjunction with --uninstall to control where the uninstall |
---|
5074 | is recorded |
---|
5075 | |
---|
5076 | Options: |
---|
5077 | -u, --uninstall record uninstall |
---|
5078 | -s, --server= url of server to contact |
---|
5079 | [default: https://beta.allmydata.com/] |
---|
5080 | |
---|
5081 | e.g. confwiz.py -s https://www-test.allmydata.com/ |
---|
5082 | |
---|
5083 | |
---|
5084 | ] |
---|
5085 | [confwiz: update to record install and uninstall events. |
---|
5086 | robk-tahoe@allmydata.com**20080130225207] |
---|
5087 | [confwiz: use get_config call to backend |
---|
5088 | robk-tahoe@allmydata.com**20080126010132 |
---|
5089 | |
---|
5090 | this will write an arbitrary number of config files, instead of being restricted |
---|
5091 | to just the introducer.furl, based on the response of the php backend. |
---|
5092 | the get_config is passed username/password |
---|
5093 | ] |
---|
5094 | [updating installer for beta release |
---|
5095 | secorp@allmydata.com**20080214033609] |
---|
5096 | [windows installer: remove uninstall tracking, add welcome page |
---|
5097 | robk-tahoe@allmydata.com**20080214001716 |
---|
5098 | |
---|
5099 | in justin's testing, the uninstall tracking was hanging the uninstall |
---|
5100 | process (on vista) for now, until we see enough need for it to warrant |
---|
5101 | more detailed testing/debugging/tweaks, I'm simply disabling the call |
---|
5102 | to confwiz --uninstall |
---|
5103 | |
---|
5104 | also this adds a 'welcome page' to the install process. once the user |
---|
5105 | has installed the windows build, then the installer will open a web |
---|
5106 | browser to the 'welcome page' on the website ('/welcome_install') |
---|
5107 | |
---|
5108 | ] |
---|
5109 | [windows: include latest windown build, winfuse and tray.exe |
---|
5110 | robk-tahoe@allmydata.com**20080205001250] |
---|
5111 | [windows: track uninstalls |
---|
5112 | robk-tahoe@allmydata.com**20080206201249 |
---|
5113 | |
---|
5114 | the confwiz and the native_client backend both gained hooks to track |
---|
5115 | uninstall events. however that somehow didn't make it to the uninstaller :-) |
---|
5116 | ] |
---|
5117 | [servermap: don't log late arrivals, and don't log DeadReferenceError at log.WEIRD |
---|
5118 | warner@allmydata.com**20080827003729] |
---|
5119 | [various: use util.log.err instead of twisted.log.err, so we get both Incidents and trial-test-flunking |
---|
5120 | warner@lothar.com**20080920173545] |
---|
5121 | [update assertutil to use twisted log instead of amdlib Log |
---|
5122 | robk@allmydata.com**20061130212408] |
---|
5123 | [setup: when using the foolscap "what versions are here?" feature, use allmydata.get_package_versions() instead of specifically importing allmydata, pycryptopp, and zfec |
---|
5124 | zooko@zooko.com**20080923000351] |
---|
5125 | [trivial: fix redefinition of name "log" in imports (pyflakes) |
---|
5126 | zooko@zooko.com**20090107040829 |
---|
5127 | Ignore-this: cdcf7ff84082323ebc022b186127e678 |
---|
5128 | ] |
---|
5129 | [setup: refactor versions-and-paths and use pkg_resources to find them |
---|
5130 | zooko@zooko.com**20090119210435 |
---|
5131 | Ignore-this: b368d8ede7531f1d79ee3c2c1a2cc116 |
---|
5132 | Using pkg_resources is probably better if it works -- zope.interface doesn't have a __version__ attribute that we can query, but pkg_resources knows zope.interface's version number, for one thing. |
---|
5133 | This code falls back to the old way -- looking at the __version__ attributes and __file__ attributes -- if the pkg_resources way doesn't answer. |
---|
5134 | Note that this patch also changes the capitalization of "Nevow", "Twisted", and "pyOpenSSL", and the spelling of "allmydata-tahoe". These changes are not frivolous: they are reflecting the fact that we are naming Python packages (technically called Python "distributions") instead of Python modules (technically and confusingly called Python "packages") here. The package ("distribution") is named "allmydata-tahoe". The module ("package") is named "allmydata". |
---|
5135 | ] |
---|
5136 | [setup: fix missing import -- thanks, pyflakes |
---|
5137 | zooko@zooko.com**20081125155528 |
---|
5138 | Ignore-this: 1fc042da2882b7b2f71cde93eb234a47 |
---|
5139 | ] |
---|
5140 | [setup: simplify the implementation of allmydata.get_package_versions() and add "platform" which is a human-oriented summary of the underlying operating system and machine |
---|
5141 | zooko@zooko.com**20080922235354] |
---|
5142 | [setup: simplify parsing of python version number |
---|
5143 | zooko@zooko.com**20080829000045] |
---|
5144 | [setup: emit the version of python in the list of versions |
---|
5145 | zooko@zooko.com**20080828220454] |
---|
5146 | [remove runtime dependency upon setuptools (which crept into allmydata.get_package_versions) |
---|
5147 | warner@allmydata.com**20080105025341] |
---|
5148 | [add option to show version and path to the tahoe executable |
---|
5149 | cgalvan@mail.utexas.edu**20090116184751] |
---|
5150 | [dirnode deep_traverse: insert a turn break (fireEventually) at least once every 100 files, otherwise a CHK followed by more than 158 LITs can overflow the stack, sort of like #237. |
---|
5151 | warner@allmydata.com**20090313233135 |
---|
5152 | Ignore-this: 39b78faa947ed9461f2d120f6843e59f |
---|
5153 | ] |
---|
5154 | [Modify markup of Tahoe web pages to be more amenable to styling; some minor changes of wording. |
---|
5155 | Kevin Reid <kpreid@mac.com>**20090526232545 |
---|
5156 | Ignore-this: 8845937f0df6c7ddc07abe3211428a6f |
---|
5157 | ] |
---|
5158 | [welcome page: add link to statistics page |
---|
5159 | warner@allmydata.com**20080710003722] |
---|
5160 | [wui: fix bug in which empty directory is marked as "unreadable", add test, remove exclamation point |
---|
5161 | zooko@zooko.com**20090407182834 |
---|
5162 | Ignore-this: 2623a7ecd9c7c46b3c984fbaddf43ad0 |
---|
5163 | ] |
---|
5164 | [WUI: fix display of empty directories, it threw an exception before |
---|
5165 | warner@allmydata.com**20090320235809 |
---|
5166 | Ignore-this: e598bb806d75411d202ba90fc251ad2b |
---|
5167 | ] |
---|
5168 | [web: when a dirnode can't be read, emit a regular HTML page but with the child-table and upload-forms replaced with an apologetic message. Make sure to include the 'get info' links so the user can do a filecheck |
---|
5169 | warner@lothar.com**20090307105601 |
---|
5170 | Ignore-this: f949d6bd58c0c2fd60fd5fa730115f3f |
---|
5171 | ] |
---|
5172 | [web/directory: add a link from readwrite directories to a read-only version, and fix the 'SI=xxx' header to actually use the storage index, not the writekey |
---|
5173 | warner@allmydata.com**20090131013205 |
---|
5174 | Ignore-this: a1f21f81e6dbf88e591085efd1a57740 |
---|
5175 | ] |
---|
5176 | [wui: edit some of the human-readable parts of the wui such as button labels |
---|
5177 | zooko@zooko.com**20090407185459 |
---|
5178 | Ignore-this: 145722f4627271ea1d43107a0c7ce0e1 |
---|
5179 | (The word "parent" suggests that you can go up a directory hierarchy -- perhaps that word is vestigial.) |
---|
5180 | ] |
---|
5181 | [tests: bump up timeouts so that the tests can finish before timeout on Francois's little arm box |
---|
5182 | zooko@zooko.com**20090608225557 |
---|
5183 | Ignore-this: fb83698338b2f12546cd3e1dcb896d34 |
---|
5184 | ] |
---|
5185 | [tests: increase timeouts on some other tests that timed-out on Francois's arm box |
---|
5186 | zooko@zooko.com**20090605143437 |
---|
5187 | Ignore-this: 2903cc20d914fc074c8d7a6c47740ba6 |
---|
5188 | ] |
---|
5189 | [unit tests: bump up a timeout which I encountered when running on a very slow machine |
---|
5190 | zooko@zooko.com**20071129204735] |
---|
5191 | [tests: bump up timeout on a test that timed out on draco |
---|
5192 | zooko@zooko.com**20090610044628 |
---|
5193 | Ignore-this: f598b98cbae44dc947937c6ca54c10cb |
---|
5194 | ] |
---|
5195 | [mutable/filenode.py: set _writekey to None, rather than leaving it missing |
---|
5196 | Brian Warner <warner@lothar.com>**20090626062022 |
---|
5197 | Ignore-this: be111c37dabd6c7aa47abd7bf160926e |
---|
5198 | |
---|
5199 | This will at least turn the really really weird error when a repair of a |
---|
5200 | readonly mutable file is attempted into a merely really weird assertion that |
---|
5201 | mentions "repair currently requires a writecap". |
---|
5202 | ] |
---|
5203 | [remove trailing whitespace |
---|
5204 | Brian Warner <warner@lothar.com>**20090629200358 |
---|
5205 | Ignore-this: 7a3756618dcfca0a40acb4c3d15f6440 |
---|
5206 | ] |
---|
5207 | [More lossmodel work, on repair. |
---|
5208 | Shawn Willden <shawn-tahoe@willden.org>**20090116025648] |
---|
5209 | [Loss model work (temp1) |
---|
5210 | Shawn Willden <shawn@willden.org>**20090115030058] |
---|
5211 | [Statistics module |
---|
5212 | Shawn Willden <shawn-tahoe@willden.org>**20090114021235 |
---|
5213 | |
---|
5214 | Added a statistics module for calculating various facets of |
---|
5215 | share survival statistics. |
---|
5216 | ] |
---|
5217 | [util/cachedir.py: add a cache-directory manager class, which expires+deletes unused files after a while |
---|
5218 | warner@allmydata.com**20081030200120] |
---|
5219 | [change max filesize limit tests |
---|
5220 | kevan@isnotajoke.com**20090620212822 |
---|
5221 | Ignore-this: 38e7c62a308c3c93e79df4bf72f4f675 |
---|
5222 | |
---|
5223 | Instead of testing to see that the previous SDMF filesize limit was being |
---|
5224 | obeyed, we now test to make sure that we can insert files larger than that |
---|
5225 | limit. |
---|
5226 | ] |
---|
5227 | [repairer: raise a better exception when faced with a readonly filenode. Still |
---|
5228 | Brian Warner <warner@lothar.com>**20090626063230 |
---|
5229 | Ignore-this: a100005b973a6a57566b943073352828 |
---|
5230 | produces an error, though. |
---|
5231 | ] |
---|
5232 | [repairer.py: wrap to 80cols. No code changes. |
---|
5233 | Brian Warner <warner@lothar.com>**20090701000047 |
---|
5234 | Ignore-this: 4a84ac95a849be0656d362882876082a |
---|
5235 | ] |
---|
5236 | [clean up storage_broker interface: should fix #732 |
---|
5237 | warner@lothar.com**20090621235119 |
---|
5238 | Ignore-this: fb93cd670e809eed2bc123142dd8d4ff |
---|
5239 | ] |
---|
5240 | [client.py: improve docstring |
---|
5241 | warner@lothar.com**20090216231532 |
---|
5242 | Ignore-this: bbaa9e3f63fdb0048e3125c4681b2d1f |
---|
5243 | ] |
---|
5244 | [client: add get_servers() |
---|
5245 | zooko@zooko.com**20081208230400 |
---|
5246 | Ignore-this: 1b9b3ff483849563342f467c39fdd15d |
---|
5247 | ] |
---|
5248 | [introducer: simplify get_permuted_peers() implementation and add get_peers() |
---|
5249 | zooko@zooko.com**20081208225725 |
---|
5250 | Ignore-this: 8299c0dc187521f34187e54c72e57dc9 |
---|
5251 | ] |
---|
5252 | [tests/no_network: move GET into the GridTestMixin class |
---|
5253 | warner@allmydata.com**20090225003300 |
---|
5254 | Ignore-this: 7779ad38c2d687ae328ba3cb6164a7a4 |
---|
5255 | ] |
---|
5256 | [test_repairer: change to use faster no_network.GridTestMixin, split Verifier tests into separate cases, refactor judgement funcs into shared methods |
---|
5257 | warner@lothar.com**20090224041506 |
---|
5258 | Ignore-this: 584ce72d6276da5edc00562793d4ee53 |
---|
5259 | ] |
---|
5260 | [immutable: tests: the real WRITE_LEEWAY is 35 (it was a mistake to move it from 10 to 35 earlier -- I had seen a failure in which it took 35 times as many writes as I thought were optimal, but I misread and thought it took only 20 times as many) |
---|
5261 | zooko@zooko.com**20090210055348 |
---|
5262 | Ignore-this: e81c34d31fe2e3fd641a284a300352cc |
---|
5263 | ] |
---|
5264 | [immutable: tests: sigh, raise, again the limit of how many extra writes you can do and still pass this test |
---|
5265 | zooko@zooko.com**20090210020931 |
---|
5266 | Ignore-this: 91faf5d6919ca27f8212efc8d19b04c5 |
---|
5267 | Obviously requiring the code under test to perform within some limit isn't very meaningful if we raise the limit whenever the test goes outside of it. |
---|
5268 | But I still don't want to remove the test code which measures how many writes (and, elsewhere, how many reads) a client does in order to fulfill these duties. |
---|
5269 | Let this number -- now 20 -- stand as an approximation of the inefficiency of our code divided by my mental model of how many operations are actually optimal for these duties. |
---|
5270 | |
---|
5271 | ] |
---|
5272 | [test_repairer: change Repairer to use much-faster no_network.GridTestMixin. As a side-effect, fix what I think was a bug: some of the assert-minimal-effort-expended checks were mixing write counts and allocate counts |
---|
5273 | warner@lothar.com**20090223234227 |
---|
5274 | Ignore-this: d58bd0a909f9939775730cda4a858cae |
---|
5275 | ] |
---|
5276 | [test_repairer.py: hush pyflakes: remove duplicate/shadowed function name, by using the earlier definition (which is identical) |
---|
5277 | warner@allmydata.com**20090112214509] |
---|
5278 | [immutable: test: add a test after attempting to repair from corruption: does a full verify run give the file a clean bill of health? If not, the you haven't successfully repaired it. |
---|
5279 | zooko@zooko.com**20090210010149 |
---|
5280 | Ignore-this: 43faea747e7afccaae230d50c067adc6 |
---|
5281 | This will make the repairer tests more consistent -- less accidentally passing due to getting lucky. |
---|
5282 | ] |
---|
5283 | [immutable: tests: assert that verifier gives a clean bill of health after corruption and repair (the previous patch mistakenly did this only after deletion and repair), and also test whether deleting seven other shares and then downloading works. Also count the number of shares stored in the local filesystem. |
---|
5284 | zooko@zooko.com**20090210020841 |
---|
5285 | Ignore-this: ac803d0599f336c308fe74a2582e6aa4 |
---|
5286 | ] |
---|
5287 | [test_repairer: wrap comments to 80cols, my laptop does not have a wide screen. No functional changes. |
---|
5288 | warner@lothar.com**20090207200626 |
---|
5289 | Ignore-this: f539c156f3b79cfe49c7cf0fa788994e |
---|
5290 | ] |
---|
5291 | [immutable: tests: put shares back to their pristine condition in between each test of corrupting-and-repairing them |
---|
5292 | zooko@zooko.com**20090210002956 |
---|
5293 | Ignore-this: 45de680a6ac69b1845c0c74534913dec |
---|
5294 | This is important, because if the repairer doesn't completely repair all kinds of corruption (as the current one doesn't), then the successive tests get messed up by assuming that the shares were uncorrupted when the test first set about to corrupt them. |
---|
5295 | ] |
---|
5296 | [test_repairer: disable repair-from-corruption tests until other things are improved well enough to make it useful |
---|
5297 | warner@allmydata.com**20090211210159 |
---|
5298 | Ignore-this: bf2c780be028f0f5556f1aed04cc29b9 |
---|
5299 | ] |
---|
5300 | [immutable repairer: errback any pending readers of DownUpConnectorwhen it runs out of bytes, and test that fact |
---|
5301 | zooko@zooko.com**20090212021129 |
---|
5302 | Ignore-this: efd1fac753dad541fe5a0f232bcbf161 |
---|
5303 | ] |
---|
5304 | [immutable: repairer: add a simple test to exercise the "leftover" code path, fix the bug (and rename the variable "leftover" to "extra") |
---|
5305 | zooko@zooko.com**20090210181245 |
---|
5306 | Ignore-this: 8426b3cd55ff38e390c4d1d5c0b87e9d |
---|
5307 | ] |
---|
5308 | [immutable: tighten preconditions -- you can write empty strings or read zero bytes, and add the first simple unit test of DownUpConnector |
---|
5309 | zooko@zooko.com**20090210065647 |
---|
5310 | Ignore-this: 81aad112bb240b23f92e38f06b4ae140 |
---|
5311 | ] |
---|
5312 | [add more information to NotEnoughSharesError, split out new exceptions for no-servers and no-source-of-ueb-hash |
---|
5313 | warner@lothar.com**20090304013715] |
---|
5314 | [upload: when using a Helper, insist that it provide protocols/helper/v1 . Related to #538. |
---|
5315 | warner@allmydata.com**20081122022932] |
---|
5316 | [more refactoring: move get_all_serverids() and get_nickname_for_serverid() from Client to storage_broker |
---|
5317 | warner@lothar.com**20090602030750] |
---|
5318 | [test/no_network.py: add a basic stats provider |
---|
5319 | warner@lothar.com**20090223233937 |
---|
5320 | Ignore-this: c9f3cc4eed99cfc36f68938ceff4162c |
---|
5321 | ] |
---|
5322 | [test/no_network: do startService on the storage servers, make it easier to customize the storage servers |
---|
5323 | warner@lothar.com**20090220022254 |
---|
5324 | Ignore-this: e62f328721c007e4c5ee023a6efdf66d |
---|
5325 | ] |
---|
5326 | [more storage_broker refactoring: downloader gets a broker instead of a client, |
---|
5327 | warner@lothar.com**20090602022511 |
---|
5328 | use Client.get_storage_broker() accessor instead of direct attribute access. |
---|
5329 | ] |
---|
5330 | [immutable/download: instrument do-you-have-block responses to investigate #732 |
---|
5331 | warner@lothar.com**20090621041209] |
---|
5332 | [start to factor server-connection-management into a distinct 'StorageServerFarmBroker' object, separate from the client and the introducer. This is the starting point for #467: static server selection |
---|
5333 | warner@lothar.com**20090601210604] |
---|
5334 | [introducer: add get_nickname_for_peerid |
---|
5335 | warner@allmydata.com**20080906050700] |
---|
5336 | [web checker_results: include a table of servers in permuted order, so you can see the places where new servers have been inserted |
---|
5337 | warner@allmydata.com**20081205080309] |
---|
5338 | [mutable publish: if we are surprised by shares that match what we would have written anyways, don't be surprised. This should fix one of the two #546 problems, in which we re-use a server and forget that we already sent them a share. |
---|
5339 | warner@allmydata.com**20081210044449] |
---|
5340 | [test_upload: add test of maximum-immutable-share-size, to complete the last item of #538 |
---|
5341 | warner@lothar.com**20090209014127 |
---|
5342 | Ignore-this: 943b9b11812ad784ec824db7a8a7aff9 |
---|
5343 | ] |
---|
5344 | [upload: don't use servers which can't support the share size we need. This ought to avoid #439 problems. Some day we'll have a storage server which advertises support for a larger share size. No tests yet. |
---|
5345 | warner@allmydata.com**20081122022812] |
---|
5346 | [test_checker: improve test coverage for checker results |
---|
5347 | warner@lothar.com**20090223201943 |
---|
5348 | Ignore-this: 83e173602f0f4c811a7a9893d85385df |
---|
5349 | ] |
---|
5350 | [mutable repairer: skip repair of readcaps instead of throwing an exception. |
---|
5351 | Brian Warner <warner@lothar.com>**20090701011343 |
---|
5352 | Ignore-this: 2c24493426cdc1db8f0e3815ee2c5f87 |
---|
5353 | This should improve the behavior of #625 a bit: at least all the files will |
---|
5354 | get repaired. |
---|
5355 | ] |
---|
5356 | [hush pyflakes with recent FileTooLarge removal |
---|
5357 | warner@lothar.com**20090621231757 |
---|
5358 | Ignore-this: 4231b38c7e9091b0577b07ec99ac2df0 |
---|
5359 | ] |
---|
5360 | [directories: make the profiling behavior of bench_dirnode.py accessible by adding '--profile' to the cmdline |
---|
5361 | zooko@zooko.com**20090707033035 |
---|
5362 | Ignore-this: 159c36ac1cafaa4e9a6239025ef9d57b |
---|
5363 | ] |
---|
5364 | [directories: update the directory benchmarks to exercise the unpack-and-repack functionality, and add optional profiling |
---|
5365 | zooko@zooko.com**20090705162953 |
---|
5366 | Ignore-this: 4a1b11c9b1880772c923b3c03e10770b |
---|
5367 | ] |
---|
5368 | [directories: make initialization of the download cache lazy |
---|
5369 | zooko@zooko.com**20090708004040 |
---|
5370 | Ignore-this: 3c3714ccc09ae1de811664d52211e143 |
---|
5371 | If you open up a directory containing thousands of files, it currently computes the cache filename and checks for the cache file on disk immediately for each immutble file in that directory. With this patch, it delays those steps until you try to do something with an immutable file that could use the cache. |
---|
5372 | ] |
---|
5373 | [Add tests for CachingDict, _pack_contents, _unpack_contents |
---|
5374 | kevan@isnotajoke.com**20090704034328 |
---|
5375 | Ignore-this: 12f3e989244288c211ba393d3a205111 |
---|
5376 | ] |
---|
5377 | [Use CachingDict instead of dict in dirnode.py |
---|
5378 | kevan@isnotajoke.com**20090704034301 |
---|
5379 | Ignore-this: 53f12260176a5170b3599eda54f38e98 |
---|
5380 | ] |
---|
5381 | [Alter Adder + Adder tests to look for 'only-files' instead of 'only_files' |
---|
5382 | kevan@isnotajoke.com**20090720034318 |
---|
5383 | Ignore-this: 65d66133f4db6c082e716864bc273e13 |
---|
5384 | ] |
---|
5385 | [Add 'only_files' option to the overwrite field in Adder |
---|
5386 | kevan@isnotajoke.com**20090718030010 |
---|
5387 | Ignore-this: 56605f6740f692549acdd9b236ce6443 |
---|
5388 | ] |
---|
5389 | [Add unit tests for the Adder in dirnode.py |
---|
5390 | kevan@isnotajoke.com**20090718195049 |
---|
5391 | Ignore-this: 93434af3656249962cf9bc6d7ac5bc01 |
---|
5392 | ] |
---|
5393 | [Add tests for new PUT behavior |
---|
5394 | kevan@isnotajoke.com**20090720034632 |
---|
5395 | Ignore-this: a64a8e8767b4d03d87445104475b045d |
---|
5396 | ] |
---|
5397 | [add parser for immutable directory caps: DIR2-CHK, DIR2-LIT, DIR2-CHK-Verifier |
---|
5398 | Brian Warner <warner@lothar.com>**20091104181351 |
---|
5399 | Ignore-this: 854398cc7a75bada57fa97c367b67518 |
---|
5400 | ] |
---|
5401 | [rename NewDirectoryNode to DirectoryNode, NewDirectoryURI to DirectoryURI |
---|
5402 | Brian Warner <warner@lothar.com>**20090717221549 |
---|
5403 | Ignore-this: 5e6226e8d9fba824bf45f67ea5821e0e |
---|
5404 | ] |
---|
5405 | [interfaces: remove spurious line that counted against the figleaf coverage |
---|
5406 | warner@allmydata.com**20080206224126] |
---|
5407 | [rename "get_verifier()" to "get_verify_cap()" |
---|
5408 | zooko@zooko.com**20081208184411 |
---|
5409 | Ignore-this: 3ea4d7a78c802b23f628a37cc643c11a |
---|
5410 | ] |
---|
5411 | [test_dirnode.py: convert Deleter to new no-network gridtest |
---|
5412 | warner@lothar.com**20090216232348 |
---|
5413 | Ignore-this: 8041739442ec4db726675e48f9775ae9 |
---|
5414 | ] |
---|
5415 | [mutable.modify(): after UCWE, publish even if the second invocation of the modifier didn't modify anything. For #551. |
---|
5416 | warner@allmydata.com**20081206044923] |
---|
5417 | [test/benchmark: benchmark the time to pack and unpack dirnodes |
---|
5418 | zooko@zooko.com**20090704224300 |
---|
5419 | Ignore-this: cd8f6a6ded44a3f6f102f9cd0b60ca62 |
---|
5420 | See also the prof_benchmarks() function in this file which will run the benchmarks under profiling. |
---|
5421 | ] |
---|
5422 | [Allow tests to pass with -OO by turning some AssertionErrors (the ones that |
---|
5423 | Brian Warner <warner@lothar.com>**20090715064510 |
---|
5424 | Ignore-this: db08d38b720a5260b5d1dc6d6a9878c1 |
---|
5425 | we actually exercise during tests) into more specific exceptions, so they |
---|
5426 | don't get optimized away. The best rule to follow is probably this: if an |
---|
5427 | exception is worth testing, then it's part of the API, and AssertionError |
---|
5428 | should never be part of the API. Closes #749. |
---|
5429 | ] |
---|
5430 | [Tolerate unknown URI types in directory structures. Part of #683. |
---|
5431 | Brian Warner <warner@lothar.com>**20090703010749 |
---|
5432 | Ignore-this: afd0e15e2e39d3b87743ec7ccd87054d |
---|
5433 | |
---|
5434 | The idea is that future versions of Tahoe will add new URI types that this |
---|
5435 | version won't recognize, but might store them in directories that we *can* |
---|
5436 | read. We should handle these "objects from the future" as best we can. |
---|
5437 | Previous releases of Tahoe would just explode. With this change, we'll |
---|
5438 | continue to be able to work with everything else in the directory. |
---|
5439 | |
---|
5440 | The code change is to wrap anything we don't recognize as an UnknownNode |
---|
5441 | instance (as opposed to a FileNode or DirectoryNode). Then webapi knows how |
---|
5442 | to render these (mostly by leaving fields blank), deep-check knows to skip |
---|
5443 | over them, deep-stats counts them in "count-unknown". You can rename and |
---|
5444 | delete these things, but you can't add new ones (because we wouldn't know how |
---|
5445 | to generate a readcap to put into the dirnode's rocap slot, and because this |
---|
5446 | lets us catch typos better). |
---|
5447 | ] |
---|
5448 | [web/directory: t=manifest output=html: make the caps into clickable hrefs |
---|
5449 | warner@allmydata.com**20081007201845] |
---|
5450 | [web/info: don't let an unrecoverable file break the page (show ? instead of a size) |
---|
5451 | warner@allmydata.com**20081107045117] |
---|
5452 | [dirnode.py: dirnode.delete which hits UCWE should not fail with NoSuchChildError. Fixes #550. |
---|
5453 | warner@allmydata.com**20081206040837] |
---|
5454 | [test_dirnode: add an explainError call |
---|
5455 | warner@allmydata.com**20081119220212] |
---|
5456 | [MutableFileNode.modify: pass first_time= and servermap= to the modifier callback |
---|
5457 | warner@allmydata.com**20081206040710] |
---|
5458 | [test_mutable.py: test replacing a file that has one new outlier share present: closes #272 |
---|
5459 | warner@allmydata.com**20080514201041] |
---|
5460 | [web/directory.py: really really fix #553. Unfortunately it's tricky to simulate the behavior of a brower's relative-url handling in a unit test. |
---|
5461 | warner@allmydata.com**20081206051412] |
---|
5462 | [web: fix moreinfo link |
---|
5463 | zooko@zooko.com**20081205212939 |
---|
5464 | Ignore-this: 89913601a159437a2c151dd3652e6a94 |
---|
5465 | ] |
---|
5466 | [web: "More Info" link describes the same file that the "file" link points to, rather than to the file under the same name in this directory |
---|
5467 | zooko@zooko.com**20081205210502 |
---|
5468 | Ignore-this: 5017754e11749b376c7fa66d1acb2a58 |
---|
5469 | It's a subtle but real difference. |
---|
5470 | Fixes #553 -- "More Info" link should point to a file/dir, not a dir+childname . |
---|
5471 | ] |
---|
5472 | [webapi: pass client through constructor arguments, remove IClient, should make it easier to test web renderers in isolation |
---|
5473 | warner@lothar.com**20090220181554 |
---|
5474 | Ignore-this: e7848cd1bee8faf2ce7aaf040b9bf8e3 |
---|
5475 | ] |
---|
5476 | [webish: make /cap/ equivalent to /uri/, accepting both with the same meanings. Closes #428 |
---|
5477 | warner@allmydata.com**20080603213400] |
---|
5478 | [web: make nickname more visible in the welcome page, closes #361 |
---|
5479 | warner@allmydata.com**20080603220210] |
---|
5480 | [webish: add an extra newline to JSON output |
---|
5481 | warner@lothar.com**20080915204314] |
---|
5482 | [web: make t=json stats pages use text/plain, instead of leaving it at text/html |
---|
5483 | warner@allmydata.com**20080726002427] |
---|
5484 | [web: add /status/?t=json, with active upload/download ops. Addresses #493. |
---|
5485 | warner@allmydata.com**20080726004110] |
---|
5486 | [web/directory.py: slight shuffle to improve test coverage |
---|
5487 | warner@allmydata.com**20081029045406] |
---|
5488 | [web: test (and fix) PUT DIRURL t=uri, which replaces a directory in-place with some other cap |
---|
5489 | warner@allmydata.com**20081029045446] |
---|
5490 | [webapi: introducer stats: add 'announcement_distinct_hosts' to the t=json form, to show how many distinct hosts are providing e.g. storage services |
---|
5491 | warner@allmydata.com**20081118213015] |
---|
5492 | [rollback the feature of making "ambient upload authority" configurable |
---|
5493 | zooko@zooko.com**20090121024735 |
---|
5494 | Ignore-this: 3fcea1b8179e6278adc360414b527b8b |
---|
5495 | |
---|
5496 | This reverses some, but not all, of the changes that were committed in the following set of patches. |
---|
5497 | |
---|
5498 | rolling back: |
---|
5499 | |
---|
5500 | Sun Jan 18 09:54:30 MST 2009 toby.murray |
---|
5501 | * add 'web.ambient_upload_authority' as a paramater to tahoe.cfg |
---|
5502 | |
---|
5503 | M ./src/allmydata/client.py -1 +3 |
---|
5504 | M ./src/allmydata/test/common.py -7 +9 |
---|
5505 | A ./src/allmydata/test/test_ambient_upload_authority.py |
---|
5506 | M ./src/allmydata/web/root.py +12 |
---|
5507 | M ./src/allmydata/webish.py -1 +4 |
---|
5508 | Sun Jan 18 09:56:08 MST 2009 zooko@zooko.com |
---|
5509 | * trivial: whitespace |
---|
5510 | I ran emacs's "M-x whitespace-cleanup" on the files that Toby's recent patch had touched that had trailing whitespace on some lines. |
---|
5511 | |
---|
5512 | M ./src/allmydata/test/test_ambient_upload_authority.py -9 +8 |
---|
5513 | M ./src/allmydata/web/root.py -2 +1 |
---|
5514 | M ./src/allmydata/webish.py -2 +1 |
---|
5515 | Mon Jan 19 14:16:19 MST 2009 zooko@zooko.com |
---|
5516 | * trivial: remove unused import noticed by pyflakes |
---|
5517 | |
---|
5518 | M ./src/allmydata/test/test_ambient_upload_authority.py -1 |
---|
5519 | Mon Jan 19 21:38:35 MST 2009 toby.murray |
---|
5520 | * doc: describe web.ambient_upload_authority |
---|
5521 | |
---|
5522 | M ./docs/configuration.txt +14 |
---|
5523 | M ./docs/frontends/webapi.txt +11 |
---|
5524 | Mon Jan 19 21:38:57 MST 2009 zooko@zooko.com |
---|
5525 | * doc: add Toby Murray to the CREDITS |
---|
5526 | |
---|
5527 | M ./CREDITS +4 |
---|
5528 | ] |
---|
5529 | [trivial: whitespace |
---|
5530 | zooko@zooko.com**20090118165608 |
---|
5531 | Ignore-this: 8539e7e73e43f459f7b82e84dface95c |
---|
5532 | I ran emacs's "M-x whitespace-cleanup" on the files that Toby's recent patch had touched that had trailing whitespace on some lines. |
---|
5533 | ] |
---|
5534 | [trivial: remove unused import noticed by pyflakes |
---|
5535 | zooko@zooko.com**20090119211619 |
---|
5536 | Ignore-this: 4999f513a5c8d73ed8f79c2b012fea6b |
---|
5537 | ] |
---|
5538 | [doc: describe web.ambient_upload_authority |
---|
5539 | toby.murray**20090120043835 |
---|
5540 | Ignore-this: cc1920b2c5d4d587af84c4d251ad0e4b |
---|
5541 | ] |
---|
5542 | [add 'web.ambient_upload_authority' as a paramater to tahoe.cfg |
---|
5543 | toby.murray**20090118165430 |
---|
5544 | Ignore-this: 2c6ed484009c03fe9db1bb6eb67500ff |
---|
5545 | ] |
---|
5546 | [web/root.py: fix minor typo |
---|
5547 | warner@lothar.com**20080707071816] |
---|
5548 | [web: fix handling of reliability page when Numeric is not available |
---|
5549 | warner@lothar.com**20090217015658 |
---|
5550 | Ignore-this: 9d329182f1b2e5f812e5e7eb5f4cf2ed |
---|
5551 | ] |
---|
5552 | [webapi: modify streaming deep-manifest/deep-checker to emit an ERROR: line if they encounter an unrecoverable+untraversable directory. For #590. |
---|
5553 | warner@allmydata.com**20090225051335 |
---|
5554 | Ignore-this: e6bc49368fb0e7ada7cff477fd63ffe6 |
---|
5555 | ] |
---|
5556 | [make streaming-manifest stop doing work after the HTTP connection is dropped |
---|
5557 | warner@allmydata.com**20090124013908] |
---|
5558 | [test_web: add (disabled) test to see what happens when deep-check encounters an unrecoverable directory. We still need code changes to improve this behavior. |
---|
5559 | warner@lothar.com**20090224214017 |
---|
5560 | Ignore-this: e839f1b0ec40f53fedcd809c2a30d5f9 |
---|
5561 | ] |
---|
5562 | [test_deepcheck: switch deep-check tests to use no-network too. This cuts the runtime down by about 50% |
---|
5563 | warner@allmydata.com**20090225030457 |
---|
5564 | Ignore-this: b3a98ed18c5752c9016c047e95d42b |
---|
5565 | ] |
---|
5566 | [test_deepcheck: convert MutableChecker to no-network GridTest |
---|
5567 | warner@allmydata.com**20090225020010 |
---|
5568 | Ignore-this: eccba7fda129330b642886271a61a573 |
---|
5569 | ] |
---|
5570 | [dirnode.py: when doing deep-traverse, walk each directory in alphabetical order, to make things like 'manifest' more predictable |
---|
5571 | warner@allmydata.com**20090313065046 |
---|
5572 | Ignore-this: 9a80055a93a6b11853d4e8202bacec14 |
---|
5573 | ] |
---|
5574 | [expirer: clean up constructor args, add tahoe.cfg controls, use cutoff_date instead of date_cutoff |
---|
5575 | warner@allmydata.com**20090319010009 |
---|
5576 | Ignore-this: 2b6aaa6d5e6ff9fd417f32978b443fd2 |
---|
5577 | ] |
---|
5578 | [change StorageServer to take nodeid in the constructor, instead of assigning it later, since it's cleaner and because the original problem (Tubs not being ready until later) went away |
---|
5579 | warner@lothar.com**20090218222301 |
---|
5580 | Ignore-this: 740d582f20c93bebf60e21d9a446d3d2 |
---|
5581 | ] |
---|
5582 | [expirer: change setup, config options, in preparation for adding tahoe.cfg controls |
---|
5583 | warner@allmydata.com**20090319002138 |
---|
5584 | Ignore-this: b23a53e97f2a9fb7a005e9fe40e83fac |
---|
5585 | ] |
---|
5586 | [expirer: track mutable-vs-immutable sharecounts and sizes, report them on the web status page for comparison |
---|
5587 | warner@allmydata.com**20090318202504 |
---|
5588 | Ignore-this: 87e809bf5dedef3f0bc8f4a7b90e42d2 |
---|
5589 | ] |
---|
5590 | [test_storage: solaris doesn't appear to give the same block count as other platforms, so don't assert as much about 'diskbytes' recovered |
---|
5591 | warner@lothar.com**20090307084518 |
---|
5592 | Ignore-this: 55b35c094ce78c50c8ede42062c5ea13 |
---|
5593 | ] |
---|
5594 | [storage.expirer: exercise the last missing line of webstatus code |
---|
5595 | warner@lothar.com**20090309033828 |
---|
5596 | Ignore-this: fc4aa34734cae32eec1db623ca0b145b |
---|
5597 | ] |
---|
5598 | [expirer: tolerate corrupt shares, add them to the state and history for future examination |
---|
5599 | warner@lothar.com**20090309030840 |
---|
5600 | Ignore-this: 5ae7e68471ed700cc68beb408e0f303 |
---|
5601 | ] |
---|
5602 | [expirer: add mode to expire only-mutable or only-immutable shares |
---|
5603 | warner@lothar.com**20090317065118 |
---|
5604 | Ignore-this: b0b25427e3b1516bdfe293528b8e4a4e |
---|
5605 | ] |
---|
5606 | [GC: add date-cutoff -based expiration, add proposed docs |
---|
5607 | warner@lothar.com**20090317051041 |
---|
5608 | Ignore-this: a5c0ecbcc2666eb04f2daa67331d1948 |
---|
5609 | ] |
---|
5610 | [expirer: make web display a bit more consistent |
---|
5611 | warner@lothar.com**20090307221442 |
---|
5612 | Ignore-this: 7fec9d9bffc0bddeb51c1baa8e7ea020 |
---|
5613 | ] |
---|
5614 | [web/storage.py: tolerate unknown-future displays, I'm not sure why LeaseCrawler.test_unpredictable_future didn't catch this |
---|
5615 | warner@lothar.com**20090307220243 |
---|
5616 | Ignore-this: 3d4e5baa8cc6d5d26edcea29fda8593d |
---|
5617 | ] |
---|
5618 | [dirnode: add 'tahoe'/'linkcrtime' and 'tahoe'/'linkmotime' to take the place of what 'mtime'/'ctime' originally did, and make the 'tahoe' subdict be unwritable through the set_children API |
---|
5619 | zooko@zooko.com**20090411225205 |
---|
5620 | Ignore-this: b48b0812f353891c62f371bedb3e9880 |
---|
5621 | Also add extensive documentation in docs/frontends/webapi.txt about the behaviors of these values. See ticket #628. |
---|
5622 | ] |
---|
5623 | [docs/dirnodes.txt: add notes on dirnode sizes |
---|
5624 | warner@allmydata.com**20080213234045] |
---|
5625 | [docs/dirnodes.txt: rewrite to reflect 0.7.0's RSA-based SDMF dirnodes |
---|
5626 | warner@allmydata.com**20080130011358] |
---|
5627 | [dirnodes.txt: minor edits |
---|
5628 | warner@allmydata.com**20070703201648] |
---|
5629 | [docs: add not to dirnode.txt that it is obsolete |
---|
5630 | zooko@zooko.com**20080108165025] |
---|
5631 | [document our current directory node (dirnode) design |
---|
5632 | warner@allmydata.com**20070703003224] |
---|
5633 | [docs/webapi.txt: update to discuss tahoe.cfg, not BASEDIR/webport |
---|
5634 | warner@lothar.com**20081203010612] |
---|
5635 | [docs/webapi.txt: update helper section to discuss tahoe.cfg |
---|
5636 | warner@lothar.com**20081203010726] |
---|
5637 | [docs: rename wapi.txt to webapi.txt |
---|
5638 | zooko@zooko.com**20090114195348 |
---|
5639 | Ignore-this: 419685f2807714bab4069fbaa3a02c1c |
---|
5640 | Because Brian argues that the file contains a description of the wui as well as of the wapi, and because the name "webapi.txt" might be more obvious to the untrained eye. |
---|
5641 | ] |
---|
5642 | [wui/wapi: change the default port number from 8123 to 3456 to avoid conflict with TorButton |
---|
5643 | zooko@zooko.com**20081125235737 |
---|
5644 | Ignore-this: 47ea30bafd5917a7e1dbc88aa0190f8e |
---|
5645 | See ticket #536 for details. |
---|
5646 | ] |
---|
5647 | [macfuse: another tahoe fuse implementation |
---|
5648 | robk-tahoe@allmydata.com**20080215003510 |
---|
5649 | |
---|
5650 | This is the result of various experimentation done into using python-fuse |
---|
5651 | to provide access to tahoe on the mac. It's rough in quite a few places, |
---|
5652 | and is really the result of investigation more than a thorough |
---|
5653 | implemenation of the fuse api. |
---|
5654 | |
---|
5655 | upon launch, it looks for the users root_dir by opening ~/.tahoe/node.url |
---|
5656 | and ~/.tahoe/private/root_dir.cap it then proceeds to cache the directory |
---|
5657 | structure found by walking the users tahoe drive (safely in the face of |
---|
5658 | directory loops) into memory and then mounts that filesystem. |
---|
5659 | |
---|
5660 | when a file is read, it calls the tahoe node to first download the file |
---|
5661 | into a cache directory (~/.tahoe/_cache) and then serves up the file |
---|
5662 | from there. |
---|
5663 | |
---|
5664 | when a file is written, a temporary file is allocated within the tmp dir |
---|
5665 | of the cache, and upon close() (specifically upon release()) the file is |
---|
5666 | uploaded to the tahoe node, and the new directory entry written. |
---|
5667 | |
---|
5668 | note that while the durectory structure is cached into memory only when |
---|
5669 | the filesystem is mounted, that it is 'write through' i.e. changes made |
---|
5670 | via fuse are reflected into the underlying tahoe fs, even though changes |
---|
5671 | made to the tahoe fs otherwise show up only upon restart. |
---|
5672 | |
---|
5673 | in addition to opening files for read and write, the mkdir() and rename() |
---|
5674 | calls are supported. most other file system operations are not yet |
---|
5675 | supported. notably stat() metadata is not currently tracked by tahoe, |
---|
5676 | and is variably reported by this fs depending on write cache files. |
---|
5677 | |
---|
5678 | |
---|
5679 | also note that this version does not fully support Finder. access through |
---|
5680 | normal unix commands such as cat, cp, mv, ls etc works fine, and read |
---|
5681 | access to file from within finder (including preview images and double- |
---|
5682 | click to open) work ok. but copies to the tahoe drive from within finder |
---|
5683 | may or may not succeed, but will always report an error. This is still |
---|
5684 | under investigation. |
---|
5685 | |
---|
5686 | also note that this does not include any build integration. the included |
---|
5687 | _fusemodule.so was built on mac os 10.4 against macfuse 1.3.0, and is |
---|
5688 | known to not work against 10.5-1.3.1 it's possible it may also contain |
---|
5689 | dependencies upon parts of macports used to build the python that it was |
---|
5690 | built against. this will be cleaned up later. |
---|
5691 | |
---|
5692 | usage: |
---|
5693 | python tahoefuse.py /Path/to/choice/of/mountpoint |
---|
5694 | or optionally |
---|
5695 | python tahoefuse.py -ovolicon=/Path/to/icon.icns /Path/to/mountpoint |
---|
5696 | |
---|
5697 | upon startup, tahoefuse will walk the tahoe directory, then print a |
---|
5698 | summary of files and folders found, and then daemonise itself. to exit, |
---|
5699 | either eject the 'drive' (note: 10.5 doesn't show it as a drive, since |
---|
5700 | it considers fuse to be a connected server instead) or unmount it via |
---|
5701 | umount /Path/to/mountpoint etc. |
---|
5702 | |
---|
5703 | |
---|
5704 | |
---|
5705 | ] |
---|
5706 | [uri.py: get 100% test coverage, fix a few bugs in the process |
---|
5707 | warner@allmydata.com**20080304202745] |
---|
5708 | [docs/helper.txt: explain more about the helper |
---|
5709 | warner@allmydata.com**20080506204901] |
---|
5710 | [architecture.txt: fix some things that have changed a lot in recent releases |
---|
5711 | warner@allmydata.com**20080214021429] |
---|
5712 | [fuse: Reorganize directory tree and modify runtests.py to run against both implementations... |
---|
5713 | nejucomo@gmail.com**20080607051923 |
---|
5714 | |
---|
5715 | Currently, fuse impl_b does not support a --basedir argument, and always |
---|
5716 | uses ~/.tahoe, which makes it incompatible with these system tests. |
---|
5717 | |
---|
5718 | |
---|
5719 | ] |
---|
5720 | [Rename the unittest script for tahoe-fuse. |
---|
5721 | nejucomo@gmail.com**20080119061612] |
---|
5722 | [tahoe_fuse.py: system test: setup: fixed a bug in which the mointpoint was not created before mounting. |
---|
5723 | nejucomo@gmail.com**20080129043913] |
---|
5724 | [contrib: add a note about Armin Rigo's fuse implementation |
---|
5725 | zooko@zooko.com**20080428140544] |
---|
5726 | [fuse_a: Fix the expected path in runtests.py. |
---|
5727 | nejucomo@gmail.com**20080531074202] |
---|
5728 | [fuse_a: Remove unused webport files... |
---|
5729 | nejucomo@gmail.com**20080601020351 |
---|
5730 | |
---|
5731 | This prevents the third client from failing to start due to a port |
---|
5732 | collision with the second client. The first client, which is used for |
---|
5733 | testing has a random high port written to webport, and thus does not |
---|
5734 | interfere. |
---|
5735 | ] |
---|
5736 | [fuse_a: runtests.py: The current ubuntu python-fuse ignores the -f option and always forks, so this updates runtests to use fusermount for clean shutdown. |
---|
5737 | nejucomo@gmail.com**20080601031605] |
---|
5738 | [tahoe_fuse: system test: Move test summary to end of output. |
---|
5739 | nejucomo@gmail.com**20080130084624] |
---|
5740 | [tahoe_fuse.py: system test: Distinguish between TestFailures and unexpected exceptions during testing (and fix a typo). |
---|
5741 | nejucomo@gmail.com**20080129044228] |
---|
5742 | [tahoe_fuse: system test: Remove some needless comments. |
---|
5743 | nejucomo@gmail.com**20080130085553] |
---|
5744 | [tahoe_fuse: system test: Create a separate directory for each test and pass the cap and local path to each test. Add two basic sanity tests for empty directories. |
---|
5745 | nejucomo@gmail.com**20080130085754] |
---|
5746 | [tahoe_fuse.py: system test: setup: lexically sort test names, create a TestFailure class, implement an empty directory listing test. |
---|
5747 | nejucomo@gmail.com**20080129044047] |
---|
5748 | [Individual tests run after all the setup layers are in place. |
---|
5749 | nejucomo@gmail.com**20080129042511] |
---|
5750 | [fuse_a: Fix a bug in test cleanup code. |
---|
5751 | nejucomo@gmail.com**20080601020541] |
---|
5752 | [tahoe_fuse.py: system test: Many changes to framework... |
---|
5753 | nejucomo@gmail.com**20080129042719 |
---|
5754 | |
---|
5755 | The flow control has been de-obfuscated a bit. |
---|
5756 | |
---|
5757 | Some output changes. |
---|
5758 | |
---|
5759 | The test framework has quite a few race conditions, but it does a reasonable job of setting up and cleaning up. |
---|
5760 | |
---|
5761 | ] |
---|
5762 | [tahoe_fuse: system test: Manage multiple clients for test grid... System test setup is almost complete. |
---|
5763 | nejucomo@gmail.com**20080121020220 |
---|
5764 | |
---|
5765 | This is a little convoluted because of the "layer" design, but it appears |
---|
5766 | to function correctly and do properly ordered cleanup. |
---|
5767 | |
---|
5768 | Before system test setup is complete, tahoe_fuse.py needs to be modified |
---|
5769 | to allow arbitrary client base directories. |
---|
5770 | |
---|
5771 | ] |
---|
5772 | [tahoe_fuse: system test: factor out some cleanup code. |
---|
5773 | nejucomo@gmail.com**20080120235448] |
---|
5774 | [Small log output change. |
---|
5775 | nejucomo@gmail.com**20080121021853] |
---|
5776 | [tahoe_fuse: cmdline args & system test: Allow nonstandard client basedirs to be specified and update the system tests to use this feature... |
---|
5777 | nejucomo@gmail.com**20080121025627 |
---|
5778 | |
---|
5779 | The commandline option handling of the version of python-fuse I use is arcane. This is an ugly hack. |
---|
5780 | |
---|
5781 | ] |
---|
5782 | [tahoe_fuse: system test: Add FIXME comments. |
---|
5783 | nejucomo@gmail.com**20080121020619] |
---|
5784 | [tahoe_fuse: system test: Attempt to create a dirnode to place in <basedir>/private/root_dir.cap, but this fails because the network is too small... |
---|
5785 | nejucomo@gmail.com**20080121004747 |
---|
5786 | |
---|
5787 | This patch also factors out the "polling_operation" pattern. |
---|
5788 | |
---|
5789 | ] |
---|
5790 | [tahoe_fuse: system test: Launch the fuse interface. |
---|
5791 | nejucomo@gmail.com**20080120235551] |
---|
5792 | [tahoe_fuse: system test: Copy the introducer.furl with a possible race condition due to timeout. |
---|
5793 | nejucomo@gmail.com**20080120230944] |
---|
5794 | [A start at adding a system test for tahoe_fuse. Incomplete... |
---|
5795 | nejucomo@gmail.com**20080120225456] |
---|
5796 | [The start of unit tests for tahoe_fuse.py. |
---|
5797 | nejucomo@gmail.com**20080113015603] |
---|
5798 | [A patch to make tahoe-fuse.py work with 0.7.0 plus a howto README. |
---|
5799 | nejucomo@gmail.com**20080112230639] |
---|
5800 | [User friendly error messages, and updates to use new URI formats. |
---|
5801 | nejucomo@gmail.com**20080108182121 |
---|
5802 | |
---|
5803 | ] |
---|
5804 | [tahoe-fuse: print out helpful error messages if the caller didn't give the right context |
---|
5805 | zooko@zooko.com**20080108164035] |
---|
5806 | [Use "my_vdrive.uri" for the root. The old "fuse-bookmarks.uri" served exactly the same purpose. |
---|
5807 | nejucomo@gmail.com**20071120200001] |
---|
5808 | [docs: rename frontends/webapi.txt to frontends/wapi.txt |
---|
5809 | zooko@zooko.com**20090114025143 |
---|
5810 | Ignore-this: c35acd8dc7c1106ca31104b6db43e5ad |
---|
5811 | rename CLI.txt to frontends/CLI.txt |
---|
5812 | change a few mentions of "webapi" to "wapi" |
---|
5813 | fixes #582 |
---|
5814 | ] |
---|
5815 | [docs/using.html: update CLI section to reflect the new alias: scheme. Closes #431 |
---|
5816 | warner@allmydata.com**20080603010016] |
---|
5817 | [docs: change example capability |
---|
5818 | zooko@zooko.com**20080219213419] |
---|
5819 | [docs/logging.txt: explain tahoe/foolscap logging. Addresses #239. |
---|
5820 | warner@allmydata.com**20080904002531] |
---|
5821 | [webapi: serve the /static URL tree from /public_html (configurable) |
---|
5822 | warner@allmydata.com**20081029223431] |
---|
5823 | [fix webish unit tests by making node.url file optional |
---|
5824 | robk-tahoe@allmydata.com**20080108183614] |
---|
5825 | [test_web.py: localdir=/localfile= is going away, so remove the tests that exercise it |
---|
5826 | warner@allmydata.com**20080519193209] |
---|
5827 | [fix small bug in unit tests which caused spurious failures on Windows |
---|
5828 | zooko@zooko.com**20070816211441] |
---|
5829 | [test_web.py: survive localdir/localfile= names with spaces. Should close #223 |
---|
5830 | warner@allmydata.com**20071212014704] |
---|
5831 | [test_web: remove leftover import to hush pyflakes |
---|
5832 | warner@allmydata.com**20080519212839] |
---|
5833 | [NEWS: update with all user-visible changes since the last update |
---|
5834 | warner@allmydata.com**20081030213604] |
---|
5835 | [docs: move webapi/ftp/sftp into a new frontends/ directory |
---|
5836 | warner@allmydata.com**20081105233050] |
---|
5837 | [#531: implement an SFTP frontend. Mostly works, still lots of debug messages. Still needs tests and auth-by-pubkey in accounts.file |
---|
5838 | warner@allmydata.com**20081105000022] |
---|
5839 | [doc: use the term "filesystem" rather than "virtual drive" in CLI.txt |
---|
5840 | zooko@zooko.com**20081224211614 |
---|
5841 | Ignore-this: c9541955201671c1a3a8c6ca7be4e7d |
---|
5842 | ] |
---|
5843 | [webapi: add verifycap (spelled 'verify_url') to the t=json output on files and directories. Closes #559. |
---|
5844 | warner@allmydata.com**20090204012248 |
---|
5845 | Ignore-this: 7da755304f6708b4973e4a7c1bcf8a43 |
---|
5846 | ] |
---|
5847 | [web t=json: add 'mutable' key to the information dict |
---|
5848 | warner@allmydata.com**20080520224049] |
---|
5849 | [docs: fix example JSON in webapi.txt to be legal JSON. ;-) |
---|
5850 | zooko@zooko.com**20080301003925] |
---|
5851 | [web: fix JSON output for mutable files |
---|
5852 | warner@allmydata.com**20080520221419] |
---|
5853 | [tahoe_ls.py: add comment about error cases to improve |
---|
5854 | warner@lothar.com**20090317051206 |
---|
5855 | Ignore-this: 7c678b92a55b2f7c6f0d96fb6ece74ed |
---|
5856 | ] |
---|
5857 | [tahoe_ls: CLI command should return rc=0, not None |
---|
5858 | warner@allmydata.com**20090203030720 |
---|
5859 | Ignore-this: 18993c782cf84edc01e4accb6f8bf31a |
---|
5860 | ] |
---|
5861 | [cli scripts: remove the for-educational-purposes standalone clauses. Closes #261. |
---|
5862 | warner@lothar.com**20080116060851] |
---|
5863 | [trailing-whitespace eradication, no functional changes |
---|
5864 | warner@allmydata.com**20071101222854] |
---|
5865 | [trailing-whitespace eradication, no functional changes |
---|
5866 | warner@allmydata.com**20071101222858] |
---|
5867 | [trailing-whitespace eradication, no functional changes |
---|
5868 | warner@allmydata.com**20071101222912] |
---|
5869 | [docs: webapi.txt edits to explain a few things better, adjust indentation, editing |
---|
5870 | zooko@zooko.com**20090411224828 |
---|
5871 | Ignore-this: 3a8a5559c7f0c8a585a4c0b5a2c80451 |
---|
5872 | ] |
---|
5873 | [use 522-bit RSA keys in all unit tests (except one) |
---|
5874 | Brian Warner <warner@lothar.com>**20090629223124 |
---|
5875 | Ignore-this: 7a4c3685683ff9da5ceb2d8cb7b19b7 |
---|
5876 | |
---|
5877 | This reduces the total test time on my laptop from 400s to 283s. |
---|
5878 | * src/allmydata/test/test_system.py (SystemTest.test_mutable._test_debug): |
---|
5879 | Remove assertion about container_size/data_size, this changes with keysize |
---|
5880 | and was too variable anyways. |
---|
5881 | * src/allmydata/mutable/filenode.py (MutableFileNode.create): add keysize= |
---|
5882 | * src/allmydata/dirnode.py (NewDirectoryNode.create): same |
---|
5883 | * src/allmydata/client.py (Client.DEFAULT_MUTABLE_KEYSIZE): add default, |
---|
5884 | this overrides the one in MutableFileNode |
---|
5885 | ] |
---|
5886 | [test_system: split off checker tests to test_deepcheck.py, this file is too big |
---|
5887 | warner@lothar.com**20090218214234 |
---|
5888 | Ignore-this: 82bf8db81dfbc98224bbf694054a8761 |
---|
5889 | ] |
---|
5890 | [test_system: make 'where' strings more helpful, to track down test failures better |
---|
5891 | warner@allmydata.com**20081119002950] |
---|
5892 | [test_system: oops, re-enable some tests that got bypassed |
---|
5893 | warner@lothar.com**20080910060245] |
---|
5894 | [oops, update tests to match 'tahoe stats' change |
---|
5895 | warner@allmydata.com**20081119023259] |
---|
5896 | [#509: test_system.py: add test for streamed-manifest |
---|
5897 | warner@allmydata.com**20090123223247] |
---|
5898 | [#509: remove non-streaming 'tahoe manifest' CLI form |
---|
5899 | warner@allmydata.com**20090123230002] |
---|
5900 | [#509 CLI: add 'tahoe manifest --stream' |
---|
5901 | warner@allmydata.com**20090123223321] |
---|
5902 | [cli: factor out slow-http-operation to a separate module |
---|
5903 | warner@allmydata.com**20081119011113] |
---|
5904 | [test_system: rearrange DeepCheckWebGood to make it easier to add CLI tests |
---|
5905 | warner@allmydata.com**20090123221306] |
---|
5906 | [test_system.py: fix new 'tahoe manifest' tests to not break on windows, by providing --node-directory instead of --node-url |
---|
5907 | warner@allmydata.com**20081113212748] |
---|
5908 | [cli: tahoe stats/manifest: change --verbose to --raw, since I want -v for --verify for check/deep-check/repair |
---|
5909 | warner@allmydata.com**20081119003608] |
---|
5910 | [cli: add tests for 'tahoe stats --verbose' |
---|
5911 | warner@allmydata.com**20081118041114] |
---|
5912 | [cli: add --verbose to 'tahoe manifest', to show the raw JSON data |
---|
5913 | warner@allmydata.com**20081118040219] |
---|
5914 | [create_node_from_uri: take both writecap+readcap, move logic out of dirnode.py |
---|
5915 | Brian Warner <warner@lothar.com>**20090702222537 |
---|
5916 | Ignore-this: 93051498076e90d3f1dc85161ce8247a |
---|
5917 | ] |
---|
5918 | [test_web: add get_permuted_peers, to unbreak recent checker_results change |
---|
5919 | warner@allmydata.com**20081205081210] |
---|
5920 | [dirnode deep-traversal: remove use of Limiter, stick with strict depth-first-traversal, to reduce memory usage during very large (300k+ dirnode) traversals |
---|
5921 | warner@allmydata.com**20090109014116] |
---|
5922 | [dirnode.build_manifest: include node.list in the limiter, that's the most important thing to slow down |
---|
5923 | warner@allmydata.com**20081007201929] |
---|
5924 | [dirnode.py: prepare to preserve both rwcap+rocap when copying |
---|
5925 | Brian Warner <warner@lothar.com>**20090702211254 |
---|
5926 | Ignore-this: f128c02da32f86d7e39527a35dfc2e02 |
---|
5927 | |
---|
5928 | This will make it easier to tolerate unknown nodes safely. |
---|
5929 | ] |
---|
5930 | [Add tests for #939 |
---|
5931 | Kevan Carstensen <kevan@isnotajoke.com>**20100212062137 |
---|
5932 | Ignore-this: 5459e8c64ba76cca70aa720e68549637 |
---|
5933 | ] |
---|
5934 | [scripts/common: fix alias handling on windows again, emit slightly nicer error message in response to an unknown alias |
---|
5935 | warner@allmydata.com**20090225042136 |
---|
5936 | Ignore-this: 76df800d131aed6701b5c7408105b134 |
---|
5937 | ] |
---|
5938 | [test_cli: exercise the recent tolerate-'c:\dir\file.txt' fix in scripts/common, recorded in a separate match to make it easier to merge the fix to prod |
---|
5939 | warner@allmydata.com**20090224235620 |
---|
5940 | Ignore-this: 2cae196dd4ccb578b2abae085376e0d7 |
---|
5941 | ] |
---|
5942 | [scripts/common: on windows, tolerate paths like 'c:\dir\file.txt', by treating single-letter aliases on windows/cygwin as non-aliases |
---|
5943 | warner@allmydata.com**20090224235522 |
---|
5944 | Ignore-this: 96d37644b7f81ac768ff4a1d1915eb46 |
---|
5945 | ] |
---|
5946 | ['tahoe stats': tolerate empty directories. Closes #693. |
---|
5947 | Brian Warner <warner@lothar.com>**20090715075109 |
---|
5948 | Ignore-this: a713325132e05d5d122111f978fe5e14 |
---|
5949 | ] |
---|
5950 | [cli: 'tahoe stats': add abbreviated size to the histogram. Not sure this actually improves things. |
---|
5951 | warner@allmydata.com**20081119021736] |
---|
5952 | [test_cli: validate non-HTML error response of 'tahoe get' on an unrecoverable file |
---|
5953 | warner@lothar.com**20090304041146] |
---|
5954 | [Add tests for tahoe mv behavior |
---|
5955 | kevan@isnotajoke.com**20090720034609 |
---|
5956 | Ignore-this: 9f20cc5c19ded743c4b129cdf16e04d9 |
---|
5957 | ] |
---|
5958 | [test_cli.py: assert that 'ls' on an unrecoverable file now gives a better error message |
---|
5959 | warner@lothar.com**20090307110815 |
---|
5960 | Ignore-this: 18e9758e4d0ca7faeaf5bd481c2d72ff |
---|
5961 | ] |
---|
5962 | [web/common: split out exception-to-explanation+code mapping to a separate humanize_failure() function, so it can be used by other code. Add explanation for mutable UnrecoverableFileError. |
---|
5963 | warner@lothar.com**20090307105408 |
---|
5964 | Ignore-this: 92f326804ba73bb446c5df5992b7d72e |
---|
5965 | ] |
---|
5966 | [web/common.py: use 'Accept:' header to control HTML-vs-text/plain traceback renderings |
---|
5967 | warner@lothar.com**20090304035457] |
---|
5968 | [web: full patch for HTML-vs-plaintext traceback renderings, improve test coverage of exception rendering |
---|
5969 | warner@lothar.com**20090304035630] |
---|
5970 | [storage: add a lease-checker-and-expirer crawler, plus web status page. |
---|
5971 | warner@allmydata.com**20090307044517 |
---|
5972 | Ignore-this: 4355224f89b959c6f1a256a7e6c88c3b |
---|
5973 | |
---|
5974 | This walks slowly through all shares, examining their leases, deciding which |
---|
5975 | are still valid and which have expired. Once enabled, it will then remove the |
---|
5976 | expired leases, and delete shares which no longer have any valid leases. Note |
---|
5977 | that there is not yet a tahoe.cfg option to enable lease-deletion: the |
---|
5978 | current code is read-only. A subsequent patch will add a tahoe.cfg knob to |
---|
5979 | control this, as well as docs. Some other minor items included in this patch: |
---|
5980 | |
---|
5981 | tahoe debug dump-share has a new --leases-only flag |
---|
5982 | storage sharefile/leaseinfo code is cleaned up |
---|
5983 | storage web status page (/storage) has more info, more tests coverage |
---|
5984 | space-left measurement on OS-X should be more accurate (it was off by 2048x) |
---|
5985 | (use stat .f_frsize instead of f_bsize) |
---|
5986 | ] |
---|
5987 | ['tahoe debug dump-share': add --offsets, to show section offsets |
---|
5988 | warner@allmydata.com**20080812214656] |
---|
5989 | [storage.py: announce a maximum-immutable-share-size based upon a 'df' of the disk. Fixes #569, and this should be the last requirement for #346 (remove 12GiB filesize limit) |
---|
5990 | warner@allmydata.com**20090110013736] |
---|
5991 | [storage: also report space-free-for-root and space-free-for-nonroot, since that helps users understand the space-left-for-tahoe number better |
---|
5992 | warner@lothar.com**20090221032856 |
---|
5993 | Ignore-this: 9fdf0475f758acd98b73026677170b45 |
---|
5994 | ] |
---|
5995 | [stop using RuntimeError in unit tests, for #639 |
---|
5996 | warner@lothar.com**20090222232722 |
---|
5997 | Ignore-this: 475ce0c0dcd7a1f5ed83ef460312efea |
---|
5998 | ] |
---|
5999 | [test_util.py: fix problems |
---|
6000 | warner@allmydata.com**20070406233622] |
---|
6001 | [test_util.py: sigh, one last minor python-2.5 issue |
---|
6002 | warner@allmydata.com**20070407002125] |
---|
6003 | [test_util.py: fix another minor python-2.5 issue |
---|
6004 | warner@allmydata.com**20070407001226] |
---|
6005 | [crawler: add ETA to get_progress() |
---|
6006 | warner@allmydata.com**20090227014248 |
---|
6007 | Ignore-this: 27ae76c0530b83323209be70df3d8a4b |
---|
6008 | ] |
---|
6009 | [crawler: load state from the pickle in init, rather than waiting until startService, so get_state() can be called early |
---|
6010 | warner@lothar.com**20090221035720 |
---|
6011 | Ignore-this: ecd128a5f4364c0daf4b72d791340b66 |
---|
6012 | ] |
---|
6013 | [crawler: fix performance problems: only save state once per timeslice (not after every bucket), don't start the crawler until 5 minutes after node startup |
---|
6014 | warner@lothar.com**20090221205649 |
---|
6015 | Ignore-this: e6551569982bd31d19779ff15c2d6f58 |
---|
6016 | ] |
---|
6017 | [crawler: tolerate low-resolution system clocks (i.e. windows) |
---|
6018 | warner@lothar.com**20090221061533 |
---|
6019 | Ignore-this: 57286a3abcaf44f6d1a78c3c1ad547a5 |
---|
6020 | ] |
---|
6021 | [storage: add bucket-counting share crawler, add its output (number of files+directories maintained by a storage server) and status to the webapi /storage page |
---|
6022 | warner@lothar.com**20090221030408 |
---|
6023 | Ignore-this: 28761c5e076648026bc5f518506db65c |
---|
6024 | ] |
---|
6025 | [trivial: "M-x whitespace-cleanup", and also remove an unused variable |
---|
6026 | zooko@zooko.com**20081231214233 |
---|
6027 | Ignore-this: 54c33c205aa88de8655e4232d07f083e |
---|
6028 | ] |
---|
6029 | [crawler: provide for one-shot crawlers, which stop after their first full cycle, for share-upgraders and database-populaters |
---|
6030 | warner@lothar.com**20090220211911 |
---|
6031 | Ignore-this: fcdf72c5ffcafa374d376388be6fa5c5 |
---|
6032 | ] |
---|
6033 | [web/storage: make sure we can handle platforms without os.statvfs too |
---|
6034 | warner@lothar.com**20090220220353 |
---|
6035 | Ignore-this: 79d4cb8482a8543b9759dc949c86c587 |
---|
6036 | ] |
---|
6037 | [web: add Storage status page, improve tests |
---|
6038 | warner@lothar.com**20090220202926 |
---|
6039 | Ignore-this: e34d5270dcf0237fe72f573f717c7a4 |
---|
6040 | ] |
---|
6041 | [test_storage: fix pyflakes warnings |
---|
6042 | warner@allmydata.com**20080115032648] |
---|
6043 | [storage: rename the latency key names so they sort properly |
---|
6044 | warner@lothar.com**20080712045102] |
---|
6045 | [add 1%,10% percentiles to the storage server latency output |
---|
6046 | warner@lothar.com**20080712043436] |
---|
6047 | [more #514 log-webop status/cancel: add handle-expiration, test coverage |
---|
6048 | warner@lothar.com**20081022051354] |
---|
6049 | [#514: improve test coverage |
---|
6050 | warner@lothar.com**20081022005256] |
---|
6051 | [storage: include reserved_space in stats |
---|
6052 | warner@lothar.com**20090220202920 |
---|
6053 | Ignore-this: b5b480fe0abad0148ecad0c1fb47ecae |
---|
6054 | ] |
---|
6055 | [crawler: add get_progress, clean up get_state |
---|
6056 | warner@lothar.com**20090221002743 |
---|
6057 | Ignore-this: 9bea69f154c75b31a53425a8ea67789b |
---|
6058 | ] |
---|
6059 | [crawler: modify API to support upcoming bucket-counting crawler |
---|
6060 | warner@lothar.com**20090220013142 |
---|
6061 | Ignore-this: 808f8382837b13082f8b245db2ebee06 |
---|
6062 | ] |
---|
6063 | [storage: move si_b2a/si_a2b/storage_index_to_dir out of server.py and into common.py |
---|
6064 | warner@lothar.com**20090221030309 |
---|
6065 | Ignore-this: 645056428ab797f0b542831c82bf192a |
---|
6066 | ] |
---|
6067 | [crawler: use fileutil.move_info_place in preference to our own version |
---|
6068 | warner@lothar.com**20090219051342 |
---|
6069 | Ignore-this: ee4e46f3de965610503ba36b28184db9 |
---|
6070 | ] |
---|
6071 | [crawler: fix problems on windows and our slow cygwin slave |
---|
6072 | warner@lothar.com**20090219042431 |
---|
6073 | Ignore-this: 8019cb0da79ba00c536183a6f57b4cab |
---|
6074 | ] |
---|
6075 | [#633: first version of a rate-limited interruptable share-crawler |
---|
6076 | warner@lothar.com**20090219034633 |
---|
6077 | Ignore-this: 5d2d30c743e3b096a8e775d5a9b33601 |
---|
6078 | ] |
---|
6079 | [break storage.py into smaller pieces in storage/*.py . No behavioral changes. |
---|
6080 | warner@lothar.com**20090218204655 |
---|
6081 | Ignore-this: 312d408d1cacc5a764d791b53ebf8f91 |
---|
6082 | ] |
---|
6083 | [fix a few unused imports and suchlike, discovered by pyflakes |
---|
6084 | zooko@zooko.com**20080213133808] |
---|
6085 | [helper: add SI to logged progress messages |
---|
6086 | warner@allmydata.com**20080415022653] |
---|
6087 | [storage.py: leave the storage/shares/incoming/ directory in place when the bucket is closed |
---|
6088 | warner@allmydata.com**20080626180757] |
---|
6089 | [#538: add remote_get_version() to four main Referenceable objects: Introducer Service, Storage Server, Helper, CHK Upload Helper. Remove unused storage-server get_versions(). |
---|
6090 | warner@allmydata.com**20081121234352] |
---|
6091 | [storage.py: remove unused import |
---|
6092 | warner@allmydata.com**20080610200544] |
---|
6093 | [storage: make storage servers declare oldest supported version == 1.0, and storage clients declare oldest supported version == 1.0 |
---|
6094 | zooko@zooko.com**20080730225107 |
---|
6095 | See comments in patch for intended semantics. |
---|
6096 | ] |
---|
6097 | [storage servers announce that they will support clients as old as v0.8.0 |
---|
6098 | zooko@zooko.com**20080313161011 |
---|
6099 | Not that anyone pays attention to what storage servers claim about what versions they will support. |
---|
6100 | ] |
---|
6101 | [doc: remove notes to self that I accidentally included in a recent patch |
---|
6102 | zooko@zooko.com**20090102041457 |
---|
6103 | Ignore-this: d0039512dbde09811fdec48a2e00dc4 |
---|
6104 | ] |
---|
6105 | [trivial: a few improvements to in-line doc and code, and renaming of test/test_immutable_checker.py to test/test_immutable.py |
---|
6106 | zooko@zooko.com**20090102224941 |
---|
6107 | Ignore-this: 27b97a06c3edad1821f43876b4350f3 |
---|
6108 | That file currently tests checker and verifier and repairer, and will soon also test downloader. |
---|
6109 | ] |
---|
6110 | [trivial: another place where I accidentally committed a note-to-self about the lease fields in the server-side share file |
---|
6111 | zooko@zooko.com**20090103172941 |
---|
6112 | Ignore-this: c23c7095ffccdf5aa033ed434b50582b |
---|
6113 | ] |
---|
6114 | [storage.py : replace 4294967295 with 2**32-1: python does constant folding, I measured this statement as taking 50ns, versus the 400ns for the call to min(), or the 9us required for the 'assert not os.path.exists' syscall |
---|
6115 | warner@allmydata.com**20090110015222] |
---|
6116 | [storage.py: explain what this large and hard-to-recognize 4294967295 number is |
---|
6117 | warner@allmydata.com**20090106195721] |
---|
6118 | [immutable: fix the writing of share data size into share file in case the share file is used by a < v1.3.0 storage server |
---|
6119 | zooko@zooko.com**20090106182404 |
---|
6120 | Ignore-this: 7d6025aba05fe8140bb712e71e89f1ba |
---|
6121 | Brian noticed that the constant was wrong, and in fixing that I noticed that we should be saturating instead of modding. |
---|
6122 | This code would never matter unless a server downgraded or a share migrated from Tahoe >= v1.3.0 to Tahoe < v1.3.0. Even in that case, this bug would never matter unless the share size were exactly 4,294,967,296 bytes long. |
---|
6123 | Brian, for good reason, wanted this to be spelled "2**32" instead of "4294967296", but I couldn't stand to see a couple of more Python bytecodes interpreted in the middle of a core, frequent operation on the server like immutable share creation. |
---|
6124 | |
---|
6125 | ] |
---|
6126 | [hush pyflakes by removing unused imports |
---|
6127 | warner@allmydata.com**20090112214120] |
---|
6128 | [storage: make add-lease work, change default ownernum=1 since 0 is reserved to mean 'no lease here' |
---|
6129 | warner@allmydata.com**20090211053938 |
---|
6130 | Ignore-this: 9437ec1529c34351f2725df37e0859c |
---|
6131 | ] |
---|
6132 | [add --add-lease to 'tahoe check', 'tahoe deep-check', and webapi. |
---|
6133 | warner@lothar.com**20090218013243 |
---|
6134 | Ignore-this: 176b2006cef5041adcb592ee83e084dd |
---|
6135 | ] |
---|
6136 | [test_dirnode.py: oops, missed a Monitor(), unbreak tests |
---|
6137 | warner@lothar.com**20081022085054] |
---|
6138 | [provisioning/reliability: add tests, hush pyflakes, remove dead code, fix web links |
---|
6139 | warner@lothar.com**20090215222451 |
---|
6140 | Ignore-this: 7854df3e0130d9388f06efd4c797262f |
---|
6141 | ] |
---|
6142 | [build a 'reliability' web page, with a simulation of file decay and repair over time |
---|
6143 | warner@lothar.com**20090213234234 |
---|
6144 | Ignore-this: 9e9623eaac7b0637bbd0071f082bd345 |
---|
6145 | ] |
---|
6146 | [test_upload: rewrite in terms of no-network GridTestMixin, improve no_network.py as necessary |
---|
6147 | warner@lothar.com**20090216234457 |
---|
6148 | Ignore-this: 80a341d5aa3036d24de98e267499d70d |
---|
6149 | ] |
---|
6150 | [test_web.Grid: change the CHECK() function to make it easier to test t= values with hyphens in them |
---|
6151 | warner@lothar.com**20090217050034 |
---|
6152 | Ignore-this: 410c08735347c2057df52f6716520228 |
---|
6153 | ] |
---|
6154 | [test_web: improve checker-results coverage with a no-network -based test, enhance no-network harness to assist, fix some bugs in web/check_results.py that were exposed |
---|
6155 | warner@lothar.com**20090217041242 |
---|
6156 | Ignore-this: fe54bb66a9ae073c002a7af51cd1e18 |
---|
6157 | ] |
---|
6158 | [test_download: rewrite in terms of no-network GridTestMixin, improve no_network.py as necessary |
---|
6159 | warner@lothar.com**20090216233658 |
---|
6160 | Ignore-this: ec2febafd2403830519120fb3f3ca04e |
---|
6161 | ] |
---|
6162 | [test_download: test both mutable and immutable pre-generated shares |
---|
6163 | warner@lothar.com**20081203003007] |
---|
6164 | [test_download.py: added 'known-answer-tests', to make sure current code can download a file that was created by earlier code |
---|
6165 | warner@lothar.com**20081203002208] |
---|
6166 | [tests: fix no_network framework to work with upload/download and checker |
---|
6167 | warner@lothar.com**20090216231947 |
---|
6168 | Ignore-this: 74b4dbd66b8384ae7c7544969fe4f744 |
---|
6169 | ] |
---|
6170 | [test/no_network: new test harness, like system-test but doesn't use the network so it's faster |
---|
6171 | warner@lothar.com**20090216205844 |
---|
6172 | Ignore-this: 31678f7bdef30b0216fd657fc6145534 |
---|
6173 | ] |
---|
6174 | [mutable: move recent operation history management code (MutableWatcher) into history.py, have History provide stats |
---|
6175 | warner@allmydata.com**20090114233620] |
---|
6176 | [mutable stats: track mutable bytes published too |
---|
6177 | warner@allmydata.com**20080430012005] |
---|
6178 | [web/statistics: fix typo that make immutable-download stats missing |
---|
6179 | warner@allmydata.com**20080415182004] |
---|
6180 | [mutable WIP: publish status doesn't know its size early enough to update the stats_provider |
---|
6181 | warner@allmydata.com**20080417005517] |
---|
6182 | [test_mutable: update notify_publish() to match new signature |
---|
6183 | warner@allmydata.com**20080430012457] |
---|
6184 | [mutable/checker: announce the mapupdate op on the 'recent uploads+downloads' page |
---|
6185 | warner@lothar.com**20081023230319] |
---|
6186 | [upload: move upload history into History object |
---|
6187 | warner@allmydata.com**20090114224106] |
---|
6188 | [immutable/download.py move recent-downloads history out of Downloader and into a separate class. upload/etc will follow soon. |
---|
6189 | warner@allmydata.com**20090114221424] |
---|
6190 | [webapi #590: add streaming deep-check. Still need a CLI tool to use it. |
---|
6191 | warner@lothar.com**20090217053553 |
---|
6192 | Ignore-this: a0edd3d2a531c48a64d8397f7e4b208c |
---|
6193 | ] |
---|
6194 | [test_web: improve test coverage of web.common utility code |
---|
6195 | warner@allmydata.com**20080520222146] |
---|
6196 | [remove unimplemented and skipped test for feature that we don't plan to implement any time soon (XML-RPC interface) |
---|
6197 | zooko@zooko.com**20071213020605] |
---|
6198 | [more information SkipTest for XMLRPC |
---|
6199 | zooko@zooko.com**20071004180746] |
---|
6200 | [#590: add webish t=stream-manifest |
---|
6201 | warner@allmydata.com**20090123040136] |
---|
6202 | [fileutil: add move_into_place(), to perform the standard unix trick of atomically replacing a file, with a fallback for windows |
---|
6203 | warner@lothar.com**20090219051310 |
---|
6204 | Ignore-this: c1d35e8ca88fcb223ea194513611c511 |
---|
6205 | ] |
---|
6206 | [Implement more coherent behavior when copying with dircaps/filecaps (closes #761). Patch by Kevan Carstensen. |
---|
6207 | "Brian Warner <warner@lothar.com>"**20091130211009] |
---|
6208 | [test_cli.py: modify to use the new 'no-network' gridtest instead of SystemTestMixin, which speeds it up from 73s to 43s on my system |
---|
6209 | warner@lothar.com**20090216232005 |
---|
6210 | Ignore-this: ec6d010c9182aa72049d1fb894cf890e |
---|
6211 | ] |
---|
6212 | [CLI: check for pre-existing aliases in 'tahoe create-alias' and 'tahoe add-alias' |
---|
6213 | warner@lothar.com**20081203022022] |
---|
6214 | [CLI: rework webopen, and moreover its tests w.r.t. path handling |
---|
6215 | robk-tahoe@allmydata.com**20080924164523 |
---|
6216 | |
---|
6217 | in the recent reconciliation of webopen patches, I wound up adjusting |
---|
6218 | webopen to 'pass through' the state of the trailing slash on the given |
---|
6219 | argument to the resultant url passed to the browser. this change |
---|
6220 | removes the requirement that arguments must be directories, and allows |
---|
6221 | webopen to be used with files. it also broke the tests that assumed |
---|
6222 | that webopen would always normalise the url to have a trailing slash. |
---|
6223 | |
---|
6224 | in fixing the tests, I realised that, IMHO, there's something deeply |
---|
6225 | awry with the way tahoe handles paths; specifically in the combination |
---|
6226 | of '/' being the name of the root path within an alias, but a leading |
---|
6227 | slash on paths, e.g. 'alias:/path', is catagorically incorrect. i.e. |
---|
6228 | 'tahoe:' == 'tahoe:/' == '/' |
---|
6229 | but 'tahoe:/foo' is an invalid path, and must be 'tahoe:foo' |
---|
6230 | |
---|
6231 | I wound up making the internals of webopen simply spot a 'path' of |
---|
6232 | '/' and smash it to '', which 'fixes' webopen to match the behaviour |
---|
6233 | of tahoe's path handling elsewhere, but that special case sort of |
---|
6234 | points to the weirdness. |
---|
6235 | |
---|
6236 | (fwiw, I personally found the fact that the leading / in a path was |
---|
6237 | disallowed to be weird - I'm just used to seeing paths qualified by |
---|
6238 | the leading / I guess - so in a debate about normalising path handling |
---|
6239 | I'd vote to include the /) |
---|
6240 | |
---|
6241 | ] |
---|
6242 | [CLI: reconcile webopen changes |
---|
6243 | robk-tahoe@allmydata.com**20080924152002 |
---|
6244 | |
---|
6245 | I think this is largely attributable to a cleanup patch I'd made |
---|
6246 | which never got committed upstream somehow, but at any rate various |
---|
6247 | conflicting changes to webopen had been made. This cleans up the |
---|
6248 | conflicts therein, and hopefully brings 'tahoe webopen' in line with |
---|
6249 | other cli commands. |
---|
6250 | ] |
---|
6251 | [cli: cleanup webopen command |
---|
6252 | robk-tahoe@allmydata.com**20080618201940 |
---|
6253 | |
---|
6254 | moved the body of webopen out of cli.py into tahoe_webopen.py |
---|
6255 | |
---|
6256 | made its invocation consistent with the other cli commands, most |
---|
6257 | notably replacing its 'vdrive path' with the same alias parsing, |
---|
6258 | allowing usage such as 'tahoe webopen private:Pictures/xti' |
---|
6259 | ] |
---|
6260 | [test_cli.Backup: insert some stalls to make sure two successive backups get distinct timestamps, avoiding intermittent failures |
---|
6261 | warner@allmydata.com**20090211023709 |
---|
6262 | Ignore-this: a146380e9adf94c2d301b59e4d23f02 |
---|
6263 | ] |
---|
6264 | [test_cli.backup: oops, fix test to work even when sqlite is unavailable |
---|
6265 | warner@allmydata.com**20090206041042 |
---|
6266 | Ignore-this: 8a550049c8eb27c34ab2440263e07593 |
---|
6267 | ] |
---|
6268 | [#619: make 'tahoe backup' complain and refuse to run if sqlite is unavailable and --no-backupdb is not passed |
---|
6269 | warner@allmydata.com**20090211004910 |
---|
6270 | Ignore-this: 46ca8be19011b0ec11e7a10cb2556386 |
---|
6271 | ] |
---|
6272 | [test_cli.Backup: capture stderr when sqlite is unavailable |
---|
6273 | warner@lothar.com**20090207211440 |
---|
6274 | Ignore-this: 4978b1a149e32bd31e66d5bc4269bc55 |
---|
6275 | ] |
---|
6276 | [test_cli: improve test coverage slightly |
---|
6277 | warner@lothar.com**20090216030451 |
---|
6278 | Ignore-this: e01ccc6a6fb44aaa4fb14fe8669e2065 |
---|
6279 | ] |
---|
6280 | [test for bug #534, unicode filenames |
---|
6281 | francois@ctrlaltdel.ch**20081113111951 |
---|
6282 | |
---|
6283 | This test assure that uploading a file whose name contains unicode character |
---|
6284 | doesn't prevent further uploads in the same directory. |
---|
6285 | ] |
---|
6286 | [tahoe_cp.py: return 0 for success, instead of None |
---|
6287 | warner@allmydata.com**20090312205345 |
---|
6288 | Ignore-this: 808f6d8617f8c4e7fde455e6c7639fab |
---|
6289 | ] |
---|
6290 | [tahoe_cp.py: improve error reporting slightly: don't json-interpret HTTP errors, pass through tahoe webapi error messages |
---|
6291 | warner@lothar.com**20090307114051 |
---|
6292 | Ignore-this: a8beccb67adb082a92509d439b27d68e |
---|
6293 | ] |
---|
6294 | [tahoe_backup.py: display warnings on errors instead of stopping the whole backup. Fix #729. |
---|
6295 | francois@ctrlaltdel.ch**20100120094249 |
---|
6296 | Ignore-this: 7006ea4b0910b6d29af6ab4a3997a8f9 |
---|
6297 | |
---|
6298 | This patch displays a warning to the user in two cases: |
---|
6299 | |
---|
6300 | 1. When special files like symlinks, fifos, devices, etc. are found in the |
---|
6301 | local source. |
---|
6302 | |
---|
6303 | 2. If files or directories are not readables by the user running the 'tahoe |
---|
6304 | backup' command. |
---|
6305 | |
---|
6306 | In verbose mode, the number of skipped files and directories is printed at the |
---|
6307 | end of the backup. |
---|
6308 | |
---|
6309 | Exit status returned by 'tahoe backup': |
---|
6310 | |
---|
6311 | - 0 everything went fine |
---|
6312 | - 1 the backup failed |
---|
6313 | - 2 files were skipped during the backup |
---|
6314 | |
---|
6315 | ] |
---|
6316 | [Added --exclude, --exclude-from and --exclude-vcs options to backup command. |
---|
6317 | Alberto Berti <alberto@metapensiero.it>**20090222170829 |
---|
6318 | Ignore-this: 4912890229cd54a2f61f14f06bc4afcc |
---|
6319 | |
---|
6320 | It is still impossible to specify absolute exclusion path, only |
---|
6321 | relative. I must check with tar or rsync how they allow them to be |
---|
6322 | specified. |
---|
6323 | ] |
---|
6324 | [Added tests for the --exclude* options of backup command. |
---|
6325 | Alberto Berti <alberto@metapensiero.it>**20090222165106 |
---|
6326 | Ignore-this: f1b931cf2e7929ce47b737c022bca707 |
---|
6327 | ] |
---|
6328 | [CLI #590: convert 'tahoe deep-check' to streaming form, improve display, add tests |
---|
6329 | warner@lothar.com**20090217231511 |
---|
6330 | Ignore-this: 6d88eb94b1c877eacc8c5ca7d0aac776 |
---|
6331 | ] |
---|
6332 | [test_cli.py: remove unused imports |
---|
6333 | warner@allmydata.com**20081007004204] |
---|
6334 | [cli: add 'tahoe check' and 'tahoe deep-check' commands, with primitive reporting code |
---|
6335 | warner@allmydata.com**20081119011210] |
---|
6336 | [deep-check-and-repair: improve results and their HTML representation |
---|
6337 | warner@allmydata.com**20090113005619] |
---|
6338 | [webapi deep-check: show the root as <root>, rather than an empty path string |
---|
6339 | warner@lothar.com**20081023230359] |
---|
6340 | [immutable repairer |
---|
6341 | zooko@zooko.com**20090112170022 |
---|
6342 | Ignore-this: f17cb07b15a554b31fc5203cf4f64d81 |
---|
6343 | This implements an immutable repairer by marrying a CiphertextDownloader to a CHKUploader. It extends the IDownloadTarget interface so that the downloader can provide some metadata that the uploader requires. |
---|
6344 | The processing is incremental -- it uploads the first segments before it finishes downloading the whole file. This is necessary so that you can repair large files without running out of RAM or using a temporary file on the repairer. |
---|
6345 | It requires only a verifycap, not a readcap. That is: it doesn't need or use the decryption key, only the integrity check codes. |
---|
6346 | There are several tests marked TODO and several instances of XXX in the source code. I intend to open tickets to document further improvements to functionality and testing, but the current version is probably good enough for Tahoe-1.3.0. |
---|
6347 | ] |
---|
6348 | [immutable: refactor uploader to do just encoding-and-uploading, not encryption |
---|
6349 | zooko@zooko.com**20090107034822 |
---|
6350 | Ignore-this: 681f3ad6827a93f1431d6e3f818840a9 |
---|
6351 | This makes Uploader take an EncryptedUploadable object instead of an Uploadable object. I also changed it to return a verify cap instead of a tuple of the bits of data that one finds in a verify cap. |
---|
6352 | This will facilitate hooking together an Uploader and a Downloader to make a Repairer. |
---|
6353 | Also move offloaded.py into src/allmydata/immutable/. |
---|
6354 | ] |
---|
6355 | [upload: fix up some log messages |
---|
6356 | warner@allmydata.com**20080301020045] |
---|
6357 | [upload.py: the 'skipping encryption' message was emitted exactly backwards |
---|
6358 | warner@allmydata.com**20080129003838] |
---|
6359 | [immutable: add a monitor API to CiphertextDownloader with which to tell it to stop its work |
---|
6360 | zooko@zooko.com**20090108204215 |
---|
6361 | Ignore-this: f96fc150fa68fc2cec46c943171a5d48 |
---|
6362 | ] |
---|
6363 | [naming: Rename a few things which I touched or changed in the recent patch to download-without-decrypting. |
---|
6364 | zooko@zooko.com**20090108181307 |
---|
6365 | Ignore-this: 495ce8d8854c5db5a09b35b856809fba |
---|
6366 | Rename "downloadable" to "target". |
---|
6367 | Rename "u" to "v" in FileDownloader.__init__(). |
---|
6368 | Rename "_uri" to "_verifycap" in FileDownloader. |
---|
6369 | Rename "_downloadable" to "_target" in FileDownloader. |
---|
6370 | Rename "FileDownloader" to "CiphertextDownloader". |
---|
6371 | ] |
---|
6372 | [immutable: refactor download to do only download-and-decode, not decryption |
---|
6373 | zooko@zooko.com**20090108175349 |
---|
6374 | Ignore-this: 1e4f26f6390a67aa5714650017c4dca1 |
---|
6375 | FileDownloader takes a verify cap and produces ciphertext, instead of taking a read cap and producing plaintext. |
---|
6376 | FileDownloader does all integrity checking including the mandatory ciphertext hash tree and the optional ciphertext flat hash, rather than expecting its target to do some of that checking. |
---|
6377 | Rename immutable.download.Output to immutable.download.DecryptingOutput. An instance of DecryptingOutput can be passed to FileDownloader to use as the latter's target. Text pushed to the DecryptingOutput is decrypted and then pushed to *its* target. |
---|
6378 | DecryptingOutput satisfies the IConsumer interface, and if its target also satisfies IConsumer, then it forwards and pause/unpause signals to its producer (which is the FileDownloader). |
---|
6379 | This patch also changes some logging code to use the new logging mixin class. |
---|
6380 | Check integrity of a segment and decrypt the segment one block-sized buffer at a time instead of copying the buffers together into one segment-sized buffer (reduces peak memory usage, I think, and is probably a tad faster/less CPU, depending on your encoding parameters). |
---|
6381 | Refactor FileDownloader so that processing of segments and of tail-segment share as much code is possible. |
---|
6382 | FileDownloader and FileNode take caps as instances of URI (Python objects), not as strings. |
---|
6383 | ] |
---|
6384 | [immutable download: remove dead LiteralDownloader, now that we use filenodes for download |
---|
6385 | warner@allmydata.com**20080716233147] |
---|
6386 | [download.py: set up self._paused before registering the producer, since they might call pauseProducing right away |
---|
6387 | warner@lothar.com**20080728215731] |
---|
6388 | [util: log: allow empty msgs (because downloader is using the "format" alternative with no "msg" argument) |
---|
6389 | zooko@zooko.com**20090107175411 |
---|
6390 | Ignore-this: 832c333bf027a30a2fcf96e462297ac5 |
---|
6391 | ] |
---|
6392 | [immutable: define a new interface IImmutableFileURI and declare that CHKFileURI and LiteralFileURI provide it |
---|
6393 | zooko@zooko.com**20090107182451 |
---|
6394 | Ignore-this: 12c256a0d20655cd73739d45fff0d4d8 |
---|
6395 | ] |
---|
6396 | [hush pyflakes |
---|
6397 | warner@allmydata.com**20071219003722] |
---|
6398 | [immutable: ValidatedExtendedURIProxy computes and stores the tail data size as a convenience to its caller. |
---|
6399 | zooko@zooko.com**20090108164139 |
---|
6400 | Ignore-this: 75c561d73b17418775faafa60fbbd45b |
---|
6401 | The "tail data size" is how many of the bytes of the tail segment are data (as opposed to padding). |
---|
6402 | ] |
---|
6403 | [immutable: Make more parts of download use logging mixins and know what their "parent msg id" is. |
---|
6404 | zooko@zooko.com**20090108172530 |
---|
6405 | Ignore-this: a4296b5f9b75933d644fd222e1fba079 |
---|
6406 | ] |
---|
6407 | [trivial: fix a bunch of pyflakes complaints |
---|
6408 | zooko@zooko.com**20090106140054 |
---|
6409 | Ignore-this: 9a515a237248a148bcf8db68f70566d4 |
---|
6410 | ] |
---|
6411 | [setup: we require pywin32 if building on Windows (plus some formatting and comment fixes) |
---|
6412 | zooko@zooko.com**20081205231911 |
---|
6413 | Ignore-this: c1d1966cfe458a6380bfd5dce09010ff |
---|
6414 | ] |
---|
6415 | [fix build breakage caused by auto_deps setuptools stuff |
---|
6416 | robk-tahoe@allmydata.com**20080123013255 |
---|
6417 | |
---|
6418 | zooko recently added a runtime check, via setuptools, that specific versions of various |
---|
6419 | packages were reported as available through setuptools at runtime. |
---|
6420 | |
---|
6421 | however exe and app builds run with collected egg contents, not linked against entire |
---|
6422 | eggs, i.e. the code is transcluded into a single library.zip |
---|
6423 | |
---|
6424 | thus setuptools reports that those specific version cannot be reported as available, |
---|
6425 | though they are in fact available built into the library |
---|
6426 | |
---|
6427 | this disables that runtime check if the app is running 'frozen' |
---|
6428 | ] |
---|
6429 | [setup: require setuptools >= 0.6c7 to run |
---|
6430 | zooko@zooko.com**20081121043611 |
---|
6431 | Ignore-this: e92e07c7e8edbaadcd44db7e8f4a028 |
---|
6432 | ] |
---|
6433 | [setup: we require setuptools > 0.6a9 in order to parse requirements that have a dot in them such as "zope.interface" |
---|
6434 | zooko@zooko.com**20081120151503 |
---|
6435 | Ignore-this: a6304de8f1f44defc50438d72a13e58f |
---|
6436 | In the near future we might start actually relying on setuptools's pkg_resources's "require()" function to make modules importable, so we can't just skip zope.interface. |
---|
6437 | ] |
---|
6438 | [setup: reorder dependencies to be sort of increasing order of how much they depend on other stuff |
---|
6439 | zooko@zooko.com**20081025134739 |
---|
6440 | Ignore-this: 6d636aaf5deb37cbf18172824b0bbf87 |
---|
6441 | Not that the order makes any different to how it gets installed, as far as I can tell. |
---|
6442 | ] |
---|
6443 | [setup: loosen our version requirement on zfec to require >= 1.1 instead of >= 1.3 |
---|
6444 | zooko@zooko.com**20080122233538 |
---|
6445 | I see that we have .deb's only for v1.1. |
---|
6446 | |
---|
6447 | ] |
---|
6448 | [_auto_deps.py: relax our simplejson dependency to 1.4, since I think it works and because that's what feisty offers |
---|
6449 | warner@allmydata.com**20080123190309] |
---|
6450 | [setup: loosen requirement on simplejson from 1.7.3 to 1.7.1 |
---|
6451 | zooko@zooko.com**20080123155420 |
---|
6452 | Since apparently 1.7.1 is what we use on tahoecs2, and it works. |
---|
6453 | |
---|
6454 | ] |
---|
6455 | [setup: trivial change: the name of the "Nevow" distribution is capitalized |
---|
6456 | zooko@zooko.com**20080610231537] |
---|
6457 | [immutable: make the web display of upload results more human-friendly, like they were before my recent change to the meaning of the "sharemap" |
---|
6458 | zooko@zooko.com**20090110200209 |
---|
6459 | Ignore-this: 527d067334f982cb2d3e185f72272f60 |
---|
6460 | ] |
---|
6461 | [immutable: redefine the "sharemap" member of the upload results to be a map from shnum to set of serverids |
---|
6462 | zooko@zooko.com**20090110174623 |
---|
6463 | Ignore-this: 10300a2333605bc26c4ee9c7ab7dae10 |
---|
6464 | It used to be a map from shnum to a string saying "placed this share on XYZ server". The new definition is more in keeping with the "sharemap" object that results from immutable file checking and repair, and it is more useful to the repairer, which is a consumer of immutable upload results. |
---|
6465 | ] |
---|
6466 | [webish: add more share information to upload status, including assisted uploads |
---|
6467 | warner@allmydata.com**20080306015151] |
---|
6468 | [trivial: minor changes to in-line comments -- mark plaintext-hash-tree as obsolete |
---|
6469 | zooko@zooko.com**20090110205601 |
---|
6470 | Ignore-this: df286154e1acde469f28e9bd00bb1068 |
---|
6471 | ] |
---|
6472 | [immutable: separate tests of immutable upload/download from tests of immutable checking/repair |
---|
6473 | zooko@zooko.com**20090110210739 |
---|
6474 | Ignore-this: 9e668609d797ec86a618ed52602c111d |
---|
6475 | ] |
---|
6476 | [tahoe.cfg: add controls for k and N (and shares-of-happiness) |
---|
6477 | warner@allmydata.com**20081118062944] |
---|
6478 | [immutable: tests: verifier doesn't always catch corrupted share hashes |
---|
6479 | zooko@zooko.com**20090106190449 |
---|
6480 | Ignore-this: a9be83b8e2350ae9af808476015fe0e4 |
---|
6481 | Maybe it already got one of the corrupted hashes from a different server and it doesn't double-check that the hash from every server is correct. Or another problem. But in any case I'm marking this as TODO because an even better (more picky) verifier is less urgent than repairer. |
---|
6482 | ] |
---|
6483 | [rename "checker results" to "check results", because it is more parallel to "check-and-repair results" |
---|
6484 | zooko@zooko.com**20090106193703 |
---|
6485 | Ignore-this: d310e3d7f42a76df68536650c996aa49 |
---|
6486 | ] |
---|
6487 | [mutable: rename mutable/node.py to mutable/filenode.py and mutable/repair.py to mutable/repairer.py |
---|
6488 | zooko@zooko.com**20081207142008 |
---|
6489 | Ignore-this: ecee635b01a21e6f866a11bb349712a3 |
---|
6490 | To be more consistent with the immutable layout that I am working on. |
---|
6491 | ] |
---|
6492 | [mutable WIP: rename NotEnoughPeersError to NotEnoughSharesError |
---|
6493 | warner@allmydata.com**20080415230832] |
---|
6494 | [trivial: tiny changes to test code |
---|
6495 | zooko@zooko.com**20090108172048 |
---|
6496 | Ignore-this: b1a434cd40a87c3d027fef4ce609d25c |
---|
6497 | ] |
---|
6498 | [immutable: fix error in validation of ciphertext hash tree and add test for that code |
---|
6499 | zooko@zooko.com**20090108054012 |
---|
6500 | Ignore-this: 3241ce66373ebc514ae6e6f086f6daa2 |
---|
6501 | pyflakes pointed out to me that I had committed some code that is untested, since it uses an undefined name. This patch exercises that code -- the validation of the ciphertext hash tree -- by corrupting some of the share files in a very specific way, and also fixes the bug. |
---|
6502 | ] |
---|
6503 | [download: make sure you really get all the crypttext hashes |
---|
6504 | zooko@zooko.com**20090108022638 |
---|
6505 | Ignore-this: c1d5ebb048e81f706b9098e26876e040 |
---|
6506 | We were not making sure that we really got all the crypttext hashes during download. If a server were to return less than the complete set of crypttext hashes, then our subsequent attempt to verify the correctness of the ciphertext would fail. (And it wouldn't be obvious without very careful debugging why it had failed.) |
---|
6507 | This patch makes it so that you keep trying to get ciphertext hashes until you have a full set or you run out of servers to ask. |
---|
6508 | ] |
---|
6509 | [immutable: new checker and verifier |
---|
6510 | zooko@zooko.com**20090106002818 |
---|
6511 | Ignore-this: 65441f8fdf0db8bcedeeb3fcbbd07d12 |
---|
6512 | New checker and verifier use the new download class. They are robust against various sorts of failures or corruption. They return detailed results explaining what they learned about your immutable files. Some grotesque sorts of corruption are not properly handled yet, and those ones are marked as TODO or commented-out in the unit tests. |
---|
6513 | There is also a repairer module in this patch with the beginnings of a repairer in it. That repairer is mostly just the interface to the outside world -- the core operation of actually reconstructing the missing data blocks and uploading them is not in there yet. |
---|
6514 | This patch also refactors the unit tests in test_immutable so that the handling of each kind of corruption is reported as passing or failing separately, can be separately TODO'ified, etc. The unit tests are also improved in various ways to require more of the code under test or to stop requiring unreasonable things of it. :-) |
---|
6515 | |
---|
6516 | ] |
---|
6517 | [immutable/checker: make log() tolerate the format= form |
---|
6518 | warner@lothar.com**20080908030308] |
---|
6519 | [checker: make the log() function of SimpleCHKFileVerifier compatible with the log() function of its superclasses and subclasses |
---|
6520 | zooko@zooko.com**20080825214407] |
---|
6521 | [immutable/filenode.py: add TODO note about the #514 monitor to check(), rather than going through the checker/verifier code and adding it, since Zooko is currently working on that code |
---|
6522 | warner@lothar.com**20081022084237] |
---|
6523 | [dirnode manifest/stats: process more than one LIT file per tree; we were accidentally ignoring all but the first |
---|
6524 | warner@allmydata.com**20081115045049] |
---|
6525 | [webapi: add 'summary' string to checker results JSON |
---|
6526 | warner@allmydata.com**20081119002826] |
---|
6527 | [try to tidy up uri-as-string vs. uri-as-object |
---|
6528 | zooko@zooko.com**20081219143924 |
---|
6529 | Ignore-this: 4280727007c29f5b3e9273a34519893f |
---|
6530 | I get confused about whether a given argument or return value is a uri-as-string or uri-as-object. This patch adds a lot of assertions that it is one or the other, and also changes CheckerResults to take objects not strings. |
---|
6531 | In the future, I hope that we generally use Python objects except when importing into or exporting from the Python interpreter e.g. over the wire, the UI, or a stored file. |
---|
6532 | ] |
---|
6533 | [web/filenode: oops, fix test failures, not everything has a storage index |
---|
6534 | warner@allmydata.com**20081029011720] |
---|
6535 | [web/filenode: add Accept-Ranges and ETag (for immutable files) headers to GET responses |
---|
6536 | warner@allmydata.com**20081029010103] |
---|
6537 | [#330: convert stats-gatherer into a .tac file service, add 'tahoe create-stats-gatherer' |
---|
6538 | warner@allmydata.com**20081118074620] |
---|
6539 | [dirnode manifest: add verifycaps, both to internal API and to webapi. This will give the manual-GC tools more to work with, so they can estimate how much space will be freed. |
---|
6540 | warner@allmydata.com**20081124204046] |
---|
6541 | [CLI: add 'tahoe stats', to run start-deep-stats and print the results |
---|
6542 | warner@allmydata.com**20081114014350] |
---|
6543 | [manifest: add storage-index strings to the json results |
---|
6544 | warner@allmydata.com**20081119220027] |
---|
6545 | [manifest: include stats in results. webapi is unchanged. |
---|
6546 | warner@allmydata.com**20081119210347] |
---|
6547 | [doc: sundry amendments to docs and in-line code comments |
---|
6548 | zooko@zooko.com**20081228225954 |
---|
6549 | Ignore-this: a38057b9bf0f00afeea1c468b2237c36 |
---|
6550 | ] |
---|
6551 | [NEWS: minor edits |
---|
6552 | warner@allmydata.com**20081106223356] |
---|
6553 | [setup: one more address to send release announcements to |
---|
6554 | zooko@zooko.com**20081203015040 |
---|
6555 | Ignore-this: 87cb7a9c3a1810ff0c87908548027ac5 |
---|
6556 | ] |
---|
6557 | [setup: another note about the process of making a tahoe release: mail to duplicity-talk@nongnu.org |
---|
6558 | zooko@zooko.com**20081203014414 |
---|
6559 | Ignore-this: 77ffd6f7412cdc3283c1450cfde9fdf1 |
---|
6560 | ] |
---|
6561 | [docs: add a note that when you make a new tahoe release, you should send the announcement to fuse-devel@lists.sourceforge.net |
---|
6562 | zooko@zooko.com**20081023213658] |
---|
6563 | [docs: how_to_make_a_tahoe_release.txt |
---|
6564 | zooko@zooko.com**20080828202109 |
---|
6565 | Just some cryptic notes to self, but if I get hit by a truck then someone else might be able to decode them. |
---|
6566 | ] |
---|
6567 | [immutable: stop reading past the end of the sharefile in the process of optimizing download -- Tahoe storage servers < 1.3.0 return an error if you read past the end of the share file |
---|
6568 | zooko@zooko.com**20090105194057 |
---|
6569 | Ignore-this: 365e1f199235a55c0354ba6cb2b05a04 |
---|
6570 | ] |
---|
6571 | [immutable: refactor downloader to be more reusable for checker/verifier/repairer (and better) |
---|
6572 | zooko@zooko.com**20090105155145 |
---|
6573 | Ignore-this: 29a22b1eb4cb530d4b69c12aa0d00740 |
---|
6574 | |
---|
6575 | The code for validating the share hash tree and the block hash tree has been rewritten to make sure it handles all cases, to share metadata about the file (such as the share hash tree, block hash trees, and UEB) among different share downloads, and not to require hashes to be stored on the server unnecessarily, such as the roots of the block hash trees (not needed since they are also the leaves of the share hash tree), and the root of the share hash tree (not needed since it is also included in the UEB). It also passes the latest tests including handling corrupted shares well. |
---|
6576 | |
---|
6577 | ValidatedReadBucketProxy takes a share_hash_tree argument to its constructor, which is a reference to a share hash tree shared by all ValidatedReadBucketProxies for that immutable file download. |
---|
6578 | |
---|
6579 | ValidatedReadBucketProxy requires the block_size and share_size to be provided in its constructor, and it then uses those to compute the offsets and lengths of blocks when it needs them, instead of reading those values out of the share. The user of ValidatedReadBucketProxy therefore has to have first used a ValidatedExtendedURIProxy to compute those two values from the validated contents of the URI. This is pleasingly simplifies safety analysis: the client knows which span of bytes corresponds to a given block from the validated URI data, rather than from the unvalidated data stored on the storage server. It also simplifies unit testing of verifier/repairer, because now it doesn't care about the contents of the "share size" and "block size" fields in the share. It does not relieve the need for share data v2 layout, because we still need to store and retrieve the offsets of the fields which come after the share data, therefore we still need to use share data v2 with its 8-byte fields if we want to store share data larger than about 2^32. |
---|
6580 | |
---|
6581 | Specify which subset of the block hashes and share hashes you need while downloading a particular share. In the future this will hopefully be used to fetch only a subset, for network efficiency, but currently all of them are fetched, regardless of which subset you specify. |
---|
6582 | |
---|
6583 | ReadBucketProxy hides the question of whether it has "started" or not (sent a request to the server to get metadata) from its user. |
---|
6584 | |
---|
6585 | Download is optimized to do as few roundtrips and as few requests as possible, hopefully speeding up download a bit. |
---|
6586 | |
---|
6587 | ] |
---|
6588 | [download: oops, NotEnoughHashesError comes from hashtree, not hashutil |
---|
6589 | warner@allmydata.com**20070418033751] |
---|
6590 | [debug/test_cli: fix error handling for catalog-shares, to make the test stop failing on windows |
---|
6591 | warner@allmydata.com**20081030190651] |
---|
6592 | [catalog-shares command: tolerate errors, log them to stderr, handle v2-immutable shares |
---|
6593 | warner@allmydata.com**20081029221010] |
---|
6594 | [minor: fix unused imports -- thanks, pyflakes |
---|
6595 | zooko@zooko.com**20081205190723 |
---|
6596 | Ignore-this: 799f6a16360ac1aee8f6e0eb35a28a88 |
---|
6597 | ] |
---|
6598 | [finish renaming 'subshare' to 'block' in immutable/encode.py and in docs/ |
---|
6599 | zooko@zooko.com**20081209223318 |
---|
6600 | Ignore-this: 3d1b519f740c3d1030cb733f76fdae61 |
---|
6601 | ] |
---|
6602 | [docs: add a bunch of .svg pictures |
---|
6603 | warner@allmydata.com**20070424012526] |
---|
6604 | [docs/file-encoding.txt: move this over from the wiki |
---|
6605 | warner@allmydata.com**20080603025827] |
---|
6606 | [immutable: refactor ReadBucketProxy a little |
---|
6607 | zooko@zooko.com**20081216235325 |
---|
6608 | Ignore-this: b3733257769eff3b3e9625bd04643fd6 |
---|
6609 | ] |
---|
6610 | [debug: pass empty optional arguments to ReadBucketProxy |
---|
6611 | zooko@zooko.com**20081216235145 |
---|
6612 | Ignore-this: 7132cdc6a52767fbbcca03b242a16982 |
---|
6613 | because those arguments are about to become non-optional (for other code than test/debug code) |
---|
6614 | ] |
---|
6615 | [immutable: remove the last bits of code (only test code or unused code) which did something with plaintext hashes or plaintext hash trees |
---|
6616 | zooko@zooko.com**20081219141807 |
---|
6617 | Ignore-this: d10d26b279794383f27fa59ec4a50219 |
---|
6618 | ] |
---|
6619 | [interfaces: loosen a few max-size constraints which would limit us to a mere 1.09 TB maximum file size |
---|
6620 | zooko@zooko.com**20081009191357 |
---|
6621 | |
---|
6622 | These constraints were originally intended to protect against attacks on the |
---|
6623 | storage server protocol layer which exhaust memory in the peer. However, |
---|
6624 | defending against that sort of DoS is hard -- probably it isn't completely |
---|
6625 | achieved -- and it costs development time to think about it, and it sometimes |
---|
6626 | imposes limits on legitimate users which we don't necessarily want to impose. |
---|
6627 | So, for now we forget about limiting the amount of RAM that a foolscap peer can |
---|
6628 | cause you to start using. |
---|
6629 | |
---|
6630 | ] |
---|
6631 | [interfaces: move signatures into docstrings, to reduce lines of code and improve code-coverage numbers |
---|
6632 | warner@allmydata.com**20070725024321] |
---|
6633 | [raise the limit on block hashes and share hashes from 30 to 2**20 |
---|
6634 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430065115] |
---|
6635 | [immutable: remove unused code to produce plaintext hashes |
---|
6636 | zooko@zooko.com**20081209224546 |
---|
6637 | Ignore-this: 1ff9b6fa48e0617fea809998a0e3b6e |
---|
6638 | ] |
---|
6639 | [encode.py: also record the size, along with plaintext_hash and SI |
---|
6640 | warner@allmydata.com**20080325020815] |
---|
6641 | [encode: log a plaintext hash and SI for each upload. This will allow the log gatherer to correlate the two, to better measure the benefits of convergence |
---|
6642 | warner@allmydata.com**20080325015537] |
---|
6643 | [immutable: ValidatedExtendedURIProxy computes and stores block_size and share_size for the convenience of its users |
---|
6644 | zooko@zooko.com**20090102174317 |
---|
6645 | Ignore-this: 2bab64048fffc05dc6592d617aeb412f |
---|
6646 | ] |
---|
6647 | [immutable: fix name change from BadOrMissingShareHash to BadOrMissingHash |
---|
6648 | zooko@zooko.com**20090102192709 |
---|
6649 | Ignore-this: 3f22ca1ee045beabb11559512ba130f4 |
---|
6650 | One of the instances of the name accidentally didn't get changed, and pyflakes noticed. The new downloader/checker/verifier/repairer unit tests would also have noticed, but those tests haven't been rolled into a patch and applied to this repo yet... |
---|
6651 | ] |
---|
6652 | [immutable: download.py: Raise the appropriate type of exception to indicate the cause of failure, e.g. BadOrMissingHash, ServerFailure, IntegrityCheckReject (which is a supertype of BadOrMissingHash). This helps users (such as verifier/repairer) catch certain classes of reasons for "why did this download not work". The tests of verifier/repairer test this code and rely on this code. |
---|
6653 | zooko@zooko.com**20090102185858 |
---|
6654 | Ignore-this: 377bf621bbb6e360a98fd287bb1593f1 |
---|
6655 | ] |
---|
6656 | [trivial: remove unused import (thanks, pyflakes) |
---|
6657 | zooko@zooko.com**20081219194629 |
---|
6658 | Ignore-this: 96e15d6de43dd1204a8933171f194189 |
---|
6659 | ] |
---|
6660 | [immutable: don't catch all exception when downloading, catch only DeadReferenceError and IntegrityCheckReject |
---|
6661 | zooko@zooko.com**20081221234135 |
---|
6662 | Ignore-this: 1abe05c3a5910378abc3920961f19aee |
---|
6663 | ] |
---|
6664 | [immutable: invent download.BadOrMissingHashError which is raised if either hashtree.BadHashError, hashtree.NotEnoughHashesError, and which is a subclass of IntegrityCheckReject |
---|
6665 | zooko@zooko.com**20081221234130 |
---|
6666 | Ignore-this: 1b04d7e9402ebfb2cd4c7648eb16af84 |
---|
6667 | ] |
---|
6668 | [mutable: merge renaming with test patches |
---|
6669 | zooko@zooko.com**20081207144519 |
---|
6670 | Ignore-this: a922a8b231090fb35b9ef84d99e9dba3 |
---|
6671 | ] |
---|
6672 | [rrefutil: generically wrap any errback from callRemote() in a ServerFailure instance |
---|
6673 | zooko@zooko.com**20081231202830 |
---|
6674 | Ignore-this: c949eaf8589ed4c3c232f17808fdce6a |
---|
6675 | This facilitates client code to easily catch ServerFailures without also catching exceptions arising from client-side code. |
---|
6676 | See also: |
---|
6677 | http://foolscap.lothar.com/trac/ticket/105 # make it easy to distinguish server-side failures/exceptions from client-side |
---|
6678 | ] |
---|
6679 | [#538: fetch version and attach to the rref. Make IntroducerClient demand v1 support. |
---|
6680 | warner@allmydata.com**20081122020727] |
---|
6681 | [upload: if we lose the helper, go back to doing direct-to-server uploads instead of causing all subsequent uploads to fail |
---|
6682 | warner@allmydata.com**20080207232659] |
---|
6683 | [introducer: move the relevant interfaces out to introducer/interfaces.py |
---|
6684 | warner@allmydata.com**20080619000441] |
---|
6685 | [note that setting k=1 is equivalent to replication |
---|
6686 | warner@allmydata.com**20070712232212] |
---|
6687 | [immutable: ReadBucketProxy defines classes of exception: LayoutInvalid and its two subtypes RidiculouslyLargeURIExtensionBlock and ShareVersionIncompatible. This helps users (such as verifier/repairer) catch certain classes of reasons for "why did this download not work". This code gets exercised by the verifier/repairer unit tests, which corrupt the shares on disk in order to trigger problems like these. |
---|
6688 | zooko@zooko.com**20090102181554 |
---|
6689 | Ignore-this: 2288262a59ee695f524859ed4b0b39d5 |
---|
6690 | ] |
---|
6691 | [immutable: fix detection of truncated shares to take into account the fieldsize -- either 4 or 8 |
---|
6692 | zooko@zooko.com**20090103005745 |
---|
6693 | Ignore-this: 710184bd90f73dc18f3899d90ec6e972 |
---|
6694 | ] |
---|
6695 | [immutable: raise LayoutInvalid instead of struct.error when a share is truncated |
---|
6696 | zooko@zooko.com**20090103004806 |
---|
6697 | Ignore-this: 346c779045f79725965a0f2d3eea41f9 |
---|
6698 | To fix this error from the Windows buildslave: |
---|
6699 | |
---|
6700 | [ERROR]: allmydata.test.test_immutable.Test.test_download_from_only_3_remaining_shares |
---|
6701 | |
---|
6702 | Traceback (most recent call last): |
---|
6703 | File "C:\Documents and Settings\buildslave\windows-native-tahoe\windows\build\src\allmydata\immutable\download.py", line 135, in _bad |
---|
6704 | raise NotEnoughSharesError("ran out of peers, last error was %s" % (f,)) |
---|
6705 | allmydata.interfaces.NotEnoughSharesError: ran out of peers, last error was [Failure instance: Traceback: <class 'struct.error'>: unpack requires a string argument of length 4 |
---|
6706 | c:\documents and settings\buildslave\windows-native-tahoe\windows\build\support\lib\site-packages\foolscap-0.3.2-py2.5.egg\foolscap\call.py:667:_done |
---|
6707 | c:\documents and settings\buildslave\windows-native-tahoe\windows\build\support\lib\site-packages\foolscap-0.3.2-py2.5.egg\foolscap\call.py:53:complete |
---|
6708 | c:\Python25\lib\site-packages\twisted\internet\defer.py:239:callback |
---|
6709 | c:\Python25\lib\site-packages\twisted\internet\defer.py:304:_startRunCallbacks |
---|
6710 | --- <exception caught here> --- |
---|
6711 | c:\Python25\lib\site-packages\twisted\internet\defer.py:317:_runCallbacks |
---|
6712 | C:\Documents and Settings\buildslave\windows-native-tahoe\windows\build\src\allmydata\immutable\layout.py:374:_got_length |
---|
6713 | C:\Python25\lib\struct.py:87:unpack |
---|
6714 | ] |
---|
6715 | =============================================================================== |
---|
6716 | |
---|
6717 | ] |
---|
6718 | [storage: introduce v2 immutable shares, with 8-byte offsets fields, to remove two of the three size limitations in #346. This code handles v2 shares but does not generate them. We'll make a release with this v2-tolerance, wait a while, then make a second release that actually generates v2 shares, to avoid compatibility problems. |
---|
6719 | warner@allmydata.com**20081010011327] |
---|
6720 | [trivial: remove unused import (pyflakes) |
---|
6721 | zooko@zooko.com**20090103182215 |
---|
6722 | Ignore-this: 4a29a14fa4580460a5e61fa0aa88b9b2 |
---|
6723 | ] |
---|
6724 | [immutable: fix test for truncated reads of URI extension block size |
---|
6725 | zooko@zooko.com**20090103174427 |
---|
6726 | Ignore-this: d9ff9dfff88b4cc7aa6751ce2e9088a6 |
---|
6727 | ] |
---|
6728 | [immutable: more detailed tests for checker/verifier/repairer |
---|
6729 | zooko@zooko.com**20081231201838 |
---|
6730 | Ignore-this: dd16beef604b0917f4493bc4ef35ab74 |
---|
6731 | There are a lot of different ways that a share could be corrupted, or that attempting to download it might fail. These tests attempt to exercise many of those ways and require the checker/verifier/repairer to handle each kind of failure well. |
---|
6732 | ] |
---|
6733 | [immutable: mark a failing download test as "todo", because I think it is revealing a limitation of the current downloader's handling of corrupted shares |
---|
6734 | zooko@zooko.com**20090103190003 |
---|
6735 | Ignore-this: 1d429912dda92d986e2ee366d73e088c |
---|
6736 | ] |
---|
6737 | [immutable: add more detailed tests of download, including testing the count of how many reads different sorts of downloads take |
---|
6738 | zooko@zooko.com**20090102225459 |
---|
6739 | Ignore-this: d248eb3982fdb05b43329142a723f5a1 |
---|
6740 | ] |
---|
6741 | [immutable: fix think-o in previous patch which caused all reads to return "", and also optimize by not opening the file when the answer is going to be "" |
---|
6742 | zooko@zooko.com**20090103200245 |
---|
6743 | Ignore-this: 8ac4d0b0399cd74e8a424ffbcf3d9eb9 |
---|
6744 | ] |
---|
6745 | [immutable: when storage server reads from immutable share, don't try to read past the end of the file (Python allocates space according to the amount of data requested, so if there is corruption and that number is huge it will do a huge memory allocation) |
---|
6746 | zooko@zooko.com**20090103192222 |
---|
6747 | Ignore-this: e533a65d74437676d5116369fd7c663b |
---|
6748 | ] |
---|
6749 | [immutable: storage servers accept any size shares now |
---|
6750 | zooko@zooko.com**20081231214226 |
---|
6751 | Ignore-this: 28669d591dddaff69088cba4483da61a |
---|
6752 | Nathan Wilcox observed that the storage server can rely on the size of the share file combined with the count of leases to unambiguously identify the location of the leases. This means that it can hold any size share data, even though the field nominally used to hold the size of the share data is only 32 bits wide. |
---|
6753 | |
---|
6754 | With this patch, the storage server still writes the "size of the share data" field (just in case the server gets downgraded to an earlier version which requires that field, or the share file gets moved to another server which is of an earlier vintage), but it doesn't use it. Also, with this patch, the server no longer rejects requests to write shares which are >= 2^32 bytes in size, and it no longer rejects attempts to read such shares. |
---|
6755 | |
---|
6756 | This fixes http://allmydata.org/trac/tahoe/ticket/346 (increase share-size field to 8 bytes, remove 12GiB filesize limit), although there remains open a question of how clients know that a given server can handle large shares (by using the new versioning scheme, probably). |
---|
6757 | |
---|
6758 | Note that share size is also limited by another factor -- how big of a file we can store on the local filesystem on the server. Currently allmydata.com typically uses ext3 and I think we typically have block size = 4 KiB, which means that the largest file is about 2 TiB. Also, the hard drives themselves are only 1 TB, so the largest share is definitely slightly less than 1 TB, which means (when K == 3), the largest file is less than 3 TB. |
---|
6759 | |
---|
6760 | This patch also refactors the creation of new sharefiles so that only a single fopen() is used. |
---|
6761 | |
---|
6762 | This patch also helps with the unit-testing of repairer, since formerly it was unclear what repairer should expect to find if the "share data size" field was corrupted (some corruptions would have no effect, others would cause failure to download). Now it is clear that repairer is not required to notice if this field is corrupted since it has no effect on download. :-) |
---|
6763 | |
---|
6764 | ] |
---|
6765 | [storage.py: improve some precondition() error messages |
---|
6766 | warner@allmydata.com**20081010011425] |
---|
6767 | [storage.py: assert that immutable share size will fit in the 4-byte v1 container (see #346). The struct module in py2.4 raises an error on overflow, but py2.5 merely emits a warning |
---|
6768 | warner@lothar.com**20081020172208] |
---|
6769 | [storage: replace sizelimit with reserved_space, make the stats 'disk_avail' number incorporate this reservation |
---|
6770 | warner@lothar.com**20081201232421] |
---|
6771 | [storage: change service name from 'storageserver' to 'storage' |
---|
6772 | warner@allmydata.com**20080206022859] |
---|
6773 | [test_cli: remove windows-worrying newlines from test data |
---|
6774 | warner@lothar.com**20080802024734] |
---|
6775 | [storage: include disk-free information in the stats-gatherer output |
---|
6776 | warner@lothar.com**20080806210602] |
---|
6777 | [storage: record latency stats in a flat dict, not nested, to conform to RIStatsProvider |
---|
6778 | warner@allmydata.com**20080625002118] |
---|
6779 | [#518: replace various BASEDIR/* config files with a single BASEDIR/tahoe.cfg, with backwards-compatibility of course |
---|
6780 | warner@allmydata.com**20080930232149] |
---|
6781 | [node.py: multi-class exception calls need parentheses |
---|
6782 | warner@allmydata.com**20070601013221] |
---|
6783 | [create_node.py: allow config['webport'] to be missing, for check_memory |
---|
6784 | warner@lothar.com**20071011091959] |
---|
6785 | [change our default HTTP port to 8123 |
---|
6786 | warner@allmydata.com**20071011201723] |
---|
6787 | [docs: trivial edit |
---|
6788 | zooko@zooko.com**20080307003230] |
---|
6789 | [docs: document the private/convergence configuration file |
---|
6790 | zooko@zooko.com**20080325182241] |
---|
6791 | [docs/configuration.txt: wrap to 80 cols |
---|
6792 | warner@allmydata.com**20080205203512] |
---|
6793 | [configuration.txt: describe helper config |
---|
6794 | warner@allmydata.com**20080506225906] |
---|
6795 | [run a stats provider even if there's no gatherer, since the HTTP /statistics page is then useful. Only run the once-per-second load-monitor if there is a gatherer configured |
---|
6796 | warner@allmydata.com**20080508183730] |
---|
6797 | [docs/configuration.txt: explain the current limitations of readonly_storage |
---|
6798 | warner@allmydata.com**20080604004708] |
---|
6799 | [BASEDIR/nickname is now UTF-8 encoded |
---|
6800 | warner@lothar.com**20080920183713] |
---|
6801 | [docs/configuration.txt: document nickname, no_storage, readonly_storage |
---|
6802 | warner@allmydata.com**20080205203329] |
---|
6803 | [docs: update configuration.txt to mention the private subdir and edit the description of webport |
---|
6804 | zooko@zooko.com**20080108174407] |
---|
6805 | [use foolscap's new app_versions API, require foolscap-0.3.1 |
---|
6806 | warner@lothar.com**20080920183853] |
---|
6807 | [bump foolscap dependency to 0.3.0, for the new incident-gathering interfaces |
---|
6808 | warner@lothar.com**20080805235828] |
---|
6809 | [setup: require secure_connections from foolscap |
---|
6810 | zooko@zooko.com**20080730021041 |
---|
6811 | This causes a problem on debian sid, since the pyOpenSSL v0.6 .deb doesn't come |
---|
6812 | with .egg-info, so setuptools will not know that it is already installed and |
---|
6813 | will try to install pyOpenSSL, and if it installs pyOpenSSL v0.7, then this |
---|
6814 | will trigger the bug in Twisted v8.1.0 when used with pyOpenSSL v0.7. |
---|
6815 | |
---|
6816 | http://twistedmatrix.com/trac/ticket/3218 |
---|
6817 | |
---|
6818 | Now the comments in twisted #3218 suggest that it happens only with the select |
---|
6819 | reactor, so maybe using --reactor=poll will avoid it. |
---|
6820 | |
---|
6821 | ] |
---|
6822 | [start using Foolscap's 'incident-logging' feature, which requires foolscap-0.2.9 |
---|
6823 | warner@allmydata.com**20080703004029] |
---|
6824 | [remove unused import: thanks, pyflakes |
---|
6825 | zooko@zooko.com**20071213020530] |
---|
6826 | [node.py: remove the provoke-logport-furlfile-creation hack now that foolscap-0.2.3 does it for us, and add bridge-twisted-logs |
---|
6827 | warner@lothar.com**20071224232440] |
---|
6828 | [node: provoke foolscap-0.2.2 into saving logport.furl, so we can attach to it with 'flogtool dump'. Also, place it in private/, since logs are considered somewhat private |
---|
6829 | warner@allmydata.com**20071219052702] |
---|
6830 | [macapp: simplify node startup failure reporting |
---|
6831 | robk-tahoe@allmydata.com**20080306210904 |
---|
6832 | |
---|
6833 | 1. changed the node's exit-on-error behaviour. rather than logging debug and |
---|
6834 | then delegating to self for _abort_process() instead simply delegate to self |
---|
6835 | _service_startup_failed(failure) to report failures in the startup deferred |
---|
6836 | chain. subclasses then have complete control of handling and reporting any |
---|
6837 | failures in node startup. |
---|
6838 | |
---|
6839 | 2. replace the convoluted wx.PostEvent() glue for posting an event into the |
---|
6840 | gui thread with the simpler expedient of wx.CallAfter() which is much like |
---|
6841 | foolscap's eventually() but also thread safe for inducing a call back on the |
---|
6842 | gui thread. |
---|
6843 | ] |
---|
6844 | [macapp: report failure of node startup to the user |
---|
6845 | robk-tahoe@allmydata.com**20080306195321 |
---|
6846 | |
---|
6847 | in certain cases (e.g. the node.pem changed but old .furls are in private/) |
---|
6848 | the node will abort upon startup. previously it used os.abort() which in these |
---|
6849 | cases caused the mac gui app to crash on startup with no explanation. |
---|
6850 | |
---|
6851 | this changes that behaviour from calling os.abort() to calling |
---|
6852 | node._abort_process(failure) which by default calls os.abort(). this allows |
---|
6853 | that method to be overridden in subclasses. |
---|
6854 | |
---|
6855 | the mac app now provides and uses such a subclass of Client, so that failures |
---|
6856 | are reported to the user in a message dialog before the process exits. |
---|
6857 | this uses wx.PostEvent() with a custom event type to signal from the reactor |
---|
6858 | thread into the gui thread. |
---|
6859 | |
---|
6860 | |
---|
6861 | ] |
---|
6862 | [node.py: when calling os.abort(), announce it to stdout as well as the log |
---|
6863 | warner@lothar.com**20080116090132] |
---|
6864 | [catch failures in startService() and abort process |
---|
6865 | robk-org@allmydata.com**20070605014637] |
---|
6866 | [mac: added 'mount filesystem' action to the mac gui |
---|
6867 | robk-tahoe@allmydata.com**20080220005659 |
---|
6868 | |
---|
6869 | this adds an action to the dock menu and to the file menu (when visible) |
---|
6870 | "Mount Filesystem". This action opens a windows offering the user an |
---|
6871 | opportunity to select from any of the named *.cap files in their |
---|
6872 | .tahoe/private directory, and choose a corresponding mount point to mount |
---|
6873 | that at. |
---|
6874 | |
---|
6875 | it launches the .app binary as a subprocess with the corresponding command |
---|
6876 | line arguments to launch the 'tahoe fuse' functionality to mount that file |
---|
6877 | system. if a NAME.icns file is present in .tahoe/private alonside the |
---|
6878 | chosen NAME.cap, then that icon will be used when the filesystem is mounted. |
---|
6879 | |
---|
6880 | this is highly unlikely to work when running from source, since it uses |
---|
6881 | introspection on sys.executable to find the relavent binary to launch in |
---|
6882 | order to get the right built .app's 'tahoe fuse' functionality. |
---|
6883 | |
---|
6884 | it is also relatively likely that the code currently checked in, hence |
---|
6885 | linked into the build, will have as yet unresolved library dependencies. |
---|
6886 | it's quite unlikely to work on 10.5 with macfuse 1.3.1 at the moment. |
---|
6887 | |
---|
6888 | ] |
---|
6889 | [macapp.py: cosmetic, remove trailing whitespace |
---|
6890 | warner@allmydata.com**20080128184654] |
---|
6891 | [confwiz: fix mac confwiz w.r.t. recent confwiz changes |
---|
6892 | robk-tahoe@allmydata.com**20080215021446] |
---|
6893 | [Reworked mac gui to not lock up upon launch |
---|
6894 | robk-tahoe@allmydata.com**20080125020028 |
---|
6895 | |
---|
6896 | Previously, once the node itself was launched, the UI event loop was no longer |
---|
6897 | running. This meant that the app would sit around seemingly 'wedged' and being |
---|
6898 | reported as 'Not Responding' by the os. |
---|
6899 | |
---|
6900 | This chnages that by actually implementing a wxPython gui which is left running |
---|
6901 | while the reactor, and the node within it, is launched in another thread. |
---|
6902 | Beyond 'quit' -> reactor.stop, there are no interactions between the threads. |
---|
6903 | |
---|
6904 | The ui provides 'open web root' and 'open account page' actions, both in the |
---|
6905 | file menu, and in the (right click) dock icon menu. |
---|
6906 | |
---|
6907 | |
---|
6908 | Something weird in the handling of wxpython's per-frame menubar stuff seems to |
---|
6909 | mean that the menu bar only displays the file menu and about etc (i.e. the items |
---|
6910 | from the wx menubar) if the focus changes from and back to the app while the |
---|
6911 | frame the menubar belongs to is displayed. Hence a splash frame comes up at |
---|
6912 | startup to provide an opportunity. |
---|
6913 | |
---|
6914 | It also seems that, in the case that the file menu is not available, that one |
---|
6915 | can induce it to reappear by choosing 'about' from the dock menu, and then |
---|
6916 | closing the about window. |
---|
6917 | ] |
---|
6918 | [cleanup mac and windows build code |
---|
6919 | robk-tahoe@allmydata.com**20080124030641 |
---|
6920 | |
---|
6921 | this moves some of the code common to both windows and mac builds into the |
---|
6922 | allmydata module hierarchy, and cleans up the windows and mac build directories |
---|
6923 | to import the code from there. |
---|
6924 | ] |
---|
6925 | [update confwiz to include account creation ui |
---|
6926 | robk-tahoe@allmydata.com**20080121211310 |
---|
6927 | |
---|
6928 | this changes the confwiz so that hitting the 'create account' button, rather than |
---|
6929 | opening a webbrowser to the register page, instead provides a simple account creation |
---|
6930 | ui directly, along with changes to the backend (native_client.php) to support that. |
---|
6931 | |
---|
6932 | also added a 'connecting...' message so the user sees a response when they hit |
---|
6933 | login or create account, since the getBasedir call can sometimes take up to ~5min |
---|
6934 | (which is unacceptable for a user product, but this at least somewhat ameliorates |
---|
6935 | the issue of the ui locking up and not giving the user any feedback while it's |
---|
6936 | happening) |
---|
6937 | ] |
---|
6938 | [add winfuse plugin to installer |
---|
6939 | robk-tahoe@allmydata.com**20080117011535 |
---|
6940 | |
---|
6941 | this adds the latest build of mike's winfuse plugins, now also running as |
---|
6942 | a windows service (and using the node.url, private/root_dir.cap files from |
---|
6943 | the noderoot specified by the registry) into the install process. |
---|
6944 | |
---|
6945 | ] |
---|
6946 | [add files from allmydata/web to py2exe distribution |
---|
6947 | robk-tahoe@allmydata.com**20080110213446 |
---|
6948 | |
---|
6949 | when building the py2exe package, glob src/allmydata/web/* into web/ within the dist |
---|
6950 | ] |
---|
6951 | [implement a very simple, wxpython based, config wizard |
---|
6952 | robk-tahoe@allmydata.com**20080112015315 |
---|
6953 | |
---|
6954 | This implements a very small app using a wx ui to log a user in. |
---|
6955 | |
---|
6956 | it takes a username and password, and submits them to a backend on the web site |
---|
6957 | (currently the allmydata test net webserver) to authenticate them. It returns |
---|
6958 | the 'root_cap' uri of the user's virtual drive. Also the introducer.furl is |
---|
6959 | retrieved. These are then written into the default noderoot basedir in their |
---|
6960 | usual files (private/root_dir.cap and introducer.furl) |
---|
6961 | |
---|
6962 | a button is provided which will direct the user to the web site in the event |
---|
6963 | that they need to register in order to have an account to use. |
---|
6964 | |
---|
6965 | once the user is successfully authenticated and the files are written, then |
---|
6966 | on win32 the tahoe service will be started. |
---|
6967 | ] |
---|
6968 | [added a small script as a stub for a config wizard |
---|
6969 | robk-tahoe@allmydata.com**20080111023718 |
---|
6970 | |
---|
6971 | this doesn't implement any config wizard ui, but does a simple http fetch of |
---|
6972 | root_cap and introducer.furl from a php backend stub. |
---|
6973 | ] |
---|
6974 | [more minor build tweaks for windows |
---|
6975 | robk-tahoe@allmydata.com**20080115233806 |
---|
6976 | |
---|
6977 | tweaking version number display, and fixing a couple of small bugs |
---|
6978 | ] |
---|
6979 | [fix tahoe script installation logic |
---|
6980 | robk-tahoe@allmydata.com**20080124000556 |
---|
6981 | |
---|
6982 | refine the logic in the .app which tries to install the 'tahoe' script. |
---|
6983 | |
---|
6984 | now it will do nothing if 'tahoe' is found anywhere on the user's path, |
---|
6985 | and only if it's not present will it try to install it in each of the |
---|
6986 | candidate paths (/usr/local/bin ~/bin ~/Library/bin) which are on the |
---|
6987 | user's path |
---|
6988 | ] |
---|
6989 | [have mac app write a tahoe upon startup |
---|
6990 | robk-tahoe@allmydata.com**20080123023501 |
---|
6991 | |
---|
6992 | upon startup, the .app will look in '/usr/local/bin', '~/bin', '~/Library/bin' |
---|
6993 | if it finds one of these dirs, and can write into it, and there isn't already |
---|
6994 | a 'tahoe' present, it will write a small bach script which will launch the |
---|
6995 | binary contained within the .app bundle |
---|
6996 | |
---|
6997 | this allows the .app bundle to offer the services of the 'tahoe' script |
---|
6998 | easily and simply |
---|
6999 | ] |
---|
7000 | [further fixes to windows build (pkg_resources / web templates) |
---|
7001 | robk-tahoe@allmydata.com**20080124005243 |
---|
7002 | |
---|
7003 | now that web templates are found via pkg_resources, then the windows build |
---|
7004 | should in fact _use_ pkg_resources, rather than exclude it from the build |
---|
7005 | to prevent nevow exploding upon import due to the zip provider exception, |
---|
7006 | so that the pkgreshook can do install location based lookups |
---|
7007 | ] |
---|
7008 | [add build dependencies to support py2exe's modulefinder |
---|
7009 | robk-tahoe@allmydata.com**20080110012538 |
---|
7010 | |
---|
7011 | adds windows/depends.py as a container for modules which are needed at runtime |
---|
7012 | but which py2exe's modulefinder dependency analysis fails to find as requisites. |
---|
7013 | ] |
---|
7014 | [fix nevow build prob for py2exe |
---|
7015 | robk-tahoe@allmydata.com**20080110212619 |
---|
7016 | |
---|
7017 | nevow attempts to use pkg_resources to find the formless css file upon |
---|
7018 | import, if pkg_resources is available. unfortunately using pkg_resources |
---|
7019 | to find files is not supported if the files are being loaded from a zip |
---|
7020 | archive (i.e. only source and egg), and further py2exe uses a zip bundle |
---|
7021 | for all the code and dependent libraries. hence having both pkg_resources |
---|
7022 | and nevow built into an exe causes nevow to explode upon import. |
---|
7023 | |
---|
7024 | this tells py2exe not to link pkg_resources into the target, so that |
---|
7025 | this behaviour isn't stimulated. the side effect being that pkg_resources |
---|
7026 | isn't available. |
---|
7027 | |
---|
7028 | ] |
---|
7029 | [_auto_deps.py: per #456, don't require the 'secure_connections' feature from Foolscap, to avoid (failing) builds of pyopenssl |
---|
7030 | warner@allmydata.com**20080609235504] |
---|
7031 | [setup and docs: various improvements to setup and docs |
---|
7032 | zooko@zooko.com**20080605205505 |
---|
7033 | Remove docs/install-details.html and README.win32 for now (see #282). |
---|
7034 | Remove checks for pywin32 and pyopenssl in Makefile -- that is (or will be) automated by setuptools. |
---|
7035 | Remove twisted from setup_requires. This causes the problem in which Nevow doesn't declare its dependency on Twisted (#440) to yield a clear ImportError mentioning Twisted and to fail repeatedly, rather than yielding a weird ImportError and working on the second identical attempt. |
---|
7036 | Fix Makefile to set PATH so that trial and twistd can be found by "make test" after Twisted was installed into support/ during "make" |
---|
7037 | ] |
---|
7038 | [short note about building cryptopp under cywin/native on win |
---|
7039 | robk-tahoe@allmydata.com**20080107235020] |
---|
7040 | [add a note to README.win32 about building cryptopp etc on cygwin |
---|
7041 | robk-tahoe@allmydata.com**20080107213545] |
---|
7042 | [docs: a few updates, edits, and formatting tweaks to README.win32 |
---|
7043 | zooko@zooko.com**20071230113812] |
---|
7044 | [README.win32: clarify layout a bit |
---|
7045 | zooko@zooko.com**20071211232558] |
---|
7046 | [Win32 openSSH info |
---|
7047 | booker@allmydata.com**20071019180241] |
---|
7048 | [README.win32: add note showing MikeB where this file is making false statements :-) |
---|
7049 | zooko@zooko.com**20071211232610] |
---|
7050 | [docs: edit install.html to point to about.html |
---|
7051 | zooko@zooko.com**20080123140810] |
---|
7052 | [docs/install-details.html: wrap to 80 cols, no content changes |
---|
7053 | warner@allmydata.com**20080208035004] |
---|
7054 | [install-details.html: debian 3.1 is better known as 'sarge' |
---|
7055 | warner@allmydata.com**20080130230342] |
---|
7056 | [docs: add note that Debian 3.1 seems to have the same problem as Ubuntu Dapper with regard to Nevow and Twisted version compatibility |
---|
7057 | zooko@zooko.com**20080130182117] |
---|
7058 | [docs: mention some tips of how to resolve a certain dependency on Dapper |
---|
7059 | zooko@zooko.com**20080110213238] |
---|
7060 | [docs: start updating install-details.html to reflect current auto-dependency and setuptools requirements, and to be better written |
---|
7061 | zooko@zooko.com**20080110200337] |
---|
7062 | [auto_deps: require foolscap >= 2.5 |
---|
7063 | robk-tahoe@allmydata.com**20080403230646 |
---|
7064 | |
---|
7065 | the key_generator depends upon tub.setLocationAutomatically() which is only |
---|
7066 | available in foolscap > 0.2.5 |
---|
7067 | ] |
---|
7068 | [bump foolscap dependency to 0.2.4, since we now use log.err |
---|
7069 | warner@allmydata.com**20080205212714] |
---|
7070 | [debian: update dependencies to match calc-deps.py, mainly pycryptopp-0.2.8 |
---|
7071 | warner@allmydata.com**20080102211434] |
---|
7072 | [debian: add Depends: on python-pycryptopp, now that it's been packaged |
---|
7073 | warner@allmydata.com**20071119190450] |
---|
7074 | [docs: yay! We can remove Twisted from the list of "Manual Dependencies" that users have to be aware of when installing |
---|
7075 | zooko@zooko.com**20080411014407] |
---|
7076 | [docs: fix anchor text of hyperlink to tarball |
---|
7077 | zooko@zooko.com**20080328020129] |
---|
7078 | [docs: link to the 1.0.0 tarball in docs/install.html |
---|
7079 | zooko@zooko.com**20080326032229] |
---|
7080 | [docs: link from install.html to the (imminent) location of allmydata-tahoe-0.9.0.tar.gz |
---|
7081 | zooko@zooko.com**20080313200237] |
---|
7082 | [docs: link straight to the release tar.gz in install.html |
---|
7083 | zooko@zooko.com**20080214175414] |
---|
7084 | [setup: fix spacing in error output messages from makefile |
---|
7085 | zooko@zooko.com**20080414135221 |
---|
7086 | Looking over Brian's shoulder the other day, I saw a message that said "Please seedocs/install.html". |
---|
7087 | Looking at the source code of the Makefile, it seems like it should say |
---|
7088 | |
---|
7089 | @echo "ERROR: Not all of Tahoe's dependencies are in place. Please see \ |
---|
7090 | docs/install.html for help on installing dependencies." |
---|
7091 | |
---|
7092 | instead of its current: |
---|
7093 | |
---|
7094 | @echo "ERROR: Not all of Tahoe's dependencies are in place. Please see\ |
---|
7095 | docs/install.html for help on installing dependencies." |
---|
7096 | |
---|
7097 | But, I remember changing this more than once in the past, so either there is a different version of make somewhere which interprets trailing backslashes differently, or someone (possibly me) has repeatedly gotten confused about this issue. Anyway, this time around, I'm trying: |
---|
7098 | |
---|
7099 | @echo "ERROR: Not all of Tahoe's dependencies are in place. Please see docs/install.html for help on installing dependencies." |
---|
7100 | |
---|
7101 | Even though it is > 80 chars. |
---|
7102 | |
---|
7103 | |
---|
7104 | ] |
---|
7105 | [Makefile: figleaf2el.py needs PYTHONPATH to get allmydata.util |
---|
7106 | warner@lothar.com**20070917081027] |
---|
7107 | [setup: pyOpenSSL is now easy_installable, and pycryptopp now includes Crypto++, so we can remove those two from the Manual Dependencies |
---|
7108 | zooko@zooko.com**20080424172917] |
---|
7109 | [setup: trivial formatting change in _auto_deps.py |
---|
7110 | zooko@zooko.com**20080506193056] |
---|
7111 | [back our runtime setuptools dependency down to 0.6a9 . We need a newer version to build, but can handle an older version to simply run a pre-built package |
---|
7112 | warner@allmydata.com**20080410233159] |
---|
7113 | [setup: we now require setuptools at run-time |
---|
7114 | zooko@zooko.com**20080410224610] |
---|
7115 | [setup: require twisted >= 2.4.0 |
---|
7116 | zooko@zooko.com**20080409011200] |
---|
7117 | [setup: weaken the requirement on zope.interface from >= 3.1.0 to "any" |
---|
7118 | zooko@zooko.com**20080123172604 |
---|
7119 | We've never heard of a version of zope.interface that *wasn't* compatible, and there is a bug in Ubuntu's packaging of zope.interface which causes it to report its version number as 0.0.0: |
---|
7120 | |
---|
7121 | https://bugs.launchpad.net/zope.interface/+bug/185418 |
---|
7122 | |
---|
7123 | ] |
---|
7124 | [setup: tiny fix to syntax in makefile |
---|
7125 | zooko@zooko.com**20080507123711] |
---|
7126 | [setup: remove specific checks for twisted dependency in makefile |
---|
7127 | zooko@zooko.com**20080506190900 |
---|
7128 | Now that the twisted dependency is handled by the automatic dependency mechanism. |
---|
7129 | ] |
---|
7130 | [setup: update some docs, metadata, and docstrings |
---|
7131 | zooko@zooko.com**20080122162251] |
---|
7132 | [setup: update doc in __init__.py |
---|
7133 | zooko@zooko.com**20071222164650] |
---|
7134 | [setup: simplify makefile's path manipulation now that we rely on setup.py develop |
---|
7135 | zooko@zooko.com**20080326170033] |
---|
7136 | [setup: fix bug in bugfix to patch to include .egg's found in CWD |
---|
7137 | zooko@zooko.com**20071222171952] |
---|
7138 | [Makefile: put an existing PYTHONPATH in front of our generated EGGSPATH, to make it easier to test tahoe against development versions of dependent libraries |
---|
7139 | warner@lothar.com**20071224232153] |
---|
7140 | [setup: whoops, fix the use of source-tree-root-dir eggs in our Makefile |
---|
7141 | zooko@zooko.com**20080101075331] |
---|
7142 | [setup: fix bin/tahoe to include .egg's from the source tree root dir as well |
---|
7143 | zooko@zooko.com**20080101075128 |
---|
7144 | This is necessary, as we can't prevent setuptools from respecting any such eggs, therefore we need to respect them in order to maintain consistency. However, we don't normally install any "install_requires" eggs into the source tree root dir. |
---|
7145 | |
---|
7146 | ] |
---|
7147 | [bin/allmydata-tahoe: update to new src/ + support/ directories, remove instdir/bin check |
---|
7148 | warner@lothar.com**20070915022428] |
---|
7149 | [bin/allmydata-tahoe: also update PYTHONPATH so that child processes (like twistd) will work |
---|
7150 | warner@allmydata.com**20070606183648] |
---|
7151 | [setup: fix bug in previous patch to include .egg's from CWD |
---|
7152 | zooko@zooko.com**20071222171427] |
---|
7153 | [setup: we also need to include .egg's in the CWD in our search path, because if we install a 3rd party library into support/, and *it* installs a library that *it* requires, that one will appear in CWD |
---|
7154 | zooko@zooko.com**20071222170424 |
---|
7155 | It would be nice to figure out a way to force them to all appear in support/ where they belong. |
---|
7156 | ] |
---|
7157 | [setup: don't echo the echo of EGGSPATH |
---|
7158 | zooko@zooko.com**20080307001856] |
---|
7159 | [setup: for reasons that I do not understand "show-eggspath" gives me a GNUmake error unless I move it down a couple of stanzas (until after the stanza that sets PYTHONPATH) |
---|
7160 | zooko@zooko.com**20080122232238] |
---|
7161 | [setup: generate a unique revision number for each build |
---|
7162 | zooko@zooko.com**20080311022602] |
---|
7163 | [setup: bundle darcsver-1.1.1.tar |
---|
7164 | zooko@zooko.com**20080311022116 |
---|
7165 | I forgot that we're doing uncompressed misc/deps at the moment. We don't think this is a long-term good approach... |
---|
7166 | ] |
---|
7167 | [makefile - unreverted Zooko's change to setup.py, this originally was to see if it was causing the build to create a non-running installer on windows, but it wasn't the problem. |
---|
7168 | secorp@allmydata.com**20080311181038] |
---|
7169 | [reverting a change zooko made (2258) to see if it clears up problems in the windows build |
---|
7170 | secorp@allmydata.com**20080310183749] |
---|
7171 | [setup: don't install, just "develop" in setup.py in build target |
---|
7172 | zooko@zooko.com**20080307002820] |
---|
7173 | [setup: put back "chmod +x bin/tahoe" in the build target |
---|
7174 | zooko@zooko.com**20080123224020] |
---|
7175 | [setup: don't echo "signal-error" to stdout when testing for errors |
---|
7176 | zooko@zooko.com**20080325184555 |
---|
7177 | This patch is thanks to Paul Gerhardt. |
---|
7178 | ] |
---|
7179 | [setup: require specific versions of dependencies, both at run-time (if pkg_resources is available) and at build-time, and make there be only once place where we specify those versions |
---|
7180 | zooko@zooko.com**20080122232433 |
---|
7181 | Using pkg_resources.require() like this also apparently allows people to install multiple different versions of packages on their system and tahoe (if pkg_resources is available to it) will import the version of the package that it requires. I haven't tested this feature. |
---|
7182 | ] |
---|
7183 | [setup: use setuptools (if it is present) at run-time to give a specific error message on startup if a too-old version of a dependency is installed |
---|
7184 | zooko@zooko.com**20080122234254] |
---|
7185 | [Makefile: define TRIALCMD with '=' not ':=', to fix make-clean test. Closes #180 |
---|
7186 | warner@allmydata.com**20071015220159] |
---|
7187 | [setup: use the new find_exe module to find trial |
---|
7188 | zooko@zooko.com**20071015185226] |
---|
7189 | [Makefile: use --reactor=poll on cygwin, since select() is insufficient |
---|
7190 | Brian Warner <warner@allmydata.com>**20070914103344] |
---|
7191 | [setup: generalize the kludge of finding an executable (i.e. trial or twistd) when there might be only a .py script version of it available |
---|
7192 | zooko@zooko.com**20071015172504] |
---|
7193 | [setup: simplify the setup by removing the "tahoe dependencies" fake project |
---|
7194 | zooko@zooko.com**20080122143538 |
---|
7195 | Now we use "./setup.py develop" to ensure that changes to our source code are immediately used without requiring a "make" step. This simplification will hopefully pave the way for easier py2exe and py2app, solving the "Unit tests test the installed version" bug (#145), and perhaps also #164 and #176. |
---|
7196 | |
---|
7197 | This patch also conditionalizes the use of setuptools_darcs on the absence of a PKG-INFO file, which is part of fixing #263. |
---|
7198 | ] |
---|
7199 | [doc: emphasize in our "description" field that we are under a Free Software licence |
---|
7200 | czooko@zooko.com**20071016043509] |
---|
7201 | [setup: fix scheme ("file:") for download base for boostrapping setuptools |
---|
7202 | zooko@zooko.com**20071220221814] |
---|
7203 | [setup: fix typo in name of download base for bootstrapping setuptools |
---|
7204 | zooko@zooko.com**20071220221630] |
---|
7205 | [setup: small tidy-up of Make rules |
---|
7206 | zooko@zooko.com**20071222164631] |
---|
7207 | [setup: make dependency failures more helpful (thanks to Priyanka) |
---|
7208 | zooko@zooko.com**20071120060744] |
---|
7209 | [Makefile: check-deps: check for pycryptopp |
---|
7210 | warner@allmydata.com**20071108015046] |
---|
7211 | [setup: fix formatting of error messages from makefile |
---|
7212 | zooko@zooko.com**20071109191339] |
---|
7213 | [setup: formatting of dependency-missing errors |
---|
7214 | zooko@zooko.com**20070921214012] |
---|
7215 | [upgrade to foolscap-0.2.3 |
---|
7216 | warner@lothar.com**20071224232327] |
---|
7217 | [setup: foolscap bundle .tar instead of .tar.gz because multiple bundled .tar's compress together much more nicely than multiple bundled .tar.gz's do. :-) |
---|
7218 | zooko@zooko.com**20071222164920] |
---|
7219 | [setup: remove the hack to determine if we can avoid the explicit setuptools-managed dependency on nevow (which was useful for building on dapper) |
---|
7220 | zooko@zooko.com**20080110195800 |
---|
7221 | For simplicity, and to avoid weird failure modes that result from importing nevow during the build process, we now simply require nevow >= 0.6.0. We currently bundle in misc/dependencies nevow v0.9.18, which will not work on Dapper, since it requires Twisted >= 2.4.0, and Dapper comes with Twisted 2.2.0. Dapper users can (a) install a newer Twisted, (b) install nevow 0.6.0 in egg form so that setuptools can tell that it is installed (without importing it), (c) beg us to start shipping nevow 0.6.0 instead of nevow 0.9.18 in our bundle. |
---|
7222 | |
---|
7223 | ] |
---|
7224 | [setup: update the version numbers of packages that we require, add zope.interface to our requirements, make nevow >= 0.6.0 always be a requirement |
---|
7225 | zooko@zooko.com**20080110195639] |
---|
7226 | [docs: add require version numbers of deps to install.html, move pywin32 from install.html to install-details.html, change ref to install-details.html in install.html |
---|
7227 | zooko@zooko.com**20080110193530] |
---|
7228 | [quick hacks to make install-details.html viewable as html |
---|
7229 | robk-tahoe@allmydata.com**20080104233415] |
---|
7230 | [docs: make it so that people will stop experiencing build failure due to g++ not being installed |
---|
7231 | zooko@zooko.com**20080108170329] |
---|
7232 | [docs: fix hyperlinks from install.html to the Win32 and Cygwin notes |
---|
7233 | zooko@zooko.com**20080108173848] |
---|
7234 | [setup: shebang usr bin env python |
---|
7235 | zooko@zooko.com**20080110200131] |
---|
7236 | [setup: remove hard import of ez_setup -- we can proceed even if ez_setup can't be imported |
---|
7237 | zooko@zooko.com**20080110200152] |
---|
7238 | [setup: require setuptools >= v0.6c6 on all platforms |
---|
7239 | zooko@zooko.com**20080110200213 |
---|
7240 | Technically, we could get away with v0.6c5 or v0.6c4 on non-cygwin platforms, but if someone currently doesn't have setuptools >= v0.6c6 installed then our setup process will just use our bundled setuptools v0.6c7 anyway, so it will still work, and this makes the setup.py and the accompanying documentation simpler. |
---|
7241 | |
---|
7242 | ] |
---|
7243 | [setup: fix the name of "misc/dependencies" for bootstrapping setuptools |
---|
7244 | zooko@zooko.com**20071220221310] |
---|
7245 | [setup: use os.path.join('misc', 'dependencies') instead of "misc/dependencies" |
---|
7246 | zooko@zooko.com**20071220220717 |
---|
7247 | In the hopes that this will make the boostrapping of setuptools from its bundled egg work on Windows. |
---|
7248 | ] |
---|
7249 | [build-deps-setup.py: import twisted early, to make setuptools on dapper use the right version |
---|
7250 | warner@allmydata.com**20080111021502] |
---|
7251 | [setup: fix name of setup script again |
---|
7252 | zooko@zooko.com**20080112004603] |
---|
7253 | [setup: fix name of setup script |
---|
7254 | zooko@zooko.com**20080112004448] |
---|
7255 | [setup: switch back from using "misc/dependencies/setup.py easy_install --always-unzip misc/dependencies" to using "misc/dependencies/setup.py install" |
---|
7256 | zooko@zooko.com**20080112004043 |
---|
7257 | because I don't fully understand the former, I suspect it of being implicated in the current buildslave redness, and we require --always-unzip solely for py2exe. |
---|
7258 | ] |
---|
7259 | [setup: if the build fails, make returns a failure exit code |
---|
7260 | zooko@zooko.com**20080111204331] |
---|
7261 | [resolve makefile conflicts |
---|
7262 | robk-tahoe@allmydata.com**20080110032115 |
---|
7263 | |
---|
7264 | and surpress echo of echoes |
---|
7265 | ] |
---|
7266 | [setup: fix it to direct the user to install.html in case of build failure |
---|
7267 | zooko@zooko.com**20080108163949] |
---|
7268 | [setup: attempt to work-around the problem that paths might end with trailing back-slashes (on Windows) by appending a PATHSEP (i.e. ":" or ";") instead of an OSSEP (i.e. "/" or "\") |
---|
7269 | zooko@zooko.com**20071004211116 |
---|
7270 | |
---|
7271 | I don't know what will happen if the path ends up with something like |
---|
7272 | "C:\Programs and Files\Whatever\;" on Windows, and then that gets passed to |
---|
7273 | cygwin bash. This reminds me of Brian's suggestion to use Python helper |
---|
7274 | scripts (c.f. misc/find-dep-eggs.py) instead of writing this stuff in the |
---|
7275 | GNUmake language. And *that* reminds me of the idea of writing the whole damn |
---|
7276 | thing in Python instead of in GNUmake, i.e. make all of our build tools be |
---|
7277 | plugins for setuptools instead of being GNUmake targets. |
---|
7278 | |
---|
7279 | ] |
---|
7280 | [Makefile: attempt to workaround problem caused by workaround for backslashes glomming onto the following double-quote. ... |
---|
7281 | zooko@zooko.com**20070921000254] |
---|
7282 | [silence warning when building |
---|
7283 | zooko@zooko.com**20070411155059] |
---|
7284 | [Makefile: end PYTHONPATH with "." because the string might end with "\", which will cause shell to later escape whatever character comes after the string |
---|
7285 | zooko@zooko.com**20070920032654] |
---|
7286 | [setup: direct user to doc/install.html if the build fails |
---|
7287 | zooko@zooko.com**20080107232302] |
---|
7288 | [Makefile: don't run darcsver if we already have _version.py. Ought to fix building on non-darcs checkouts, and close #257 |
---|
7289 | warner@allmydata.com**20080104232546] |
---|
7290 | [Makefile: run 'make-version' at least once, in the 'build' target, to make sure we populate src/allmydata/_version.py |
---|
7291 | warner@allmydata.com**20080103203333] |
---|
7292 | [setup: "make" now defaults to "simple-build", which depends on build-deps |
---|
7293 | zooko@zooko.com**20080101064430 |
---|
7294 | This is for conformance with the simple new install.html. People who don't want build-deps can run "make build". |
---|
7295 | ] |
---|
7296 | [Makefile: add suggestion about how to use the distutils config file to select mingw32 compiler |
---|
7297 | zooko@zooko.com**20070914012000] |
---|
7298 | [Makefile: make it clear that it requires GNU Make |
---|
7299 | warner@allmydata.com**20070711203955] |
---|
7300 | [setup: we needn't depend on make-version targets because setup.py always attempts to make a version whenever it is executed |
---|
7301 | zooko@zooko.com**20071004211448] |
---|
7302 | [tweaks to build process to support py2exe |
---|
7303 | robk-tahoe@allmydata.com**20080110010253 |
---|
7304 | |
---|
7305 | py2exe is unable to handle .eggs which are packaged as zip files |
---|
7306 | in preference it will pull in other versions of libraries if they |
---|
7307 | can be found in the environment. |
---|
7308 | |
---|
7309 | this changes causes .eggs to be built as .egg directories, which |
---|
7310 | py2exe can handle. |
---|
7311 | ] |
---|
7312 | [setup: add back "build-deps" as an alias for "build-auto-deps" since I don't know how to configure the buildmaster |
---|
7313 | zooko@zooko.com**20080101075802 |
---|
7314 | And I am very tired. |
---|
7315 | |
---|
7316 | ] |
---|
7317 | [setup: rename build-deps to build-auto-deps |
---|
7318 | zooko@zooko.com**20080101074921] |
---|
7319 | [setup: finish renaming of docs/testnet to docs/testgrid |
---|
7320 | zooko@zooko.com**20080101053659] |
---|
7321 | [setup: setup_requires twisted, because foolscap <= 0.2.5 imports twisted in its setup.py and because we want trial to be available at build time |
---|
7322 | zooko@zooko.com**20080409183053] |
---|
7323 | [setup_require pyutil >= 1.3.16, as the Windows installer builder's misc/sub-ver.py relies on it |
---|
7324 | zooko@zooko.com**20080311031321] |
---|
7325 | [setup: use darcsver instead of pyutil for darcsver, use setup.py plugin instead of executable for darcsver |
---|
7326 | zooko@zooko.com**20080101052831 |
---|
7327 | This hopefully fixes the deb builders. |
---|
7328 | ] |
---|
7329 | [setup: refactor ez_setup.py and setup.py to satisfy the Desert Island scenario, to find and use setuptools egg in-place in misc/dependencies, and make it setup_require pyutil (for darcsver) |
---|
7330 | zooko@zooko.com**20071222164447] |
---|
7331 | [setup: leave the "file:" off the front of your URLs and setuptools (v0.6c7) will treat them as not-URLs which means it will prefer them to HTTP: URLs |
---|
7332 | zooko@zooko.com**20070920222912] |
---|
7333 | [setup: automatically discover files to include in packages |
---|
7334 | zooko@zooko.com**20071110000419 |
---|
7335 | (Because they are python packages or because they are registered under darcs revision control.) |
---|
7336 | |
---|
7337 | ] |
---|
7338 | [setup.py: don't install allmydata.Crypto.PublicKey either |
---|
7339 | Brian Warner <warner@lothar.com>**20070816075452] |
---|
7340 | [setup: setup_requires setuptools_darcs_plugin. Without it the "./setup.py sdist upload" will silently upload the wrong package contents. |
---|
7341 | zooko@zooko.com**20071013203818 |
---|
7342 | |
---|
7343 | ] |
---|
7344 | [setup.py: arg, another stupid paste error, affecting cygwin |
---|
7345 | warner@allmydata.com**20071211021734] |
---|
7346 | [setup.py: fix stupid cut-and-paste error |
---|
7347 | warner@allmydata.com**20071211020838] |
---|
7348 | [build-deps: require setuptools 0.6c4 or later, because older ones don't allow foolscap to use os.random at import time |
---|
7349 | warner@allmydata.com**20071211020659] |
---|
7350 | [move to foolscap-0.2.2 |
---|
7351 | warner@lothar.com**20071213022145] |
---|
7352 | [upgrade to foolscap-0.2.1, with a new logging framework |
---|
7353 | warner@lothar.com**20071211003508] |
---|
7354 | [upgrade to foolscap-0.1.7 |
---|
7355 | warner@allmydata.com**20070927012451] |
---|
7356 | [add foolscap tarball to misc/dependencies |
---|
7357 | zooko@zooko.com**20070913215023] |
---|
7358 | [setup: bundle setuptools_darcs plugin in misc/dependencies |
---|
7359 | zooko@zooko.com**20071213012042] |
---|
7360 | [setup: copy in the latest version of ez_setup.py, which works even if setuptools is already imported, or can be imported, into the current Python interpreter, but can't be imported into a new Python interpreter in a subprocess |
---|
7361 | zooko@zooko.com**20071222052620 |
---|
7362 | This actually happens in practice -- this fixes the Desert Island scenario. Thanks to PJE. |
---|
7363 | ] |
---|
7364 | [setup: make ez_setup.py work to upgrade setuptools even if there is already a setuptools installed which is too old |
---|
7365 | zooko@zooko.com**20071013055937 |
---|
7366 | |
---|
7367 | This works only if setup.py is invoked as "./setup.py install" (or |
---|
7368 | "python ./setup.py install" or whatever). It doesn't work if it is invoked by |
---|
7369 | easy_install. On the other hand, I don't know why easy_install would execute |
---|
7370 | ez_setup.py anyway -- I thought that it didn't execute the setup.py scripts. |
---|
7371 | See this mailing list thread for details: |
---|
7372 | |
---|
7373 | http://mail.python.org/pipermail/distutils-sig/2007-October/008339.html |
---|
7374 | |
---|
7375 | ] |
---|
7376 | [setup: patch to fix bug in our latest ez_setup.py if pkg_resources can't be imported |
---|
7377 | zooko@zooko.com**20071004200920] |
---|
7378 | [setup: bundle pyutil-1.3.16.tar |
---|
7379 | zooko@zooko.com**20080311025818] |
---|
7380 | [node.py: add BASEDIR/keepalive_timeout and BASEDIR/disconnect_timeout, to set/enable the foolscap timers, for #521 |
---|
7381 | warner@allmydata.com**20080924175112] |
---|
7382 | [manhole: be more tolerant of authorized_keys. files in .tahoe |
---|
7383 | robk-tahoe@allmydata.com**20080925031149 |
---|
7384 | |
---|
7385 | both peter and I independently tried to do the same thing to eliminate the |
---|
7386 | authorized_keys file which was causing problems with the broken mac build |
---|
7387 | (c.f. #522) namely mv authorized_keys.8223{,.bak} but the node is, ahem, |
---|
7388 | let's say 'intolerant' of the trailing .bak - rather than disable the |
---|
7389 | manhole as one might expect, it instead causes the node to explode on |
---|
7390 | startup. this patch makes it skip over anything that doesn't pass the |
---|
7391 | 'parse this trailing stuff as an int' test. |
---|
7392 | ] |
---|
7393 | [storage: add remote_advise_corrupt_share, for clients to tell storage servers about share corruption that they've discovered. The server logs the report. |
---|
7394 | warner@lothar.com**20081024185248] |
---|
7395 | [remove unused import (thanks, pyflakes) |
---|
7396 | zooko@zooko.com**20080131230059] |
---|
7397 | [repairer: test all different kinds of corruption that can happen to share files on disk |
---|
7398 | zooko@zooko.com**20081014230920] |
---|
7399 | [storage: remove update_write_enabler method, it won't serve the desired purpose, and I have a better scheme in mind. See #489 for details |
---|
7400 | warner@lothar.com**20080722002828] |
---|
7401 | [repairer: fix swapped docstrings; thanks Brian |
---|
7402 | zooko@zooko.com**20080925182436] |
---|
7403 | [#527: expire the cached files that are used to support Range: headers, every hour, when the file is unused and older than an hour |
---|
7404 | warner@allmydata.com**20081030203909] |
---|
7405 | [immutable, checker, and tests: improve docstrings, assertions, tests |
---|
7406 | zooko@zooko.com**20081221210752 |
---|
7407 | Ignore-this: 403ed5ca120d085d582cd5695d8371f |
---|
7408 | No functional changes, but remove unused code, improve or fix docstrings, etc. |
---|
7409 | ] |
---|
7410 | [immutable: use new logging mixins to simplify logging |
---|
7411 | zooko@zooko.com**20081217000450 |
---|
7412 | Ignore-this: 7d942905d1ea8f34753dbb997e1857f3 |
---|
7413 | ] |
---|
7414 | [download.py: make logging safe in ValidatedBucket |
---|
7415 | warner@allmydata.com**20080206085034] |
---|
7416 | [download: refactor handling of URI Extension Block and crypttext hash tree, simplify things |
---|
7417 | zooko@zooko.com**20081205141754 |
---|
7418 | Ignore-this: 51b9952ea2406b0eea60e8d72654fd99 |
---|
7419 | |
---|
7420 | Refactor into a class the logic of asking each server in turn until one of them gives an answer |
---|
7421 | that validates. It is called ValidatedThingObtainer. |
---|
7422 | |
---|
7423 | Refactor the downloading and verification of the URI Extension Block into a class named |
---|
7424 | ValidatedExtendedURIProxy. |
---|
7425 | |
---|
7426 | The new logic of validating UEBs is minimalist: it doesn't require the UEB to contain any |
---|
7427 | unncessary information, but of course it still accepts such information for backwards |
---|
7428 | compatibility (so that this new download code is able to download files uploaded with old, and |
---|
7429 | for that matter with current, upload code). |
---|
7430 | |
---|
7431 | The new logic of validating UEBs follows the practice of doing all validation up front. This |
---|
7432 | practice advises one to isolate the validation of incoming data into one place, so that all of |
---|
7433 | the rest of the code can assume only valid data. |
---|
7434 | |
---|
7435 | If any redundant information is present in the UEB+URI, the new code cross-checks and asserts |
---|
7436 | that it is all fully consistent. This closes some issues where the uploader could have |
---|
7437 | uploaded inconsistent redundant data, which would probably have caused the old downloader to |
---|
7438 | simply reject that download after getting a Python exception, but perhaps could have caused |
---|
7439 | greater harm to the old downloader. |
---|
7440 | |
---|
7441 | I removed the notion of selecting an erasure codec from codec.py based on the string that was |
---|
7442 | passed in the UEB. Currently "crs" is the only such string that works, so |
---|
7443 | "_assert(codec_name == 'crs')" is simpler and more explicit. This is also in keeping with the |
---|
7444 | "validate up front" strategy -- now if someone sets a different string than "crs" in their UEB, |
---|
7445 | the downloader will reject the download in the "validate this UEB" function instead of in a |
---|
7446 | separate "select the codec instance" function. |
---|
7447 | |
---|
7448 | I removed the code to check plaintext hashes and plaintext Merkle Trees. Uploaders do not |
---|
7449 | produce this information any more (since it potentially exposes confidential information about |
---|
7450 | the file), and the unit tests for it were disabled. The downloader before this patch would |
---|
7451 | check that plaintext hash or plaintext merkle tree if they were present, but not complain if |
---|
7452 | they were absent. The new downloader in this patch complains if they are present and doesn't |
---|
7453 | check them. (We might in the future re-introduce such hashes over the plaintext, but encrypt |
---|
7454 | the hashes which are stored in the UEB to preserve confidentiality. This would be a double- |
---|
7455 | check on the correctness of our own source code -- the current Merkle Tree over the ciphertext |
---|
7456 | is already sufficient to guarantee the integrity of the download unless there is a bug in our |
---|
7457 | Merkle Tree or AES implementation.) |
---|
7458 | |
---|
7459 | This patch increases the lines-of-code count by 8 (from 17,770 to 17,778), and reduces the |
---|
7460 | uncovered-by-tests lines-of-code count by 24 (from 1408 to 1384). Those numbers would be more |
---|
7461 | meaningful if we omitted src/allmydata/util/ from the test-coverage statistics. |
---|
7462 | |
---|
7463 | ] |
---|
7464 | [remove left-over early encode mechanism |
---|
7465 | zooko@zooko.com**20070328070603] |
---|
7466 | [encode: delay completion until all our messages have been delivered |
---|
7467 | warner@lothar.com**20061203065338] |
---|
7468 | [download.py: don't truncate tail segments that are the same size as all the others |
---|
7469 | warner@allmydata.com**20070417203935] |
---|
7470 | [hashtree.BadHashError: mention which leaf caused the problem |
---|
7471 | warner@lothar.com**20070607193822] |
---|
7472 | [disable plaintext hashes in shares, but leave a switch to turn it back on |
---|
7473 | warner@allmydata.com**20080324203951] |
---|
7474 | [immutable file download: make the ciphertext hash tree mandatory |
---|
7475 | zooko@zooko.com**20080721163102 |
---|
7476 | This fixes #491 (URIs do not refer to unique files in Allmydata Tahoe). |
---|
7477 | Fortunately all of the versions of Tahoe currently in use are already producing |
---|
7478 | this ciphertext hash tree when uploading, so there is no |
---|
7479 | backwards-compatibility problem with having the downloader require it to be |
---|
7480 | present. |
---|
7481 | |
---|
7482 | ] |
---|
7483 | [download: make plaintext and ciphertext hashes in the UEB optional. |
---|
7484 | warner@lothar.com**20080323214649 |
---|
7485 | Removing the plaintext hashes can help with the guess-partial-information |
---|
7486 | attack. This does not affect compatibility, but if and when we actually |
---|
7487 | remove any hashes from the share, that will introduce a |
---|
7488 | forwards-compatibility break: tahoe-0.9 will not be able to read such files. |
---|
7489 | |
---|
7490 | ] |
---|
7491 | [upload: stop putting plaintext and ciphertext hashes in shares. |
---|
7492 | warner@lothar.com*-20080323223554 |
---|
7493 | This removes the guess-partial-information attack vector, and reduces |
---|
7494 | the amount of overhead that we consume with each file. It also introduces |
---|
7495 | a forwards-compability break: older versions of the code (before the |
---|
7496 | previous download-time "make hashes optional" patch) will be unable |
---|
7497 | to read files uploaded by this version, as they will complain about the |
---|
7498 | missing hashes. This patch is experimental, and is being pushed into |
---|
7499 | trunk to obtain test coverage. We may undo it before releasing 1.0. |
---|
7500 | |
---|
7501 | ] |
---|
7502 | [upload: stop putting plaintext and ciphertext hashes in shares. |
---|
7503 | warner@lothar.com**20080323223554 |
---|
7504 | This removes the guess-partial-information attack vector, and reduces |
---|
7505 | the amount of overhead that we consume with each file. It also introduces |
---|
7506 | a forwards-compability break: older versions of the code (before the |
---|
7507 | previous download-time "make hashes optional" patch) will be unable |
---|
7508 | to read files uploaded by this version, as they will complain about the |
---|
7509 | missing hashes. This patch is experimental, and is being pushed into |
---|
7510 | trunk to obtain test coverage. We may undo it before releasing 1.0. |
---|
7511 | |
---|
7512 | ] |
---|
7513 | [dump-cap: include UEB_hash in output |
---|
7514 | warner@allmydata.com**20080206184819] |
---|
7515 | [move netstring() and split_netstring() into a separate util.netstring module |
---|
7516 | warner@allmydata.com**20080926043824] |
---|
7517 | [#527: respond to GETs with early ranges quickly, without waiting for the whole file to download. Fixes the alacrity problems with the earlier code. Still needs cache expiration. |
---|
7518 | warner@allmydata.com**20081029005618] |
---|
7519 | [web: add 'Repair' button to checker results when they indicate unhealthyness. Also add the object's uri to the CheckerResults instance. |
---|
7520 | warner@allmydata.com**20081030010917] |
---|
7521 | [util: logging: refactor some common logging behavior into mixins |
---|
7522 | zooko@zooko.com**20081216233807 |
---|
7523 | Ignore-this: d91408bc984d1cf1fae30134f6cddb13 |
---|
7524 | ] |
---|
7525 | [log.py: update log.err() to take advantage of current foolscap's log.err |
---|
7526 | warner@allmydata.com**20080131004723] |
---|
7527 | [util.log: add levels like UNUSUAL |
---|
7528 | warner@allmydata.com**20080107233245] |
---|
7529 | [util: add gatherResults which is a deferred-list-like thing that doesn't wrap failures in a FirstError |
---|
7530 | zooko@zooko.com**20090104165202 |
---|
7531 | Ignore-this: a284fb8ab8a00a39416a67dc5d9a451e |
---|
7532 | ] |
---|
7533 | [util: dictutil: add DictOfSets.union(key, values) and DictOfSets.update(otherdictofsets) |
---|
7534 | zooko@zooko.com**20090112165539 |
---|
7535 | Ignore-this: 84fb8a2793238b077a7a71aa03ae9d2 |
---|
7536 | ] |
---|
7537 | [util.dictutil: move DictOfSets out to a separate utility module |
---|
7538 | warner@allmydata.com**20080521164349] |
---|
7539 | [test_cli: increase timeout on test_backup, since our dapper buildslave is really slow |
---|
7540 | warner@lothar.com**20090206081753] |
---|
7541 | [Add dirnodes to backupdb and "tahoe backup", closes #606. |
---|
7542 | Brian Warner <warner@lothar.com>**20091126234257 |
---|
7543 | Ignore-this: fa88796fcad1763c6a2bf81f56103223 |
---|
7544 | |
---|
7545 | * backups now share dirnodes with any previous backup, in any location, |
---|
7546 | so renames and moves are handled very efficiently |
---|
7547 | * "tahoe backup" no longer bothers reading the previous snapshot |
---|
7548 | * if you switch grids, you should delete ~/.tahoe/private/backupdb.sqlite, |
---|
7549 | to force new uploads of all files and directories |
---|
7550 | ] |
---|
7551 | [Raise a more explanatory exception for errors encountered during backup processing. |
---|
7552 | Alberto Berti <alberto@metapensiero.it>**20090222170252 |
---|
7553 | Ignore-this: f6b8ffe2a903ba07a2c1c59130dac1e4 |
---|
7554 | ] |
---|
7555 | [Add elapsed timestamp to cli backup command final summary. |
---|
7556 | Alberto Berti <alberto@metapensiero.it>**20090224171425 |
---|
7557 | Ignore-this: 9a042d11f95ee9f6858a5096d513c0bc |
---|
7558 | ] |
---|
7559 | [Two small fixes on documentation for cli backup command. |
---|
7560 | Alberto Berti <alberto@metapensiero.it>**20090224223634 |
---|
7561 | Ignore-this: 5634a6dadad6e4e43a112de7fe5c74c |
---|
7562 | ] |
---|
7563 | [tahoe_backup.py: tolerate more time formats |
---|
7564 | warner@allmydata.com**20090313011600 |
---|
7565 | Ignore-this: ca74f56f0dce7d19810c5a7a75bc623c |
---|
7566 | ] |
---|
7567 | [hashutil: add constant-time comparison function, to avoid timing attacks when python's short-circuiting data-dependent == operator is used to, say, check a write-enabler |
---|
7568 | warner@lothar.com**20090323032055 |
---|
7569 | Ignore-this: c5c1f5e529ab1b352c949f3e0d9abf20 |
---|
7570 | ] |
---|
7571 | [util/abbreviate: little utility to abbreviate seconds and bytes |
---|
7572 | warner@allmydata.com**20081119021142] |
---|
7573 | [move testutil into test/common_util.py, since it doesn't count as 'code under test' for our pyflakes numbers |
---|
7574 | warner@allmydata.com**20081029042831] |
---|
7575 | [mutable WIP: clean up status handling, shrink the code a lot, improve test coverage |
---|
7576 | warner@allmydata.com**20080417200222] |
---|
7577 | [web-status: client methods like list_all_uploads() return Upload instances, |
---|
7578 | warner@allmydata.com**20080327012007 |
---|
7579 | not status instances. Fix this. The symptom was that following a link like |
---|
7580 | 'up-123' that referred to an old operation (no longer in memory) while an |
---|
7581 | upload was active would get an ugly traceback instead of a "no such resource" |
---|
7582 | message. |
---|
7583 | |
---|
7584 | ] |
---|
7585 | [download: fix stopProducing failure ('self._paused_at not defined'), add tests |
---|
7586 | warner@allmydata.com**20080714222521] |
---|
7587 | [download status: add time spent paused by the client (when we're serving over a slow HTTP link) |
---|
7588 | warner@allmydata.com**20080421191917] |
---|
7589 | [test_web: more test coverage |
---|
7590 | warner@lothar.com**20081024001118] |
---|
7591 | [interfaces.py: promote immutable.encode.NotEnoughSharesError.. it isn't just for immutable files any more |
---|
7592 | warner@lothar.com**20081027203449] |
---|
7593 | [encode: actually define the UploadAborted exception |
---|
7594 | warner@allmydata.com**20080115032702] |
---|
7595 | [storage: split WriteBucketProxy and ReadBucketProxy out into immutable/layout.py . No behavioral changes. |
---|
7596 | warner@allmydata.com**20081010000800] |
---|
7597 | [storage.py: turn some assertions into preconditions |
---|
7598 | warner@lothar.com**20070714023048] |
---|
7599 | [WriteBucketProxy: improve __repr__ |
---|
7600 | warner@allmydata.com**20080129005351] |
---|
7601 | [upload: abort the bucket upon any write error, and do it with callRemoteOnly to avoid double errors |
---|
7602 | warner@allmydata.com**20080610185528] |
---|
7603 | [storage.ReadBucketProxy: avoid double-start, this only affected tests |
---|
7604 | warner@allmydata.com**20080618000129] |
---|
7605 | [storage: add add_lease/update_write_enabler to remote API, revamp lease handling |
---|
7606 | warner@lothar.com**20080710010655] |
---|
7607 | [storage: remove unused delete_bucket() method, lease-cancellation covers it |
---|
7608 | warner@lothar.com**20070902220029] |
---|
7609 | [storage: always record lease expiration times as integers |
---|
7610 | warner@lothar.com**20070911215331] |
---|
7611 | [docs: fix a few stale comments in code |
---|
7612 | zooko@zooko.com**20080507153903] |
---|
7613 | [increase remote-interface size limits to 16EiB by not casually using 'int' as a constraint |
---|
7614 | warner@lothar.com**20080311175031] |
---|
7615 | [storage: improve stats, make them accessible via webport /statistics |
---|
7616 | warner@allmydata.com**20080616233559] |
---|
7617 | [stats gathering: fix storage server stats if not tracking consumed |
---|
7618 | robk-tahoe@allmydata.com**20080410012306 |
---|
7619 | |
---|
7620 | the RIStatsProvider interface requires that counter and stat values be |
---|
7621 | ChoiceOf(float, int, long) the recent changes to storage server to not |
---|
7622 | track 'consumed' led to returning None as the value of a counter. |
---|
7623 | this causes violations to be experienced by nodes whose stats are being |
---|
7624 | gathered. |
---|
7625 | |
---|
7626 | this patch simply omits that stat if 'consumed' is not being tracked. |
---|
7627 | ] |
---|
7628 | [test_storage: add coverage for discard_storage |
---|
7629 | warner@allmydata.com**20080617005240] |
---|
7630 | [test_storage: add coverage for readonly_storage |
---|
7631 | warner@allmydata.com**20080617005213] |
---|
7632 | [test_storage.py: improve test coverage |
---|
7633 | warner@allmydata.com**20080618000142] |
---|
7634 | [storage: ignore shares in incoming/, to make clients use other servers during simultaneous uploads |
---|
7635 | warner@allmydata.com**20080610185310] |
---|
7636 | [storage: measure latency-per-operation, calculate mean/median/percentiles |
---|
7637 | warner@allmydata.com**20080616222155] |
---|
7638 | [storage: emit log messages on bucket allocate/read and mutable writev |
---|
7639 | warner@allmydata.com**20080328003358] |
---|
7640 | [don't do a du on startup if there is no size limit configured |
---|
7641 | zooko@zooko.com**20080408183656 |
---|
7642 | This also turns off the production of the "space measurement done" log message, if there is no size limit configured. |
---|
7643 | ] |
---|
7644 | [scripts/debug: split out dump_immutable_share |
---|
7645 | warner@allmydata.com**20080812205517] |
---|
7646 | [scripts/debug: clean up use of stdout/stderr |
---|
7647 | warner@allmydata.com**20080812205242] |
---|
7648 | [dump-share: tweak formatting a little bit, to make dumping multiple shares in a row easier to read |
---|
7649 | warner@allmydata.com**20080206193743] |
---|
7650 | [dump-share: clarify the label on the size of the original file |
---|
7651 | warner@allmydata.com**20070926220059] |
---|
7652 | ['tahoe dump-share': show verify-cap too |
---|
7653 | warner@lothar.com**20080707211102] |
---|
7654 | [debug.py: add share-overhead size info to dump-uri-extension |
---|
7655 | warner@lothar.com**20070827064239] |
---|
7656 | [stop using 'as' as an identifier: as with 'with', 'as' has become a reserved word in python 2.6 |
---|
7657 | warner@allmydata.com**20081003002749] |
---|
7658 | [dirnode lookup: use distinct NoSuchChildError instead of the generic KeyError when a child can't be found |
---|
7659 | warner@lothar.com**20081027201525] |
---|
7660 | [dirnode: add get_child_and_metadata_at_path |
---|
7661 | warner@allmydata.com**20081003005203] |
---|
7662 | [util: move PollMixin to a separate file (pollmixin.py), so testutil can be moved into test/ |
---|
7663 | warner@allmydata.com**20081029041548] |
---|
7664 | [client: add 'node.uptime' to the stats we collect |
---|
7665 | warner@allmydata.com**20080417181339] |
---|
7666 | [test_stats.py: improve test coverage |
---|
7667 | warner@allmydata.com**20080430185231] |
---|
7668 | [stats: add tests for CPUUsageMonitor, modify it a bit to facilitate testing |
---|
7669 | warner@allmydata.com**20080430183913] |
---|
7670 | [stats: add CPU-percentage monitor, with 1min/5min/15min moving-window averages, using time.clock() |
---|
7671 | warner@allmydata.com**20080430011253] |
---|
7672 | [introducer: add old (V1) introducer code, add test framework for compatibility testing |
---|
7673 | warner@allmydata.com**20080618235834] |
---|
7674 | [test_introducer.py: don't log nodeids as binary goop |
---|
7675 | warner@allmydata.com**20080422195416] |
---|
7676 | [repair: fix test to map from storage index to directory structure properly (thanks, cygwin buildbot, for being so kloodgey that you won't accept random binary filenames and thus making me notice this bug) |
---|
7677 | zooko@zooko.com**20080926224913] |
---|
7678 | [testutil.PollMixin: set default timeout (to 100s), emit a more helpful error when the timeout is hit |
---|
7679 | warner@allmydata.com**20080930052309] |
---|
7680 | [testutil.PollMixin: use a custom exception (and convert it) to avoid the ugly 'stash' cycle |
---|
7681 | warner@allmydata.com**20080903033251] |
---|
7682 | [util/time_format.py: accept space separator, add unit tests |
---|
7683 | warner@allmydata.com**20081013225258] |
---|
7684 | [copy pyutil.time_format into src/allmydata/util |
---|
7685 | zooko@zooko.com**20070814163349 |
---|
7686 | time_format() provides a good format for logging timestamps |
---|
7687 | ] |
---|
7688 | [add a basic concurrency limiter utility |
---|
7689 | warner@allmydata.com**20080507235330] |
---|
7690 | [test_util.py: get 100% test coverage for hashutil.py |
---|
7691 | warner@allmydata.com**20080304204225] |
---|
7692 | [trivial: fix comment |
---|
7693 | zooko@zooko.com**20090413174138 |
---|
7694 | Ignore-this: d45a9786c44793bc830dab1d8c9dd57c |
---|
7695 | ] |
---|
7696 | [Use DIR-IMM and t=mkdir-immutable for "tahoe backup", for #828 |
---|
7697 | Brian Warner <warner@lothar.com>**20091118192813 |
---|
7698 | Ignore-this: a4720529c9bc6bc8b22a3d3265925491 |
---|
7699 | ] |
---|
7700 | [#598: add cli+backupdb tests, improve user display, update docs, move docs out of proposed/ |
---|
7701 | warner@allmydata.com**20090206040701 |
---|
7702 | Ignore-this: 7a795db5573247471c6a268fb0aa23c0 |
---|
7703 | ] |
---|
7704 | [docs: move files that are about future plans into docs/proposed/, to clearly separate them from descriptions of the present codebase |
---|
7705 | warner@allmydata.com**20080603060702] |
---|
7706 | [docs/mutable-DSA.svg: add a picture of the upcoming DSA-based mutable file structure |
---|
7707 | warner@allmydata.com**20080109020852] |
---|
7708 | [docs/mutable-DSA.txt: update mutable.txt to reflect our proposed DSA-based mutable file scheme (#217) |
---|
7709 | warner@lothar.com**20080111103058] |
---|
7710 | [docs: add some accounting proposals |
---|
7711 | warner@lothar.com**20080320191841] |
---|
7712 | [docs/backupdb.txt: preliminary sketch of our plans for the duplicate-upload-avoidance database |
---|
7713 | warner@allmydata.com**20080528232013] |
---|
7714 | [tests: fix comment |
---|
7715 | zooko@zooko.com**19700105101055 |
---|
7716 | Ignore-this: fabedea917895568b1fca75a480111b9 |
---|
7717 | ] |
---|
7718 | [tests: add tahoe_cp to the list of scripts that we don't actually have tests for yet |
---|
7719 | zooko@zooko.com**19700105100058 |
---|
7720 | Ignore-this: ac89583992fb1b48d9a4680344569d91 |
---|
7721 | ] |
---|
7722 | [#598: add backupdb to 'tahoe backup' command, enable it by default |
---|
7723 | warner@allmydata.com**20090206015640 |
---|
7724 | Ignore-this: 4e6a158d97549c55dbc49f6d69be8c44 |
---|
7725 | ] |
---|
7726 | [#598: first cut of 'tahoe backup' command: no backupdb, but yes shared-unchanged-directories and Archives/TIMESTAMP and Latest/ |
---|
7727 | warner@allmydata.com**20090203030902 |
---|
7728 | Ignore-this: 650df5631523b63dd138978b8f3aa372 |
---|
7729 | ] |
---|
7730 | [CLI: make 'tahoe webopen' command accept aliases like 'tahoe ls' |
---|
7731 | warner@allmydata.com**20080812012023] |
---|
7732 | [test_cli.py: factor out CLITestMixin |
---|
7733 | warner@lothar.com**20080802022938] |
---|
7734 | [CLI: add create-alias command, to merge mkdir and add-alias into a single (secure-from-argv-snooping) step |
---|
7735 | warner@lothar.com**20080802021041] |
---|
7736 | [docs: CLI.txt: rewrite the way that "root directories" (now called "starting directories") and aliases are introduced |
---|
7737 | zooko@zooko.com**20080611193459] |
---|
7738 | ['tahoe cp -r', upon encountering a dangling symlink, would assert out. |
---|
7739 | Larry Hosken <tahoe at lahosken.san-francisco.ca.us>**20090108055114 |
---|
7740 | Ignore-this: 46e75845339faa69ffb3addb7ce74f28 |
---|
7741 | This was somewhat sad; the assertion didn't say what path caused the |
---|
7742 | error, what went wrong. So... silently skip over things that are |
---|
7743 | neither dirs nor files. |
---|
7744 | ] |
---|
7745 | [CLI: remove 'tahoe admin generate-keypair', since the pycryptopp ecdsa API is about to change incompatibly. We'll undo this once pycryptopp is updated |
---|
7746 | warner@allmydata.com**20081007002320] |
---|
7747 | [test_cli: disable generate-keypair test on OS-X, pycryptopp still has a bug |
---|
7748 | warner@lothar.com**20080919193855] |
---|
7749 | [scripts/admin: split up generate_keypair code so that unit tests can use it more easily |
---|
7750 | warner@allmydata.com**20081001235238] |
---|
7751 | [CLI: add 'tahoe admin generate-keypair' command |
---|
7752 | warner@lothar.com**20080919001133] |
---|
7753 | [test_cli: more coverage for 'tahoe put' modifying a mutable file in-place, by filename, closes #441 |
---|
7754 | warner@lothar.com**20080804202643] |
---|
7755 | [CLI: change one-arg forms of 'tahoe put' to make an unlinked file, fix replace-mutable #441 |
---|
7756 | warner@lothar.com**20080802022729] |
---|
7757 | [CLI: improve docs w.r.t. aliases, add examples to 'tahoe put' and 'tahoe get' help output. Addresses part of #431 |
---|
7758 | warner@allmydata.com**20080603005456] |
---|
7759 | [tests: simplify CLI tests that use stdin, now that runner supports it |
---|
7760 | warner@lothar.com**20080801220514] |
---|
7761 | [test_cli: add system-based tests for PUT, including a mutable put that fails/todo (#441) |
---|
7762 | warner@lothar.com**20080801221009] |
---|
7763 | [add sqlite-based backupdb, for #598 and others (including 'tahoe cp'). Not enabled yet. |
---|
7764 | warner@allmydata.com**20090206001756 |
---|
7765 | Ignore-this: 36d9a56b257e481091fd1a105318cc25 |
---|
7766 | ] |
---|
7767 | [docs/CLI: document 'tahoe backup' |
---|
7768 | warner@allmydata.com**20090206041445 |
---|
7769 | Ignore-this: 60dade71212f2a65d3c0aaca7fb8ba00 |
---|
7770 | ] |
---|
7771 | [CLI: add 'tahoe manifest', which takes a directory and returns a list of things you can reach from it |
---|
7772 | warner@allmydata.com**20081113021725] |
---|
7773 | [checker: add is_recoverable() to checker results, make our stub immutable-verifier not throw an exception on unrecoverable files, add tests |
---|
7774 | warner@allmydata.com**20081107043547] |
---|
7775 | [deep-check: add webapi links to detailed per-file/dir results |
---|
7776 | warner@lothar.com**20081023230031] |
---|
7777 | [test_system: update test to match web checker results |
---|
7778 | warner@lothar.com**20081023233202] |
---|
7779 | [#527: support HTTP 'Range:' requests, using a cachefile. Adds filenode.read(consumer, offset, size) method. Still needs: cache expiration, reduced alacrity. |
---|
7780 | warner@lothar.com**20081028204104] |
---|
7781 | [web: handle PUT mutable=true properly |
---|
7782 | warner@allmydata.com**20080520193602] |
---|
7783 | [web: for GET save=true, don't interpret the filename= arg with any character set, just copy the bytes back into the Content-Disposition header. This seems to make it maximally compatible with Firefox and IE7 |
---|
7784 | warner@allmydata.com**20080719010650] |
---|
7785 | [docs: update webapi.txt with write-coordination issues, add TODO note to recovery section of mutable.txt |
---|
7786 | warner@allmydata.com**20080603060321] |
---|
7787 | [test_web: test that save=true filename=unicode doesn't crash |
---|
7788 | warner@allmydata.com**20080719015857] |
---|
7789 | [web: improve test coverage, remove some dead code |
---|
7790 | warner@allmydata.com**20080520181312] |
---|
7791 | [test_web: oops, actually use HEAD (instead of GET) in the HEAD test |
---|
7792 | warner@allmydata.com**20080813020451] |
---|
7793 | [test_web: workaround broken HEAD behavior in twisted-2.5.0 and earlier |
---|
7794 | warner@allmydata.com**20080813024520] |
---|
7795 | [test_system: add test coverage for immutable download.ConsumerAdapter, remove debug messages |
---|
7796 | warner@allmydata.com**20081006225037] |
---|
7797 | [ftp server: initial implementation. Still needs unit tests, custom Twisted patches. For #512 |
---|
7798 | warner@allmydata.com**20081006195236] |
---|
7799 | [immutable: refactor immutable filenodes and comparison thereof |
---|
7800 | zooko@zooko.com**20080923185249 |
---|
7801 | * the two kinds of immutable filenode now have a common base class |
---|
7802 | * they store only an instance of their URI, not both an instance and a string |
---|
7803 | * they delegate comparison to that instance |
---|
7804 | ] |
---|
7805 | [filenode: add is_mutable to non-MutableFileNode classes |
---|
7806 | warner@allmydata.com**20080519200300] |
---|
7807 | [immutable: remove unused imports (thanks, pyflakes) |
---|
7808 | zooko@zooko.com**20080923192610] |
---|
7809 | [more #514: pass a Monitor to all checker operations, make mutable-checker honor the cancel flag |
---|
7810 | warner@lothar.com**20081022083818] |
---|
7811 | [mutable: more repair tests, one with force=True to check out merging |
---|
7812 | warner@lothar.com**20080806190607] |
---|
7813 | [test_mutable: factor out common setup code |
---|
7814 | warner@lothar.com**20080806173804] |
---|
7815 | [test_mutable.py: add more tests of post-mapupdate corruption, to support #474 testing |
---|
7816 | warner@allmydata.com**20080624180810] |
---|
7817 | [testutil.shouldFail: mention the 'which' string in substring failures too |
---|
7818 | warner@allmydata.com**20080516230838] |
---|
7819 | [test_mutable: add comment about minimal-bandwidth repairer, comma lack of |
---|
7820 | warner@lothar.com**20080806173850] |
---|
7821 | [mutable: start adding Repair tests, fix a simple bug |
---|
7822 | warner@lothar.com**20080806061239] |
---|
7823 | [web: use get_size_of_best_version for HEAD requests, provide correct content-type |
---|
7824 | warner@allmydata.com**20080813020410] |
---|
7825 | [repairer: assert that the test code isn't accidentally allowing the repairer code which is being tested to do impossible things |
---|
7826 | zooko@zooko.com**20080926222353] |
---|
7827 | [repairer: enhance the repairer tests |
---|
7828 | zooko@zooko.com**20080926174719 |
---|
7829 | Make sure the file can actually be downloaded afterward, that it used one of the |
---|
7830 | deleted and then repaired shares to do so, and that it repairs from multiple |
---|
7831 | deletions at once (without using more than a reasonable amount of calls to |
---|
7832 | storage server allocate). |
---|
7833 | ] |
---|
7834 | [repairer: remove a test that doesn't apply to the repair-from-corruption case |
---|
7835 | zooko@zooko.com**20080925220954] |
---|
7836 | [repairer: add a test that repairer fixes corrupted shares (in addition to the test that it fixes deleted shares) |
---|
7837 | zooko@zooko.com**20080925220712] |
---|
7838 | [dirnode.py: check for cancel during deep-traverse operations, and don't initiate any new ones if we've been cancelled. Gets us closer to #514. |
---|
7839 | warner@lothar.com**20081022075552] |
---|
7840 | [Change deep-size/stats/check/manifest to a start+poll model instead of a single long-running synchronous operation. No cancel or handle-expiration yet. #514. |
---|
7841 | warner@lothar.com**20081022000307] |
---|
7842 | [web: factor out identical renderHTTP methods |
---|
7843 | warner@allmydata.com**20080519221925] |
---|
7844 | [test/common: add ShouldFailMixin |
---|
7845 | warner@lothar.com**20080806190552] |
---|
7846 | [repairer: add basic test of repairer, move tests of immutable checker/repairer from test_system to test_immutable_checker, remove obsolete test helper code from test_filenode |
---|
7847 | zooko@zooko.com**20080925171653 |
---|
7848 | Hm... "Checker" ought to be renamed to "CheckerRepairer" or "Repairer" at some point... |
---|
7849 | ] |
---|
7850 | [tests: use the handy dandy TestCase.mktemp() function from trial to give unique and nicely named directories for each testcase |
---|
7851 | zooko@zooko.com**20080730224920] |
---|
7852 | [tests: don't use SignalMixin |
---|
7853 | zooko@zooko.com**20080730223536 |
---|
7854 | It seems like we no longer need it, and it screws up something internal in |
---|
7855 | trial which causes trial's TestCase.mktemp() method to exhibit wrong behavior |
---|
7856 | (always using a certain test method name instead of using the current test |
---|
7857 | method name), and I wish to use TestCase.mktemp(). |
---|
7858 | |
---|
7859 | Of course, it is possible that the buildbot is about to tell me that we do |
---|
7860 | still require SignalMixin on some of our platforms... |
---|
7861 | |
---|
7862 | ] |
---|
7863 | [test_system: rename Checker to ImmutableChecker, to make room for a mutable one |
---|
7864 | warner@allmydata.com**20080812225932] |
---|
7865 | [setup: remove a few minimal unit tests from test_filenode which have been obviated by much better tests in test_mutable and test_system |
---|
7866 | zooko@zooko.com**20080925161544] |
---|
7867 | [disallow deep-check on non-directories, simplifies the code a bit |
---|
7868 | warner@allmydata.com**20080910204458] |
---|
7869 | [trivial: remove unused imports -- thanks, pyflakes |
---|
7870 | zooko@zooko.com**20080925173453] |
---|
7871 | [test_system: factor out find_shares/replace_shares to a common class, so they can be used by other tests |
---|
7872 | warner@lothar.com**20080806014958] |
---|
7873 | [web: rewrite t=deep-size in terms of deep-stats, update test to match inclusion of directory sizes |
---|
7874 | warner@allmydata.com**20081007043539] |
---|
7875 | [web: change t=manifest to return a list of (path,read/writecap) tuples, instead of a list of verifycaps. Add output=html,text,json. |
---|
7876 | warner@allmydata.com**20081007043618] |
---|
7877 | [webapi.txt: explain that t=manifest gives verifycaps |
---|
7878 | warner@allmydata.com**20080907192950] |
---|
7879 | [dirnode: refactor recursive-traversal methods, add stats to deep_check() method results and t=deep-check webapi |
---|
7880 | warner@lothar.com**20080910084504] |
---|
7881 | [dirnode: use the concurrency limiter in t=manifest and t=deep-size, allow 10 retrievals in parallel |
---|
7882 | warner@allmydata.com**20080508013637] |
---|
7883 | [web: add 'more info' pages for files and directories, move URI/checker-buttons/deep-size/etc off to them |
---|
7884 | warner@lothar.com**20080918050041] |
---|
7885 | [directory.xhtml: oops, missed a comma |
---|
7886 | warner@lothar.com**20070708074408] |
---|
7887 | [directory.xhtml: remove the leftover XML link |
---|
7888 | warner@lothar.com**20070708073320] |
---|
7889 | [web: more mutable-file coverage |
---|
7890 | warner@allmydata.com**20080520183547] |
---|
7891 | [hush pyflakes |
---|
7892 | warner@allmydata.com**20080910025017] |
---|
7893 | [test_system: add deep-check-JSON tests, fix a bug |
---|
7894 | warner@lothar.com**20080910061416] |
---|
7895 | [test_system: check t=deep-stats too |
---|
7896 | warner@lothar.com**20080910065457] |
---|
7897 | [test_system: add deep-stats test |
---|
7898 | warner@lothar.com**20080910055634] |
---|
7899 | [web: fix output=JSON, add buttons for repair/json to the 'run deep-check' form |
---|
7900 | warner@allmydata.com**20080910211137] |
---|
7901 | [checker results: add output=JSON to webapi, add tests, clean up APIs |
---|
7902 | warner@allmydata.com**20080910024517 |
---|
7903 | to make the internal ones use binary strings (nodeid, storage index) and |
---|
7904 | the web/JSON ones use base32-encoded strings. The immutable verifier is |
---|
7905 | still incomplete (it returns imaginary healty results). |
---|
7906 | ] |
---|
7907 | [immutable verifier: provide some dummy results so deep-check works, make the tests ignore these results until we finish it off |
---|
7908 | warner@allmydata.com**20080910010827] |
---|
7909 | [mutable checker: even more tests. Everything in ICheckerResults should be covered now, except for immutable-verify which is incomplete |
---|
7910 | warner@allmydata.com**20080910005706] |
---|
7911 | [checker results: more tests, update interface docs |
---|
7912 | warner@allmydata.com**20080910003010] |
---|
7913 | [checker results: more tests, more results. immutable verifier tests are disabled until they emit more complete results |
---|
7914 | warner@allmydata.com**20080910001546] |
---|
7915 | [checker: add tests, add stub for immutable check_and_repair |
---|
7916 | warner@allmydata.com**20080909233449] |
---|
7917 | [checker: overhaul checker results, split check/check_and_repair into separate methods, improve web displays |
---|
7918 | warner@allmydata.com**20080907194456] |
---|
7919 | [hush pyflakes warning about code that got moved in the recent StallMixin refactoring |
---|
7920 | warner@allmydata.com**20080423001426] |
---|
7921 | [test_client.py: validate more versioning code |
---|
7922 | warner@allmydata.com**20080103203824] |
---|
7923 | [test_client.py: assert allmydata.__version__ is not unknown |
---|
7924 | warner@allmydata.com**20080103203459] |
---|
7925 | [dirnode deep-check: add tests of cycles, fix failures |
---|
7926 | warner@allmydata.com**20080717213704] |
---|
7927 | [oops, fix import/pyflakes problems |
---|
7928 | warner@allmydata.com**20080718000620] |
---|
7929 | [checker_results.problems: don't str the whole Failure, just extract the reason string |
---|
7930 | warner@allmydata.com**20080812042306] |
---|
7931 | [dirnode: add some deep-check logging |
---|
7932 | warner@allmydata.com**20080812042338] |
---|
7933 | [hush a pyflakes warning |
---|
7934 | warner@allmydata.com**20080812042423] |
---|
7935 | [checker: add information to results, add some deep-check tests, fix a bug in which unhealthy files were not counted |
---|
7936 | warner@allmydata.com**20080812040326] |
---|
7937 | [IFilesystemNode: add get_storage_index(), it makes tests easier |
---|
7938 | warner@allmydata.com**20080812231407] |
---|
7939 | [web/deep-check: show the webapi runtime at the bottom of the page |
---|
7940 | warner@allmydata.com**20080813033426] |
---|
7941 | [immutable checker: add a status_report field |
---|
7942 | warner@allmydata.com**20080813033530] |
---|
7943 | [logging: add 'unique-message-ids' (or 'umids') to each WEIRD-or-higher log.msg call, to make it easier to correlate log message with source code |
---|
7944 | warner@allmydata.com**20080826015759] |
---|
7945 | [download: DownloadStopped isn't SCARY, lower the log severity |
---|
7946 | warner@allmydata.com**20080415230609] |
---|
7947 | [client: don't start the IntroducerClient until the Tub is ready, otherwise we will sometimes connect to the introducer (or other clients) before we've done Tub.setLocation, which loses some information on the introducer status page |
---|
7948 | warner@allmydata.com**20080423215234] |
---|
7949 | [web: add 'report incident' button at the bottom of the welcome page |
---|
7950 | warner@lothar.com**20080805190921] |
---|
7951 | [wui: reorganize the welcome.xhtml page |
---|
7952 | zooko@zooko.com**20080429221014 |
---|
7953 | Jake Edge tried Tahoe out and didn't notice the /status page. Hopefully with this new organization people like he will see that link more easily. This also addresses drewp's suggestion that the controls appear above the list of servers instead of below. (I think that was his suggestion.) I also reordered the controls. |
---|
7954 | ] |
---|
7955 | [mutable/checker: log a WEIRD-level event when we see a hash failure, to trigger an Incident |
---|
7956 | warner@allmydata.com**20080813035020] |
---|
7957 | [logging cleanups: lower DeadReferenceError from WEIRD (which provokes Incidents) to merely UNUSUAL, don't pre-format Failures in others |
---|
7958 | warner@allmydata.com**20080826005155] |
---|
7959 | [mutable read: enable the cache (written during mapupdate, read during retrieve). This speeds up small-file reads by about 30% over a link with an average 25ms RTT |
---|
7960 | warner@allmydata.com**20080422002750] |
---|
7961 | [mutable: make mutable-repair work for non-verifier runs, add tests |
---|
7962 | warner@allmydata.com**20080826233454] |
---|
7963 | [mutable/checker: rearrange a bit, change checker-results to have a status_report string |
---|
7964 | warner@allmydata.com**20080812032033] |
---|
7965 | [first pass at a mutable repairer. not tested at all yet, but of course all existing tests pass |
---|
7966 | warner@allmydata.com**20080718040923] |
---|
7967 | [interfaces: add IRepairable |
---|
7968 | warner@allmydata.com**20080718003217] |
---|
7969 | [mutable/servermap: add summarize_version |
---|
7970 | warner@allmydata.com**20080812031930] |
---|
7971 | [CLI: add 'tahoe debug corrupt-share', and use it for deep-verify tests, and fix non-deep web checker API to pass verify=true into node |
---|
7972 | warner@allmydata.com**20080813000501] |
---|
7973 | [tests: add test that verifier notices any (randomly chosen) bit flipped in the verifiable part of any (randomly chosen) share |
---|
7974 | zooko@zooko.com**20080731002015 |
---|
7975 | The currently verifier doesn't (usually) pass this randomized test, hence the TODO. |
---|
7976 | ] |
---|
7977 | [tests: test that checker doesn't cause reads on the storage servers |
---|
7978 | zooko@zooko.com**20080730235420 |
---|
7979 | It would still pass the test if it noticed a corrupted share. (It won't |
---|
7980 | notice, of course.) But it is required to do its work without causing storage |
---|
7981 | servers to read blocks from the filesystem. |
---|
7982 | |
---|
7983 | ] |
---|
7984 | [tests: add test_system.Checker which tests basic checking (without verification) functionality |
---|
7985 | zooko@zooko.com**20080728234317] |
---|
7986 | [test_system.py: factor SystemTestMixin out of SystemTest |
---|
7987 | warner@allmydata.com**20080725223349] |
---|
7988 | [test_system.py: add a log message to help track down the occasional cygwin failure |
---|
7989 | warner@allmydata.com**20070531190114] |
---|
7990 | [offloaded: fix failure in unit test on windows |
---|
7991 | robk-tahoe@allmydata.com**20080118025729 |
---|
7992 | |
---|
7993 | in trying to test my fix for the failure of the offloaded unit test on windows |
---|
7994 | (by closing the reader before unlinking the encoding file - which, perhaps |
---|
7995 | disturbingly doesn't actually make a difference in my windows environment) |
---|
7996 | I was unable too because the unit test failed every time with a connection lost |
---|
7997 | error. |
---|
7998 | |
---|
7999 | after much more time than I'd like to admit it took, I eventually managed to |
---|
8000 | track that down to a part of the unit test which is supposed to be be dropping |
---|
8001 | a connection. it looks like the exceptions that get thrown on unix, or at |
---|
8002 | least all the specific environments brian tested in, for that dropped |
---|
8003 | connection are different from what is thrown on my box (which is running py2.4 |
---|
8004 | and twisted 2.4.0, for reference) adding ConnectionLost to the list of |
---|
8005 | expected exceptions makes the test pass. |
---|
8006 | |
---|
8007 | though curiously still my test logs a NotEnoughWritersError error, and I'm not |
---|
8008 | currently able to fathom why that exception isn't leading to any overall |
---|
8009 | failure of the unit test itself. |
---|
8010 | |
---|
8011 | for general interest, a large part of the time spent trying to track this down |
---|
8012 | was lost to the state of logging. I added a whole bunch of logging to try |
---|
8013 | and track down where the tests were failing, but then spent a bunch of time |
---|
8014 | searching in vain for that log output. as far as I can tell at this point |
---|
8015 | the unit tests are themselves logging to foolscap's log module, but that isn't |
---|
8016 | being directed anywhere, so all the test's logging is being black holed. |
---|
8017 | |
---|
8018 | ] |
---|
8019 | [test_system.py: refactor bounce_client, probably make it stop failing on cygwin |
---|
8020 | warner@allmydata.com**20080211212658] |
---|
8021 | [break introducer up into separate modules in the new allmydata.introducer package |
---|
8022 | warner@allmydata.com**20080618192416] |
---|
8023 | [introducer: remove PeerCountObserver, tests are managing with purely poll-for-connected approachers |
---|
8024 | warner@allmydata.com**20080205201549] |
---|
8025 | [introducer.py: accelerate reconnection after being offline. Closes #374. |
---|
8026 | warner@allmydata.com**20080331222845 |
---|
8027 | |
---|
8028 | When we establish any new connection, reset the delays on all the other |
---|
8029 | Reconnectors. This will trigger a new batch of connection attempts. The idea |
---|
8030 | is to detect when we (the client) have been offline for a while, and to |
---|
8031 | connect to all servers when we get back online. By accelerating the timers |
---|
8032 | inside the Reconnectors, we try to avoid spending a long time in a |
---|
8033 | partially-connected state (which increases the chances of causing problems |
---|
8034 | with mutable files, by not updating all the shares that we ought to). |
---|
8035 | ] |
---|
8036 | [introducer: only record one announcement per (tubid,service) tuple. Fixes #343. |
---|
8037 | warner@allmydata.com**20080423220539] |
---|
8038 | [introducer: record a timestamp with each announcement, and display it on the introducer's web page |
---|
8039 | warner@allmydata.com**20080312023319] |
---|
8040 | [introweb.py: add ?t=json, to provide machine-readable subscriber counts |
---|
8041 | warner@allmydata.com**20080325195612] |
---|
8042 | [introducer: record a timestamp with each subscriber, and display it on the introducer's web page |
---|
8043 | warner@allmydata.com**20080312022837] |
---|
8044 | [introducer: remove encoding-parameter config, for now |
---|
8045 | warner@allmydata.com**20080213005954] |
---|
8046 | [introweb: combine announcement and subscriber information to show version+nickname for each client |
---|
8047 | warner@allmydata.com**20080312022129] |
---|
8048 | [oops, add introducer.xhtml |
---|
8049 | warner@allmydata.com**20080312004103] |
---|
8050 | [introweb.py: tolerate non-setLocationed client tubs |
---|
8051 | warner@allmydata.com**20080312010913] |
---|
8052 | [test_system.py: modify system-test setup code in preparation for merge with common.SystemTestMixin |
---|
8053 | warner@allmydata.com**20080725222931] |
---|
8054 | [tests: make it so that you can use common.py's SystemTestMixin.set_up_nodes() more than once with the same introducer |
---|
8055 | zooko@zooko.com**20080728234029] |
---|
8056 | [test/common.py: use pre-computed Tub certificates for the system-test mixin, to speed such tests up by maybe 15%. The goal is to encourage more full-grid tests. |
---|
8057 | warner@allmydata.com**20080728194421] |
---|
8058 | [test_system.py: move SystemTestMixin out into common.py, where further improvements will occur |
---|
8059 | warner@allmydata.com**20080725221758] |
---|
8060 | [test_system.py: create SystemTestMixin, with less cruft, for faster system-like tests |
---|
8061 | warner@allmydata.com**20080725221300] |
---|
8062 | [test: add testutil.flip_one_bit which flips a randomly chosen bit of the input string |
---|
8063 | zooko@zooko.com**20080728234217] |
---|
8064 | [testutil.py: remove unused import, appease pyflakes |
---|
8065 | Brian Warner <warner@lothar.com>**20070427151134] |
---|
8066 | [web/directory: enable verify=true in t=deep-check |
---|
8067 | warner@allmydata.com**20080812042409] |
---|
8068 | [deep-check: add webapi, add 'DEEP-CHECK' button to wui, add tests, rearrange checker API a bit |
---|
8069 | warner@allmydata.com**20080717234709] |
---|
8070 | [web: transform FileTooLargeError into a friendlier '413 Request Entity Too Large' error |
---|
8071 | warner@allmydata.com**20080603070316] |
---|
8072 | [dirnode: return to 'delete fails if the child wasn't actually there' semantics, to make tests pass. There's a switch to enable/disable this |
---|
8073 | warner@allmydata.com**20080418030606] |
---|
8074 | [test_web: add HEAD coverage |
---|
8075 | warner@allmydata.com**20080520184743] |
---|
8076 | [checker: re-enable checker web results (although they just say 'Healthy' right now) |
---|
8077 | warner@allmydata.com**20080716224256] |
---|
8078 | [webapi.txt: overhaul documentation. API changes are as follows: |
---|
8079 | warner@allmydata.com**20080519194746 |
---|
8080 | |
---|
8081 | * download/upload localdir=/localfile= has been removed. This sort of ambient |
---|
8082 | authority was unsafe to expose over the web (CSRF), and at some point |
---|
8083 | soon we'll have 'cp -r' in the CLI to replace it. |
---|
8084 | * GET save=filename -> GET filename=filename&save=true |
---|
8085 | * GET t=download removed |
---|
8086 | * side-effect causing operations now use POST where appropriate, not PUT |
---|
8087 | * to create multiple directories, either use |
---|
8088 | * POST /uri/DIRCAP/parent?t=mkdir&name=child (more form/browser oriented) |
---|
8089 | * POST /uri/DIRCAP/parent/child?t=mkdir (more machine oriented) |
---|
8090 | The t=mkdir-p form is still accepted, but not preferred (since it leaks |
---|
8091 | the child name queryarg into the logs) |
---|
8092 | * use PUT /uri/MUTABLEFILECAP or PUT /uri/DIRCAP/child (on a mutable file) to |
---|
8093 | replace its contents, or POST /same?t=upload from forms |
---|
8094 | * response bodies and codes are better specified than before |
---|
8095 | |
---|
8096 | ] |
---|
8097 | [webapi.txt: minor edits |
---|
8098 | zooko@zooko.com**20070823200944] |
---|
8099 | [webapi.txt: update webapi.txt to reflect the security fix from #98 |
---|
8100 | zooko@zooko.com**20071015192902] |
---|
8101 | [webapi.txt: document POST /uri?t=mkdir |
---|
8102 | warner@allmydata.com**20080208021028] |
---|
8103 | [doc: change example filename extension back because it is more recognizable and because I love Brian |
---|
8104 | zooko@zooko.com**20080227205405] |
---|
8105 | [docs: tweak wording per kpreid and tweak example filename extension per me |
---|
8106 | zooko@zooko.com**20080227204157] |
---|
8107 | [docs: merge conflicts between the patch to document "127.0.0.1" instead of "localhost" and some other patches (precisely which, I don't know) |
---|
8108 | zooko@zooko.com**20080418035741] |
---|
8109 | [docs: clarify which webport value is the default |
---|
8110 | zooko@zooko.com**20080227171003] |
---|
8111 | [fix a typo in webapi.txt |
---|
8112 | robk-org@allmydata.com**20070712234551] |
---|
8113 | [docs: use "127.0.0.1" instead of "localhost" |
---|
8114 | zooko@zooko.com**20080418034534 |
---|
8115 | Unfortunately there are occasionally configurations in the real world where "localhost" does not resolve to 127.0.0.1, and if a user has such a configuration then using 'localhost' could lead to an authority leak. |
---|
8116 | ] |
---|
8117 | [docs/webapi.txt: mention that we default to a --webport of 8123 |
---|
8118 | warner@allmydata.com**20071011201911] |
---|
8119 | [docs: tiny change in webapi.txt |
---|
8120 | zooko@zooko.com**20080418040051 |
---|
8121 | (I'm actually committing this patch only in order to test our patch management infrastructure.) |
---|
8122 | ] |
---|
8123 | [docs: tiny update to webapi.txt |
---|
8124 | zooko@zooko.com**20080418040912 |
---|
8125 | I'm actually committing this just to test our patch management infrastructure. |
---|
8126 | ] |
---|
8127 | [web: even more test coverage |
---|
8128 | warner@allmydata.com**20080520183314] |
---|
8129 | [web/directory: fix rw_uri output in t=JSON to reflect mutable files properly |
---|
8130 | warner@allmydata.com**20080520013728] |
---|
8131 | [test_web.py: minor cleanups, improved error reporting |
---|
8132 | warner@allmydata.com**20080519193339] |
---|
8133 | [test_web/test_system: improve test coverage |
---|
8134 | warner@lothar.com**20080520062852] |
---|
8135 | [web: improve test coverage |
---|
8136 | warner@allmydata.com**20080520013839] |
---|
8137 | [test_web.py: hush pyflakes |
---|
8138 | warner@allmydata.com**20080206043751] |
---|
8139 | [dirnode deep-check: rearrange traversal approach, simplify code a bit |
---|
8140 | warner@allmydata.com**20080717212504] |
---|
8141 | [first pass at deep-checker, no webapi yet, probably big problems with it, only minimal tests |
---|
8142 | warner@allmydata.com**20080717012057] |
---|
8143 | [move encode/upload/download/checker.py into a new immutable/ directory. No behavior changes expected. |
---|
8144 | warner@allmydata.com**20080716201439] |
---|
8145 | [rename encode_new.py to encode.py, now that there isn't an old one anymore |
---|
8146 | warner@lothar.com**20070406041742] |
---|
8147 | [move FileTooLargeError out to a common location |
---|
8148 | warner@allmydata.com**20080603070115] |
---|
8149 | [Don't allow uploads of large files (about 12GiB or larger), since they're doomed to be corrupted. Closes #439 |
---|
8150 | warner@allmydata.com**20080602235701] |
---|
8151 | [storage.py: handle num_segments != power-of-two without an assertion |
---|
8152 | warner@lothar.com**20070714023021] |
---|
8153 | [test_upload.py: hush pyflakes |
---|
8154 | warner@allmydata.com**20080207020431] |
---|
8155 | [mutable/publish.py: raise FileTooLargeError instead of an ugly assertion when the SDMF restrictions are exceeded |
---|
8156 | warner@allmydata.com**20080603070210] |
---|
8157 | [overhaul checker invocation |
---|
8158 | warner@allmydata.com**20080716002325 |
---|
8159 | |
---|
8160 | Removed the Checker service, removed checker results storage (both in-memory |
---|
8161 | and the tiny stub of sqlite-based storage). Added ICheckable, all |
---|
8162 | check/verify is now done by calling the check() method on filenodes and |
---|
8163 | dirnodes (immutable files, literal files, mutable files, and directory |
---|
8164 | instances). |
---|
8165 | |
---|
8166 | Checker results are returned in a Results instance, with an html() method for |
---|
8167 | display. Checker results have been temporarily removed from the wui directory |
---|
8168 | listing until we make some other fixes. |
---|
8169 | |
---|
8170 | Also fixed client.create_node_from_uri() to create LiteralFileNodes properly, |
---|
8171 | since they have different checking behavior. Previously we were creating full |
---|
8172 | FileNodes with LIT uris inside, which were downloadable but not checkable. |
---|
8173 | |
---|
8174 | ] |
---|
8175 | [interfaces: clarify IChecker.checker_results_for a bit |
---|
8176 | warner@allmydata.com**20071023011046] |
---|
8177 | [checker.checker_results_for: ignore uris of 'None' |
---|
8178 | warner@allmydata.com**20071027013837] |
---|
8179 | [checker: improve test coverage a little bit |
---|
8180 | warner@allmydata.com**20071205000012] |
---|
8181 | [mutable.node: avoid reentrancy problems in Deferred code on twisted2.5, by adding an eventual-send call |
---|
8182 | warner@lothar.com**20080418074329] |
---|
8183 | [use a weakref cache in the client to manage singleton filenodes/dirnodes, to avoid autocollision. Should close #391. |
---|
8184 | warner@allmydata.com**20080509010255] |
---|
8185 | [dirnode: add overwrite= to most API calls, defaulting to True. When False, this raises ExistingChildError rather than overwriting an existing child |
---|
8186 | warner@allmydata.com**20080516230947] |
---|
8187 | [dirnode: update to use MutableFileNode.modify |
---|
8188 | warner@allmydata.com**20080418025704] |
---|
8189 | [deep-stats: add file-size histogram |
---|
8190 | warner@allmydata.com**20080508231942] |
---|
8191 | [dirnode: refactor deep-stats a bit |
---|
8192 | warner@allmydata.com**20080508203307] |
---|
8193 | [interfaces: add verify= and repair= args to check() |
---|
8194 | warner@lothar.com**20080707213736] |
---|
8195 | [implement a mutable checker+verifier. No repair yet. Part of #205. |
---|
8196 | warner@lothar.com**20080708003600] |
---|
8197 | [test_mutable: test that all servers refusing our share means a publish fails |
---|
8198 | warner@allmydata.com**20080423015320] |
---|
8199 | [mutable/servermap: improve test coverage |
---|
8200 | warner@allmydata.com**20080422234752] |
---|
8201 | [mutable: test write failures, uncoordinated write detection |
---|
8202 | warner@allmydata.com**20080422184953] |
---|
8203 | [mutable WIP: use fireOnOneErrback when using a DeferredList |
---|
8204 | warner@allmydata.com**20080417201148] |
---|
8205 | [test_mutable: factor out ShouldFailMixin |
---|
8206 | warner@allmydata.com**20080418025551] |
---|
8207 | [test_mutable: hush pyflakes |
---|
8208 | warner@allmydata.com**20080418025755] |
---|
8209 | [mutable: improve test coverage, fix bug in privkey fetching, add .finished to stats, remove dead code |
---|
8210 | warner@allmydata.com**20080419025512] |
---|
8211 | [mutable: improve test coverage slightly |
---|
8212 | warner@allmydata.com**20080421221050] |
---|
8213 | [mutable: implement MutableFileNode.modify, plus tests |
---|
8214 | warner@allmydata.com**20080418021242] |
---|
8215 | [testutil: factor stall() out into a common location |
---|
8216 | warner@allmydata.com**20080422234715] |
---|
8217 | [test_system: stall for a second while bouncing the client, it might help windows |
---|
8218 | warner@allmydata.com**20070629022028] |
---|
8219 | [setup: finish switching from Tahoe's versions of autoversioning tools to pyutil's versions |
---|
8220 | zooko@zooko.com**20071221204238] |
---|
8221 | [don't try to use bindann |
---|
8222 | zooko@zooko.com**20070914021446 |
---|
8223 | It causes a mysterious misbehavior in Python import which causes the previous patch to fail (the patch to not run trial tests if dependencies can't be imported) |
---|
8224 | ] |
---|
8225 | [version_class.py: if you don't have pkg_resources for comparing version numbers, use distutils.version.LooseVersion |
---|
8226 | zooko@zooko.com**20070816231641] |
---|
8227 | [setup.py use sys.executable instead of hard-coded 'python' to run make-version.py |
---|
8228 | warner@allmydata.com**20070924193859] |
---|
8229 | [setup: attempt to invoke make-version.py whenever setup.py is evaluated |
---|
8230 | zooko@zooko.com**20070924014336] |
---|
8231 | [setup.py: fix move to _version.py |
---|
8232 | warner@lothar.com**20070912230223] |
---|
8233 | [trailing-whitespace eradication, no functional changes |
---|
8234 | warner@allmydata.com**20071101223435] |
---|
8235 | [setup: continue running setup.py even if ez_setup.py can't be imported |
---|
8236 | zooko@zooko.com**20071109205803] |
---|
8237 | [setup: use ez_setup.py without a "download delay" |
---|
8238 | zooko@zooko.com**20071003221414] |
---|
8239 | [change ez_setup.py to find tarballs in misc/dependencies |
---|
8240 | zooko@zooko.com**20070913215119] |
---|
8241 | [add setuptools eggs for py2.4 and py2.5 to misc/dependencies |
---|
8242 | zooko@zooko.com**20070913215043] |
---|
8243 | [setup: import the latest version of ez_setup.py with my patches |
---|
8244 | zooko@zooko.com**20071003221319] |
---|
8245 | [ez_setup.py: put back the warning about downloading, but only if the URL that you are using is not "file:" |
---|
8246 | zooko@zooko.com**20070914031451] |
---|
8247 | [ez_setup.py: don't warn about the need to download packages (because we actually bundle them all with Tahoe) |
---|
8248 | zooko@zooko.com**20070914030027] |
---|
8249 | [use ez_setup.py to bootstrap setuptools |
---|
8250 | zooko@zooko.com**20070913015710] |
---|
8251 | [setup: remove misc/make-version.py and invoke "darcsver" from the pyutil library |
---|
8252 | zooko@zooko.com**20071221001755 |
---|
8253 | misc/make-version.py has a limitation which prevents it from generating version |
---|
8254 | stamps from our current darcs history. This limitation has been fixed in |
---|
8255 | pyutil's "darcsver". Rather than copy the fix from there to |
---|
8256 | misc/make-version.py, I'm making it so that you have to install pyutil if you |
---|
8257 | want to automatically generate _version.py files from the current darcs |
---|
8258 | history. |
---|
8259 | |
---|
8260 | ] |
---|
8261 | [fix version class to preferred format and correct parsing |
---|
8262 | zooko@zooko.com**20070816223801] |
---|
8263 | [hush some pyflakes warnings |
---|
8264 | warner@lothar.com**20070915220721] |
---|
8265 | [shebang usr bin env python |
---|
8266 | zooko@zooko.com**20070613015525] |
---|
8267 | [misc/storage-overhead.py: tool to estimate storage-space overhead per filesize |
---|
8268 | warner@allmydata.com**20070716204331] |
---|
8269 | [make-version.py: when _darcs doesn't exist, make the warning less scary-looking |
---|
8270 | warner@allmydata.com**20070924193837] |
---|
8271 | [PollMixin: add timeout= argument, rewrite to avoid tail-recursion problems |
---|
8272 | warner@allmydata.com**20080205023507] |
---|
8273 | [CLI: move the 'repl' command to 'tahoe debug repl' |
---|
8274 | warner@allmydata.com**20080812204017] |
---|
8275 | [CLI: simplify argument-passing, use options= for everthing, including stdout |
---|
8276 | warner@lothar.com**20080801184624] |
---|
8277 | [added a 'repl' command to tahoe.exe |
---|
8278 | robk-tahoe@allmydata.com**20080110011952 |
---|
8279 | |
---|
8280 | this is probably not of very high utility in the unix case of bin/tahoe |
---|
8281 | but is useful when working with native builds, e.g. py2exe's tahoe.exe, |
---|
8282 | to examine and debug the runtime environment, linking problems etc. |
---|
8283 | |
---|
8284 | ] |
---|
8285 | [tahoe_ls: improve output formatting |
---|
8286 | warner@allmydata.com**20080520200750] |
---|
8287 | [CLI: add 'ln', just like move but without the delete |
---|
8288 | warner@allmydata.com**20080520203031] |
---|
8289 | [CLI mv: if we can't created the new child, don't delete the old one |
---|
8290 | warner@allmydata.com**20080520194947] |
---|
8291 | [CLI: add 'list-aliases', factor out get_aliases |
---|
8292 | warner@allmydata.com**20080520213604] |
---|
8293 | [tahoe_cp: rewrite, make --recursive work |
---|
8294 | warner@allmydata.com**20080522003521] |
---|
8295 | [tahoe_cp.py: fix pyflakes complaint |
---|
8296 | warner@allmydata.com**20080521190913] |
---|
8297 | [cli: initial implementation of 'cp -r', probably doesn't work yet |
---|
8298 | warner@allmydata.com**20080521184922] |
---|
8299 | [CLI: implement the easy part of cp (no -r, only two arguments) |
---|
8300 | warner@allmydata.com**20080520235603] |
---|
8301 | [CLI ls: add --readonly-uri to display readonly URIs for all children |
---|
8302 | warner@allmydata.com**20080520194911] |
---|
8303 | [CLI: add put --mutable, enhance ls to show mutable vs immutable as rw/r- |
---|
8304 | warner@allmydata.com**20080520193655] |
---|
8305 | [overhaul CLI: not quite complete but it works a lot better than it used to. The new scheme uses 'tahoe add-alias' and rsync/scp-style 'alias:foo/bar.txt' arguments |
---|
8306 | warner@allmydata.com**20080520022850] |
---|
8307 | [tahoe_get.py: remove unused import |
---|
8308 | warner@allmydata.com**20071012024740] |
---|
8309 | [cli: use urllib.quote() on vdrive-path arguments before passing them through HTTP |
---|
8310 | zooko@zooko.com**20071027013044] |
---|
8311 | [tahoe_ls: list individual files |
---|
8312 | warner@lothar.com**20071021193306] |
---|
8313 | [test_system: write test data in 'b' verbatim mode, since on windows the default text-mode is different. Addresses one of the failures in #223 |
---|
8314 | warner@allmydata.com**20071212011633] |
---|
8315 | [fix unit test to pass forward-slashes to the CLI since it demands that the CLI emit forward-slashes |
---|
8316 | zooko@zooko.com**20071212020344] |
---|
8317 | [remove the slash-to-bang conversion from CLI tools and webapi.txt |
---|
8318 | warner@allmydata.com**20071218022226] |
---|
8319 | [docs: change our default HTTP port to 8123 |
---|
8320 | warner@allmydata.com**20071011201733] |
---|
8321 | [webapi.txt: reinstate documentation of the unpleasant URI-escaping needed for |
---|
8322 | Brian Warner <warner@lothar.com>**20071011135808 |
---|
8323 | slashes in dirnode URIs, to be resolved some day by #102. |
---|
8324 | ] |
---|
8325 | [webapi.txt edits (thanks to Brian Warner) |
---|
8326 | zooko@zooko.com**20070823200606] |
---|
8327 | [cli: simplify code by using stdlib's httplib module |
---|
8328 | warner@allmydata.com**20071012052923] |
---|
8329 | [command-line: fix ticket #111 by requiring input to be a local file and sending Content-Length header |
---|
8330 | zooko@zooko.com**20070817215949] |
---|
8331 | [cli: use urllib.escape on all URIs |
---|
8332 | warner@lothar.com**20071011083444] |
---|
8333 | [tahoe_put.py: hush pyflakes by removing unused 'sys' import |
---|
8334 | warner@lothar.com**20070817232950] |
---|
8335 | [create_node.py: need to create private/ dir in create-client so we can touch the my_private_dir.cap file |
---|
8336 | warner@allmydata.com**20071218214218] |
---|
8337 | [oops, touch private/my_private_dir.cap when creating the client |
---|
8338 | warner@allmydata.com**20071218213659] |
---|
8339 | [a few formatting tidy-ups |
---|
8340 | zooko@zooko.com**20080103231419] |
---|
8341 | [key_generator: service related cleanups, incorporation into system test |
---|
8342 | robk-tahoe@allmydata.com**20080403225707 |
---|
8343 | |
---|
8344 | |
---|
8345 | this cleans up KeyGenerator to be a service (a subservice of the |
---|
8346 | KeyGeneratorService as instantiated by the key-generator.tac app) |
---|
8347 | this means that the timer which replenishes the keypool will be |
---|
8348 | shutdown cleanly when the service is stopped. |
---|
8349 | |
---|
8350 | adds checks on the key_generator service and client into the system |
---|
8351 | test 'test_mutable' such that one of the nodes (clients[3]) uses |
---|
8352 | the key_generator service, and checks that mutable file creation |
---|
8353 | in that node, via a variety of means, are all consuming keys from |
---|
8354 | the key_generator. |
---|
8355 | |
---|
8356 | ] |
---|
8357 | [doc: slightly clarify an error message |
---|
8358 | zooko@zooko.com**20080414184305] |
---|
8359 | [CLI.txt: document proposed scp:-based CLI syntax |
---|
8360 | warner@allmydata.com**20080510010629] |
---|
8361 | [test_system: match webapi change, making new files now returns 201 Created, not 200 OK |
---|
8362 | warner@allmydata.com**20080519210931] |
---|
8363 | [CLI: make 'tahoe webopen' use the 'tahoe:' alias properly, instead of the old --dir-cap option |
---|
8364 | warner@allmydata.com**20080603005554] |
---|
8365 | [added "tahoe webopen" command |
---|
8366 | robk-tahoe@allmydata.com**20080105003410 |
---|
8367 | |
---|
8368 | taking the same arguments as tahoe ls, it does a webbrowser.open to the page |
---|
8369 | specified by those args. hence "tahoe webopen" will open a browser to the |
---|
8370 | root dir specified in private/root_dir.cap by default. |
---|
8371 | |
---|
8372 | this might be a good alternative to the start.html page. |
---|
8373 | |
---|
8374 | ] |
---|
8375 | [CLI: move all debug commands (dump-share, dump-cap, find-shares, catalog-shares) into a 'debug' subcommand, and improve --help output |
---|
8376 | warner@allmydata.com**20080812203732] |
---|
8377 | [tahoe dump-share: remove --filename option, just take it from argv |
---|
8378 | warner@allmydata.com**20080206201533] |
---|
8379 | [docs/CLI.txt: provide an overview of bin/tahoe subcommands |
---|
8380 | warner@allmydata.com**20080509193619] |
---|
8381 | [web/directory: factor out the get_root function |
---|
8382 | warner@allmydata.com**20081007201742] |
---|
8383 | [web: stop using absolute links (or url.here) in forms and pages, since they break behind proxies. Partially addresses #461 |
---|
8384 | warner@allmydata.com**20080618024940] |
---|
8385 | [test_web.py: use /uri?t=mkdir instead of /uri/?t=mkdir, and confirm that the redirection target is correct |
---|
8386 | warner@lothar.com**20071224234652] |
---|
8387 | [wapi/wui: add a trailing slash to the targets of hyperlinks of children of the current directory when those targets are directories |
---|
8388 | zooko@zooko.com**20080611025938 |
---|
8389 | This is intended to fix #458 '"other representations" broken in webish ui'. |
---|
8390 | ] |
---|
8391 | [webish: complete rewrite, break into smaller pieces, auto-create directories, improve error handling |
---|
8392 | warner@allmydata.com**20080519195704] |
---|
8393 | [web: show the root name of the vdrive |
---|
8394 | warner@lothar.com**20070708043102] |
---|
8395 | [web: remove more dead code |
---|
8396 | warner@lothar.com**20070708052003] |
---|
8397 | [webish: cosmetic: fix missing whitespace in HTML |
---|
8398 | warner@lothar.com**20070710173319] |
---|
8399 | [webish.DirnodeWalkerMixin: comment out the code that demonstrates what we |
---|
8400 | Brian Warner <warner@allmydata.com>**20070713062809 |
---|
8401 | would do if we could just use generators, since we don't use it. |
---|
8402 | ] |
---|
8403 | [fix bug in arg handling around 'delete' button in directory view |
---|
8404 | robk-org@allmydata.com**20070712234654 |
---|
8405 | |
---|
8406 | the code composing the form providing the 'delete' button in a dir |
---|
8407 | view was broken in that it tried to put some of the arguments into |
---|
8408 | the url query, rather than as the form's post args. worse, nevow |
---|
8409 | was kind enough to escape the querystring making it invalid. |
---|
8410 | ] |
---|
8411 | [webish: handle PUTs to direct children of the root |
---|
8412 | warner@lothar.com**20070714023152] |
---|
8413 | [webish: oops, handle POST without localfile= too |
---|
8414 | warner@allmydata.com**20070716190054] |
---|
8415 | [change name of the query "allow_local_access()?" to "local_access_is_allowed()" |
---|
8416 | zooko@zooko.com**20070822173200 |
---|
8417 | So as to avoid confusing it with the setter method |
---|
8418 | "allow_local_access(allowed=True)". |
---|
8419 | ] |
---|
8420 | [webish.py: handle asynchronous checker results. |
---|
8421 | warner@allmydata.com**20071031000037 |
---|
8422 | Thanks to robk for pointing out that Nevow will accept a Deferred almost |
---|
8423 | everywhere. In this case, we just pass a Deferred into ctx.fillSlots(). One |
---|
8424 | quirk: nevow doesn't evaluate all rows of the table in parallel: using a slow |
---|
8425 | Deferred in a slot in one row seems to stall the next row until that one has |
---|
8426 | fired, probably to simplify the flattening of the HTML. |
---|
8427 | |
---|
8428 | ] |
---|
8429 | [webish: tolerate not having a checker, since some unit tests don't make one |
---|
8430 | warner@allmydata.com**20071024003531] |
---|
8431 | [don't provide the "overwrite" button if the file is readonly to you |
---|
8432 | zooko@zooko.com**20071110220705] |
---|
8433 | [webish: oops, unit tests don't have an Uploader, don't rely upon it for helper-status display |
---|
8434 | warner@allmydata.com**20080128200329] |
---|
8435 | [webish: upload+localdir=missing should give an error |
---|
8436 | warner@allmydata.com**20080128204806] |
---|
8437 | [webish: upload: when the localdir= doesn't exist, say so in the HTTP response |
---|
8438 | warner@lothar.com**20070915194907] |
---|
8439 | [webish: remove 'URI-link' from directory page, now that we only use URI-links |
---|
8440 | warner@allmydata.com**20080130001109] |
---|
8441 | [webish: condense display of nickname a little bit |
---|
8442 | warner@allmydata.com**20080206002928] |
---|
8443 | [webish: show nickname too |
---|
8444 | warner@allmydata.com**20080206002605] |
---|
8445 | [webish.py: fix for #237: when listing large directories, insert a turn break once every 100 children, to work around non-optimized tail recursion Deferreds |
---|
8446 | warner@allmydata.com**20080213032852] |
---|
8447 | [add a mkdir-p POST handler |
---|
8448 | robk-tahoe@allmydata.com**20080318011301 |
---|
8449 | |
---|
8450 | this adds a t=mkdir-p call to directories (accessed by their uri as |
---|
8451 | /uri/<URI>?t=mkdir=p&path=/some/path) which returns the uri for a |
---|
8452 | directory at a specified path before the given uri, regardless of |
---|
8453 | whether the directory exists or whether intermediate directories |
---|
8454 | need to be created to satisfy the request. |
---|
8455 | |
---|
8456 | this is used by the migration code in MV to optimise the work of |
---|
8457 | path traversal which was other wise done on every file PUT |
---|
8458 | ] |
---|
8459 | [webish: fix 'not running helper' status indicator on welcome page, add tests |
---|
8460 | warner@allmydata.com**20080414232811] |
---|
8461 | [test_system.py: improve coverage of webish.py |
---|
8462 | warner@lothar.com**20080215100250] |
---|
8463 | [dirnode: add a deep_stats(), like deep-size but with more information. webish adds t=deeps-size too. |
---|
8464 | warner@allmydata.com**20080508202114] |
---|
8465 | [add GET /uri/URI/?t=deep-size, to compute the total size of immutable files reachable from a given directory |
---|
8466 | warner@allmydata.com**20080327183342] |
---|
8467 | [mutable: replace MutableFileNode API, update tests. Changed all callers to use overwrite(), but that will change soon |
---|
8468 | warner@allmydata.com**20080418005138] |
---|
8469 | [mutable WIP: add servermap update status pages |
---|
8470 | warner@allmydata.com**20080417020541] |
---|
8471 | [mutable WIP: merge conflicts in test_system.py |
---|
8472 | warner@allmydata.com**20080415225728] |
---|
8473 | [web: don't break status page when there is no helper running |
---|
8474 | warner@lothar.com**20080415064220] |
---|
8475 | [stats: add /statistics web page to show them, add tests |
---|
8476 | warner@allmydata.com**20080414211708] |
---|
8477 | [stats_gatherer: verbose debug logging |
---|
8478 | robk-tahoe@allmydata.com**20080409231053 |
---|
8479 | |
---|
8480 | one of the storage servers is throwing foolscap violations about the |
---|
8481 | return value of get_stats(). this adds a log of the data returned |
---|
8482 | to the foolscap log event stream at the debug level '12' (between |
---|
8483 | NOISY(10) and OPERATIONAL(20)) hopefully this will facilitate |
---|
8484 | finding the cause of this problem. |
---|
8485 | ] |
---|
8486 | [helper status: include percentage fetched+pushed, add helper-uploads to the upload/download list |
---|
8487 | warner@allmydata.com**20080415013627] |
---|
8488 | [stats_gatherer: fix typo in helper stats gathering. |
---|
8489 | robk-tahoe@allmydata.com**20080411004142] |
---|
8490 | [helper stats: fix the /helper_status page, the recent conflict merging missed some uses. Added tests, updated the munin plugins to match |
---|
8491 | warner@allmydata.com**20080414201853] |
---|
8492 | [helper: add another munin plugin |
---|
8493 | warner@allmydata.com**20080327235030] |
---|
8494 | [stats_gatherer: reconcile helper stats gathering |
---|
8495 | robk-tahoe@allmydata.com**20080411002544 |
---|
8496 | |
---|
8497 | I'd implemented stats gathering hooks in the helper a while back. |
---|
8498 | Brian did the same without reference to my changes. This reconciles |
---|
8499 | those two changes, encompassing all the stats in both changes, |
---|
8500 | implemented through the stats_provider interface. |
---|
8501 | |
---|
8502 | this also provide templates for all 10 helper graphs in the |
---|
8503 | tahoe-stats munin plugin. |
---|
8504 | ] |
---|
8505 | [munin: added a series of munin graphs to report upload helper state |
---|
8506 | robk-tahoe@allmydata.com**20080326013046] |
---|
8507 | [conflict reconciliation (part 1, stats gathering in helper) |
---|
8508 | robk-tahoe@allmydata.com**20080328002516] |
---|
8509 | [helper: add more stats to webapi, at /helper_status |
---|
8510 | warner@allmydata.com**20080327234608] |
---|
8511 | [helper: add stats for the gatherer, show some on the webish welcome page |
---|
8512 | warner@allmydata.com**20080327225532] |
---|
8513 | [webish: show storage sizelimit, abbreviate current usage |
---|
8514 | warner@allmydata.com**20080307031638] |
---|
8515 | [webish: add storage-consumed estimate on welcome page |
---|
8516 | warner@allmydata.com**20080206022939] |
---|
8517 | [stats: added stats reporting to the upload helper |
---|
8518 | robk-tahoe@allmydata.com**20080326011908 |
---|
8519 | |
---|
8520 | adds a stats_producer for the upload helper, which provides a series of counters |
---|
8521 | to the stats gatherer, under the name 'chk_upload_helper'. |
---|
8522 | |
---|
8523 | it examines both the 'incoming' directory, and the 'encoding' dir, providing |
---|
8524 | inc_count inc_size inc_size_old enc_count enc_size enc_size_old, respectively |
---|
8525 | the number of files in each dir, the total size thereof, and the aggregate |
---|
8526 | size of all files older than 48hrs |
---|
8527 | |
---|
8528 | ] |
---|
8529 | [offloaded: add fetched-percentage to the log message |
---|
8530 | warner@allmydata.com**20080414211638] |
---|
8531 | [mutable WIP: re-enable publish/retrieve status |
---|
8532 | warner@allmydata.com**20080417004906] |
---|
8533 | [key_generator: added a unit test |
---|
8534 | robk-tahoe@allmydata.com**20080403200143 |
---|
8535 | |
---|
8536 | implemented a unit test of basic KeyGenService functionality, |
---|
8537 | fixed a bug in the timing of pool refreshes |
---|
8538 | ] |
---|
8539 | [mutable WIP: improve logging a bit |
---|
8540 | warner@allmydata.com**20080416222230] |
---|
8541 | [mutable WIP: rewrite ServerMap data structure, add tests |
---|
8542 | warner@allmydata.com**20080416214947] |
---|
8543 | [mutable WIP: if corrupt shares cause a retrieve to fail, restart it once, ignoring those shares and using different ones |
---|
8544 | warner@allmydata.com**20080415225802] |
---|
8545 | [mutable WIP: split mutable.py into separate files. All tests pass. |
---|
8546 | warner@lothar.com**20080411213116] |
---|
8547 | [direct the user to docs/write_coordination.html in case of an UncoordinatedWriteError |
---|
8548 | zooko@zooko.com**20080108171506] |
---|
8549 | [test_filenode.py : improve coverage of mutable filenode, fix a bug in __hash__ |
---|
8550 | warner@allmydata.com**20080304200128] |
---|
8551 | [add a webserver for the Introducer, showing service announcements and subscriber lists |
---|
8552 | warner@allmydata.com**20080312003625] |
---|
8553 | [reinstate creation of node.url files upon startup |
---|
8554 | robk-tahoe@allmydata.com**20080108000456 |
---|
8555 | |
---|
8556 | a recent purge of the start.html code also took away the logic that wrote |
---|
8557 | 'node.url' into the node root. this is required for the tahoe cli tool to |
---|
8558 | find the node. this puts back a limited fraction of that code, so that the |
---|
8559 | node writes out a node.url file upon startup. |
---|
8560 | ] |
---|
8561 | [stats gathering: added counters to upload,download,mutablewatcher |
---|
8562 | robk-tahoe@allmydata.com**20080410010859 |
---|
8563 | |
---|
8564 | counting number of operations, and for immutable files, bytes transferred |
---|
8565 | ] |
---|
8566 | [use added secret to protect convergent encryption |
---|
8567 | zooko@zooko.com**20080324164606 |
---|
8568 | |
---|
8569 | Now upload or encode methods take a required argument named "convergence" which can be either None, indicating no convergent encryption at all, or a string, which is the "added secret" to be mixed in to the content hash key. If you want traditional convergent encryption behavior, set the added secret to be the empty string. |
---|
8570 | |
---|
8571 | This patch also renames "content hash key" to "convergent encryption" in a argument names and variable names. (A different and larger renaming is needed in order to clarify that Tahoe supports immutable files which are not encrypted content-hash-key a.k.a. convergent encryption.) |
---|
8572 | |
---|
8573 | This patch also changes a few unit tests to use non-convergent encryption, because it doesn't matter for what they are testing and non-convergent encryption is slightly faster. |
---|
8574 | |
---|
8575 | ] |
---|
8576 | [upload: Data should use convergence by default |
---|
8577 | warner@allmydata.com**20080131010256] |
---|
8578 | [offloaded: oops, need more tricks to make the unit tests pass |
---|
8579 | warner@allmydata.com**20080206235111] |
---|
8580 | [helper: return full uri-extension data to the client, so it can compare encoding parameters |
---|
8581 | warner@allmydata.com**20080206233058] |
---|
8582 | [test_upload.py: add test to exercise CHK hashing variations |
---|
8583 | warner@allmydata.com**20080207020335] |
---|
8584 | [Merge patch which switches to SHA-256d with patch that adds punctuation and capitalization to the comment about the hash value. |
---|
8585 | zooko@zooko.com**20080215191643] |
---|
8586 | [docs: update install and usage docs, improve cli "usage" output, make new example directories, add unit test that fails code which prints out sentences that don't end with punctuation marks |
---|
8587 | zooko@zooko.com**20080215191102] |
---|
8588 | [docs: update the example link in using.html |
---|
8589 | zooko@zooko.com**20080108172345] |
---|
8590 | [docs: 10 blocks by default, not 12 |
---|
8591 | amber@yukyuk**20080213105719] |
---|
8592 | [docs: update docs/about.html with Amber |
---|
8593 | zooko@zooko.com**20080201173923] |
---|
8594 | [doc: fix typos and otherwise edit about.html |
---|
8595 | zooko@zooko.com**20080121215443] |
---|
8596 | [docs: about.html: edit thanks to nej |
---|
8597 | zooko@zooko.com**20080122035201] |
---|
8598 | [doc: add an overview to about.html |
---|
8599 | zooko@zooko.com**20080121211925 |
---|
8600 | Hopefully this overview has the right combination of generality and precision to satisfy The Norm Hardy Request: |
---|
8601 | http://allmydata.org/pipermail/tahoe-dev/2007-November/000222.html |
---|
8602 | |
---|
8603 | ] |
---|
8604 | [docs: some documentation updates for 0.7.0 |
---|
8605 | zooko@zooko.com**20080108163241] |
---|
8606 | [more introductory doc cleanup |
---|
8607 | zooko@zooko.com**20080105000919 |
---|
8608 | mv README to docs/about.html and reformat it as HTML |
---|
8609 | add a new README which is a text file pointing to docs/{about,install,running}.html |
---|
8610 | include the Transitive Grace Period Public Licence in its HTML form (it is too big) |
---|
8611 | |
---|
8612 | ] |
---|
8613 | [new licences, move details from README to doc/install-details.html |
---|
8614 | zooko@zooko.com**20080104182742] |
---|
8615 | [README: explain when you need to download source and when you don't |
---|
8616 | zooko@zooko.com**20070921185356] |
---|
8617 | [README: reflow to 80 cols |
---|
8618 | zooko@zooko.com**20070924200732] |
---|
8619 | [README: edit to clarify that you can't use "make" if you installed it the easy_install way |
---|
8620 | zooko@zooko.com**20071013062153] |
---|
8621 | [DEPENDENCIES: recommend the 'build-essential' package instead of gcc+make, |
---|
8622 | Brian Warner <warner@allmydata.com>**20071018033331 |
---|
8623 | since it includes important things like libc6-dev |
---|
8624 | ] |
---|
8625 | [setup: pass INCLUDE_DIRS and LIBRARY_DIRS variables, if any to setup.py from Makefile |
---|
8626 | zooko@zooko.com**20071114021659 |
---|
8627 | |
---|
8628 | ] |
---|
8629 | [setup: README: a few clarifications thanks to Priyanka |
---|
8630 | zooko@zooko.com**20071120050853] |
---|
8631 | [setup: README: warn against Python 2.4.1, recommend easy_install, link to easy_install download page, edit for clarity |
---|
8632 | zooko@zooko.com**20071120193922] |
---|
8633 | [README: fix whitespace |
---|
8634 | zooko@zooko.com**20071107160057] |
---|
8635 | [README: it works on Python 2.4 on Windows |
---|
8636 | zooko@zooko.com**20070914021730] |
---|
8637 | [README: advise 'make clean' before 'make build-deps' (after update), otherwise old versions of the dependent libaries can be used in preference to the newer one |
---|
8638 | warner@allmydata.com**20071113202449] |
---|
8639 | [README: update required version numbers, fix small cut-and-paste error |
---|
8640 | warner@lothar.com**20080102033646] |
---|
8641 | [doc: describe how to start client first in running.html |
---|
8642 | zooko@zooko.com**20080106071657] |
---|
8643 | [doc: even simpler running.html |
---|
8644 | zooko@zooko.com**20080104031159] |
---|
8645 | [running.html: fix usage of 'tahoe create-client' and 'tahoe start', explain ~/.tahoe, add closing tags |
---|
8646 | warner@lothar.com**20080102035046] |
---|
8647 | [docs: update install.html and update and format running.html |
---|
8648 | zooko@zooko.com**20080101232007] |
---|
8649 | [docs: a couple of improvements to install.html |
---|
8650 | zooko@zooko.com**20080101075250] |
---|
8651 | [docs: even further simplify and reformat install.html |
---|
8652 | zooko@zooko.com**20071231143907] |
---|
8653 | [docs: format install.html into HTML format |
---|
8654 | zooko@zooko.com**20071231020118] |
---|
8655 | [docs: a bunch of updates to simplify the process of installing from source and running Tahoe |
---|
8656 | zooko@zooko.com**20071230114717 |
---|
8657 | These changes are a work-in-progress -- there are many incomplete and incorrect parts, but the install.html and running.html files |
---|
8658 | are complete and should work (and they are delightfully concise!). I'm pushing this just to let people see incremental progress |
---|
8659 | and to solicit feedback. "Testing out" the install.html and running.html files and submitting patches or bug reports would be |
---|
8660 | quite welcome. |
---|
8661 | |
---|
8662 | More to come. |
---|
8663 | |
---|
8664 | |
---|
8665 | ] |
---|
8666 | [README: edits |
---|
8667 | zooko@zooko.com**20070929180520] |
---|
8668 | [a few documentation and naming convention updates |
---|
8669 | zooko@zooko.com**20071213013408 |
---|
8670 | Notable: the argument to make REPORTER has been renamed to TRIALARGS. |
---|
8671 | |
---|
8672 | ] |
---|
8673 | [docs: edits and updates to architecture.txt, with Amber |
---|
8674 | zooko@zooko.com**20080213162452] |
---|
8675 | [docs: edit "grid of storage servers" section with Amber |
---|
8676 | zooko@zooko.com**20080128174821] |
---|
8677 | [docs: architecture.txt: some edits with Amber |
---|
8678 | zooko@zooko.com**20080201183906] |
---|
8679 | [docs: edit architecture.txt with Amber's help |
---|
8680 | zooko@zooko.com**20080128173346] |
---|
8681 | [doc: architecture.txt: start updating architecture.txt |
---|
8682 | zooko@zooko.com**20080121235303 |
---|
8683 | I chose to remove mention of non-convergent encoding, not because I dislike non-convergent encoding, but because that option isn't currently expressed in the API and in order to shorten architecture.txt. I renamed "URI" to "Capability". I did some editing, including updating a few places that treated all capabilities as CHK-capabilities and that mentioned that distributed SSKs were not yet implemented. |
---|
8684 | |
---|
8685 | ] |
---|
8686 | [architecture.txt: small edits |
---|
8687 | zooko@zooko.com**20070809053105] |
---|
8688 | [mention ticket #22 |
---|
8689 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502033322] |
---|
8690 | [cleaning grammar |
---|
8691 | wilcoxjg@gmail.com**20070809041154] |
---|
8692 | [architecture.txt: a few small edits |
---|
8693 | zooko@zooko.com**20070919212704] |
---|
8694 | [docs: architecture.txt: reflow to 77 cols |
---|
8695 | zooko@zooko.com**20080121232628 |
---|
8696 | Experiment showed that reflowing to 77 cols changed the fewest lines. |
---|
8697 | ] |
---|
8698 | [BIG COMPATIBILITY BREAK: update hash tags, switch to SHA-256d everywhere |
---|
8699 | warner@allmydata.com**20080215015801] |
---|
8700 | [mutable: storage_index is always 16 bytes |
---|
8701 | warner@allmydata.com**20071107005434] |
---|
8702 | [hashutil.py: switch from pycrypto to pycryptopp SHA256 |
---|
8703 | zooko@zooko.com**20071109204013] |
---|
8704 | [hashutil: replace pycrypto's SHA256 with pycryptopp's SHA256 |
---|
8705 | zooko@zooko.com*-20071108000239] |
---|
8706 | [hashutil: replace pycrypto's SHA256 with pycryptopp's SHA256 |
---|
8707 | zooko@zooko.com**20071108000239] |
---|
8708 | [stats: make StatsGatherer happy about sharing a process with other services, add one during system test to get some test coverage |
---|
8709 | warner@allmydata.com**20080304055558] |
---|
8710 | [test_system: fix pyflakes warnings |
---|
8711 | warner@allmydata.com**20080115032628] |
---|
8712 | [stats: fix service issues |
---|
8713 | robk-tahoe@allmydata.com**20080202005731 |
---|
8714 | |
---|
8715 | having moved inititalisation into startService to handle tub init cleanly, |
---|
8716 | I neglected the up-call to startService, which wound up not starting the |
---|
8717 | load_monitor. |
---|
8718 | |
---|
8719 | also I changed the 'running' attribute to 'started' since 'running' is |
---|
8720 | the name used internally by MultiService itself. |
---|
8721 | ] |
---|
8722 | [stats: added IStatsProducer interface, fixed stats provider startup |
---|
8723 | robk-tahoe@allmydata.com**20080201031015 |
---|
8724 | |
---|
8725 | this adds an interface, IStatsProducer, defining the get_stats() method |
---|
8726 | which the stats provider calls upon and registered producer, and made the |
---|
8727 | register_producer() method check that interface is implemented. |
---|
8728 | |
---|
8729 | also refine the startup logic, so that the stats provider doesn't try and |
---|
8730 | connect out to the stats gatherer until after the node declares the tub |
---|
8731 | 'ready'. this is to address an issue whereby providers would attach to |
---|
8732 | the gatherer without providing a valid furl, and hence the gatherer would |
---|
8733 | be unable to determine the tubid of the connected client, leading to lost |
---|
8734 | samples. |
---|
8735 | ] |
---|
8736 | [mutable WIP: all tests pass, but publish/retrieve status is still stubbed out |
---|
8737 | warner@allmydata.com**20080411022635] |
---|
8738 | [test_system: improve test coverage of publish/retrieve status |
---|
8739 | warner@allmydata.com**20080304072435] |
---|
8740 | [test_system: add test coverage for download-status and upload-status |
---|
8741 | warner@allmydata.com**20080304033717] |
---|
8742 | [mutable: WIP. make Publish work, remove some test scaffolding. test_system still fails. |
---|
8743 | warner@allmydata.com**20080411014406] |
---|
8744 | [test_mutable: remove dead code |
---|
8745 | warner@allmydata.com**20071107005639] |
---|
8746 | [added offloaded key generation |
---|
8747 | robk-tahoe@allmydata.com**20080402014513 |
---|
8748 | |
---|
8749 | this adds a new service to pre-generate RSA key pairs. This allows |
---|
8750 | the expensive (i.e. slow) key generation to be placed into a process |
---|
8751 | outside the node, so that the node's reactor will not block when it |
---|
8752 | needs a key pair, but instead can retrieve them from a pool of already |
---|
8753 | generated key pairs in the key-generator service. |
---|
8754 | |
---|
8755 | it adds a tahoe create-key-generator command which initialises an |
---|
8756 | empty dir with a tahoe-key-generator.tac file which can then be run |
---|
8757 | via twistd. it stashes its .pem and portnum for furl stability and |
---|
8758 | writes the furl of the key gen service to key_generator.furl, also |
---|
8759 | printing it to stdout. |
---|
8760 | |
---|
8761 | by placing a key_generator.furl file into the nodes config directory |
---|
8762 | (e.g. ~/.tahoe) a node will attempt to connect to such a service, and |
---|
8763 | will use that when creating mutable files (i.e. directories) whenever |
---|
8764 | possible. if the keygen service is unavailable, it will perform the |
---|
8765 | key generation locally instead, as before. |
---|
8766 | ] |
---|
8767 | [more new-pyflakes warnings fixed |
---|
8768 | warner@allmydata.com**20071219005133] |
---|
8769 | [runner: tweaked runner to make it easier to extend with additional subcommands |
---|
8770 | robk-tahoe@allmydata.com**20080219230514 |
---|
8771 | |
---|
8772 | runner provides the main point of entry for the 'tahoe' command, and |
---|
8773 | provides various subcommands by default. this provides a hook whereby |
---|
8774 | additional subcommands can be added in in other contexts, providing a |
---|
8775 | simple way to extend the (sub)commands space available through 'tahoe' |
---|
8776 | ] |
---|
8777 | [tweak running to make node start/stop code optional |
---|
8778 | robk-tahoe@allmydata.com**20080109015118 |
---|
8779 | |
---|
8780 | add a 'install_node_control' flag to runner.run(), default True |
---|
8781 | this enables the start/stop node commands |
---|
8782 | which are not too useful on windows |
---|
8783 | ] |
---|
8784 | [client: publish a 'stub client' announcement to the introducer, to provide version/nickname information for each client |
---|
8785 | warner@allmydata.com**20080312022010] |
---|
8786 | [client.py: remove unused import |
---|
8787 | warner@allmydata.com**20070629010100] |
---|
8788 | [refactor node startup, remove tub_ready() |
---|
8789 | warner@allmydata.com**20080206015838] |
---|
8790 | [Client.tub_ready: upcall to Node |
---|
8791 | warner@allmydata.com**20071102002712] |
---|
8792 | [merge patch to integrate decentralized directories with "introducer_and_vdrive.py: use logpublisher too" |
---|
8793 | zooko@zooko.com**20071203212904] |
---|
8794 | [mutable.py: checkpointing #303 work part 2, Publish is sketched out |
---|
8795 | warner@allmydata.com**20080408020128] |
---|
8796 | [mutable.py: fix padding/shape-of-input-data to zfec |
---|
8797 | zooko@zooko.com**20071110000625] |
---|
8798 | [mutable.py: oops, our logging wrappers can't take posargs yet |
---|
8799 | warner@allmydata.com**20071219053616] |
---|
8800 | [mutable.py: update comment about uncoordinated writes appearing as not-enough-peers(unable to get privkey) errors |
---|
8801 | warner@allmydata.com**20080107204805] |
---|
8802 | [mutable: increase max segsize to 3.5MB, to allow dirnodes with about 10k entries |
---|
8803 | warner@allmydata.com**20080311033955] |
---|
8804 | [mutable: cheap padding hack to make zfec tolerate short files |
---|
8805 | warner@lothar.com**20071108103037] |
---|
8806 | [mutable: revise a couple of error messages |
---|
8807 | robk-tahoe@allmydata.com**20080324224628 |
---|
8808 | |
---|
8809 | at brian and zooko's suggestion, reword an error message encountered when |
---|
8810 | multiple writers are racing to make overlapping changes to a directory |
---|
8811 | ] |
---|
8812 | [mutable.py: checkpointing #303 work: retrieve does what I want, now starting in on publish |
---|
8813 | warner@allmydata.com**20080405000926] |
---|
8814 | [mutable: when retrieving, don't try to grab the encprivkey, to save a roundtrip |
---|
8815 | warner@allmydata.com**20080305030824] |
---|
8816 | [mutable-retrieve: only record server response times for queries that we don't ignore |
---|
8817 | warner@allmydata.com**20080305031052] |
---|
8818 | [test_mutable: exercise short reads too |
---|
8819 | warner@allmydata.com**20080311010823] |
---|
8820 | [mutable.py: add comments to justify initial-read size choices |
---|
8821 | warner@allmydata.com**20080213234120] |
---|
8822 | [test_mutable: improve multiple-encodings test coverage |
---|
8823 | warner@lothar.com**20080311064735] |
---|
8824 | [mutable: tolerate multiple encodings, using whichever version is recoverable first. Closes #312 |
---|
8825 | warner@lothar.com**20080311072600] |
---|
8826 | [test_mutable: test all hash-failure cases except a corrupted encrypted private key |
---|
8827 | warner@allmydata.com**20080311004652] |
---|
8828 | [mutable: validate share_hash_chain for each inbound share |
---|
8829 | warner@allmydata.com**20071114212646] |
---|
8830 | [test_mutable: make test-multiple-encodings work |
---|
8831 | warner@lothar.com**20080311061628] |
---|
8832 | [test_mutable: more test coverage, building up a framework to cause reads to occur in a specific order |
---|
8833 | warner@allmydata.com**20080311051543] |
---|
8834 | [test_mutable: add Roundtrip test, suitable for new share-mangling tests |
---|
8835 | warner@allmydata.com**20080310231408] |
---|
8836 | [mutable: minor refactoring of _do_read, to make other tests easier |
---|
8837 | warner@allmydata.com**20080310224256] |
---|
8838 | [test_mutable.py: accomodate changes to mutable.py logging |
---|
8839 | warner@allmydata.com**20080111041834] |
---|
8840 | [webish: add publish status |
---|
8841 | warner@allmydata.com**20080306004110] |
---|
8842 | [mutable: cosmetic changes |
---|
8843 | warner@allmydata.com**20080310224405] |
---|
8844 | [mutable WIP: oops, fix test_mutable |
---|
8845 | warner@allmydata.com**20080417010654] |
---|
8846 | [mutable.py: split replace() into update() and overwrite(). Addresses #328. |
---|
8847 | warner@allmydata.com**20080313010043] |
---|
8848 | [speedcheck: track SSK creation time separately |
---|
8849 | warner@allmydata.com**20080130024432] |
---|
8850 | [mutable: oops, .download *is* in use, by the speedtest. Restore it and add a test. |
---|
8851 | warner@allmydata.com**20080304211140] |
---|
8852 | [mutable.py: remove unused 'download' method (we only have download_to_data for now) |
---|
8853 | warner@allmydata.com**20080304200155] |
---|
8854 | [webish: add /file links, change directory page to use them. This fixes filenames in wget. Closes #221. |
---|
8855 | warner@allmydata.com**20080514213221] |
---|
8856 | [webish: display timestamps |
---|
8857 | warner@allmydata.com**20080211211318] |
---|
8858 | [refactor one of the dispatch routines in webish.py |
---|
8859 | zooko@zooko.com**20080320191109 |
---|
8860 | The behavior is intended to be unchanged by this refactoring. Unit tests show no change in behavior. |
---|
8861 | ] |
---|
8862 | [webish: link to directory URIs rather than a child path. Addresses #103. |
---|
8863 | warner@allmydata.com**20080130000432] |
---|
8864 | [webish: split out 'unlinked' operations |
---|
8865 | warner@allmydata.com**20080305211242] |
---|
8866 | [wui/wapi/webish: HTML form checkboxes send the value "on", so let's interpret that as boolean true |
---|
8867 | zooko@zooko.com**20080301022942] |
---|
8868 | [webish: this file is too big, start breaking it into pieces, beginning with status |
---|
8869 | warner@allmydata.com**20080305205956] |
---|
8870 | [webish: more upload stats: total encode-and-push rate, already-in-grid existence check time |
---|
8871 | warner@allmydata.com**20080206083901] |
---|
8872 | [UploadResults: add more helper timing stats (ciphertext fetch times) |
---|
8873 | warner@allmydata.com**20080206081235] |
---|
8874 | [webish: download-results: add per-server response times |
---|
8875 | warner@allmydata.com**20080304025345] |
---|
8876 | [webish: download-results: add server_problems |
---|
8877 | warner@allmydata.com**20080304023035] |
---|
8878 | [test_web: improve upload/download status coverage |
---|
8879 | warner@allmydata.com**20080304035623] |
---|
8880 | [webish: add more mutable-retrieve timing status |
---|
8881 | warner@allmydata.com**20080305030436] |
---|
8882 | [mutable.py: reject shares with different k/N than we expect. Quick fix for #312: avoids data corruption but has availability problems. |
---|
8883 | warner@allmydata.com**20080213193420] |
---|
8884 | [webish download results: add servermap, decrypt time |
---|
8885 | warner@allmydata.com**20080304020932] |
---|
8886 | [web: status: add 'started' timestamps to all operations |
---|
8887 | warner@allmydata.com**20080305005044] |
---|
8888 | [webish: add 'download results', with some basic timing information |
---|
8889 | warner@allmydata.com**20080304011921] |
---|
8890 | [log more peerinfo in download/upload/checker problems |
---|
8891 | warner@allmydata.com**20080226233314] |
---|
8892 | [switch from base62 to base32 for storage indices, switch from z-base-32 to rfc 3548 base-32 for everything, separate out base32 encoding from idlib |
---|
8893 | zooko@zooko.com**20080215012747] |
---|
8894 | [mutable.py: log more information during publish, specifically the sharemap, and the reason for an UncoordinatedWriteError |
---|
8895 | warner@allmydata.com**20080111041623] |
---|
8896 | [hashutil: add tagged_hash_256d and tagged_hasher_256d |
---|
8897 | warner@allmydata.com**20080207013643] |
---|
8898 | [trailing-whitespace eradication, no functional changes |
---|
8899 | warner@allmydata.com**20071101222509] |
---|
8900 | [use base62 encoding for storage indexes, on disk and in verifier caps, and in logging and diagnostic tools |
---|
8901 | zooko@zooko.com**20080213024837 |
---|
8902 | base62 encoding fits more information into alphanumeric chars while avoiding the troublesome non-alphanumeric chars of base64 encoding. In particular, this allows us to work around the ext3 "32,000 entries in a directory" limit while retaining the convenient property that the intermediate directory names are leading prefixes of the storage index file names. |
---|
8903 | ] |
---|
8904 | [storage: clean up use of si_s vs si_dir, add test for BadWriterEnabler message, add some logging |
---|
8905 | warner@allmydata.com**20080131234848] |
---|
8906 | [storage: make two levels of share directories so as not to exceed certain filesystems's limitations on directory size |
---|
8907 | zooko@zooko.com**20080131222628 |
---|
8908 | The filesystem which gets my vote for most undeservedly popular is ext3, and it has a hard limit of 32,000 entries in a directory. Many other filesystems (even ones that I like more than I like ext3) have either hard limits or bad performance consequences or weird edge cases when you get too many entries in a single directory. |
---|
8909 | |
---|
8910 | This patch makes it so that there is a layer of intermediate directories between the "shares" directory and the actual storage-index directory (the one whose name contains the entire storage index (z-base-32 encoded) and which contains one or more share files named by their share number). |
---|
8911 | |
---|
8912 | The intermediate directories are named by the first 14 bits of the storage index, which means there are at most 16384 of them. (This also means that the intermediate directory names are not a leading prefix of the storage-index directory names -- to do that would have required us to have intermediate directories limited to either 1024 (2-char), which is too few, or 32768 (3-chars of a full 5 bits each), which would overrun ext3's funny hard limit of 32,000.)) |
---|
8913 | |
---|
8914 | This closes #150, and please see the "convertshares.py" script attached to #150 to convert your old tahoe-0.7.0 storage/shares directory into a new tahoe-0.8.0 storage/shares directory. |
---|
8915 | |
---|
8916 | ] |
---|
8917 | [test_cli: oops, need to update this when the CHK hash changes |
---|
8918 | warner@allmydata.com**20080207015853] |
---|
8919 | ['tahoe dump-cap': accept http:// -prefixed URLs too |
---|
8920 | warner@allmydata.com**20080114201227] |
---|
8921 | [webish: censor all caps before logging the HTTP request, to preserve user privacy |
---|
8922 | warner@allmydata.com**20080213013123] |
---|
8923 | ['tahoe catalog-shares': add SDMF filesize to the output, update misc/find-share-anomalies.py to match |
---|
8924 | warner@allmydata.com**20080213211206] |
---|
8925 | [catalog-shares: add expiration time to output |
---|
8926 | warner@allmydata.com**20080212004454] |
---|
8927 | [add 'tahoe catalog-shares' tool, to make a one-line summary of each share file. This can help do cross-server correlation of sharefiles, looking for anomalies |
---|
8928 | warner@allmydata.com**20080212001701] |
---|
8929 | [add 'tahoe find-shares' command, to locate share files on a local node's disk |
---|
8930 | warner@allmydata.com**20080206191951] |
---|
8931 | [add 'tahoe dump-cap' command, to show storage index, lease secrets, etc |
---|
8932 | warner@allmydata.com**20080114194325] |
---|
8933 | [test_cli.py: hush pyflakes with a dummy usage, until we get some real CLI tests |
---|
8934 | warner@lothar.com**20071011085529] |
---|
8935 | [misc/find-share-anomalies.py: tool to analyze 'tahoe catalog-shares' output and look for problems |
---|
8936 | warner@allmydata.com**20080212015336] |
---|
8937 | [webish: add primitive publish/retrieve status pages |
---|
8938 | warner@allmydata.com**20080304070744] |
---|
8939 | [webish: make upload timings visible on the recent uploads/downloads status page |
---|
8940 | warner@allmydata.com**20080303204852] |
---|
8941 | [webish: add when_done= to POST /uri?t=upload . I did not add a 'recent uploads' section to the welcome page, but I think the new upload-results page provides the desired data |
---|
8942 | warner@allmydata.com**20080206083816] |
---|
8943 | [webish: add per-file upload/download status pages |
---|
8944 | warner@allmydata.com**20080301050300] |
---|
8945 | [retain 10 most recent upload/download status objects, show them in /status . Prep for showing individual status objects |
---|
8946 | warner@allmydata.com**20080301041903] |
---|
8947 | [webish: display tahoe import path on the welcome page, to help figure out where the code is coming from |
---|
8948 | warner@allmydata.com**20080206020849] |
---|
8949 | [make current upload/download status objects available from the client |
---|
8950 | warner@allmydata.com**20080212213945] |
---|
8951 | [webish status: distinguish active uploads/downloads from recent ones |
---|
8952 | warner@allmydata.com**20080226213528] |
---|
8953 | [add test coverage for the /stats web page |
---|
8954 | warner@allmydata.com**20080213195739] |
---|
8955 | [current-downloads status: add SI, size, make numsegs 1-based |
---|
8956 | warner@allmydata.com**20080226210235] |
---|
8957 | [webish: add /status page to display current uploads/downloads |
---|
8958 | warner@allmydata.com**20080212214005] |
---|
8959 | [download status: refactor into a separate object, so we don't need to keep the Download itself around for a long time |
---|
8960 | warner@allmydata.com**20080213010103] |
---|
8961 | [add download-status objects, to track download progress |
---|
8962 | warner@allmydata.com**20080212213839] |
---|
8963 | [add upload-status objects, to track upload progress |
---|
8964 | warner@allmydata.com**20080212213605] |
---|
8965 | [offloaded: close the local filehandle after encoding is done, otherwise windows fails |
---|
8966 | warner@lothar.com**20080117075233] |
---|
8967 | [encode.py: don't record BAD log event unless there is actually a problem |
---|
8968 | warner@allmydata.com**20080128175910] |
---|
8969 | [encode.py: improve error message when segment lengths come out wrong |
---|
8970 | warner@allmydata.com**20080125035109] |
---|
8971 | [encode.py: don't allow a shareholder which dies in start() to kill the whole upload |
---|
8972 | warner@allmydata.com**20080128181448] |
---|
8973 | [add upload-results timing info for helper uploads. This changes the Helper protocol, and introduces a compatibility break |
---|
8974 | warner@allmydata.com**20080206075225] |
---|
8975 | [upload.py: start removing wait_for_numpeers code |
---|
8976 | warner@allmydata.com**20080110032518] |
---|
8977 | [offloaded: reinstate fix for windows tests |
---|
8978 | robk-tahoe@allmydata.com**20080121212515 |
---|
8979 | |
---|
8980 | in a discussion the other day, brian had asked me to try removing this fix, since |
---|
8981 | it leads to double-closing the reader. since on my windows box, the test failures |
---|
8982 | I'd experienced were related to the ConnectionLost exception problem, and this |
---|
8983 | close didn't see to make a difference to test results, I agreed. |
---|
8984 | |
---|
8985 | turns out that the buildbot's environment does fail without this fix, even with |
---|
8986 | the exception fix, as I'd kind of expected. |
---|
8987 | |
---|
8988 | it makes sense, because the reader (specifically the file handle) must be closed |
---|
8989 | before it can be unlinked. at any rate, I'm reinstating this, in order to fix the |
---|
8990 | windows build |
---|
8991 | ] |
---|
8992 | [offloaded: close reader before removing its file |
---|
8993 | robk-tahoe@allmydata.com*-20080117233628 |
---|
8994 | |
---|
8995 | unlinking a file before closing it is not portable. it works on unix, but fails |
---|
8996 | since an open file holds a lock on windows. |
---|
8997 | |
---|
8998 | this closes the reader before trying to unlink the encoding file within the |
---|
8999 | CHKUploadHelper. |
---|
9000 | ] |
---|
9001 | [offloaded: close reader before removing its file |
---|
9002 | robk-tahoe@allmydata.com**20080117233628 |
---|
9003 | |
---|
9004 | unlinking a file before closing it is not portable. it works on unix, but fails |
---|
9005 | since an open file holds a lock on windows. |
---|
9006 | |
---|
9007 | this closes the reader before trying to unlink the encoding file within the |
---|
9008 | CHKUploadHelper. |
---|
9009 | ] |
---|
9010 | [offloaded.py: delete encoding tempfile when upload is complete |
---|
9011 | warner@lothar.com**20080117071554] |
---|
9012 | [offloaded upload: avoid tail-recursion problem that would break large files |
---|
9013 | warner@allmydata.com**20080125035134] |
---|
9014 | [offloaded: when uploading a file that failed to upload before, ask for the last byte of ciphertext, so the reader is prepared to give us the plaintext hashes |
---|
9015 | warner@allmydata.com**20080129010543] |
---|
9016 | [upload: add log message when AssistedUploader is done |
---|
9017 | warner@allmydata.com**20080129233812] |
---|
9018 | [offloaded.py: fix logging a bit |
---|
9019 | warner@allmydata.com**20080131194501] |
---|
9020 | [add upload timings and rates to the POST /uri?t=upload results page |
---|
9021 | warner@allmydata.com**20080206064151] |
---|
9022 | [encode.py: update logging levels |
---|
9023 | warner@allmydata.com**20080128181527] |
---|
9024 | [encode.py: log the contents of the uri_extension block |
---|
9025 | warner@allmydata.com**20080124000804] |
---|
9026 | [introducer: remove remaining bits of 'push-to-myself' flags. The uploading/downloading node is no longer special. |
---|
9027 | warner@allmydata.com**20080205201601] |
---|
9028 | [webish: make POST /uri?t=upload deposit you on an 'Upload Results' page |
---|
9029 | warner@allmydata.com**20080206050137] |
---|
9030 | [webish: add extra introducer data (version, timestamps) to Welcome page |
---|
9031 | warner@allmydata.com**20080205233227] |
---|
9032 | [tweak webish to use resource_filename to find css and html files |
---|
9033 | robk-tahoe@allmydata.com**20080122234458 |
---|
9034 | |
---|
9035 | using sibpath to find web template files relative to source code is functional |
---|
9036 | when running from source environments, but not especially flexible when running |
---|
9037 | from bundled built environments. the more 'orthodox' mechanism, pkg_resources, |
---|
9038 | in theory at least, knows how to find resource files in various environments. |
---|
9039 | |
---|
9040 | this makes the 'web' directory in allmydata into an actual allmydata.web module |
---|
9041 | (since pkg_resources looks for files relative to a named module, and that module |
---|
9042 | must be importable) and uses pkg_resources.resource_filename to find the files |
---|
9043 | therein. |
---|
9044 | ] |
---|
9045 | [added tweaked sibpath implementation |
---|
9046 | robk-tahoe@allmydata.com**20080110212341 |
---|
9047 | |
---|
9048 | use of twisted.python.util.sibpath to find files relative to modules doesn't |
---|
9049 | work when those modules are bundled into a library by py2exe. this provides |
---|
9050 | an alternative implementation (in allmydata.util.sibpath) which checks for |
---|
9051 | the existence of the file, and if it is not found, attempts to find it relative |
---|
9052 | to sys.executable instead. |
---|
9053 | ] |
---|
9054 | [provisioning: add some drive failure and repair rate info |
---|
9055 | warner@allmydata.com**20070907014741] |
---|
9056 | [display the Helper FURL and our connection status on the welcome page. Closes #285. |
---|
9057 | warner@allmydata.com**20080128195622] |
---|
9058 | [upload: rework passing of default encoding parameters: move more responsibility into BaseUploadable |
---|
9059 | warner@allmydata.com**20080207003903] |
---|
9060 | [upload.py: make it easier to have an IUploadable that overrides encoding parameters: just set an attribute instead of subclassing |
---|
9061 | warner@lothar.com**20080117071742] |
---|
9062 | [change encryption-key hash to include encoding parameters. This is a minor compatibility break: CHK files encoded (with convergence) before and after this will have different keys and ciphertexts. Also switched to SHA-256d for both the data-to-key hash and the key-to-storageindex hash |
---|
9063 | warner@allmydata.com**20080207015047] |
---|
9064 | [rename storage_index_chk_hash() to storage_index_hash() and add TODO about how our use of it now includes keys that are not CHKs |
---|
9065 | zooko@zooko.com**20080201182737] |
---|
9066 | [rename "dir-uri" to "dir-cap" |
---|
9067 | zooko@zooko.com**20080108164127] |
---|
9068 | [cmdline: give useful error messages about the --dir-uri and ~/.tahoe/private/root_dir.cap |
---|
9069 | zooko@zooko.com**20080103233535] |
---|
9070 | [test_util: add full coverage for allmydata.util.deferredutil |
---|
9071 | warner@allmydata.com**20080206224104] |
---|
9072 | [remove tests of logging functionality that's been subsumed by foolscap logging |
---|
9073 | warner@lothar.com**20071213022353] |
---|
9074 | [test_node.py: more coverage of Node.log |
---|
9075 | warner@lothar.com**20071031075659] |
---|
9076 | [logging: only test log.err when Twisted is new enough to let us ignore the generated errors |
---|
9077 | warner@allmydata.com**20071120003700] |
---|
9078 | [test_system: remove the hackish debug_interrupt= attribute magic used to exercise interrupted-upload resumption, instead just make the Uploadable bounce the helper halfway through the upload |
---|
9079 | warner@allmydata.com**20080208021537] |
---|
9080 | [offloaded uploader: don't use a huge amount of memory when skipping over previously-uploaded data |
---|
9081 | warner@allmydata.com**20080124232533] |
---|
9082 | [test_system.py: remove that ugly debug_stash_RemoteencryptedUploadable hack, now that UploadResults give us a better approach |
---|
9083 | warner@allmydata.com**20080207232730] |
---|
9084 | [offloaded: upload.py: handle forward skips, to allow resumed uploads to send less than all the data. We still read all the data (to hash it, 'paranoid mode'), but we don't send it over the wire |
---|
9085 | warner@lothar.com**20080117071656] |
---|
9086 | [big introducer refactoring: separate publish+subscribe. Addresses #271. |
---|
9087 | warner@allmydata.com**20080205190513] |
---|
9088 | [assert that only dicts get passed to _got_response() |
---|
9089 | zooko@zooko.com**20070331010040] |
---|
9090 | [bump timeout up because it timed out even on my super fast MacBook Pro |
---|
9091 | zooko@zooko.com**20070501061606 |
---|
9092 | Hm. This probably means that it is never going to finish... |
---|
9093 | ] |
---|
9094 | [Client.get_permuted_peers: use self.nodeid now that it's fixed |
---|
9095 | warner@lothar.com**20070812232451] |
---|
9096 | [storage: add version number to share data. Closes #90. |
---|
9097 | warner@allmydata.com**20070904160024] |
---|
9098 | [storageserver.py: remove unused import |
---|
9099 | warner@allmydata.com**20070418174333] |
---|
9100 | [storageserver.ReadBucketProxy: break out _parse_offsets, for debug tools |
---|
9101 | warner@lothar.com**20070713235217] |
---|
9102 | [client.py: add the missing remote_get_nodeid() method claimed in interfaces.py |
---|
9103 | warner@allmydata.com**20070926192048] |
---|
9104 | [client.py: remove unused code |
---|
9105 | warner@allmydata.com**20070629005513] |
---|
9106 | [fix test_introducer to wait for the right things in order to avoid intermittent test failures |
---|
9107 | zooko@zooko.com**20071211200815] |
---|
9108 | [fix IntroducerClient.when_enough_peers() |
---|
9109 | zooko@zooko.com**20071211022259 |
---|
9110 | add IntroducerClient.when_few_enough_peers(), fix and improve test_introducer |
---|
9111 | ] |
---|
9112 | [fix import error, detected thanks to "make test" |
---|
9113 | zooko@zooko.com**20071211232301] |
---|
9114 | [fix missing import, thanks to pyflakes |
---|
9115 | zooko@zooko.com**20071211230029] |
---|
9116 | [mutable: improve logging: mark events with level=log.WEIRD and log.UNUSUAL |
---|
9117 | warner@allmydata.com**20080107230916] |
---|
9118 | [mutable.Publish: improve logging |
---|
9119 | warner@allmydata.com**20071219053050] |
---|
9120 | [mutable: verify incoming share signatures during Publish, it's not that expensive and it's a good idea |
---|
9121 | warner@allmydata.com**20071108200236] |
---|
9122 | [mutable.py: one more logging fix |
---|
9123 | warner@allmydata.com**20071219054241] |
---|
9124 | [storage: improve logging a bit |
---|
9125 | warner@allmydata.com**20080114175858] |
---|
9126 | [storage.py: add a little logging (disabled) |
---|
9127 | warner@allmydata.com**20071107201454] |
---|
9128 | [storage.py: factor out a common compare() routine |
---|
9129 | warner@allmydata.com**20071205062034] |
---|
9130 | [test_upload.py: implement remote_abort on our fake BucketWriter |
---|
9131 | warner@allmydata.com**20080124000734] |
---|
9132 | [stats: add a simple stats gathering system |
---|
9133 | robk-tahoe@allmydata.com**20080131021107 |
---|
9134 | |
---|
9135 | We have a desire to collect runtime statistics from multiple nodes primarily |
---|
9136 | for server monitoring purposes. This implements a simple implementation of |
---|
9137 | such a system, as a skeleton to build more sophistication upon. |
---|
9138 | |
---|
9139 | Each client now looks for a 'stats_gatherer.furl' config file. If it has |
---|
9140 | been configured to use a stats gatherer, then it instantiates internally |
---|
9141 | a StatsProvider. This is a central place for code which wishes to offer |
---|
9142 | stats up for monitoring to report them to, either by calling |
---|
9143 | stats_provider.count('stat.name', value) to increment a counter, or by |
---|
9144 | registering a class as a stats producer with sp.register_producer(obj). |
---|
9145 | |
---|
9146 | The StatsProvider connects to the StatsGatherer server and provides its |
---|
9147 | provider upon startup. The StatsGatherer is then responsible for polling |
---|
9148 | the attached providers periodically to retrieve the data provided. |
---|
9149 | The provider queries each registered producer when the gatherer queries |
---|
9150 | the provider. Both the internal 'counters' and the queried 'stats' are |
---|
9151 | then reported to the gatherer. |
---|
9152 | |
---|
9153 | This provides a simple gatherer app, (c.f. make stats-gatherer-run) |
---|
9154 | which prints its furl and listens for incoming connections. Once a |
---|
9155 | minute, the gatherer polls all connected providers, and writes the |
---|
9156 | retrieved data into a pickle file. |
---|
9157 | |
---|
9158 | Also included is a munin plugin which knows how to read the gatherer's |
---|
9159 | stats.pickle and output data munin can interpret. this plugin, |
---|
9160 | tahoe-stats.py can be symlinked as multiple different names within |
---|
9161 | munin's 'plugins' directory, and inspects argv to determine which |
---|
9162 | data to display, doing a lookup in a table within that file. |
---|
9163 | It looks in the environment for 'statsfile' to determine the path to |
---|
9164 | the gatherer's stats.pickle. An example plugins-conf.d file is |
---|
9165 | provided. |
---|
9166 | |
---|
9167 | ] |
---|
9168 | [add some munin plugins |
---|
9169 | warner@allmydata.com**20070705203815] |
---|
9170 | [add mac native build |
---|
9171 | robk-tahoe@allmydata.com**20080123013226 |
---|
9172 | |
---|
9173 | This patch adds support for a mac native build. |
---|
9174 | |
---|
9175 | At the moment it's a fairly simple .app - i.e. so simple as to be unacceptable |
---|
9176 | for a shipping product, but ok for testing and experiment at this point. |
---|
9177 | |
---|
9178 | notably once launched, the app's ui does not respond at all, although its dock |
---|
9179 | icon does allow it to be force-quit. |
---|
9180 | |
---|
9181 | this produces a single .app bundle, which when run will look for a node basedir |
---|
9182 | in ~/.tahoe. If one is not found, one will be created in ~/Library/Application |
---|
9183 | Support/Allmydata Tahoe, and that will be symlinked to ~/.tahoe |
---|
9184 | |
---|
9185 | if the basedir is lacking basic config (introducer.furl and root_dir.cap) then |
---|
9186 | the wx config wizard will be launched to log into an account and to set up |
---|
9187 | those files. |
---|
9188 | |
---|
9189 | if a webport file is not found, the default value of 8123 will be written into |
---|
9190 | it. |
---|
9191 | |
---|
9192 | once the node has started running, a webbrowser will be opened to the webish |
---|
9193 | interface at the users root_dir |
---|
9194 | |
---|
9195 | note that, once configured, the node runs as the main thread of the .app, |
---|
9196 | no daemonisation is done, twistd is not involved. |
---|
9197 | |
---|
9198 | the binary itself, from within the .app bundle, i.e. |
---|
9199 | "Allmydata Tahoe.app/Contents/MacOS/Allmydata Tahoe" |
---|
9200 | can be used from the command line and functions as the 'tahoe' executable |
---|
9201 | would in a unix environment, with one exception - when launched with no args |
---|
9202 | it triggers the default behaviour of running a node, and if necessary config |
---|
9203 | wizard, as if the user had launched the .app |
---|
9204 | |
---|
9205 | one other gotcha to be aware of is that symlinking to this binary from some |
---|
9206 | other place in ones $PATH will most likely not work. when I tried this, |
---|
9207 | something - wx I believe - exploded, since it seems to use argv[0] to figure |
---|
9208 | out where necessary libraries reside and fails if argv[0] isn't in the .app |
---|
9209 | bundle. it's pretty easy to set up a script a la |
---|
9210 | #!/bin/bash |
---|
9211 | /Blah/blah/blah/Allmydata\ Tahoe.app/Contents/MacOS/Allmydata\ Tahoe "${@}" |
---|
9212 | |
---|
9213 | |
---|
9214 | ] |
---|
9215 | [simplify buildbot upload of windows installer |
---|
9216 | robk-tahoe@allmydata.com**20080117022930 |
---|
9217 | |
---|
9218 | since the installer upload got more complex (needing to chmod files before |
---|
9219 | rsyncing) I promoted it to a makefile target, simplifying the buildbot steps |
---|
9220 | involved |
---|
9221 | |
---|
9222 | ] |
---|
9223 | [Makefile: move use of 'cygpath' into win32-conditionalized section |
---|
9224 | warner@allmydata.com**20080115002236] |
---|
9225 | [setup: check for the pywin32 dep only on Windows |
---|
9226 | zooko@zooko.com**20070921211116] |
---|
9227 | [Makefile: use absolute path to src/ in PP, since check-memory needs it (it chdirs then imports allmydata) |
---|
9228 | warner@lothar.com**20070915031743] |
---|
9229 | [Makefile: prepend src/ to the PYTHONPATH |
---|
9230 | zooko@zooko.com**20070914024315] |
---|
9231 | [windows installer build refinements |
---|
9232 | robk-tahoe@allmydata.com**20080114235354 |
---|
9233 | |
---|
9234 | this resolves problems of py2exe's modulefinder collection of sources from |
---|
9235 | .zipped egg files, not by using easy_install to reach the --always-unzip |
---|
9236 | option, but rather with a small tool which unpacks any zipped egg files found |
---|
9237 | in misc/dependencies. this fixes the py2exe build given rollback of the |
---|
9238 | easy_install stuff which had broken the unix builds. misc/hatch-eggs.py |
---|
9239 | performs the honours. |
---|
9240 | |
---|
9241 | this also includes a misc/sub-ver.py tool which substitutes elements of the |
---|
9242 | verion number for the current code base (by importing allmydata.__version__ |
---|
9243 | hence make-version should be run first, and the python path carefully managed) |
---|
9244 | into template files using python's string interpolation of named args from a |
---|
9245 | dict as the templating syntax. i.e. %(major)d %(minor)d %(point)d %(nano)d |
---|
9246 | each expand to the individual components of the version number as codified |
---|
9247 | by the pyutil.version_class.Version class. there is also a %(build)s tag |
---|
9248 | which expands to the string form of the whole version number. This tool is |
---|
9249 | used to interpolate the automatically generated version information into the |
---|
9250 | innosetup source file in a form consistent with innosetup/windows' restrictions |
---|
9251 | ] |
---|
9252 | [add windows installer target to build |
---|
9253 | robk-tahoe@allmydata.com**20080112024121 |
---|
9254 | |
---|
9255 | add 'windows-installer' target to top level makefile to build a windows setup.exe package |
---|
9256 | using innosetup. this assumes innosetup 5 is installed in program files as normal. |
---|
9257 | |
---|
9258 | this doesn't include any logic to manage version numbers at this point, it's just a |
---|
9259 | simple experiment to test out building an installer as yet. |
---|
9260 | ] |
---|
9261 | [add windows-exe target to makefile |
---|
9262 | robk-tahoe@allmydata.com**20080110010628] |
---|
9263 | [first stab at windows build details. |
---|
9264 | robk-tahoe@allmydata.com**20080110010156 |
---|
9265 | |
---|
9266 | there are many and various fiddly details that were involved in this process |
---|
9267 | on mountain view. This is a stripped down version of the build process used |
---|
9268 | there. there's hence a good chance that one or two necessary details got |
---|
9269 | stripped down through the cracks. |
---|
9270 | |
---|
9271 | this provides a py2exe setup.py to build a tahoe.exe and a tahoesvc.exe |
---|
9272 | the former is equivalent to bin/tahoe, but without the start/stop commands. |
---|
9273 | the latter is a windows service that instantiates a client whose basedir |
---|
9274 | is found in the registry. |
---|
9275 | ] |
---|
9276 | [introducer: allow nodes to refrain from publishing themselves, by passing furl=None. This would be useful for clients who do not run storage servers. |
---|
9277 | warner@allmydata.com**20080202014838] |
---|
9278 | [client.py: touch BASEDIR/no_storage to not publish a storage server. Addresses #271 |
---|
9279 | warner@allmydata.com**20080202020708] |
---|
9280 | [client.py: hush pyflakes |
---|
9281 | warner@allmydata.com**20080202022815] |
---|
9282 | [test_web: fix webapi test around redirection issues |
---|
9283 | robk-tahoe@allmydata.com**20080611221917 |
---|
9284 | |
---|
9285 | this fixes the test_web test test_POST_upload_mutable which chdir's into |
---|
9286 | a /foo subdirectory, but then later asserts that the web ui redirects the |
---|
9287 | user back to /foo, which should really be /foo/ since it's a directory. |
---|
9288 | ] |
---|
9289 | [test_web: implement API changes from the recent webapi.txt overhaul |
---|
9290 | warner@allmydata.com**20080519195602] |
---|
9291 | [webish: test error cases more thoroughly by looking inside the response text |
---|
9292 | warner@allmydata.com**20070716190119] |
---|
9293 | [make the unit test of the overwrite button more general |
---|
9294 | zooko@zooko.com**20071220212307] |
---|
9295 | [web: return a proper error upon POST with a bad t= value |
---|
9296 | warner@allmydata.com**20080415181129] |
---|
9297 | [wapi: add POST /uri/$DIRECTORY?t=set_children |
---|
9298 | zooko@zooko.com**20080301004027 |
---|
9299 | Unfinished bits: doc in webapi.txt, test handling of badly formed JSON, return reasonable HTTP response, examination of the effect of this patch on code coverage -- but I'm committing it anyway because MikeB can use it and I'm being called to dinner... |
---|
9300 | |
---|
9301 | ] |
---|
9302 | [test_web.py: remove last use of fake_* methods, remove dead code |
---|
9303 | warner@allmydata.com**20071205051100] |
---|
9304 | [editing: change names like "MyThing" to "FakeThing" for fake objects in unit tests |
---|
9305 | zooko@zooko.com**20071212001029] |
---|
9306 | [webish.py: refactor /uri handlers, one rend.Page class per operation |
---|
9307 | warner@allmydata.com**20080206043820] |
---|
9308 | [webish: factor out queryargs-or-formargs extraction, make /uri?t=mkdir work and redirect to a valid url |
---|
9309 | warner@lothar.com**20071224232652] |
---|
9310 | [test_web: more coverage of URIPOSTHandler error cases |
---|
9311 | warner@lothar.com**20071225044935] |
---|
9312 | [webish: add PUT /uri?mutable=true |
---|
9313 | warner@allmydata.com**20080206041802] |
---|
9314 | [webish: improve test coverage |
---|
9315 | warner@lothar.com**20070917085346] |
---|
9316 | [webish: add POST /uri?t=upload&mutable=true |
---|
9317 | warner@allmydata.com**20080206041022] |
---|
9318 | [tests: put back skipped and todo tests |
---|
9319 | zooko@zooko.com**20080115030241 |
---|
9320 | closes #258 -- "put back skipped and todo tests" |
---|
9321 | ] |
---|
9322 | [suppress the skipped and the todo unit tests in order to make unit test results prettier (the install.html instructs users to run the unit tests) |
---|
9323 | zooko@zooko.com**20080104063618] |
---|
9324 | [refactor webish.py slightly, improve the test coverage a bit. One test is marked SKIP pending improvements in webish.py |
---|
9325 | warner@lothar.com**20071225094857] |
---|
9326 | [webish: add upload/view-uri forms (not associated with any particular directory) to the welcome page. Document POST /uri?t=upload . |
---|
9327 | warner@allmydata.com**20080206034440] |
---|
9328 | [webish: add button to make directories and unit test of it |
---|
9329 | zooko@zooko.com**20071220213112 |
---|
9330 | Unfortunately although it passes the unit tests, it doesn't work, because the unit tests and the implementation use the "encode params into URL" technique but the button uses the "encode params into request body" technique. |
---|
9331 | ] |
---|
9332 | [web: replace welcome-page download-URI form with new version |
---|
9333 | warner@lothar.com**20070708050622] |
---|
9334 | [test: refactor webist.POSTHandler() to have a method for each "?t=" command |
---|
9335 | zooko@zooko.com**20080229191118 |
---|
9336 | Input validation and decoding is still done in the body of POSTHandler.renderHTTP(). |
---|
9337 | ] |
---|
9338 | [test_web.py: add coverage for POST t=check |
---|
9339 | warner@allmydata.com**20071205054938] |
---|
9340 | [upload: return an UploadResults instance (with .uri) instead of just a URI |
---|
9341 | warner@allmydata.com**20080206030138] |
---|
9342 | [check-speed: test SSK upload/download speed too. SDMF imposes a limit on the file sizes, no 10MB or 100MB test |
---|
9343 | warner@lothar.com**20071214080531] |
---|
9344 | [check_speed: add optional 100MB test, if the 10MB test finished fast enough |
---|
9345 | Brian Warner <warner@allmydata.com>**20070922070446] |
---|
9346 | [check_speed.py: use more small-file tests to improve accuracy of per-file time |
---|
9347 | Brian Warner <warner@allmydata.com>**20070926015736] |
---|
9348 | [check_speed: measure RTT, report per-file times as a multiple of RTT |
---|
9349 | warner@allmydata.com**20070926200733] |
---|
9350 | [check_speed.py: minor comment |
---|
9351 | warner@allmydata.com**20070926030703] |
---|
9352 | [check_speed: average multiple pings when measuring RTT |
---|
9353 | warner@allmydata.com**20070927011615] |
---|
9354 | [upload-helper: avoid duplicate uploads: check the grid to see if the file already exists |
---|
9355 | warner@allmydata.com**20080131004902] |
---|
9356 | [remove upload.upload_(data,filename,filehandle) convenience functions |
---|
9357 | warner@allmydata.com**20080131010319] |
---|
9358 | [CHK upload helper: don't let one failed upload prevent us from trying again |
---|
9359 | warner@allmydata.com**20080128185813] |
---|
9360 | [offloaded.py: hush pyflakes |
---|
9361 | warner@lothar.com**20080111110514] |
---|
9362 | [offloaded: improve logging across the board |
---|
9363 | warner@lothar.com**20080117071135] |
---|
9364 | [download: use hierarchical logging |
---|
9365 | warner@allmydata.com**20071120010710] |
---|
9366 | [make content-hash-key encryption a parameter of uploading |
---|
9367 | zooko@zooko.com**20080130182450 |
---|
9368 | fixes #293 |
---|
9369 | ] |
---|
9370 | [offloaded: update unit tests: assert that interrupt/resume works, and that the helper deletes tempfiles |
---|
9371 | warner@lothar.com**20080117071810] |
---|
9372 | [megapatch: overhaul encoding_parameters handling: now it comes from the Uploadable, or the Client. Removed options= too. Also move helper towards resumability. |
---|
9373 | warner@lothar.com**20080116090335] |
---|
9374 | [storage.py: add a test for the next_power_of_k fix I made a few hours ago, basically do an upload with a non-power-of-two number of segments |
---|
9375 | warner@lothar.com**20070714052406] |
---|
9376 | [reduce MAX_SEGMENT_SIZE from 2MB to 1MB, to compensate for the large blocks that 3-of-10 produces |
---|
9377 | warner@allmydata.com**20070716204834] |
---|
9378 | [interfaces: increase ShareSize now that our default k is smaller (hence blocks are bigger) |
---|
9379 | warner@lothar.com**20070714022931] |
---|
9380 | [upload.py: fix signature of NonConvergentUploadMixin.get_encryption_key |
---|
9381 | warner@lothar.com**20070919063811] |
---|
9382 | [update a few documents, comments, and defaults to mention 3-of-10 instead of 25-of-100 |
---|
9383 | zooko@zooko.com**20071016025359] |
---|
9384 | [architecture.txt: update to include tahoe2, dirnodes, leases |
---|
9385 | warner@allmydata.com**20070918012448] |
---|
9386 | [tests: make test_encode specify the erasure coding params it wants instead of expecting the defaults to be what it wants |
---|
9387 | zooko@zooko.com**20071016030742] |
---|
9388 | [logging: enable flogging in more places, replace Node.log with flogging |
---|
9389 | warner@allmydata.com**20080115031658] |
---|
9390 | [upload: pass options through to the encoder |
---|
9391 | warner@allmydata.com**20080115031732] |
---|
9392 | [upload: add Encoder.abort(), to abandon the upload in progress. Add some debug hooks to enable unit tests. |
---|
9393 | warner@allmydata.com**20080115032255] |
---|
9394 | [storage: remove the leftover incoming/XYZ/ directory when we're done with it |
---|
9395 | warner@lothar.com**20070915213404] |
---|
9396 | [upload: improve logging |
---|
9397 | warner@allmydata.com**20080115031920] |
---|
9398 | [offloaded: cleanup to handle multiple simultaneous uploaders gracefully |
---|
9399 | warner@allmydata.com**20080115042003] |
---|
9400 | [offloaded: improve logging, pass through options, get ready for testing interrupted uploads. test_system: add (disabled) interrupted-upload test |
---|
9401 | warner@allmydata.com**20080115032426] |
---|
9402 | [offloaded: more test coverage on client side, change interfaces a bit |
---|
9403 | warner@lothar.com**20080111105337] |
---|
9404 | [offloaded: add a system test, make it pass. files are now being uploaded through the helper. |
---|
9405 | warner@lothar.com**20080111114255] |
---|
9406 | [test_system: slight refactoring to eventually make it easier to configure some nodes with the output of others |
---|
9407 | warner@allmydata.com**20080110022354] |
---|
9408 | [upload: oops, fix breakage after removing upload_file/upload_data/etc |
---|
9409 | warner@allmydata.com**20080131014143] |
---|
9410 | [interfaces.py: remove spurious 'pass' statements (which, incidentally, were counted as uncovered code) |
---|
9411 | warner@allmydata.com**20070418224637] |
---|
9412 | [webish: flogify the remaining log messages |
---|
9413 | warner@allmydata.com**20080213013233] |
---|
9414 | [unicode handling: declare dirnodes to contain unicode child names, update webish to match |
---|
9415 | warner@allmydata.com**20080214214556] |
---|
9416 | [improve test coverage on FileNode.check |
---|
9417 | warner@allmydata.com**20071204215527] |
---|
9418 | [fix the overwrite button and add unit test for it |
---|
9419 | zooko@zooko.com**20071214235205] |
---|
9420 | [webish: fix overwrite form display |
---|
9421 | warner@allmydata.com**20071205061513] |
---|
9422 | [test_web.py: add coverage for directory listings that include mutable files |
---|
9423 | warner@allmydata.com**20071205055740] |
---|
9424 | [the new pyflakes is stricter, complaining about function definitions that overshadow earlier definitions or imports. Fix some of its complaints. |
---|
9425 | warner@allmydata.com**20071219004728] |
---|
9426 | [webish: use get_args() everywhere, put .fields=None in MyRequest |
---|
9427 | warner@lothar.com**20071225060704] |
---|
9428 | [webish.POSTHandler: fix typo that meant we didn't look for 'name' in req.fields |
---|
9429 | warner@lothar.com**20070811002528] |
---|
9430 | [webish: strip leading/tailing whitespace from user-provided URIs |
---|
9431 | warner@lothar.com**20070825190506] |
---|
9432 | [webish: append save=true to a GET URL to save-to-disk. Closes #222. |
---|
9433 | warner@allmydata.com**20071212000444] |
---|
9434 | [download.py: use producer/consumer to reduce memory usage, closes #129. |
---|
9435 | warner@lothar.com**20070919073447 |
---|
9436 | If the DownloadTarget is also an IConsumer, give it control of the brakes |
---|
9437 | by offering ourselves to target.registerProducer(). When they tell us to |
---|
9438 | pause, set a flag, which is checked between segment downloads and decodes. |
---|
9439 | webish.py: make WebDownloadTarget an IConsumer and pass control along to |
---|
9440 | the http.Request, which already knows how to be an IConsumer. |
---|
9441 | This reduces the memory footprint of stalled HTTP GETs to a bare minimum, |
---|
9442 | and thus closes #129. |
---|
9443 | |
---|
9444 | ] |
---|
9445 | [make the wapi/wui [*] support creation of a new directory without there already being an existing directory to link the new one into |
---|
9446 | zooko@zooko.com**20071220185817 |
---|
9447 | |
---|
9448 | [*] WebAPI/WebUI |
---|
9449 | |
---|
9450 | ] |
---|
9451 | [dirnode.py: add metadata= to add_file(), add tests |
---|
9452 | warner@allmydata.com**20080211205328] |
---|
9453 | [test_dirnode.py: assert that we update mtime and preserve ctime |
---|
9454 | warner@allmydata.com**20080211211255] |
---|
9455 | [test_dirnode.py: add diag output to test-ctime/mtime tests |
---|
9456 | warner@allmydata.com**20080211201307] |
---|
9457 | [test_dirnode.py: simplejson-1.7.1 incorrectly rounds floats to two decimal places. Don't let this bug flunk the timestamp test. |
---|
9458 | warner@allmydata.com**20080211233517] |
---|
9459 | [dirnode: add ctime/mtime to metadata, update metadata-modifying APIs. Needs more testing and sanity checking. |
---|
9460 | warner@allmydata.com**20080209004347] |
---|
9461 | [remove wait_for_numpeers and the when_enough_peers call in mutable.Publish |
---|
9462 | warner@allmydata.com**20080114205559] |
---|
9463 | [merge patch to integrate decentralized directories with patch "download: use hierarchical logging" |
---|
9464 | zooko@zooko.com**20071203212721] |
---|
9465 | [the wait_for_numpeers= argument to client.upload() is optional: make both the code and the Interface reflect this |
---|
9466 | warner@allmydata.com**20071207003658] |
---|
9467 | [tidy-up some comments and logging messages |
---|
9468 | zooko@zooko.com**20071215002446] |
---|
9469 | [dirnode: add set_uris() and set_nodes() (plural), to set multiple children at once. Use it to set up a new webapi test for issue #237. |
---|
9470 | warner@allmydata.com**20071219053002] |
---|
9471 | [mutable: always include ourselves in the querylist when Publishing, because 0.7.0 usually stores our root dirnode only on ourselves, and our nodeid might not appear in the first N+epsilon peers |
---|
9472 | warner@allmydata.com**20071219060653] |
---|
9473 | [merge patch to integrate decentralized directories with patch to "only test log.err when Twisted is new enough to let us ignore the generated errors" |
---|
9474 | zooko@zooko.com**20071203212514] |
---|
9475 | [merge patch to integrate decentralized directories with patch to handle bad hashes |
---|
9476 | zooko@zooko.com**20071203212114] |
---|
9477 | [offloaded: move interfaces to interfaces.py, start implementing backend |
---|
9478 | warner@allmydata.com**20080110032547] |
---|
9479 | [control: add measure_peer_response_time(), to estimate RTT for the mesh |
---|
9480 | warner@allmydata.com**20070926192115] |
---|
9481 | [more hierarchical logging: download/upload/encode |
---|
9482 | warner@allmydata.com**20071120013341] |
---|
9483 | [encode.py: add a reactor turn barrier between segments, to allow Deferreds to retire and free their arguments, all in the name of reducing memory footprint |
---|
9484 | warner@allmydata.com**20070810012617] |
---|
9485 | [Encoder.__repr__: mention the file being encoded |
---|
9486 | warner@allmydata.com**20070810012656] |
---|
9487 | [encode.py: log a percentage complete as well as the raw byte counts |
---|
9488 | warner@allmydata.com**20070810012845] |
---|
9489 | [tidiness: return res from logging of progress |
---|
9490 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070402172324] |
---|
9491 | [trailing-whitespace eradication, no functional changes |
---|
9492 | warner@allmydata.com**20071101222238] |
---|
9493 | [fix representation of node ids in PeerTracker objects |
---|
9494 | zooko@zooko.com**20071219235528] |
---|
9495 | [offloaded: more code, fix pyflakes problems, change IEncryptedUploader a bit |
---|
9496 | warner@allmydata.com**20080109235847] |
---|
9497 | [use AES from pycryptopp instead of pycrypto, also truncate the keys slightly differently |
---|
9498 | warner@allmydata.com**20071203232746] |
---|
9499 | [docs/mutable.txt: put fingerprint in read-write URI too, it makes everything easier |
---|
9500 | warner@allmydata.com**20071031233015] |
---|
9501 | [setup: require pycryptopp >= 0.2.6 |
---|
9502 | zooko@zooko.com**20071110001500] |
---|
9503 | [setup: require pycryptopp >= v0.2.5 |
---|
9504 | zooko@zooko.com**20071109190315] |
---|
9505 | [setup: tell setuptools that we depend on pycryptopp >= 0.2.3 |
---|
9506 | zooko@zooko.com**20071107235518] |
---|
9507 | [setup: don't include zope.interface in our automatically-satisfiable dependencies for now |
---|
9508 | zooko@zooko.com**20070927220617] |
---|
9509 | [setup.py: name zope.interface >= 3.0 as one of our dependencies |
---|
9510 | zooko@zooko.com**20070920174650] |
---|
9511 | [setup: upgrade bundled pycryptopp from v0.2.5 to v0.2.6 |
---|
9512 | zooko@zooko.com**20071110001436] |
---|
9513 | [setup: upgrade the bundled pycryptopp tarball from pycryptopp v0.2.3 to pycryptopp v0.2.5 |
---|
9514 | zooko@zooko.com**20071109190249] |
---|
9515 | [setup: upgrade to pycryptopp v0.2.3 |
---|
9516 | zooko@zooko.com**20071107235446] |
---|
9517 | [mutable: fix control flow to allow good+bad shares from a peer. Fixes #211. |
---|
9518 | warner@allmydata.com**20071116231233] |
---|
9519 | [mutable: add more logging to retrieval process |
---|
9520 | warner@allmydata.com**20071115202256] |
---|
9521 | [test_mutable: workaround: use more peers to avoid random test failures. |
---|
9522 | warner@allmydata.com**20071115205500 |
---|
9523 | |
---|
9524 | The underlying issue is recorded in #211: one corrupt share in a query |
---|
9525 | response will cause us to ignore the remaining shares in that response, even |
---|
9526 | if they are good. In our tests (with N=10 but only 5 peers), this can leave |
---|
9527 | us with too few shares to recover the file. |
---|
9528 | |
---|
9529 | The temporary workaround is to use 10 peers, to make sure we never get |
---|
9530 | multiple shares per response. The real fix will be to fix the control flow. |
---|
9531 | |
---|
9532 | This fixes #209. |
---|
9533 | |
---|
9534 | ] |
---|
9535 | [offloaded: create a Helper if 'run_helper' is non-empty |
---|
9536 | warner@allmydata.com**20080110022505] |
---|
9537 | [remove automatic private dir |
---|
9538 | zooko@zooko.com**20080103230205 |
---|
9539 | * rename my_private_dir.cap to root_dir.cap |
---|
9540 | * move it into the private subdir |
---|
9541 | * change the cmdline argument "--root-uri=[private]" to "--dir-uri=[root]" |
---|
9542 | |
---|
9543 | ] |
---|
9544 | [web: change title to say 'Tahoe', not tahoe2 |
---|
9545 | warner@lothar.com**20070708043038] |
---|
9546 | [remove leftover defer.setDebugging(), to speed up tests from 200s to 83s |
---|
9547 | warner@allmydata.com**20071203231002] |
---|
9548 | [we no longer need to replace "/" with "!" in urls |
---|
9549 | zooko@zooko.com**20071215002550] |
---|
9550 | [add POST /uri?t=upload and tests thereof |
---|
9551 | zooko@zooko.com**20071206231702 |
---|
9552 | Hm... I refactored processing of segments in a way that I marked as "XXX HELP |
---|
9553 | I AM YUCKY", and then I ran out of time for rerefactoring it before I |
---|
9554 | committed. At least all the tests pass. |
---|
9555 | |
---|
9556 | ] |
---|
9557 | [webish: add POST t=mutable, make it replace files in-place, add t=overwrite |
---|
9558 | warner@allmydata.com**20071205054254] |
---|
9559 | [docs/webapi.txt: document the POST t=upload&mutable=on command used to create mutable files |
---|
9560 | warner@lothar.com**20071109100507] |
---|
9561 | [fix unit tests to assert that we do *not* link to start.html when there is no private dir, instead of asserting that we *do* |
---|
9562 | zooko@zooko.com**20071218005116] |
---|
9563 | [do not put a link from the welcoÂme page to the start.html if there is not a private directory |
---|
9564 | zooko@zooko.com**20071218003559] |
---|
9565 | [rename "my_private_dir.uri" to "my_private_dir.cap" |
---|
9566 | zooko@zooko.com**20071218003525] |
---|
9567 | [put all private state in $BASEDIR/private |
---|
9568 | zooko@zooko.com**20071217223954 |
---|
9569 | fixes #219 |
---|
9570 | |
---|
9571 | The only part of #219 that this doesn't include is the part about |
---|
9572 | logpublisher, which has been moved out of tahoe into foolscap. |
---|
9573 | |
---|
9574 | ] |
---|
9575 | [node: change get_or_create_config to strip whitespace and accept a filemode= argument |
---|
9576 | warner@lothar.com**20070828022350] |
---|
9577 | [node.py: change get_or_create_config() to accept a function |
---|
9578 | warner@lothar.com**20070828020712] |
---|
9579 | [remove test in test_client -- we can't easily assert that files aren't readable by others, on Windows |
---|
9580 | zooko@zooko.com**20070914031226] |
---|
9581 | [node.py: chmod the foolscap private key (node.pem) to 0600, since it's secret |
---|
9582 | warner@allmydata.com**20070921235255] |
---|
9583 | [node.py: use Tub's certFile= argument instead of doing it ourselves |
---|
9584 | warner@allmydata.com**20070523194123] |
---|
9585 | [don't test for existence of certfile and then try to open it -- instead try to open it and catch exception |
---|
9586 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070522210416 |
---|
9587 | This avoids a race condition, also known as time-of-check-to-time-of-use. |
---|
9588 | |
---|
9589 | ] |
---|
9590 | [move increase_rlimits() into iputil and make it a no-op on Windows |
---|
9591 | zooko@zooko.com**20071207140343] |
---|
9592 | [fix iputil so that it doesn't launch dozens of processes when you give it a full path and so that it tries executables in preference order and stops as soon as one gives out a dotted-quad string |
---|
9593 | zooko@zooko.com**20070809175647] |
---|
9594 | [iputil.get_local_ip_for: tolerate running on a disconnected host |
---|
9595 | Brian Warner <warner@lothar.com>**20070608022333] |
---|
9596 | [refactor iputil and make it return addresses in descending order of goodness instead of in a set |
---|
9597 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070522210637 |
---|
9598 | Actually of course iputil can't tell exactly how good they are, and a wise user |
---|
9599 | of iputil will try all of them. But you can't try all of them simultaneously, |
---|
9600 | so you might as well try the best ones first. |
---|
9601 | |
---|
9602 | ] |
---|
9603 | [node.py: try to fix rlimit-setting again |
---|
9604 | warner@allmydata.com**20071116221238] |
---|
9605 | [node.py: try rlimit fix again |
---|
9606 | warner@allmydata.com**20071116050902] |
---|
9607 | [node.py: try to fix RLIMIT_NOFILE on solaris too |
---|
9608 | warner@allmydata.com**20071116050644] |
---|
9609 | [remove logpublisher, use the Foolscap version now that this functionality has been moved into Foolscap-0.2.2 |
---|
9610 | warner@lothar.com**20071213023101] |
---|
9611 | [introducer_and_vdrive.py: use logpublisher too |
---|
9612 | warner@allmydata.com**20071120202226] |
---|
9613 | [refactor the feature of getting versions of packages, include the version numbers of more of the packages that we use |
---|
9614 | zooko@zooko.com**20071213013737] |
---|
9615 | [setup: print out the version number of pycryptopp in "tahoe --version" |
---|
9616 | zooko@zooko.com**20071107161156] |
---|
9617 | [setup: add Crypto++ and pycryptopp to dependencies |
---|
9618 | zooko@zooko.com**20071107160013 |
---|
9619 | Crypto++ is a new manual dependency (boo hoo), and pycryptopp is a new automatic dependency. |
---|
9620 | ] |
---|
9621 | [setup: split off README.win32 from README and paste in Mike Booker's notes about building OpenSSL |
---|
9622 | zooko@zooko.com**20071015160841] |
---|
9623 | [CREDITS: nejucomo |
---|
9624 | zooko@zooko.com**20070918214313] |
---|
9625 | [update CREDITS file |
---|
9626 | zooko@zooko.com**20070629212230] |
---|
9627 | [add CREDITS file where people who contribute source code, docs, web page updates, etc., are recorded |
---|
9628 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070506211143] |
---|
9629 | [README: OpenSSL is bundled with pyOpenSSL on Windows-native |
---|
9630 | zooko@zooko.com**20071004151253 |
---|
9631 | |
---|
9632 | ] |
---|
9633 | [README: add note about how to build on Windows-native using gcc, and a bit of editing |
---|
9634 | zooko@zooko.com**20071004193721] |
---|
9635 | [setup: add misc/dependencies/pycryptopp-0.2.1.tar.gz |
---|
9636 | zooko@zooko.com**20071107155951] |
---|
9637 | [node.py: raise RLIMIT_NOFILE on bsd/cygwin to more than 256 |
---|
9638 | warner@allmydata.com**20071116045355] |
---|
9639 | [patch the LogObserver in a more modern, forward-compatible way and update the in-line comments about it |
---|
9640 | czooko@zooko.com**20071022235255] |
---|
9641 | [a slightly nicer method of computing our timestamp format |
---|
9642 | zooko@zooko.com**20071015034651] |
---|
9643 | [logpublisher: hush pyflakes warning |
---|
9644 | warner@allmydata.com**20071117021446] |
---|
9645 | [logpublisher: implement subscribe/publish for log, add a sample client |
---|
9646 | warner@lothar.com**20071117020750] |
---|
9647 | [implement preliminary log publisher/gatherer |
---|
9648 | warner@allmydata.com**20071102002915 |
---|
9649 | |
---|
9650 | This creates a Referenceable object that will eventually be able to publish |
---|
9651 | log events to a remote subscriber (at present all it can do is provide |
---|
9652 | version information). The FURL for this logport is written to 'logport.furl'. |
---|
9653 | |
---|
9654 | In addition, if a file named 'log_gatherer.furl' is present, the given target |
---|
9655 | will be contacted and offered access to the logport. This can be used by a |
---|
9656 | centralized logging agent to subscribe to logs, e.g. from all the nodes in a |
---|
9657 | centrally-maintained storage grid. (think syslog -r, but with all the |
---|
9658 | security properties of FURLs, and permitting non-printable strings and |
---|
9659 | structured data). |
---|
9660 | |
---|
9661 | Once this framework matures a bit, it will be moved into Foolscap. |
---|
9662 | |
---|
9663 | ] |
---|
9664 | [test_node.py: hush pyflakes warnings |
---|
9665 | warner@allmydata.com**20070524005504] |
---|
9666 | [update docs about webport (fixes #185) |
---|
9667 | zooko@zooko.com**20071023005052] |
---|
9668 | [README: use 8123 instead of 8080/8443 as the example port numbers |
---|
9669 | zooko@zooko.com**20070924185524 |
---|
9670 | If people follow the example, I'd like for them to land on an otherwise |
---|
9671 | little-claimed port number in case we standardize on it in order to facilitate |
---|
9672 | exchange of URLs. |
---|
9673 | |
---|
9674 | ] |
---|
9675 | [change another example to use port 8123 |
---|
9676 | zooko@zooko.com**20071011231213] |
---|
9677 | [README: give a link to the TestGrid page |
---|
9678 | zooko@zooko.com**20071015215553] |
---|
9679 | [test_node.py: improve test coverage of node.py |
---|
9680 | warner@lothar.com**20071031075442] |
---|
9681 | [hierarchical logging: add numbered messages and parent= args |
---|
9682 | warner@allmydata.com**20071120002318] |
---|
9683 | [add unit test for "advertised_ip_addresses" feature and fix bug in that feature uncovered by this unit test |
---|
9684 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070523220855] |
---|
9685 | [Add some passing unit tests for testutil.PollMixin. |
---|
9686 | nejucomo@gmail.com**20070907231541] |
---|
9687 | [fileutil: add du() function |
---|
9688 | warner@allmydata.com**20070703224945] |
---|
9689 | [test_util: improve test coverage of allmydata.util.fileutil |
---|
9690 | warner@lothar.com**20070703181505] |
---|
9691 | [test_util: add more coverage for assertutil.py |
---|
9692 | warner@lothar.com**20070408200213] |
---|
9693 | [test_util: add full coverage for mathutil.py |
---|
9694 | warner@lothar.com**20070408194301] |
---|
9695 | [install our custom timestamp formats in a less disruptive way |
---|
9696 | zooko@zooko.com**20071015034311 |
---|
9697 | The unit tests on Windows fail because trial is attempting to remove its own |
---|
9698 | log observer during teardown. This patch customizes the extant log observer |
---|
9699 | object by replacing its formatTime method with our own. |
---|
9700 | |
---|
9701 | I first tried the approach of storing their log observer object and putting it |
---|
9702 | back during teardown, but it didn't work (perhaps because our node object |
---|
9703 | doesn't get a chance to do its deferred stopService behavior in time), and |
---|
9704 | anyway I generally prefer the "fail-safe", or "crash-only" design. |
---|
9705 | |
---|
9706 | ] |
---|
9707 | [remove unused imports (thanks, pyflakes) |
---|
9708 | zooko@zooko.com**20071015153221] |
---|
9709 | [node.py: fix timestamps (add ms and Z) by replacing the FileLogObserver. #171. |
---|
9710 | warner@allmydata.com**20071012003007] |
---|
9711 | [node.py: log twisted version along with tahoe/foolscap/zfec versions |
---|
9712 | warner@allmydata.com**20070531182106] |
---|
9713 | [node.py: don't append 'Z' to the timestamp, since it's really localtime. We need deeper changes to make it be UTC |
---|
9714 | warner@lothar.com**20071011092417] |
---|
9715 | [node.py: set logging timestamp to '2007-10-11 02:11:14.000Z', per ticket #171. No milliseconds yet, though |
---|
9716 | warner@lothar.com**20071011091305] |
---|
9717 | [trying to introduce old style humanreadablied logs hopefully without breaking the existing ones |
---|
9718 | tahoe@arnowaschk.de**20070811215237] |
---|
9719 | [mutable: handle bad hashes, improve test coverage, rearrange slightly to facilitate these |
---|
9720 | warner@allmydata.com**20071114050815] |
---|
9721 | [mutable: make error handling more robust |
---|
9722 | warner@allmydata.com**20071107234545] |
---|
9723 | [rename "secret" to "lease_secret" and change its size from 16 to 32 bytes |
---|
9724 | zooko@zooko.com**20071218003411] |
---|
9725 | [my_private_dir.cap: add newline for readability, open with mode 'w' not 'w+' since we don't need to read from this filehandle |
---|
9726 | warner@allmydata.com**20071218024848] |
---|
9727 | [move my_private_dir.cap into private/ |
---|
9728 | warner@allmydata.com**20071218025740] |
---|
9729 | [remove some no-longer needed replacements of "/" with "!" in uris |
---|
9730 | zooko@zooko.com**20071219235440] |
---|
9731 | [A hastily written single-threaded read-only fuse client. |
---|
9732 | nejucomo@gmail.com**20071120072150] |
---|
9733 | [add human-encodings of caps, refactor encodings of caps, tighten checks, fix unit tests to use values of the right size |
---|
9734 | zooko@zooko.com**20080103225543] |
---|
9735 | [unit test that POST /uri/?t=mkdir works |
---|
9736 | zooko@zooko.com**20071218234749] |
---|
9737 | [refactor constructing URI objects from strings and add human-encoding of WriteableSSKFileURI |
---|
9738 | zooko@zooko.com**20080103041215] |
---|
9739 | [remove the DirnodeURI foolscap schema and mv those regexes into uri.py |
---|
9740 | zooko@zooko.com**20071218234424 |
---|
9741 | We currently do not pass dirnode uris over foolscap. |
---|
9742 | ] |
---|
9743 | [make more precise regexp for WriteableSSKFileURI and DirnodeURI and use it in unit tests |
---|
9744 | zooko@zooko.com**20071218191508 |
---|
9745 | Also allow an optional leading "http://127.0.0.1:8123/uri/". |
---|
9746 | Also fix a few unit tests to generate bogus Dirnode URIs of the modern form instead of the former form. |
---|
9747 | |
---|
9748 | ] |
---|
9749 | [remove most (maybe all?) traces of old Dirnode class. Yay for negative code days. |
---|
9750 | warner@allmydata.com**20071204230058] |
---|
9751 | [uri.py: improve test coverage |
---|
9752 | warner@allmydata.com**20071204233831] |
---|
9753 | [trailing-whitespace eradication, no functional changes |
---|
9754 | warner@allmydata.com**20071101222504] |
---|
9755 | [refactor test_uri and add a test of the empty file |
---|
9756 | zooko@zooko.com**20070726174830] |
---|
9757 | [refactor web tests, and interfaces.IFileNode |
---|
9758 | warner@allmydata.com**20071205050137] |
---|
9759 | [remove PyCrypto, now we only use pycrypto++ |
---|
9760 | warner@allmydata.com**20071204001001] |
---|
9761 | [hush pyflakes warning in Crypto.Util.number |
---|
9762 | warner@allmydata.com**20070814211712] |
---|
9763 | [set the zip_safe flag to False |
---|
9764 | zooko@zooko.com**20070913223755 |
---|
9765 | This means that by default the allmydata-tahoe egg will be a directory with a tree of files instead of a zip file containing files. I prefer the former because it makes it easier for people to hack into it. |
---|
9766 | Unfortunately the files therein are still going to be .pyc's instead of .py's, if I understand correctly. I would prefer for them to be .py's. See also discussion on the distutils-sig mailing list: |
---|
9767 | |
---|
9768 | http://mail.python.org/pipermail/distutils-sig/2007-July/007827.html |
---|
9769 | |
---|
9770 | ] |
---|
9771 | [rename bin/allmydata-tahoe to bin/tahoe. Closes #155. |
---|
9772 | warner@lothar.com**20071011103824] |
---|
9773 | [README: mention strports-ness of NODE/webport, closes #55 |
---|
9774 | warner@allmydata.com**20070606164918] |
---|
9775 | [bin/allmydata-tahoe: add a sys.path-modifying preamble to make it easy to run from source |
---|
9776 | warner@allmydata.com**20070606182400] |
---|
9777 | [/twistd.log -> /logs/twistd.log |
---|
9778 | wilcoxjg@gmail.com**20070809035328] |
---|
9779 | [test_runner: try harder to work on slow buildslaves and cygwin |
---|
9780 | warner@allmydata.com**20070919205600] |
---|
9781 | [client.py: make a note in the logs when the auto-shutdown feature is in use |
---|
9782 | Brian Warner <warner@allmydata.com>**20070814091230] |
---|
9783 | [test_runner: better diagnostics in case test_client fails |
---|
9784 | warner@allmydata.com**20070919030318] |
---|
9785 | [test_runner.py: fix race conditions in start/stop node, should run on cygwin now |
---|
9786 | warner@allmydata.com**20070918221726] |
---|
9787 | [test_runner.py: skip the start/stop test when sys.platform is win32/cygwin. |
---|
9788 | Brian Warner <warner@allmydata.com>**20070918045608 |
---|
9789 | The previous twisted.python.runtime.platformType approach didn't catch cygwin |
---|
9790 | for some reason. |
---|
9791 | ] |
---|
9792 | [test_runner.py: add tests for startstop_node.py |
---|
9793 | warner@lothar.com**20070917092531] |
---|
9794 | [Makefile: check-speed: leave the client node stopped when we're done |
---|
9795 | warner@allmydata.com**20070921020316] |
---|
9796 | [setup: use the setuptools "console_scripts" feature to get an allmydata-tahoe.exe on Windows |
---|
9797 | zooko@zooko.com**20070921205627] |
---|
9798 | [README: fix/update description of allmydata-tahoe |
---|
9799 | zooko@zooko.com**20070924185417] |
---|
9800 | [debian/feisty: use our original bin/allmydata-tahoe instead of setuptools's |
---|
9801 | warner@allmydata.com**20070927005230 |
---|
9802 | because the setuptools "entry points" form asserts that there are |
---|
9803 | setuptools-visible packages like nevow/zope.interface (i.e. they have .egg-info |
---|
9804 | metadata). Until very recently, most debian systems did not install this |
---|
9805 | metadata. Instead, we rely upon the usual debian dependency checking as |
---|
9806 | expressed in debian/control . |
---|
9807 | |
---|
9808 | ] |
---|
9809 | [debian/sid: copy rules from feisty, the same can be used for both |
---|
9810 | warner@allmydata.com**20070927005524] |
---|
9811 | [debian: remove the lines that install the now-removed .tac files |
---|
9812 | warner@lothar.com**20070407035132] |
---|
9813 | [debian: depend upon python-zfec, stop including zfec in the tahoe .deb |
---|
9814 | warner@allmydata.com**20070821205451] |
---|
9815 | [debian: make all .debs dependent upon python-simplejson. We must create the dapper package, the others are available upstream |
---|
9816 | warner@allmydata.com**20070711210156] |
---|
9817 | [debian: add python-twisted, python-nevow, python-pyopenssl to the dapper dependencies |
---|
9818 | warner@allmydata.com**20070329192214] |
---|
9819 | [debian: add python-nevow to the sid dependencies |
---|
9820 | warner@allmydata.com**20070329192241] |
---|
9821 | [README: refactor README |
---|
9822 | zooko@zooko.com**20071002201907 |
---|
9823 | fixes #163 |
---|
9824 | hopefully fixes #148 -- but somebody else will have to try it (maybe Mike Booker) to find out! |
---|
9825 | |
---|
9826 | ] |
---|
9827 | [README: update the wording of the "LICENCE" section to more closely follow FSF recommendations |
---|
9828 | zooko@zooko.com**20070912183157] |
---|
9829 | [README: update wording of licence |
---|
9830 | zooko@zooko.com**20070823205130] |
---|
9831 | [README: point to new location of wiki/SetuptoolsAndGNUStow |
---|
9832 | zooko@zooko.com**20070921164345] |
---|
9833 | [README: demote The Debian Way |
---|
9834 | zooko@zooko.com**20070921204257] |
---|
9835 | [README: update on how to test and how to run tahoe after installation |
---|
9836 | zooko@zooko.com**20070921205725] |
---|
9837 | [README: add notes about how to use easy_install for dependencies |
---|
9838 | zooko@zooko.com**20070923124711] |
---|
9839 | [README: fix bug in which pywin32 was mentioned as easy_installable |
---|
9840 | zooko@zooko.com**20070924184124] |
---|
9841 | [README: fix bug in which How To Build was omitted from The Running-In-Place Way to install. |
---|
9842 | zooko@zooko.com**20070924184140] |
---|
9843 | [README: further clarity about when you need to acquire source and when you don't |
---|
9844 | zooko@zooko.com**20070921190401] |
---|
9845 | [README: updated debian-packaging section a bit, replace dapper with etch |
---|
9846 | warner@allmydata.com**20070822000725] |
---|
9847 | [README: update/clarify the build-depends packages need to create .debs |
---|
9848 | Brian Warner <warner@allmydata.com>**20070817033007] |
---|
9849 | [README: add dependency on OpenSSL |
---|
9850 | zooko@zooko.com**20070929180525] |
---|
9851 | [setup: alas, pywin32 doesn't actually work as an easy_install; also make dependency missing errors more useful |
---|
9852 | zooko@zooko.com**20070921204028] |
---|
9853 | [Makefile: use .built to only require one tahoe-compile pass |
---|
9854 | warner@allmydata.com**20070919192830] |
---|
9855 | [boringfile: ignore .checked-deps |
---|
9856 | warner@lothar.com**20070916082654] |
---|
9857 | [Makefile: fix and-vs-or bug in check-deps, hide errmsg in non-failing cases |
---|
9858 | warner@allmydata.com**20070919232355] |
---|
9859 | [Makefile: give explicit failure message to user if dependencies aren't found |
---|
9860 | zooko@zooko.com**20070920000436] |
---|
9861 | [Makefile: don't re-check dependencies on each test run, and fix clean target |
---|
9862 | warner@lothar.com**20070915221755] |
---|
9863 | [Makefile: clean: remove _trial_temp/ and _test_memory/ too |
---|
9864 | warner@lothar.com**20070915205559] |
---|
9865 | [README: explain the new packaging system |
---|
9866 | zooko@zooko.com**20070921023254 |
---|
9867 | Happily, the README is now shorter and simpler. |
---|
9868 | ] |
---|
9869 | [fix error in README about windows builds |
---|
9870 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502054433] |
---|
9871 | [added notes on pywin32 version support to README |
---|
9872 | robk-org@allmydata.com**20070613200936] |
---|
9873 | [require setuptools >= 0.6c6 on cygwin, and >= 0.6a9 on other platforms |
---|
9874 | zooko@zooko.com**20070807211554 |
---|
9875 | |
---|
9876 | Earlier I tried 0.6a9 (which comes in .deb format on Dapper) and something |
---|
9877 | didn't work, so I raised it to 0.6c3. However, I didn't make a note of what |
---|
9878 | failed, and so now I'm hoping that what failed was cygwin-specific. Anyway, |
---|
9879 | everyone look out for setuptools compatibility problems on the your favorite |
---|
9880 | platform (and I'll check the buildslaves), and we'll raise the required version |
---|
9881 | as little as possible and only on the problematic platform. |
---|
9882 | |
---|
9883 | ] |
---|
9884 | [update README to reflect requirement of setuptools 0.6c6 |
---|
9885 | zooko@zooko.com**20070807191259] |
---|
9886 | [setuptools upgrade to 0.6c6 |
---|
9887 | tahoe@arnowaschk.de**20070731231811] |
---|
9888 | [change the 'ez_setup.py' script to have distinct desired & minimum required versions of setuptools |
---|
9889 | robk-org@allmydata.com**20070606194903 |
---|
9890 | |
---|
9891 | and change zfec/setup.py's invocation of ez_setup to require 0.6a9 (which happens to be the default |
---|
9892 | version installed by apt-get on dapper machines) while leaving the default (desired) version at 0.6c5 |
---|
9893 | ] |
---|
9894 | [zfec: switch back to minimum setuptools of 0.6c3 |
---|
9895 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430201838 |
---|
9896 | This is newer than the one that comes with Dapper Ubuntu 6.06, *but* if there is no setuptools at all installed, then the bootstrap script will download one itself. So with this patch, this will install cleanly on a Dapper system as long as the Dapper version of python-setuptools is *not* installed. |
---|
9897 | |
---|
9898 | ] |
---|
9899 | [zfec: see if we can get by with the version of setuptools that comes with Ubuntu 6.06 Dapper |
---|
9900 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430181647] |
---|
9901 | [zfec: see if we can get by with the version of setuptools that is already in Ubuntu 6.10 |
---|
9902 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430180830] |
---|
9903 | [zfec: complete the removal of the 15-second delay when downloading setuptools |
---|
9904 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501005643] |
---|
9905 | [zfec: add the setuptools bootstrap script to download setuptools automatically |
---|
9906 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430062613] |
---|
9907 | [zfec: update licence, contact info, description |
---|
9908 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070427181434] |
---|
9909 | [fec: add test for mathutil |
---|
9910 | warner@allmydata.com**20070416190158] |
---|
9911 | [zfec: use setuptools to construct executables, fix bug on Windows -- forgot "BINARY" flag to output files |
---|
9912 | zooko@zooko.com**20070421020612] |
---|
9913 | [rename bin/fec and bin/unfec to zfec and zunfec |
---|
9914 | warner@lothar.com**20070418192333] |
---|
9915 | [zfec: mv the cmdline tools from "bin/" to "cmdline/", because setuptools overwrites the contents of "bin/" when creating executables |
---|
9916 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070420190914] |
---|
9917 | [zfec: update docs, metadata, version number to 1.0.0a2-0-STABLE |
---|
9918 | zooko@zooko.com**20070418230103] |
---|
9919 | [pyfec: bump version number to 1.0.0a1-2-STABLE |
---|
9920 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070415190812] |
---|
9921 | [pyfec: bump version number to 1.0.0a1-1-STABLE |
---|
9922 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070415005040] |
---|
9923 | [zfec: tweak licence text for clarity |
---|
9924 | zooko@zooko.com**20070426225216] |
---|
9925 | [zfec: change formatting of copyright timestamps, licence etc. |
---|
9926 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070420175254] |
---|
9927 | [rename top-level package from 'fec' to 'zfec' |
---|
9928 | warner@lothar.com**20070418191812] |
---|
9929 | [rename the C extension from "fec" to "_fec" |
---|
9930 | zooko@zooko.com**20070127015804] |
---|
9931 | [pyfec: add -f option to fec, add more user-friendly handling of filesystem errors and user errors |
---|
9932 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070415004832] |
---|
9933 | [pyfec: more progress indicators, handling of already-existent outfile |
---|
9934 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070414230059] |
---|
9935 | [pyfec: fix up docs, version numbers, bump version to 1.0.0a1-0-STABLE |
---|
9936 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070414195451] |
---|
9937 | [pyfec: version number bump to v0.99 |
---|
9938 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201215235] |
---|
9939 | [pyfec: improve package metadata |
---|
9940 | zooko@zooko.com**20070126000829] |
---|
9941 | [pyfec: add bin/fec and bin/unfec, do better handling and reporting of various errors |
---|
9942 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070414190010] |
---|
9943 | [pyfec: import a copy of the argparse module |
---|
9944 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070414180554] |
---|
9945 | [pyfec: update README and bump version number to 0.9.9-0-STABLE |
---|
9946 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070414190218] |
---|
9947 | [pyfec: more thanks to Brian |
---|
9948 | zooko@zooko.com**20070328222251] |
---|
9949 | [give it a version number -- v0.9 |
---|
9950 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070411174933 |
---|
9951 | I intend to bump it to 1.0 after adding the cmdline tools. |
---|
9952 | |
---|
9953 | ] |
---|
9954 | [pyfec: add fec/__init__.py to import all the right names into the fec module namespace |
---|
9955 | zooko@zooko.com**20070127022536] |
---|
9956 | [pyfec: new filefec with compressed metadata, better error handling, much better unit tests |
---|
9957 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070414181924] |
---|
9958 | [pyfec: add ACK and TODO |
---|
9959 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201214915] |
---|
9960 | [pyfec: licensing tweak |
---|
9961 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070131195420] |
---|
9962 | [pyfec: documentation and licensing |
---|
9963 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070130163642] |
---|
9964 | [pyfec: COPYING |
---|
9965 | zooko@zooko.com**20070130162826] |
---|
9966 | [pyfec: add TODO |
---|
9967 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201163748] |
---|
9968 | [pyfec: rename and clarify -- "blocks" are the units of input/output of the codec, "shares" are sequences of blocks (used to process arbitrary-length files) |
---|
9969 | zooko@zooko.com**20070330185243] |
---|
9970 | [add dummy function to see how fast we can read in a file and invoke a Python function on each segment |
---|
9971 | zooko@zooko.com**20070125235026] |
---|
9972 | [pyfec: add documentation, assertion, licence information |
---|
9973 | zooko@zooko.com**20070328031406] |
---|
9974 | [pyfec: make randomized unit tests more comprehensive |
---|
9975 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201010224] |
---|
9976 | [merge changes and fix wrong type -- k and m need more than 8 bits (because they are the count rather than the index, i.e. they are 1-indexed) |
---|
9977 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070411173427] |
---|
9978 | [pyfec: loosen preconditions -- you can have up to 256 total shares, not up to 255 total shares |
---|
9979 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070131225316] |
---|
9980 | [pyfec: fix precondition checks on k and m to actually check the value before coercing it into a smaller type (oops) |
---|
9981 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201010140] |
---|
9982 | [pyfec: tighten internal C types |
---|
9983 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070131195531] |
---|
9984 | [pyfec: make unit test failures print out a few useful bytes instead of kibibytes |
---|
9985 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201010257] |
---|
9986 | [pyfec: add easyfec.Decoder(), which is easier to use than fec.Decoder() |
---|
9987 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070414175245] |
---|
9988 | [pyfec: add easyfec wrapper which takes a single string and splits it into input shares and pads, then passes it on to the inner fec object |
---|
9989 | zooko@zooko.com**20070328031430] |
---|
9990 | [add copyright notices, license, attributions |
---|
9991 | zooko@zooko.com**20070126000216] |
---|
9992 | [add verbosity option to bench |
---|
9993 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070328004259] |
---|
9994 | [pyfec: import a copy of fileutil.py from the pyutil library |
---|
9995 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070414175402] |
---|
9996 | [pyfec: import a copy of mathutil.py from the pyutil library |
---|
9997 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070414175443] |
---|
9998 | [import Version from pyutil |
---|
9999 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070411174844] |
---|
10000 | [simplejson: lower our minimum-required-version of setuptools to 0.6a9, since that seems to work, and it's the version that comes with dapper |
---|
10001 | warner@lothar.com**20070714024756] |
---|
10002 | [patch simplejson's ezsetup to take a min_version, and patch setup.py to use it, to allow installs on edgy machines with setuptools-0.6c3 |
---|
10003 | warner@lothar.com**20070710231111] |
---|
10004 | [import simplejson-1.7.1 into src/simplejson |
---|
10005 | warner@lothar.com**20070710222253] |
---|
10006 | [README: add note about what "darcs get" will do and how to run "darcs pull" |
---|
10007 | zooko@zooko.com**20070809032832] |
---|
10008 | [README: point people to allmydata.org if they are looking for precompiled packages |
---|
10009 | zooko@zooko.com**20070809034403] |
---|
10010 | [README: nevow is now automatically handled by build-deps/install |
---|
10011 | warner@lothar.com**20070915211945] |
---|
10012 | [setup: add pywin32 to our dependencies if sys.platform == "win32" |
---|
10013 | zooko@zooko.com**20070920180540] |
---|
10014 | [setup.py: factor out dependency stuff, add workaround for nevow-0.6.0-on-dapper problem |
---|
10015 | warner@lothar.com**20070915220535] |
---|
10016 | [edit README and require Nevow 0.9.18 |
---|
10017 | zooko@zooko.com**20070629223338 |
---|
10018 | If anybody out there is running with Nevow < v0.9.18 and wants to vouch for it, then we can relax that requirement. |
---|
10019 | ] |
---|
10020 | [build-deps-setup.py: provide dependency_links too |
---|
10021 | warner@lothar.com**20070915210457] |
---|
10022 | [build-deps-setup.py: use ez_setup here too, for platforms without setuptools |
---|
10023 | Brian Warner <warner@lothar.com>**20070915093140] |
---|
10024 | [setup.py: minor reformatting, use explicit file: URLs in dependency-links |
---|
10025 | warner@lothar.com**20070915210532] |
---|
10026 | [change setup.py to find dependency tarballs in misc/dependencies |
---|
10027 | zooko@zooko.com**20070913223727] |
---|
10028 | [setup.py: require simplejson>=1.4, since we use the indent= argument |
---|
10029 | Brian Warner <warner@allmydata.com>**20070914102415] |
---|
10030 | [setup.py: add Nevow to our dependency list |
---|
10031 | warner@lothar.com**20070915211807] |
---|
10032 | [setup.py: remove nevow dependency: we need it, but easy_install can't install it |
---|
10033 | warner@lothar.com**20070912235538] |
---|
10034 | [Makefile build-deps: use a fake package named 'tahoe-deps', to avoid a double-build of tahoe |
---|
10035 | warner@lothar.com**20070915022355] |
---|
10036 | [insert misc/dependencies |
---|
10037 | zooko@zooko.com**20070913215010] |
---|
10038 | [Makefile: improve 'clean' behavior: rm ez_setup leftovers, ignore _version.py |
---|
10039 | Brian Warner <warner@allmydata.com>**20070914102856 |
---|
10040 | in the test-clean target |
---|
10041 | ] |
---|
10042 | [Makefile: fix race condition in test-clean that caused occasional failures |
---|
10043 | Brian Warner <warner@allmydata.com>**20070822042851] |
---|
10044 | [makefile: add a test-clean target |
---|
10045 | warner@allmydata.com**20070524005748] |
---|
10046 | [remove parts of pycrypto that we are no longer going to use: SHA256 and RSA |
---|
10047 | zooko@zooko.com**20071110002112] |
---|
10048 | [crypto: fix compiler warnings in the .c files |
---|
10049 | warner@lothar.com**20070816004852] |
---|
10050 | [setup.py: oops, I inserted a typo by commenting out the wrong line |
---|
10051 | Brian Warner <warner@lothar.com>**20070816075658] |
---|
10052 | [setup.py: disable building RSA for now, since it requires GMP. We'll refrain |
---|
10053 | Brian Warner <warner@lothar.com>**20070816075221 |
---|
10054 | from adding it to the build-dependencies until we actually want to use RSA. |
---|
10055 | ] |
---|
10056 | [trailing-whitespace eradication, no functional changes |
---|
10057 | warner@allmydata.com**20071101223341] |
---|
10058 | [copy RSA from PyCrypto into the allmydata/ tree, we'll use it eventually |
---|
10059 | warner@lothar.com**20070816003639] |
---|
10060 | [test_dirnode.py: obtain full coverage of dirnode.py |
---|
10061 | warner@allmydata.com**20071204203204] |
---|
10062 | [test_mutable.py: hush pyflakes |
---|
10063 | warner@lothar.com**20071106073239] |
---|
10064 | [fix several bugs and warnings -- thanks, pyflakes |
---|
10065 | zooko@zooko.com**20071203214235] |
---|
10066 | [test_mutable: improve test coverage a bit, add test_filenode.py |
---|
10067 | warner@allmydata.com**20071204033754] |
---|
10068 | [fix idlib.could_be_base32_encoded_l() to accept *only* valid strings |
---|
10069 | zooko@zooko.com**20080103174311] |
---|
10070 | [add regexes to idlib to match certain kinds of base32-encoded values |
---|
10071 | zooko@zooko.com**20080103224446] |
---|
10072 | [offloaded: basic test for client-side of AssistedUploader |
---|
10073 | warner@allmydata.com**20080110022550] |
---|
10074 | [offloaded: early code: most of client-side, defined the RemoteInterfaces |
---|
10075 | warner@allmydata.com**20080109031854] |
---|
10076 | [webish: add edge metadata to t=json output, including timestamps |
---|
10077 | warner@allmydata.com**20080212011410] |
---|
10078 | [rename dirnode2.py to dirnode.py |
---|
10079 | warner@allmydata.com**20071204174520] |
---|
10080 | [decentralized directories: integration and testing |
---|
10081 | zooko@zooko.com**20071203205242 |
---|
10082 | * use new decentralized directories everywhere instead of old centralized directories |
---|
10083 | * provide UI to them through the web server |
---|
10084 | * provide UI to them through the CLI |
---|
10085 | * update unit tests to simulate decentralized mutable directories in order to test other components that rely on them |
---|
10086 | * remove the notion of a "vdrive server" and a client thereof |
---|
10087 | * remove the notion of a "public vdrive", which was a directory that was centrally published/subscribed automatically by the tahoe node (you can accomplish this manually by making a directory and posting the URL to it on your web site, for example) |
---|
10088 | * add a notion of "wait_for_numpeers" when you need to publish data to peers, which is how many peers should be attached before you start. The default is 1. |
---|
10089 | * add __repr__ for filesystem nodes (note: these reprs contain a few bits of the secret key!) |
---|
10090 | * fix a few bugs where we used to equate "mutable" with "not read-only". Nowadays all directories are mutable, but some might be read-only (to you). |
---|
10091 | * fix a few bugs where code wasn't aware of the new general-purpose metadata dict the comes with each filesystem edge |
---|
10092 | * sundry fixes to unit tests to adjust to the new directories, e.g. don't assume that every share on disk belongs to a chk file. |
---|
10093 | |
---|
10094 | ] |
---|
10095 | [fix test cases to not use camelCase |
---|
10096 | warner@lothar.com**20061201022000] |
---|
10097 | [test_introducer: flushEventualQueue at the end of the test run |
---|
10098 | warner@allmydata.com**20070328001613] |
---|
10099 | [introducer: add some comments about separating nodeid from tubid |
---|
10100 | warner@allmydata.com**20070329181629] |
---|
10101 | [test_system: turn off test_connections, since it is slow and subsumed by the other system tests |
---|
10102 | warner@allmydata.com**20070418230657] |
---|
10103 | [rename all "*PBURL*" to "*FURL*" |
---|
10104 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070522210830 |
---|
10105 | This breaks backwards compatibility with Tahoe v0.2 -- the first public release of Tahoe. |
---|
10106 | |
---|
10107 | ] |
---|
10108 | [node.py: use 'node.pem' for all nodes |
---|
10109 | warner@allmydata.com**20070523194852 |
---|
10110 | |
---|
10111 | Rather than use separate client.pem and introducer.pem files, use 'node.pem' |
---|
10112 | for all nodes regardless of what type it is. This is slightly cleaner, but |
---|
10113 | introduces a compatibility. Users who upgrade to this change should do |
---|
10114 | 'mv client.pem node.pem' to avoid generating a new certificate and thus |
---|
10115 | changing their TubID. |
---|
10116 | |
---|
10117 | ] |
---|
10118 | [node.py: add logging of startup/shutdown, for the cygwin test_system failure |
---|
10119 | warner@allmydata.com**20070531204422] |
---|
10120 | [add a missing up-call in introducer.startService() |
---|
10121 | robk-org@allmydata.com**20070605014540] |
---|
10122 | [webish: mark read-only directories as such when listing their parent |
---|
10123 | warner@lothar.com**20070626193700] |
---|
10124 | [change IVirtualDrive.get_node_at_path to accept either a list or a single slash-separated string |
---|
10125 | warner@allmydata.com**20070629004614] |
---|
10126 | [interfaces.py: remove some unused 'pass' lines |
---|
10127 | Brian Warner <warner@allmydata.com>**20070629075000] |
---|
10128 | [interfaces: remove spurious 'self' from interface declarations |
---|
10129 | warner@lothar.com**20070707023947] |
---|
10130 | [web: use KeyError (rather than IndexError) to signal a missing child |
---|
10131 | warner@lothar.com**20070707024008] |
---|
10132 | [web: missed a IndexError-to-KeyError conversion |
---|
10133 | warner@lothar.com**20070707024303] |
---|
10134 | [interfaces.py: increase RIVirtualDriveServer.list constraint from 100 entries to 1000, for now |
---|
10135 | warner@allmydata.com**20070712202352] |
---|
10136 | [webish.py: test that _get_or_create_directories fix I made a few hours ago |
---|
10137 | warner@lothar.com**20070714051916] |
---|
10138 | [introducer: don't log.err() an initial connection failure, since that flunks tests. Use self.log() instead. Also improve test_client.py to always trigger this case, before it was finishing to quickly to always hit the problem. |
---|
10139 | warner@allmydata.com**20070809195344] |
---|
10140 | [log a prominent warning message in the case that the introducer cannot be reached |
---|
10141 | robk-org@allmydata.com**20070605014853] |
---|
10142 | [shorten ids |
---|
10143 | tahoe@arnowaschk.de**20070812185318] |
---|
10144 | [test_system.py: add coverage for get_permuted_peers() |
---|
10145 | warner@lothar.com**20070812232934] |
---|
10146 | [IDirectoryNode: add has_child() method |
---|
10147 | warner@allmydata.com**20070815202201] |
---|
10148 | [webish: modify JSON to match zooko's proposed API changes in #118 |
---|
10149 | warner@allmydata.com**20070823200039] |
---|
10150 | [node.py: refactor config-file getting and setting |
---|
10151 | warner@lothar.com**20070828015839] |
---|
10152 | [webish: implement 'PUT /uri?t=mkdir' (to create anonymous dirnodes) |
---|
10153 | warner@allmydata.com**20070906002306] |
---|
10154 | [fix test_web refactoring so that the WebMixin class isn't a TestCase |
---|
10155 | zooko@zooko.com**20070810154002 |
---|
10156 | Thanks, Brian. |
---|
10157 | |
---|
10158 | ] |
---|
10159 | [refactor test_web so that other tests can use the part of test_web that sets up a simple filesystem |
---|
10160 | zooko@zooko.com**20070809200842] |
---|
10161 | [vdrive: log an error if we weren't able to use the vdrive the way we wanted to |
---|
10162 | warner@lothar.com**20070915221729] |
---|
10163 | [upload: make peer-selection a bit more uniform. Closes #132. |
---|
10164 | warner@lothar.com**20070917000834] |
---|
10165 | [peer-selection: if we must loop, send a minimal number of queries (by asking for more than one share per peer on the second pass) |
---|
10166 | warner@lothar.com**20070916085300] |
---|
10167 | [upload.py: implement Tahoe2 peer-selection algorithm |
---|
10168 | warner@lothar.com**20070916082407] |
---|
10169 | [upload: switch to Tahoe2, add test for uniform share allocation |
---|
10170 | warner@lothar.com**20070916082503] |
---|
10171 | [provisioning.py: get full test coverage |
---|
10172 | warner@lothar.com**20070917083854] |
---|
10173 | [test_web: improve provisioning.py test coverage a bit by using a live web hit |
---|
10174 | warner@lothar.com**20070828002639] |
---|
10175 | [provisioning.py: add file/server availability numbers |
---|
10176 | warner@allmydata.com**20070906011621] |
---|
10177 | [add a provisioning utility page which shows necessary storage space and transfer rates for grids of various sizes |
---|
10178 | warner@lothar.com**20070827064424] |
---|
10179 | [welcome.xhtml: add a link to allmydata.org |
---|
10180 | warner@lothar.com**20070714001544] |
---|
10181 | [test_system.py: do a large-file test (1.5MB) to trigger pauseProducing |
---|
10182 | warner@lothar.com**20070919084344] |
---|
10183 | [test_system.py: verify that we can replace files in place |
---|
10184 | warner@allmydata.com**20070817000350] |
---|
10185 | [test_system.py: many (failing) web tests were accidentally bypassed, fix those. Add some PUT tests. |
---|
10186 | warner@allmydata.com**20070816234940] |
---|
10187 | [test_system.py: change/remove the tests that currently fail due to web changes |
---|
10188 | warner@lothar.com**20070708030644] |
---|
10189 | [test_system.py: match change to /global_vdrive URL |
---|
10190 | warner@lothar.com**20070615083855] |
---|
10191 | [introducer.py: add test coverage of _disconnected() |
---|
10192 | warner@allmydata.com**20070919185013] |
---|
10193 | [check_memory.py: record initial memory usage (before any connections are made) |
---|
10194 | warner@allmydata.com**20070920193627] |
---|
10195 | [check_memory.py: fix benign-but-noisy vdrive.furl handling bug |
---|
10196 | warner@allmydata.com**20070717023452] |
---|
10197 | [a few edits to architecture.txt and related docs |
---|
10198 | zooko@zooko.com**20070921211226] |
---|
10199 | [update architecture.txt a little bit |
---|
10200 | warner@lothar.com**20070723033005] |
---|
10201 | [in --> across |
---|
10202 | wilcoxjg@gmail.com**20070809041754] |
---|
10203 | [test_system.py: do one upload, then test debug scripts, then do other uploads |
---|
10204 | warner@allmydata.com**20070925011237] |
---|
10205 | [fix test_vdrive (fixes #144) |
---|
10206 | zooko@zooko.com**20070922222627 |
---|
10207 | |
---|
10208 | It turns out that we actually have *two* files in our storage servers at the |
---|
10209 | time that test_vdrive asserts things about the shares. I suppose that |
---|
10210 | test_vdrive happens to pass on all other operating systems because the |
---|
10211 | filesystem happens to return the right share as the first one in a |
---|
10212 | "listdir()". The fix in this patch is slightly kludgey -- allow either share |
---|
10213 | to pass -- but good enough. |
---|
10214 | |
---|
10215 | ] |
---|
10216 | [webish: write node.url, for the benefit of CLI tools |
---|
10217 | warner@lothar.com**20071011083804] |
---|
10218 | [create_node: use a webport by default, on localhost:8011 |
---|
10219 | warner@lothar.com**20071011090123] |
---|
10220 | [rename client.tac to tahoe-client.tac, so that 'ps ax|grep tahoe' works. Closes #156. |
---|
10221 | warner@lothar.com**20071011094806] |
---|
10222 | [check_memory.py: preserve client.log and stats.out in _test_memory/ |
---|
10223 | Brian Warner <warner@lothar.com>**20070916035306 |
---|
10224 | Put the nodes in _test_memory/test/, which is clobbered on each test. Also |
---|
10225 | kill the client with SIGINT instead of SIGKILL. Also don't daemonize the |
---|
10226 | client, since we're going to kill it at the end of the test anyways: this |
---|
10227 | cleans up shutdown a bit. |
---|
10228 | ] |
---|
10229 | [check_memory.py: have all clients write their logs to _test_memory/client.log instead of a separate file per client |
---|
10230 | warner@lothar.com**20070915193405] |
---|
10231 | [add public testnet .furls to docs/testnet/, and copy into .deb . Closes #157. |
---|
10232 | warner@allmydata.com**20071011215523] |
---|
10233 | [README: update link to test grid on web page |
---|
10234 | zooko@zooko.com**20070924223719] |
---|
10235 | [deb: add docs/* to the debian package |
---|
10236 | warner@allmydata.com**20071011213729] |
---|
10237 | [boringfile: exclude some foolscap.deb-generated files |
---|
10238 | warner@allmydata.com**20070711202842] |
---|
10239 | [update .darcs-boringfile to match the debian-moves-to-misc/ change |
---|
10240 | warner@allmydata.com**20070705215511] |
---|
10241 | [update feisty packaging |
---|
10242 | warner@allmydata.com**20070329214842] |
---|
10243 | [Makefile: stop producing foolscap .debs |
---|
10244 | warner@allmydata.com**20070821210101] |
---|
10245 | [Makefile: factor out deb-foolscap-ARCH to a separate target |
---|
10246 | warner@allmydata.com**20070711210047] |
---|
10247 | [make the anchor text in the WUI be descriptive of the target -- not "Click Here!"! |
---|
10248 | czooko@zooko.com**20071022235630] |
---|
10249 | [web: oops, forgot to add start.html |
---|
10250 | warner@allmydata.com**20070822220800] |
---|
10251 | [cli: improve test coverage |
---|
10252 | warner@lothar.com**20071021193317] |
---|
10253 | [cli: implement 'mv'. Closes #162. |
---|
10254 | warner@allmydata.com**20071012033148] |
---|
10255 | [move NotMutableError from dirnode.py into interfaces.py |
---|
10256 | warner@allmydata.com**20071101220307] |
---|
10257 | [trailing-whitespace eradication, no functional changes |
---|
10258 | warner@allmydata.com**20071101223401] |
---|
10259 | [docs/configuration.txt: expand the 'sizelimit' docs |
---|
10260 | warner@lothar.com**20071108080842] |
---|
10261 | [Add "sizelimit" to configuration doc. |
---|
10262 | nejucomo@gmail.com**20071105074642] |
---|
10263 | [docs/configuration.txt: explain the files in the node's basedir, which ones are useful to modify, etc |
---|
10264 | warner@allmydata.com**20070813202840] |
---|
10265 | [mutable: add basic test coverage of new-dirnodes-using-mutable-files |
---|
10266 | warner@lothar.com**20071108103100] |
---|
10267 | [test_system: RSA keys are even more variable than I thought, 2044..2049 |
---|
10268 | warner@lothar.com**20071108110411] |
---|
10269 | [test_system: RSA keys vary in size, expand valid ranges in test |
---|
10270 | warner@lothar.com**20071108090113] |
---|
10271 | [consolidate dirnode/filenode-creation code into Client |
---|
10272 | warner@lothar.com**20071109085451] |
---|
10273 | [mutable: fix multiple-versions-interfering-with-each-other bug. replace() tests now pass. |
---|
10274 | warner@lothar.com**20071108100733] |
---|
10275 | [mutable: grab encprivkey when necessary during publish, fix test_mutable |
---|
10276 | warner@lothar.com**20071108084627] |
---|
10277 | [mutable: fix usage of NeedMoreDataError |
---|
10278 | warner@allmydata.com**20071107235209] |
---|
10279 | [mutable: rearrange order of Publish to allow replace() to work. Doesn't work yet. Also test_mutable is disabled for a while. |
---|
10280 | warner@allmydata.com**20071108030139] |
---|
10281 | [stabilize on 20-byte nodeids everywhere, printed with foolscap's base32 |
---|
10282 | warner@allmydata.com**20071107004959] |
---|
10283 | [mutable.txt: more updates: record offset of extra lease count instead of the actual extra leases |
---|
10284 | warner@allmydata.com**20071031024658] |
---|
10285 | [mutable: fix use of storage API |
---|
10286 | warner@allmydata.com**20071107005334] |
---|
10287 | [mutable: wire in RSA for real, using pycryptopp |
---|
10288 | warner@allmydata.com**20071107235135] |
---|
10289 | [checker: remember checker results, but only in ram for now |
---|
10290 | warner@allmydata.com**20071023004624] |
---|
10291 | [checker.py: rearrange classes a little bit |
---|
10292 | warner@allmydata.com**20071022231918] |
---|
10293 | [add an equally-simple file-verifier |
---|
10294 | warner@allmydata.com**20071016192509] |
---|
10295 | [checker: return more information per CHK file, including the shareholder list |
---|
10296 | warner@lothar.com**20071017092550] |
---|
10297 | [mutable: stub out pubkey creation until we wire in pycryptopp properly |
---|
10298 | warner@allmydata.com**20071107012706] |
---|
10299 | [mutable: test roundtrip, make it work |
---|
10300 | warner@allmydata.com**20071107201901] |
---|
10301 | [storage: rewrite slot API, now use testv_and_readv_and_writev or readv |
---|
10302 | warner@allmydata.com**20071106021714] |
---|
10303 | [storage.py: fix tests, timestamps get updated when leases are renewed |
---|
10304 | warner@allmydata.com**20071031193133] |
---|
10305 | [storage.py: more test coverage, make sure leases survive resizing |
---|
10306 | warner@allmydata.com**20071031190747] |
---|
10307 | [storage.py: improve test coverage even more |
---|
10308 | warner@lothar.com**20071031084401] |
---|
10309 | [storage.py: more mutable-slot coverage, renewing/cancelling leases |
---|
10310 | warner@lothar.com**20071031083156] |
---|
10311 | [mutable slots: add some test coverage for lease-addition |
---|
10312 | warner@lothar.com**20071031073830] |
---|
10313 | [storage: add readv_slots: get data from all shares |
---|
10314 | warner@lothar.com**20071105063701] |
---|
10315 | [mutable slots: finish up basic coding on server-side containers, add some tests. Remove all caching from MutableShareFile. |
---|
10316 | warner@lothar.com**20071031071040] |
---|
10317 | [checkpointing mutable-file work. Storage layer is 80% in place. |
---|
10318 | warner@allmydata.com**20071031024736] |
---|
10319 | [dirnode: change the defined behavior of RIVirtualDriveServer.set to allow replace-in-place without raising an exception |
---|
10320 | warner@allmydata.com**20070817000319] |
---|
10321 | [storage: fill alreadygot= with all known shares for the given storageindex, not just the ones they asked about |
---|
10322 | warner@lothar.com**20070917074840] |
---|
10323 | [storage: don't add a duplicate lease, renew the old one instead |
---|
10324 | Brian Warner <warner@lothar.com>**20070903043947] |
---|
10325 | [storage: handle simultanous uploads: add a lease for the pre-empted client |
---|
10326 | warner@lothar.com**20070902215749] |
---|
10327 | [storage: replace sqlite with in-share lease records |
---|
10328 | warner@lothar.com**20070902214715] |
---|
10329 | [storage: use sqlite from either python2.5's stdlib or the pysqlite2 package |
---|
10330 | warner@lothar.com**20070829062852] |
---|
10331 | [deletion phase3: add a sqlite database to track renew/cancel-lease secrets, implement renew/cancel_lease (but nobody calls them yet). Also, move the shares from BASEDIR/storage/* down to BASEDIR/storage/shares/* |
---|
10332 | warner@lothar.com**20070828064140] |
---|
10333 | [update README concerning dependent libraries that the user has to install |
---|
10334 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070516153433] |
---|
10335 | [client.py: add a 'debug_no_storage' option to throw out all share data |
---|
10336 | warner@allmydata.com**20070717010703] |
---|
10337 | [MANIFEST.in: include .html and .css files from allmydata/web/ too |
---|
10338 | warner@allmydata.com**20070822220841] |
---|
10339 | [mutable: move IV into signed prefix, add more retrieval code |
---|
10340 | warner@allmydata.com**20071106210446] |
---|
10341 | [mutable.txt: need offset of EOF too |
---|
10342 | warner@allmydata.com**20071103052807] |
---|
10343 | [mutable.txt: more notes |
---|
10344 | warner@allmydata.com**20071103035341] |
---|
10345 | [docs/mutable.txt: add IV, define a place for it in the data structure |
---|
10346 | Brian Warner <warner@allmydata.com>**20071030025112] |
---|
10347 | [mutable.txt: use merkle trees on blocks, since it probably won't be that hard (the code is all being copied from the CHK classes anyways), and that keeps the storage format identical to the MDMF case, for better forward-compatibility |
---|
10348 | warner@allmydata.com**20071026232501] |
---|
10349 | [docs/mutable.txt: we need readkey IV |
---|
10350 | Brian Warner <warner@allmydata.com>**20071030011451] |
---|
10351 | [mutable.txt: fix everybody-gets-read bug, define WE-update protocol, add accepting-nodeid to leases to allow updating lease tokens |
---|
10352 | warner@allmydata.com**20071026231550] |
---|
10353 | [mutable.txt: we're now sort of ready to handle lease-migration |
---|
10354 | warner@lothar.com**20071031070408] |
---|
10355 | [docs: add writeup of our mutable-file plans |
---|
10356 | warner@lothar.com**20071026092656] |
---|
10357 | [test_system.mutable: make sure we exercise FEC padding |
---|
10358 | warner@allmydata.com**20071107015033] |
---|
10359 | [add container_size to mutable dump-share output |
---|
10360 | warner@allmydata.com**20071107013122] |
---|
10361 | [dump-share: emit SDMF information too |
---|
10362 | warner@allmydata.com**20071107014631] |
---|
10363 | [test_system.mutable: add test coverage for the 'dump-share' debug command |
---|
10364 | warner@allmydata.com**20071107011049] |
---|
10365 | [debug: add mutable-slot support to 'dump-share' command |
---|
10366 | warner@allmydata.com**20071107005555] |
---|
10367 | [debug: remove the 'dump-share-leases' command, it is subsumed by 'dump-share' |
---|
10368 | warner@lothar.com**20070917084439] |
---|
10369 | [debug: 'dump-uri-extension' command becomes 'dump-share', add 'dump-share-leases'. Both display leases. |
---|
10370 | warner@lothar.com**20070902214820] |
---|
10371 | [test_system: add early test for mutable slots, currently publish-only |
---|
10372 | warner@allmydata.com**20071107005711] |
---|
10373 | [bump test timeout even higher |
---|
10374 | zooko@zooko.com**20070502223105 |
---|
10375 | It does indeed take longer than 2400 seconds to run test_upload_and_download on a virtual windows machine when the underlying real machine is heavily loaded down with filesystem analysis runs... |
---|
10376 | ] |
---|
10377 | [WUI: hook up an "overwrite" button on mutable files |
---|
10378 | zooko@zooko.com**20071110165345] |
---|
10379 | [webish: add preliminary mutable file support: upload, download, listings, JSON, URI, RO-URI. No replace yet. |
---|
10380 | warner@lothar.com**20071109095427] |
---|
10381 | [webish: implement replace= for POST commands |
---|
10382 | warner@allmydata.com**20070815222138] |
---|
10383 | [webish: look for when_done= in POST fields as well as queryargs. Closes #101. |
---|
10384 | warner@allmydata.com**20070814004502 |
---|
10385 | |
---|
10386 | We need to look in the fields because that's how we build the mkdir/upload |
---|
10387 | forms. Without this, uploading or creating directories would leave us on a |
---|
10388 | page that had just a URI, instead of something actually useful to a human. |
---|
10389 | ] |
---|
10390 | [web: replace FILE links with /uri -based ones, to prevent an XSS attack against the secret vdrive URI contained in the current URL |
---|
10391 | warner@allmydata.com**20070823003501] |
---|
10392 | [webish: strip leading/tailing whitespace from user-provided filenames, to avoid confusion |
---|
10393 | warner@lothar.com**20070825190524] |
---|
10394 | [webish.py: allow users to delete (but not create) empty-named files. Closes #94. |
---|
10395 | Brian Warner <warner@allmydata.com>**20070816061405] |
---|
10396 | [webish: implement 'PUT /uri' (to create anonymous files) |
---|
10397 | warner@allmydata.com**20070906001227] |
---|
10398 | [webish: implement replace= for PUT commands |
---|
10399 | warner@allmydata.com**20070815202223] |
---|
10400 | [vdrive.py: oops, forgot an import |
---|
10401 | warner@lothar.com**20070915222157] |
---|
10402 | [improve code coverage by removing untested raise RuntimeError and replacing it with tested assert |
---|
10403 | zooko@zooko.com**20071027013740] |
---|
10404 | [webish.Directory: add a 'text/plain' link for files, to download as plaintext. |
---|
10405 | Brian Warner <warner@lothar.com>**20070714064535 |
---|
10406 | This is useful to view (e.g.) .py files that would otherwise be served as |
---|
10407 | some weird text/x-python that browsers will just want to save to disk. |
---|
10408 | ] |
---|
10409 | [mutable: rearrange classes, putting MutableFileNode at the bottom |
---|
10410 | warner@allmydata.com**20071106211948] |
---|
10411 | [mutable: get most of the retrieve-side code written. no tests yet. |
---|
10412 | warner@lothar.com**20071106094729] |
---|
10413 | [mutable.Publish: create a dispatch_map for the benefit of recovery code, and pull pack/unpack methods out into functions |
---|
10414 | warner@allmydata.com**20071106041459] |
---|
10415 | [mutable: parameterize Publish/Retrieve classes in MutableFileNode, for tests |
---|
10416 | warner@allmydata.com**20071106211809] |
---|
10417 | [mutable.Publish: rearrange create() to use more of it in unit tests |
---|
10418 | warner@lothar.com**20071106063340] |
---|
10419 | [mutable.Publish: more tests |
---|
10420 | warner@allmydata.com**20071106043843] |
---|
10421 | [test_mutable: hush pyflakes warning |
---|
10422 | warner@lothar.com**20071105064153] |
---|
10423 | [mutable: use proper enable/renew/cancel secrets |
---|
10424 | warner@allmydata.com**20071106035108] |
---|
10425 | [mutable: added send-messages-to-peers code, about 70% done. No recovery code yet. |
---|
10426 | warner@allmydata.com**20071106032947] |
---|
10427 | [mutable: add peer-selection to Publish, and some basic unit tests |
---|
10428 | warner@lothar.com**20071105063807] |
---|
10429 | [mutable.py: add share-unpacking code, use it for more tests |
---|
10430 | warner@allmydata.com**20071103052831] |
---|
10431 | [mutable.py: start writing share-mapping code |
---|
10432 | warner@allmydata.com**20071103055902] |
---|
10433 | [mutable: implement filenode share-packing, still pretty rough |
---|
10434 | warner@allmydata.com**20071103035139] |
---|
10435 | [mutable.py: sketch out data-structure packing/unpacking methods |
---|
10436 | warner@lothar.com**20071102070328] |
---|
10437 | [mutable: split dirnode stuff out to dirnode2.py, will be renamed later |
---|
10438 | warner@lothar.com**20071102064647] |
---|
10439 | [mutable: improve NewDirectoryNode test coverage |
---|
10440 | warner@allmydata.com**20071102013554] |
---|
10441 | [mutable: implement most remaining dirnode methods. No tests yet. |
---|
10442 | warner@allmydata.com**20071101235758] |
---|
10443 | [IMutableFileNode is a subtype of IFileNode |
---|
10444 | zooko@zooko.com**20071110223718 |
---|
10445 | I'm not 100% sure that this is correct, but it looks reasonable, it passes unit |
---|
10446 | tests (although note that unit tests are currently not covering the new mutable |
---|
10447 | files very well), and it makes the "view JSON" link on a directory work instead |
---|
10448 | of raising an assertion error. |
---|
10449 | |
---|
10450 | ] |
---|
10451 | [mutable: first pass at dirnodes, filenodes, new URIs. Some test coverage. |
---|
10452 | warner@allmydata.com**20071101221529 |
---|
10453 | |
---|
10454 | The URI typenames need revision, and only a few dirnode methods are |
---|
10455 | implemented. Filenodes are non-functional, but URI/key-management is in |
---|
10456 | place. There are a lot of classes with names like "NewDirectoryNode" that |
---|
10457 | will need to be rename once we decide what (if any) backwards compatibility |
---|
10458 | want to retain. |
---|
10459 | |
---|
10460 | ] |
---|
10461 | [test_uri.py: remove tiny whitespace |
---|
10462 | warner@lothar.com**20070829064003] |
---|
10463 | [created DirnodeURI schema |
---|
10464 | wilcoxjg@gmail.com**20070829062826] |
---|
10465 | [uri.py: improve test coverage a bit |
---|
10466 | warner@lothar.com**20070917080947] |
---|
10467 | [add a simple checker, for both files and directories |
---|
10468 | warner@allmydata.com**20071015231639] |
---|
10469 | [dirnode.build_manifest(): tolerate cycles in the directory graph |
---|
10470 | warner@lothar.com**20070721224013] |
---|
10471 | [uri.py: get keys and index from the URI instance |
---|
10472 | warner@lothar.com**20070722004500] |
---|
10473 | [fix pyflakes warnings from recent b32decode change |
---|
10474 | warner@lothar.com**20070812233351] |
---|
10475 | [client.py: only import webish.py if 'webport' is set, to save 3MB of footprint |
---|
10476 | Brian Warner <warner@allmydata.com>**20070904233306] |
---|
10477 | [cli: add test coverage |
---|
10478 | warner@allmydata.com**20071012022041] |
---|
10479 | [tahoe_put.py: don't treat "^HTTP 200 OK" appearing somewhere in the body as if it appeared in the header |
---|
10480 | zooko@zooko.com**20070817190641] |
---|
10481 | [test_system.py: add coverage for allmydata.control |
---|
10482 | warner@allmydata.com**20070926190655] |
---|
10483 | [don't over-encode the nodeid many times with ascii-encoding |
---|
10484 | zooko@zooko.com**20070812172938] |
---|
10485 | [don't check for existence of portnum file and then try to open it -- instead try to open it and catch exception |
---|
10486 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070522210600 |
---|
10487 | This avoids a race condition, also known as time-of-check-to-time-of-use. |
---|
10488 | ] |
---|
10489 | [remove unused imports: hush pyflakes warnings |
---|
10490 | warner@allmydata.com**20070725011358] |
---|
10491 | [web: remove /vdrive/private, replace with a start.html file that points at the /uri/PRIVATE_URI, to prevent XSRF attacks |
---|
10492 | warner@allmydata.com**20070822215434] |
---|
10493 | [test_web.test_welcome: give the rooturl a trailing slash, otherwise older versions of twisted complain |
---|
10494 | warner@lothar.com**20070708062252] |
---|
10495 | [vdrive: eventually create public/private dirnodes event if the vdrive server isn't available at start up |
---|
10496 | warner@allmydata.com**20070725024425] |
---|
10497 | [vdrive: make sure we really record global/private root directory uris |
---|
10498 | warner@allmydata.com**20070628175951] |
---|
10499 | [vdrive.py: log a note when we successfully retrieve the global root directory |
---|
10500 | warner@allmydata.com**20070717031706] |
---|
10501 | [refactor reading of configuration files in client.py |
---|
10502 | zooko@zooko.com**20070822172957 |
---|
10503 | This makes it so that an optional file which is unreadable or is rm'ed |
---|
10504 | at the wrong moment will be ignored instead of raising an exception. |
---|
10505 | It also bums out a couple of unnecessary lines of code (the explicit |
---|
10506 | ".close()" call). |
---|
10507 | |
---|
10508 | ] |
---|
10509 | [client.py: write control.furl in the right place |
---|
10510 | warner@allmydata.com**20070717010627] |
---|
10511 | [webish: localfile=/localdir= are now disabled by default, a special switch is required to enable them |
---|
10512 | warner@lothar.com**20070811012122] |
---|
10513 | [test_web.py: remove spurious '# YES' lines, now that all the tests pass |
---|
10514 | warner@allmydata.com**20070725031621] |
---|
10515 | [webish.py: disallow slashes in POSTed filenames. Closes #75. |
---|
10516 | warner@allmydata.com**20070716185312] |
---|
10517 | [added unit test to webish's rename function |
---|
10518 | robk-org@allmydata.com**20070717000501 |
---|
10519 | |
---|
10520 | added unit tests to test various permutations of the rename function, and |
---|
10521 | some sanity checks on the rename-form function. |
---|
10522 | |
---|
10523 | also added a guard to prevent '/' in from_/to_name in rename calls. |
---|
10524 | ] |
---|
10525 | [webish: improve test coverage of WebDownloadTarget |
---|
10526 | warner@lothar.com**20070717191645] |
---|
10527 | [webish: improve test coverage further |
---|
10528 | warner@lothar.com**20070717192829] |
---|
10529 | [webish: reduce POST memory footprint by overriding http.Request |
---|
10530 | warner@lothar.com**20070811002533 |
---|
10531 | |
---|
10532 | The original twisted.web.http.Request class has a requestReceived method |
---|
10533 | that parses the form body (in the request's .content filehandle) using |
---|
10534 | the stdlib cgi.parse_multipart() function. parse_multipart() consumes a |
---|
10535 | lot of memory when handling large file uploads, because it holds the |
---|
10536 | arguments entirely in RAM. Nevow's subclass of Request uses cgi.FieldStorage |
---|
10537 | instead, which is much more memory-efficient. |
---|
10538 | |
---|
10539 | This patch uses a local subclass of Request and a modified copy of the |
---|
10540 | requestReceived method. It disables the cgi.parse_multipart parsing and |
---|
10541 | instead relies upon Nevow's use of FieldStorage. Our code must look for |
---|
10542 | form elements (which come from the body of the POST request) in req.fields, |
---|
10543 | rather than assuming that they will be copied into req.args (which now |
---|
10544 | only contains the query arguments that appear in the URL). |
---|
10545 | |
---|
10546 | As a result, memory usage is no longer inflated by the size of the file |
---|
10547 | being uploaded in a POST upload request. Note that cgi.FieldStorage uses |
---|
10548 | temporary files (tempfile.TemporaryFile) to hold the data. |
---|
10549 | |
---|
10550 | This closes #29. |
---|
10551 | |
---|
10552 | ] |
---|
10553 | [client.py: add a newline to "myself.furl" contents |
---|
10554 | Brian Warner <warner@lothar.com>**20070818062822] |
---|
10555 | [check_speed: do both upload and download tests |
---|
10556 | warner@allmydata.com**20070921015244] |
---|
10557 | [check_speed: upload multiple files, measure Ax+B |
---|
10558 | warner@allmydata.com**20070920235533] |
---|
10559 | [check_memory: fix race condition for startup of in-process server nodes |
---|
10560 | warner@allmydata.com**20070920223358] |
---|
10561 | [deletion phase2b: create renew/cancel secrets for real. |
---|
10562 | warner@lothar.com**20070828023026] |
---|
10563 | [deletion phase2a: improve creation of renew/cancel secrets. Still fake though. |
---|
10564 | warner@lothar.com**20070828020018] |
---|
10565 | [deletion phase1: send renew/cancel-lease secrets, but my_secret is fake, and the StorageServer discards them |
---|
10566 | warner@lothar.com**20070828002851] |
---|
10567 | [check-memory: add 'receive' mode, for #97 (consumption during share receive |
---|
10568 | warner@allmydata.com**20070919195932] |
---|
10569 | [check_memory: oops, silly bug make 'upload' push to ourselves, raising the usage |
---|
10570 | Brian Warner <warner@allmydata.com>**20070919111448] |
---|
10571 | [check_memory: don't accept shares for download/download-GET test, since that hits bug #97 |
---|
10572 | warner@allmydata.com**20070919024029] |
---|
10573 | [Makefile: check-memory-once: add a convenience target for focussed testing |
---|
10574 | warner@allmydata.com**20070919192916] |
---|
10575 | [check_memory: add download-GET-slow, to simulate memory usage of a node feeding downloaded data via HTTP GET to a slow client |
---|
10576 | warner@allmydata.com**20070919033527] |
---|
10577 | [check_memory: add download, download-GET |
---|
10578 | warner@allmydata.com**20070919015605] |
---|
10579 | [#96: add flag to enable pushing data to ourselves, defaulting to False |
---|
10580 | warner@allmydata.com**20070810013024] |
---|
10581 | [node: enable Tub.logLocalFailures now that we require foolscap-0.1.2 |
---|
10582 | warner@lothar.com**20070407035559] |
---|
10583 | [activate storage size limits in the client. Closes #34. |
---|
10584 | warner@allmydata.com**20070704002707 |
---|
10585 | |
---|
10586 | To use this, write a number like 10MB or 5Gb or 5000000000 to a file |
---|
10587 | named 'sizelimit' in the client's base directory. The node will not grant |
---|
10588 | leases for shares that would take it much beyond this many bytes of |
---|
10589 | storage. Note that metadata is not included in the allocation count until |
---|
10590 | a restart, so the actual space consumed may grow beyond the limit if |
---|
10591 | the node is not restarted very frequently and the amount of metadata is |
---|
10592 | significant. |
---|
10593 | |
---|
10594 | ] |
---|
10595 | [introducer.py: minor rearrangement of methods |
---|
10596 | warner@allmydata.com**20070717024742] |
---|
10597 | [refactor upload/encode, to split encrypt and encode responsibilities |
---|
10598 | warner@allmydata.com**20070724023153] |
---|
10599 | [document a proposed IDecoder interface, still pretty bare-bones |
---|
10600 | warner@allmydata.com**20070328183131] |
---|
10601 | [truncate storage index to 128 bits, since it's derived from a 128 bit AES key |
---|
10602 | warner@lothar.com**20070723024844] |
---|
10603 | [CHK: remove the storage index from the URI, deriving it from the key instead |
---|
10604 | warner@lothar.com**20070722012315] |
---|
10605 | [uri: implement URI-processing classes, IFileURI/IDirnodeURI, use internally |
---|
10606 | warner@lothar.com**20070721224036] |
---|
10607 | [webish: provide a valid Content-Length header on downloads |
---|
10608 | warner@allmydata.com**20070703220900] |
---|
10609 | [webish: improve reporting of web download errors that occur early enough |
---|
10610 | warner@allmydata.com**20070703204737 |
---|
10611 | |
---|
10612 | If the error occurs before any data has been sent, we can give a sensible |
---|
10613 | error message (code 500, stack trace, etc). This will cover most of the error |
---|
10614 | cases. The ones that aren't covered are when we run out of good peers after |
---|
10615 | successfully decoding the first segment, either because they go away or |
---|
10616 | because their shares are corrupt. |
---|
10617 | |
---|
10618 | ] |
---|
10619 | [webish.py: handle errors during download better. Addresses #65. |
---|
10620 | warner@allmydata.com**20070703201814 |
---|
10621 | |
---|
10622 | Previously, exceptions during a web download caused a hang rather than some |
---|
10623 | kind of exception or error message. This patch improves the situation by |
---|
10624 | terminating the HTTP download rather than letting it hang forever. The |
---|
10625 | behavior still isn't ideal, however, because the error can occur too late to |
---|
10626 | abort the HTTP request cleanly (i.e. with an error code). In fact, the |
---|
10627 | Content-Type header and response code have already been set by the time any |
---|
10628 | download errors have been detected, so the browser is committed to displaying |
---|
10629 | an image or whatever (thus any error message we put into the stream is |
---|
10630 | unlikely to be displayed in a meaningful way). |
---|
10631 | |
---|
10632 | ] |
---|
10633 | [web: improve test coverage |
---|
10634 | warner@lothar.com**20070708054718] |
---|
10635 | [web: add a 'return to welcome page' link |
---|
10636 | warner@lothar.com**20070708043004] |
---|
10637 | [web: make sure we present read-only directories properly |
---|
10638 | warner@lothar.com**20070708052120] |
---|
10639 | [import simplejson directly, and remove our local copies of the component .py files from util/json* |
---|
10640 | warner@lothar.com**20070710224932] |
---|
10641 | [web: indent the JSON to make it easier for humans to read, but slightly larger |
---|
10642 | warner@lothar.com**20070708072323] |
---|
10643 | [import the decoder portion of simplejson-1.7.1 too |
---|
10644 | warner@lothar.com**20070710201240] |
---|
10645 | [fix several methods to handle LIT URIs correctly, rather than assuming that all filenodes are CHK URIs |
---|
10646 | warner@allmydata.com**20070712231749] |
---|
10647 | [test_system.py: more vdrive coverage |
---|
10648 | warner@allmydata.com**20070628220533] |
---|
10649 | [vdrive: add get_node_at_path(pathlist) |
---|
10650 | warner@allmydata.com**20070628180003] |
---|
10651 | [web: survive bogus URIs when displaying sizes |
---|
10652 | warner@lothar.com**20070708043118] |
---|
10653 | [webish.py: remove dead code |
---|
10654 | warner@lothar.com**20070708051246] |
---|
10655 | [storage: we must truncate short segments. Now most tests pass (except uri_extension) |
---|
10656 | warner@lothar.com**20070713233825] |
---|
10657 | [rename storageserver.py to just storage.py, since it has both server and client sides now |
---|
10658 | warner@lothar.com**20070714002545] |
---|
10659 | [make it possible to download LIT uris. oops. |
---|
10660 | warner@allmydata.com**20070712231659] |
---|
10661 | [fix dump-uri-extension |
---|
10662 | warner@lothar.com**20070713235808] |
---|
10663 | [upload: finish refactoring, all unit tests pass now |
---|
10664 | warner@lothar.com**20070720055329] |
---|
10665 | [upload: refactor to enable streaming upload. not all tests pass yet |
---|
10666 | warner@allmydata.com**20070720012144] |
---|
10667 | [rename chunk.py to hashtree.py |
---|
10668 | warner@allmydata.com**20070412201325] |
---|
10669 | [comment out some verbose log messages, add commented-out new ones |
---|
10670 | warner@allmydata.com**20070418032552] |
---|
10671 | [handle foolscap's annoying tendency to turn everything into a sets.Set, which are not interoperable with 2.4's builtin 'set' type |
---|
10672 | warner@allmydata.com**20070330235504] |
---|
10673 | [encode: fix multi-segment uploads: lambdas inside for loops require special attention to make sure you are capturing the *value* of the loop variable and not just the slot it lives in |
---|
10674 | warner@allmydata.com**20070418032908] |
---|
10675 | [encode.py: fix generation of plaintext/crypttext merkle trees |
---|
10676 | warner@lothar.com**20070607201414] |
---|
10677 | [refactor URI_extension handlers out of encode/download and into uri.py |
---|
10678 | warner@allmydata.com**20070612012518] |
---|
10679 | [handle uri_extension with a non-bencode serialization scheme |
---|
10680 | warner@lothar.com**20070608231754] |
---|
10681 | [upload.py: minor refactoring |
---|
10682 | warner@allmydata.com**20070612022151] |
---|
10683 | [allow the introducer to set default encoding parameters. Closes #84. |
---|
10684 | warner@allmydata.com**20070712223330 |
---|
10685 | By writing something like "25 75 100" into a file named 'encoding_parameters' |
---|
10686 | in the central Introducer's base directory, all clients which use that |
---|
10687 | introducer will be advised to use 25-out-of-100 encoding for files (i.e. |
---|
10688 | 100 shares will be produced, 25 are required to reconstruct, and the upload |
---|
10689 | process will be happy if it can find homes for at least 75 shares). The |
---|
10690 | default values are "3 7 10". For small meshes, the defaults are probably |
---|
10691 | good, but for larger ones it may be appropriate to increase the number of |
---|
10692 | shares. |
---|
10693 | ] |
---|
10694 | [test_introducer_and_vdrive: remove the assumption that startService returns a Deferred |
---|
10695 | warner@allmydata.com**20070524003720] |
---|
10696 | [more #85 work, system test still fails |
---|
10697 | warner@lothar.com**20070713220901] |
---|
10698 | [implement URI:LIT, which stores small (<55B) files inside the URI itself. Fixes #81. |
---|
10699 | warner@allmydata.com**20070712202236] |
---|
10700 | [bump some unit tests up to very high timeouts because my poor G4 867 MHz PowerBook, which is busy doing video iChat, takes a long time to run these tests |
---|
10701 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501040343] |
---|
10702 | [test_system: increase timeouts to almost 20 minutes: we have buildslaves that take more than 5 minutes to finish these tests. |
---|
10703 | warner@allmydata.com**20070501031458] |
---|
10704 | [test_system: bump up timeout again, the new extra download forms take more time on poor overloaded slave1 |
---|
10705 | warner@allmydata.com**20070416225325] |
---|
10706 | [consolidate multiple definitions of NotEnoughPeersError |
---|
10707 | warner@allmydata.com**20070608052055] |
---|
10708 | [storage: use one file per share instead of 7 (#85). work-in-progress, tests still fail |
---|
10709 | warner@allmydata.com**20070713210449] |
---|
10710 | [rename fileid/verifierid to plaintext_hash/crypttext_hash |
---|
10711 | warner@lothar.com**20070610034604] |
---|
10712 | [docs/thingA.txt: describe what this does, even if it doesn't yet have a name |
---|
10713 | warner@allmydata.com**20070608045058] |
---|
10714 | [storageserver: include metadata in the sizelimit, at least after the bucket has been closed |
---|
10715 | warner@allmydata.com**20070704003849] |
---|
10716 | [storageserver: implement size limits. No code to enable them yet, though |
---|
10717 | warner@allmydata.com**20070704000802] |
---|
10718 | [test_storage: test StorageServer code too: allocation, lookup, multiple-writer behavior |
---|
10719 | warner@allmydata.com**20070418224234] |
---|
10720 | [storageserver: assert that blocks are written in-order, clean up tests a bit |
---|
10721 | warner@allmydata.com**20070418032105] |
---|
10722 | [storageserver: the last segment is not always going to be the same size as the rest, so don't assert such a thing |
---|
10723 | warner@allmydata.com**20070417204145] |
---|
10724 | [test_storage: add (failing) test of the BucketWriter/BucketReader implementation |
---|
10725 | warner@allmydata.com**20070418030344] |
---|
10726 | [don't clobber existing storefile every put block |
---|
10727 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070418031444] |
---|
10728 | [pyutil: fileutil.open_or_create() |
---|
10729 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070418031426] |
---|
10730 | [import fileutil, some of which came from amdlib.util and some of which came from the pyutil library |
---|
10731 | zooko@zooko.com**20070330191223] |
---|
10732 | [storage: wrap buckets in a local proxy |
---|
10733 | warner@lothar.com**20070709062746 |
---|
10734 | This will make it easier to change RIBucketWriter in the future to reduce the wire |
---|
10735 | protocol to just open/write(offset,data)/close, and do all the structuring on the |
---|
10736 | client end. The ultimate goal is to store each bucket in a single file, to reduce |
---|
10737 | the considerable filesystem-quantization/inode overhead on the storage servers. |
---|
10738 | ] |
---|
10739 | [remove several leftover defintions of netstring() |
---|
10740 | warner@allmydata.com**20070608051318] |
---|
10741 | [rename thingA to 'uri extension' |
---|
10742 | warner@lothar.com**20070608225916] |
---|
10743 | [docs/uri.txt: document current URI formats |
---|
10744 | warner@lothar.com**20070722002901] |
---|
10745 | [switch from rfc 3548 base-32 to z-base-32 except for tubids/nodeids |
---|
10746 | zooko@zooko.com**20070724204606] |
---|
10747 | [record our nodeid (for reference) in 'my_nodeid' |
---|
10748 | warner@allmydata.com**20061205224048] |
---|
10749 | [more allmydata.util test coverage, rename the test case to be more correct |
---|
10750 | warner@allmydata.com**20070406233322] |
---|
10751 | [add test coverage for stuff in allmydata/utils |
---|
10752 | warner@allmydata.com**20070406232925] |
---|
10753 | [check_memory.py: Disable the 100MB test for now: our buildslave can't currently handle it because the testnet/framework processes uses something like 600M of RSS. |
---|
10754 | warner@allmydata.com**20070815195511] |
---|
10755 | [check_memory.py: include a single 100MB test |
---|
10756 | warner@lothar.com**20070809183033] |
---|
10757 | [now that the buildslave is moved to a new machine, enable the 50MB test |
---|
10758 | Brian Warner <warner@allmydata.com>**20070809083252] |
---|
10759 | [check_memory: oops, only bail if the process ended abnormally |
---|
10760 | warner@lothar.com**20070915184729] |
---|
10761 | [check-memory: if the child process fails to start, shut down instead of hanging forever |
---|
10762 | warner@lothar.com**20070915031657] |
---|
10763 | [check_speed.py: run two 1MB uploads and measure the time it takes |
---|
10764 | warner@allmydata.com**20070920014018] |
---|
10765 | [control.py: make get_memory_usage() callable from elsewhere |
---|
10766 | warner@lothar.com**20070709020754] |
---|
10767 | [started framework for an automated speed-checking tool. Doesn't do much yet. |
---|
10768 | warner@allmydata.com**20070920012747] |
---|
10769 | [Makefile: check_memory.py now manages the combined stats.out itself |
---|
10770 | warner@lothar.com**20070915205336] |
---|
10771 | [Makefile: insert a linebreak after use of PP, since it is long and obscures the real command |
---|
10772 | warner@lothar.com**20070915193211] |
---|
10773 | [Makefile: add 'upload-self' pass to check-memory |
---|
10774 | Brian Warner <warner@allmydata.com>**20070810084134] |
---|
10775 | [Makefile/check-memory: put all stats in ./memstats.out |
---|
10776 | warner@lothar.com**20070717174141] |
---|
10777 | [check_memory.py: test POST-based uploads as well as from-disk ones |
---|
10778 | warner@allmydata.com**20070717031751] |
---|
10779 | [makefile: add a test-darcs-boringfile target |
---|
10780 | warner@allmydata.com**20070524005128] |
---|
10781 | [check_memory: update it, write stats to a file, disable 50MB test for now |
---|
10782 | warner@allmydata.com**20070717010855] |
---|
10783 | [check_memory: getting closer, now we have memusage numbers for uploads of 10kB and 10MB files |
---|
10784 | warner@lothar.com**20070530003939] |
---|
10785 | [testutil.py: hush a pyflakes warning |
---|
10786 | warner@lothar.com**20070424042150] |
---|
10787 | [re-port Makefile to Windows and remove a bunch of no-longer-needed hacks |
---|
10788 | zooko@zooko.com**20070914012035] |
---|
10789 | [use select reactor instead of iocp reactor on Windows |
---|
10790 | zooko@allmydata.com**20070420030757 |
---|
10791 | Good: this makes it pass all the current unit tests |
---|
10792 | Bad: this makes it limited to around 100 simultaneous peers |
---|
10793 | ] |
---|
10794 | [--rterrors is a nice flag for trial |
---|
10795 | zooko@zooko.com**20070427011152] |
---|
10796 | [GNUmakefile: detect trial's location better on Windows |
---|
10797 | zooko@zooko.com**20070427004901] |
---|
10798 | [Makefile: add build_ext target, for convenience |
---|
10799 | warner@lothar.com**20070816004710] |
---|
10800 | [another dummy record to trigger the buildbot |
---|
10801 | warner@allmydata.com**20070426012223] |
---|
10802 | [dummy record to trigger the buildbot |
---|
10803 | warner@allmydata.com**20070426011348] |
---|
10804 | [fix Makefile not to assume that ":" is the PYTHONPATH separator |
---|
10805 | zooko@zooko.com**20070913223734 |
---|
10806 | (It is ";" on Windows.) |
---|
10807 | |
---|
10808 | ] |
---|
10809 | [Makefile: re-order targets and let user's PYTHONPATH be included in the PP |
---|
10810 | zooko@zooko.com**20070913015633] |
---|
10811 | [import version class and make-version script from pyutil -- fixes win32 build, improves error handling, and eliminates unused features |
---|
10812 | zooko@zooko.com**20070816210930] |
---|
10813 | [manually merge recent changes to pyutil's copy of "version.py" with allmydata's copy of "version.py" |
---|
10814 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070509230405] |
---|
10815 | [version.py: handle both '0.2.0' and '0.2.0-1', remove 'tags' for now |
---|
10816 | warner@lothar.com**20070504033127] |
---|
10817 | [make-version.py: remove the strip-until-<changelog> workaround |
---|
10818 | warner@allmydata.com**20070516190258] |
---|
10819 | [make-version.py: accomodate windows by ignoring the junk that appears at the start of 'darcs changes' |
---|
10820 | warner@allmydata.com**20070516001042] |
---|
10821 | [test_client.py: improve test coverage a bit |
---|
10822 | warner@allmydata.com**20070608050902] |
---|
10823 | [catch EnvironmentError from attempt to invoke darcs using subprocess module |
---|
10824 | zooko@zooko.com**20070611185957] |
---|
10825 | [make-version.py invokes darcs as "darcs" instead of "realdarcs" |
---|
10826 | zooko@zooko.com**20070629212250 |
---|
10827 | Some other people might use the official Windows build of darcs, and people who use my cygwin wrapper for darcs will be compatible with this patch as long as they use the latest version of the wrapper. |
---|
10828 | |
---|
10829 | ] |
---|
10830 | [make-version.py: it is sys.platform, not os.platform |
---|
10831 | warner@allmydata.com**20070613010610] |
---|
10832 | [make make-version.py exec darcs correctly on windows |
---|
10833 | robk-org@allmydata.com**20070613005655] |
---|
10834 | [make-version.py: use 'subprocess' module instead of 'commands', to improve windows compatibility |
---|
10835 | warner@allmydata.com**20070516185720] |
---|
10836 | [packaging: add 'build-deps' target, to automatically build and install (locally, in ./support) necessary dependencies. All such installed files are used during tests. |
---|
10837 | warner@lothar.com**20070912234845] |
---|
10838 | [packaging: move to setuptools |
---|
10839 | warner@lothar.com**20070912230253] |
---|
10840 | [transfer any PYTHONPATH environment variable to the environment of the foolscap tests |
---|
10841 | zooko@zooko.com**20070501061947] |
---|
10842 | [add note to GNUmakefile that we append instdir instead of prepending for a good reason |
---|
10843 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501021751] |
---|
10844 | [fix: don't pass the PYTHONPATH that features the instdir to the invocation of trial for foolscap |
---|
10845 | zooko@allmydata.com**20070501043728 |
---|
10846 | |
---|
10847 | ] |
---|
10848 | [add warning that "make test" can take a long time |
---|
10849 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502055240] |
---|
10850 | [fix one last use of "--root" in building which was corrupting the pathnames in .pyc files |
---|
10851 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070523220149] |
---|
10852 | [makefile: use --single-version-externally-managed for simplejson |
---|
10853 | warner@lothar.com**20070711023710] |
---|
10854 | [makefile: refactor .deb-producing rules |
---|
10855 | warner@allmydata.com**20070711194500] |
---|
10856 | [fix debian targets in makefile |
---|
10857 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501194646] |
---|
10858 | [move debian files down into misc/ |
---|
10859 | warner@allmydata.com**20070705214909] |
---|
10860 | [README: edit to arch_o_median's contribution re: installing the Python way |
---|
10861 | zooko@zooko.com**20070809033245] |
---|
10862 | [README: clarify/edit build, install, and test instructions |
---|
10863 | zooko@zooko.com**20070809034458] |
---|
10864 | [changed README install "Python Way" section |
---|
10865 | wilcoxjg@gmail.com**20070809030035] |
---|
10866 | [update README to reflect existence of "make install" target |
---|
10867 | zooko@zooko.com**20070807191324] |
---|
10868 | [Makefile: improve 'clean' behavior by removing foolscap .pycs and _version.py |
---|
10869 | Brian Warner <warner@lothar.com>**20070818063800] |
---|
10870 | [Makefile: use a different rm *.so command for the 'clean' target |
---|
10871 | warner@allmydata.com**20070815222812] |
---|
10872 | [Makefile: more portable way to make clean succeed when there's nothing to rm |
---|
10873 | zooko@zooko.com**20070815211851 |
---|
10874 | xargs doesn't have a "-r" option on Mac OS X. |
---|
10875 | |
---|
10876 | ] |
---|
10877 | [Makefile: fix 'clean' target to work even if there's nothing to clean |
---|
10878 | warner@allmydata.com**20070814212448] |
---|
10879 | [Makefile: oops, fix clean-simplejson target. Might fix #10. |
---|
10880 | Brian Warner <warner@lothar.com>**20070818065037] |
---|
10881 | [Makefile: improve 'clean' behavior even more, maybe even completely. |
---|
10882 | Brian Warner <warner@lothar.com>**20070818064514 |
---|
10883 | Now we remove downloaded setuptools-*.egg files, and *.egg-info directories |
---|
10884 | ] |
---|
10885 | [remove PyCrypto, copy AES/SHA256/Util.number into the allmydata/ tree |
---|
10886 | warner@allmydata.com**20070814205741] |
---|
10887 | [allmydata.Crypto: fix all internal imports |
---|
10888 | warner@lothar.com**20061214092956] |
---|
10889 | [rename Crypto to allmydata.Crypto |
---|
10890 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070130223305 |
---|
10891 | This kind of makes me think that there is a general principle that things |
---|
10892 | shouldn't know their own names. After all, a name is what *other* people use |
---|
10893 | to refer to you. And in the general case, some other people might refer to you |
---|
10894 | in ways incompatible with the ways that other people refer to you. |
---|
10895 | |
---|
10896 | ] |
---|
10897 | [.darcs-boringfile: ignore zfec files instead of pyfec files |
---|
10898 | warner@allmydata.com**20070418175355] |
---|
10899 | [modify debian/rules files to handle zfec+setuptools correctly |
---|
10900 | warner@allmydata.com**20070426234517] |
---|
10901 | [README: mention the additional included libraries (zfec, foolscap, pycrypto) |
---|
10902 | warner@allmydata.com**20070516011302] |
---|
10903 | [makefile: build simplejson along with zfec/foolscap/etc |
---|
10904 | warner@lothar.com**20070710222838] |
---|
10905 | [add deb-etch target, rearrange make-version a bit, closes #23 |
---|
10906 | warner@lothar.com**20070504070706] |
---|
10907 | [update version-number handling, pull release tags from darcs history |
---|
10908 | warner@lothar.com**20070504031407] |
---|
10909 | [changed MakeFile to install simplejson |
---|
10910 | wilcoxjg@gmail.com**20070809034126] |
---|
10911 | [add install target, works at lest on sudo-free cygwin |
---|
10912 | tahoe@arnowaschk.de**20070731235545] |
---|
10913 | [cleanup new "instdir" on "make clean" |
---|
10914 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070130223252] |
---|
10915 | [Makefile: improve 'clean' target to remove debian/ symlink too |
---|
10916 | warner@lothar.com**20061214100809] |
---|
10917 | [README: formatting (line-wrapping) of arch_o_median's edits to README |
---|
10918 | zooko@zooko.com**20070809034742] |
---|
10919 | [edited README "The Python Way" installs to /usr/bin |
---|
10920 | wilcoxjg@gmail.com**20070809033209] |
---|
10921 | [changed README to inslude simplejson in "The Python Way" install |
---|
10922 | wilcoxjg@gmail.com**20070809034340] |
---|
10923 | [some edits to the README |
---|
10924 | zooko@zooko.com**20070611164054] |
---|
10925 | [re-re-factored the download and install instructions |
---|
10926 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502195426 |
---|
10927 | Now the instructions about how to download debian packages live on a separate |
---|
10928 | page of the wiki instead of on the front page or in the README. The README is |
---|
10929 | only about building from source. The front page contains pointers to those two |
---|
10930 | other pages (the debiandownloadpage and the README). |
---|
10931 | |
---|
10932 | ] |
---|
10933 | [two more fixes for README |
---|
10934 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502054024] |
---|
10935 | [add another note about where to run "make" |
---|
10936 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502053735] |
---|
10937 | [fix README on how to install The Debian Way |
---|
10938 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502063839] |
---|
10939 | [clarify instructions on how to get build dependencies for debian |
---|
10940 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502061606 |
---|
10941 | My test subject here didn't used "locate" to find something named |
---|
10942 | "debian/control" somewhere on his filesystem... :-) |
---|
10943 | |
---|
10944 | ] |
---|
10945 | [move the debian packaging dependencies to the place where they are needed in the README |
---|
10946 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502061105] |
---|
10947 | [tweak README to be more helpful about a small detail |
---|
10948 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502051149] |
---|
10949 | [fix the TESTING THAT IT IS PROPERLY INSTALLED section |
---|
10950 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502064201 |
---|
10951 | My oh-so-useful test subject here skipped that section because he thought it was part of a section that he was finished with. |
---|
10952 | |
---|
10953 | ] |
---|
10954 | [boringfile: ignore the setuptools .egg that ez_setup.py likes to download/build/install during compilation |
---|
10955 | warner@allmydata.com**20070810024518] |
---|
10956 | [.darcs-boringfile: ignore the buildbot's source-stampfile |
---|
10957 | warner@allmydata.com**20070524011242] |
---|
10958 | [Makefile: don't attempt to run trial tests if the dependencies can't be imported |
---|
10959 | zooko@zooko.com**20070914021255] |
---|
10960 | [don't use --root, instead use --single-version-externally-managed |
---|
10961 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070521174714 |
---|
10962 | fixes #35 |
---|
10963 | ] |
---|
10964 | [makefile: delete .pycs before running tests, since our build process puts the wrong filenames into them |
---|
10965 | warner@lothar.com**20070504041215] |
---|
10966 | [makefile: change the 'test' target to exclude foolscap, add 'test-all' to do both |
---|
10967 | warner@allmydata.com**20070501180839] |
---|
10968 | [Makefile: add an upload-figleaf target, rather than having the buildbot create the rsync command itself |
---|
10969 | warner@lothar.com**20070308212813] |
---|
10970 | [make separate makefile targets for test-foolscap and test-TEST |
---|
10971 | zooko@allmydata.com**20070501060245 |
---|
10972 | So that if you want to run just one test, you can run "make test-TEST TEST=that.one.test" and not get the whole foolscap suite thrown in for the bargain. |
---|
10973 | |
---|
10974 | ] |
---|
10975 | [run foolscap tests from src instead of from instdir since .pyc's in instdir have funny filenames encoded into them that cause foolscap test failures |
---|
10976 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501021806] |
---|
10977 | [turn foolscap unit tests back on in the "make test" target |
---|
10978 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430180413] |
---|
10979 | [don't run foolscap unit tests |
---|
10980 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430032528] |
---|
10981 | [cli: add --node-directory and --root-uri to all commands |
---|
10982 | warner@lothar.com**20071011073036] |
---|
10983 | [command-line: remove the --vdrive option (it is now hardcoded to "global") |
---|
10984 | zooko@zooko.com**20070823202700] |
---|
10985 | [command-line: fix a few bugs in the "execute this python file" way to execute rm |
---|
10986 | zooko@zooko.com**20070817211731] |
---|
10987 | [command-line: add "rm", and tidy-up variable names, and make it so "allmydata-tahoe spam" prints a usage message instead of returning silently |
---|
10988 | zooko@zooko.com**20070817202316] |
---|
10989 | [relnotes.txt: edit and update relnotes and clarify licence |
---|
10990 | zooko@zooko.com**20070817192509] |
---|
10991 | [small edit of relnotes |
---|
10992 | zooko@zooko.com**20070723012337] |
---|
10993 | [in relnotes.txt, make the safety warnings slightly less scary |
---|
10994 | zooko@zooko.com**20070807212323 |
---|
10995 | |
---|
10996 | and update the reference to the wiki's UseCases page |
---|
10997 | |
---|
10998 | ] |
---|
10999 | [clarify licence |
---|
11000 | zooko@zooko.com**20070809034442] |
---|
11001 | [make big distinction between downloading precompiled packages and building yourself |
---|
11002 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502053433 |
---|
11003 | Both of my two test subjects here stumbled on this by thinking that building on debian was related to building debian packages was related to downloading precompiled packages. |
---|
11004 | |
---|
11005 | ] |
---|
11006 | [update README to reflect dependency on python-dev |
---|
11007 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430063349] |
---|
11008 | [README: mention the names of the debian packages that provide our dependencies |
---|
11009 | warner@allmydata.com**20070430194830] |
---|
11010 | [add the apt-get information to the README |
---|
11011 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502050458] |
---|
11012 | [clarify licence |
---|
11013 | zooko@zooko.com**20070629222815] |
---|
11014 | [update licence to allow linking with OpenSSL |
---|
11015 | zooko@zooko.com**20070430045605] |
---|
11016 | [relnotes.txt: a few more updates to relnotes.txt |
---|
11017 | zooko@zooko.com**20070816235222] |
---|
11018 | [relnotes.txt: incomplete update to describe v0.5 |
---|
11019 | zooko@zooko.com**20070816230302 |
---|
11020 | more to come... |
---|
11021 | ] |
---|
11022 | [update relnotes.txt to reflect NJS's comments |
---|
11023 | zooko@zooko.com**20070723012129] |
---|
11024 | [relnotes.txt: reflow to 70-char width |
---|
11025 | zooko@zooko.com**20070705015926] |
---|
11026 | [fix small typo in relnotes.txt |
---|
11027 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502205211] |
---|
11028 | [relnotes.txt update for v0.4 release |
---|
11029 | zooko@zooko.com**20070629235805] |
---|
11030 | [fix the relnotes.txt -- don't incorrectly attribute a compatibility break to foolscap |
---|
11031 | zooko@zooko.com**20070611172014] |
---|
11032 | [relnotes.txt reflow column width and editing |
---|
11033 | zooko@zooko.com**20070629235827] |
---|
11034 | [relnotes.txt: mention the private filesystem |
---|
11035 | warner@allmydata.com**20070630000149] |
---|
11036 | [relnotes.txt: formatting for thinner columns |
---|
11037 | zooko@zooko.com**20070629235538] |
---|
11038 | [trivial formatting tweak in relnotes.txt |
---|
11039 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502040505] |
---|
11040 | [update the relnotes.txt for v0.3 |
---|
11041 | zooko@zooko.com**20070611162142] |
---|
11042 | [edit: fix typo and formatting in relnotes.txt |
---|
11043 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430155700] |
---|
11044 | [edit description of Foolscap in relnotes.txt |
---|
11045 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501004306] |
---|
11046 | [better description of Foolscap in README |
---|
11047 | zooko@zooko.com**20070501003451] |
---|
11048 | [edits to relnotes.txt |
---|
11049 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501152647] |
---|
11050 | [relnotes.txt: editing for English usage |
---|
11051 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070419210915] |
---|
11052 | [edit relnotes.txt |
---|
11053 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070427233752] |
---|
11054 | [relnotes.txt: all platforms pass unit tests. Whee! |
---|
11055 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070420035301] |
---|
11056 | [relnotes.txt: a bit of editing |
---|
11057 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070420035319] |
---|
11058 | [small edit to target market |
---|
11059 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502200614] |
---|
11060 | [edit release notes to give proper user expectations |
---|
11061 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430042455] |
---|
11062 | [tahoe v0.2.0-0-UNSTABLE |
---|
11063 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502232323] |
---|
11064 | [v0.2.0b2-0-UNSTABLE |
---|
11065 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501224619] |
---|
11066 | [grand unified version numbers |
---|
11067 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501202315 |
---|
11068 | Now the allmydata python package, the setup.py script, and the debian packages all get their tahoe version number from the same place. |
---|
11069 | ] |
---|
11070 | [v0.2.0b1-0-UNSTABLE |
---|
11071 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501061123] |
---|
11072 | [v0.1.4b2-0-UNSTABLE |
---|
11073 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430170007] |
---|
11074 | [v0.1.3-0-UNSTABLE |
---|
11075 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430130243] |
---|
11076 | [v0.1.2-0-UNSTABLE |
---|
11077 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430060008] |
---|
11078 | [allmydata-tahoe v0.1.1-1-UNSTABLE |
---|
11079 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070427230722] |
---|
11080 | [tahoe v0.1.1-0-UNSTABLE |
---|
11081 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070426182515] |
---|
11082 | [assign version number tahoe 0.1.0-0-UNSTABLE |
---|
11083 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070419204759] |
---|
11084 | [copy version.py from pyutil |
---|
11085 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070419204736] |
---|
11086 | [make relnotes.txt point to the latest source tarball |
---|
11087 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430175635] |
---|
11088 | [update URL pointing to source code tarball |
---|
11089 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430060539] |
---|
11090 | [update URLs in relnotes.txt |
---|
11091 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070427231244] |
---|
11092 | [command-line: remove some redundant options checking |
---|
11093 | zooko@zooko.com**20070817200643] |
---|
11094 | [command-line: fix all three commands and all two ways to invoke them to require node-url and give a useful usage string if node-url is absent or of the wrong form |
---|
11095 | zooko@zooko.com**20070817195447] |
---|
11096 | [tahoe_ls: remove a couple of vestigial or debugging bits |
---|
11097 | zooko@zooko.com**20070711024640] |
---|
11098 | [scripts: rearrange Options, make --version behave the same for all commands |
---|
11099 | warner@allmydata.com**20070816195019] |
---|
11100 | [put now exits after doing its work, and it prints a terse message if 200 or 201, and a full dump of response elsewise |
---|
11101 | zooko@zooko.com**20070816233039] |
---|
11102 | [incomplete version of tahoe-put.py |
---|
11103 | zooko@zooko.com**20070816230101 |
---|
11104 | It doesn't exit properly afterward, and it might not do the best things with non-success responses from the server. |
---|
11105 | (See tahoe-put-web2ish.py for an example of better response handling.) |
---|
11106 | |
---|
11107 | ] |
---|
11108 | [tahoe_put.py: require node-url to be provided |
---|
11109 | zooko@zooko.com**20070817190611] |
---|
11110 | [cli: use port 8123 as the example port number |
---|
11111 | zooko@zooko.com**20070924201727] |
---|
11112 | [cmdline: change "--server" to "--node-url" and make it have no default value |
---|
11113 | zooko@zooko.com**20070816235327] |
---|
11114 | [a first crack at the "put" command-line |
---|
11115 | zooko@zooko.com**20070816191538 |
---|
11116 | There are actually two versions in this patch, one of which requires twisted.web2 and the other of which uses the Python standard library's socket module. The socketish one doesn't know when the web server is done so it hangs after doing its thing. (Oh -- maybe I should add an HTTP header asking the web server to close the connection when finished.) The web2ish one works better in that respect. Neither of them handle error responses from the server very well yet. |
---|
11117 | |
---|
11118 | After lunch I intend to finish the socketish one. |
---|
11119 | |
---|
11120 | To try one, mv src/allmydata/scripts/tahoe_put-{socketish,web2ish}.py src/allmydata/scripts/tahoe_put.py . |
---|
11121 | |
---|
11122 | If you want to try the web2ish one, and you can't find a web2 package to install, you can get one from: |
---|
11123 | |
---|
11124 | http://allmydata.org/~zooko/repos/twistedweb2snarf/ |
---|
11125 | |
---|
11126 | ] |
---|
11127 | [cli: implement 'get' |
---|
11128 | warner@allmydata.com**20070711172619] |
---|
11129 | [tahoe-get.py: add optional target-local-file argument |
---|
11130 | zooko@zooko.com**20070710012711] |
---|
11131 | [tahoe-get.py: fix bug: actually respect the optional server argument |
---|
11132 | zooko@zooko.com**20070710014716] |
---|
11133 | [tahoe-get.py: accept vdrive and server options (using optparse) |
---|
11134 | zooko@zooko.com**20070710012002] |
---|
11135 | [tahoe-get.py: the first, most primitive command-line client |
---|
11136 | zooko@zooko.com**20070710011953] |
---|
11137 | [cli: implement 'allmydata-tahoe ls' |
---|
11138 | warner@lothar.com**20070711023737] |
---|
11139 | [tahoe-ls.py: hush a pyflakes warning |
---|
11140 | warner@lothar.com**20070710232605] |
---|
11141 | [tahoe-ls.py: initial version of an 'ls' CLI utility |
---|
11142 | warner@lothar.com**20070710223455] |
---|
11143 | [runner.py: further refactoring |
---|
11144 | warner@lothar.com**20070711020518] |
---|
11145 | [fix 'allmydata restart' |
---|
11146 | warner@lothar.com**20061205183758] |
---|
11147 | [runner.py: add --force flag to restart, to restart a not-already-running node |
---|
11148 | warner@lothar.com**20070707181732] |
---|
11149 | [runner.py: start to refactor into separate files |
---|
11150 | warner@lothar.com**20070711014152] |
---|
11151 | [runner.py: make 'allmydata-tahoe --version' emit version numbers of everything |
---|
11152 | warner@allmydata.com**20070716215836] |
---|
11153 | [runner.py: improve test coverage further: implement --quiet with StringIOs |
---|
11154 | warner@lothar.com**20070626231918] |
---|
11155 | [node creation: be willing to utilize a pre-existing (but empty) directory |
---|
11156 | warner@allmydata.com**20070329213228] |
---|
11157 | [runner.py: add --quiet, use it from test cases |
---|
11158 | warner@lothar.com**20070424041713] |
---|
11159 | [webish: add checker results and a 'Check' button to the web interface |
---|
11160 | warner@allmydata.com**20071024002357] |
---|
11161 | [include the filename on URI-link urls for files |
---|
11162 | robk-org@allmydata.com**20070711222647 |
---|
11163 | |
---|
11164 | this is likely to induce browsers to do more useful things with the result |
---|
11165 | than they would when given neither content-type nor filename. (i.e. they |
---|
11166 | can guess that a .jpg file is an image, even with a bogus content type) |
---|
11167 | ] |
---|
11168 | [docs: webapi: Add concise shorthand for options, input, output, and statuses to the operation descriptions... |
---|
11169 | nejucomo@gmail.com**20080130072742 |
---|
11170 | |
---|
11171 | I'm not convinced if this is the best way to do this, but I find it |
---|
11172 | handy to have a conscise "quick reference" for the webapi operations |
---|
11173 | which summarize all related I/O. |
---|
11174 | |
---|
11175 | Another possibility is to reject this patch, but create a separate |
---|
11176 | "webapi_quickref.html" with a concise table. |
---|
11177 | |
---|
11178 | ] |
---|
11179 | [new improved webapi.txt |
---|
11180 | zooko@zooko.com**20070823200326 |
---|
11181 | As per ticket #118, this refactors the explanation of URIs and paths and changes the JSON metadata schema. |
---|
11182 | |
---|
11183 | http://allmydata.org/trac/tahoe/ticket/118 |
---|
11184 | |
---|
11185 | ] |
---|
11186 | [webapi.txt: shorter and hopefully clearer description of names vs. identifiers |
---|
11187 | zooko@zooko.com**20070815192804 |
---|
11188 | Brian (and anyone who has an interest in the API and documentation): please review. |
---|
11189 | |
---|
11190 | ] |
---|
11191 | [webapi.txt: minor clarifications and examples |
---|
11192 | warner@lothar.com**20070810225227] |
---|
11193 | [webapi.txt: add URI-based GET variants |
---|
11194 | zooko@zooko.com**20070810193329] |
---|
11195 | [webapi.txt: clear up underspecified items, replace 'webpassword' paragraph |
---|
11196 | Brian Warner <warner@allmydata.com>**20070816020447 |
---|
11197 | with a section about our expected plans for #98, add more introductory text |
---|
11198 | to the sections on manipulate-file vs manipulate-directory. |
---|
11199 | ] |
---|
11200 | [webapi.txt: specify replace= behavior on all PUT and POST commands |
---|
11201 | Brian Warner <warner@allmydata.com>**20070816023149] |
---|
11202 | [webapi.txt: s/dirnodes/directories/ |
---|
11203 | zooko@zooko.com**20070816225353] |
---|
11204 | [webapi.txt: separate out debug/test commands, indicate that localfile=/localdir= requires special activation |
---|
11205 | warner@lothar.com**20070811012022] |
---|
11206 | [webapi.txt: put back the localfile feature |
---|
11207 | zooko@zooko.com**20070810195237 |
---|
11208 | So that we can compare versions webapi.txt with and without this documentation side by side. |
---|
11209 | |
---|
11210 | ] |
---|
11211 | [webapi.txt: some editing, and remove the localfile feature and the manifest feature |
---|
11212 | zooko@zooko.com**20070810192413 |
---|
11213 | My motivation to remove these features is as per: |
---|
11214 | |
---|
11215 | http://allmydata.org/pipermail/tahoe-dev/2007-August/000067.html |
---|
11216 | |
---|
11217 | However, I haven't heard back from Brian yet, so I'm actually going to put them back in the next patch so that I can compare the two versions of webapi.txt side by side. |
---|
11218 | |
---|
11219 | ] |
---|
11220 | [webapi.txt: put back the manifest feature |
---|
11221 | zooko@zooko.com**20070810195833 |
---|
11222 | So that we can compare versions of webapi.txt with and without this documentation, side by side. |
---|
11223 | ] |
---|
11224 | [webapi.txt: further refactoring and add a section explaining TOCTTOU bugs and how to avoid them by using URIs |
---|
11225 | zooko@zooko.com**20070810190430] |
---|
11226 | [webapi.txt: further refactoring and editing to clarify the fact that you don't know whether a thing is a file or a directory before you fetch it |
---|
11227 | zooko@zooko.com**20070810171927] |
---|
11228 | [add a 'rename' button to the webish dir view |
---|
11229 | robk-org@allmydata.com**20070712235354 |
---|
11230 | |
---|
11231 | alongside the 'del' button is now presented a 'rename' button, which takes |
---|
11232 | the user to a new page, the 't=rename-form' page, which asks ther user for |
---|
11233 | the new name of the child and ultimately submits a POST request to the dir |
---|
11234 | for 't=rename' to perform the actual rename i.e. an attach followed by a |
---|
11235 | delete of children. |
---|
11236 | ] |
---|
11237 | [webapi.txt: update rfc reference |
---|
11238 | warner@lothar.com**20070809182435] |
---|
11239 | [webapi.txt: add "?t=file" flag and reorganize doc to discourage people from thinking that they know before hand the file-or-dir type of the thing that they are naming |
---|
11240 | zooko@zooko.com**20070810164352] |
---|
11241 | [web: /uri/ must escape slashes, we use bangs for this |
---|
11242 | warner@lothar.com**20070708050652] |
---|
11243 | [web: remove t=XML, and other dead code |
---|
11244 | warner@lothar.com**20070708055515] |
---|
11245 | [webish.py: add links to JSON/etc representations of directory contents to the listing |
---|
11246 | warner@lothar.com**20070707183107] |
---|
11247 | [webapi: normalized API: use t=upload or t=download when providing localdir= or localfile= |
---|
11248 | warner@lothar.com**20070710202410] |
---|
11249 | [webapi updates |
---|
11250 | warner@lothar.com**20070707173707] |
---|
11251 | [web: use real JSON instead of the fake stubs |
---|
11252 | warner@lothar.com**20070708071711 |
---|
11253 | Also include the encoder portion of Bob Ippolito's simplejson-1.7.1 as |
---|
11254 | allmydata.util.json_encoder . simplejson is distributed under a more liberal |
---|
11255 | license than Tahoe (looks to be modified BSD), so redistributing it should be ok. |
---|
11256 | |
---|
11257 | ] |
---|
11258 | [web: add when_done to all POST operations, use it from upload/mkdir/mount/delete forms |
---|
11259 | warner@lothar.com**20070708041748] |
---|
11260 | [web: change per-directory forms to match new POST scheme |
---|
11261 | warner@lothar.com**20070708033547] |
---|
11262 | [webish: when mounting a shared directory, don't automatically move to it |
---|
11263 | warner@lothar.com**20070615093424] |
---|
11264 | [webish: log dirname in mkdir |
---|
11265 | warner@lothar.com**20070615094819] |
---|
11266 | [web: make 'delete' buttons work again |
---|
11267 | warner@lothar.com**20070708034630] |
---|
11268 | [web: remove debug prints |
---|
11269 | warner@lothar.com**20070708031130] |
---|
11270 | [web: more test work, now all tests either pass or are skipped (POST, XMLRPC, and URI/) |
---|
11271 | warner@lothar.com**20070707173405] |
---|
11272 | [add IDirectoryNode.get_child_at_path |
---|
11273 | warner@lothar.com**20070707023837] |
---|
11274 | [dirnode: add build_manifest() and introduce 'refresh capabilities' |
---|
11275 | warner@lothar.com**20070627024120] |
---|
11276 | [web: more test work, now all tests pass, POST too, only XMLRPC left to implement |
---|
11277 | warner@lothar.com**20070708030658] |
---|
11278 | [webapi: checkpointing more test progress |
---|
11279 | warner@lothar.com**20070707071636] |
---|
11280 | [webish.py: put the URI in a narrower auto-scrolling box (with CSS) |
---|
11281 | warner@lothar.com**20070615083220] |
---|
11282 | [webish: fix ?t=manifest, ?t=xml so they don't throw exceptions, prune directory.xhtml |
---|
11283 | warner@lothar.com**20070707181531] |
---|
11284 | [checkpointing new webapi: not all tests pass yet |
---|
11285 | warner@lothar.com**20070707024355] |
---|
11286 | [webish: display program/library versions on the welcome page |
---|
11287 | warner@allmydata.com**20070611175111] |
---|
11288 | [node.py: hush pyflakes warnings |
---|
11289 | warner@allmydata.com**20070524005448] |
---|
11290 | [make stopService() defer until startService() completes (fixes a problem with the new not-yet-committed unit test) |
---|
11291 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070523220803] |
---|
11292 | [update docs, remove extraneous licence text, sort module names in import statement |
---|
11293 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070521204251 |
---|
11294 | closes #46 ? |
---|
11295 | ] |
---|
11296 | [node.py: switch to using get_local_addresses_async, which is slightly more portable (most forms of unix) |
---|
11297 | warner@lothar.com**20070308211252] |
---|
11298 | [control: add RIControlClient, fix some pyflakes warnings |
---|
11299 | warner@lothar.com**20070308012027] |
---|
11300 | [fix handling of local_ip file and rename it to advertised_ip_addresses and document it in README |
---|
11301 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070522210140] |
---|
11302 | [make it print out version numbers when it constructs a Node instance |
---|
11303 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070427204738] |
---|
11304 | [some English usage edits to README, thanks to Stephen Hill |
---|
11305 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070502040323] |
---|
11306 | [add some simple create-client/start-client targets, document htem briefly |
---|
11307 | warner@allmydata.com**20070427031648] |
---|
11308 | [update README in response to some criticisms from some European grad student on IRC |
---|
11309 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070428001325] |
---|
11310 | [install libs into instdir/lib and scripts into instdir/bin |
---|
11311 | zooko@allmydata.com**20070501004910] |
---|
11312 | [don't include test code itself in the test-coverage numbers |
---|
11313 | warner@allmydata.com**20070416193245] |
---|
11314 | [remove "." from setup.py invocation because it seems to be screwing up paths in the .pyc's |
---|
11315 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430214336] |
---|
11316 | [build foolscap from the bundled snapshot |
---|
11317 | zooko@zooko.com**20070430024418 |
---|
11318 | and fix PYTHONPATH usage in a few places in GNUmakefile |
---|
11319 | |
---|
11320 | ] |
---|
11321 | [GNUmakefile: clean up better |
---|
11322 | zooko@zooko.com**20070418230954] |
---|
11323 | [GNUmakefile: rm -rf ./src/pyfec/build on clean |
---|
11324 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070418164947] |
---|
11325 | [GNUmakefile: don't stop clean if clean-pyfec fails |
---|
11326 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070418164824] |
---|
11327 | [GNUmakefile: 'test' should use zfec, not fec |
---|
11328 | warner@allmydata.com**20070419005918] |
---|
11329 | [port GNUmakefile to Windows, cygwin, Linux, MacOSX/PPC, MacOSX/Intel |
---|
11330 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070410192432 |
---|
11331 | And of course it may well work on lots of other modern unixes, too, especially the more GNUish ones. |
---|
11332 | ] |
---|
11333 | [include pyfec in the trial tests |
---|
11334 | warner@allmydata.com**20070407011723] |
---|
11335 | [pyfec: trial-ize the unit tests, making sure to keep working if trial is unavailable |
---|
11336 | warner@allmydata.com**20070407011650] |
---|
11337 | [pyfec: fix some error-checking, add more unit tests |
---|
11338 | warner@allmydata.com**20070328195312] |
---|
11339 | [pyfec: correctly handle wrongly typed input by raising exception |
---|
11340 | zooko@zooko.com**20070328065332] |
---|
11341 | [pyfec: fix preconditions and typing, remove unused error-checking, tidy-up naming and documentation |
---|
11342 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201060325] |
---|
11343 | [fix tests to not require pyutil and other tweaks |
---|
11344 | zooko@zooko.com**20070125212534] |
---|
11345 | [pyfec: add precondition checks on the values of k and m to constructors |
---|
11346 | zooko@zooko.com**20070126004704] |
---|
11347 | [pyfec: remove (optimize) unused code |
---|
11348 | zooko@zooko.com**20070127021028] |
---|
11349 | [add comment |
---|
11350 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070124212145] |
---|
11351 | [pyfec: trivial formatting tweak |
---|
11352 | zooko@zooko.com**20070127021053] |
---|
11353 | [pyfec: fix preconditions, tighten internal C types, fix bugs in the file-encoding and benchmarking utility functions |
---|
11354 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070130163735] |
---|
11355 | [use buffers as generic "read" buffers instead of char buffers |
---|
11356 | zooko@zooko.com**20070125212401 |
---|
11357 | This is a typing kludge -- if your buffers have elements of size > 1 then we will be processing only a subset of the elements and treating each byte of the element as a separate entry. |
---|
11358 | Oh well. |
---|
11359 | ] |
---|
11360 | [pyfec: make README.txt much more detailed and rename some internal variables and add some docstrings |
---|
11361 | zooko@zooko.com**20070127020850] |
---|
11362 | [stricter typing -- using unsigned char for indexes into shares |
---|
11363 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070124211751] |
---|
11364 | [add README.txt |
---|
11365 | zooko@zooko.com**20070126004637] |
---|
11366 | [pyfec: add utility functions to encode into a bunch of temp files and to decode from a bunch of tempfiles |
---|
11367 | zooko@zooko.com**20070127021527] |
---|
11368 | [pyfec: delete m-k of the tempfiles at random in the benchmark of the to/from files |
---|
11369 | zooko@zooko.com**20070127022213] |
---|
11370 | [pyfec: move benchmark code from test_pyfec.py into the new bench_pyfec.py and add more benchmark code |
---|
11371 | zooko@zooko.com**20070127021549] |
---|
11372 | [add benchmark |
---|
11373 | zooko@zooko.com**20070125233348] |
---|
11374 | [add utility method file_fec |
---|
11375 | zooko@zooko.com**20070125212519] |
---|
11376 | [pyfec: fix typo in unit test |
---|
11377 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201162846] |
---|
11378 | [pyfec: execute tests on import of test_pyfec.py only if it is the __main__ |
---|
11379 | zooko@zooko.com**20070127021759] |
---|
11380 | [use zfec's setuptools installer in the nice controllable way |
---|
11381 | zooko@allmydata.com**20070426224016] |
---|
11382 | [GNUmakefile: remove test-zfec target, since the normal 'test' target provides zfec coverage |
---|
11383 | warner@allmydata.com**20070418184100] |
---|
11384 | [pyflakes: do not assume that pyflakes lives in /usr/local, just assume that it is on the PATH |
---|
11385 | warner@allmydata.com**20070427020048] |
---|
11386 | [make pyflakes run faster and with more alacrity |
---|
11387 | zooko@zooko.com**20070427011235] |
---|
11388 | [edit README |
---|
11389 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501195724] |
---|
11390 | [improve "the Debian way" build process to produce foolscap .debs |
---|
11391 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070501194135] |
---|
11392 | [add .deb targets for edgy |
---|
11393 | warner@allmydata.com**20070404233925] |
---|
11394 | [large update to the install instructions in the README, and add a link to allmydata.org |
---|
11395 | zooko@zooko.com**20070430051633] |
---|
11396 | [update README to reflect simpler run-in-place procedure |
---|
11397 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070428001751] |
---|
11398 | [update README to show that foolscap is bundled and to fix the module name of zfec |
---|
11399 | zooko@zooko.com**20070430045623] |
---|
11400 | [update README to mention which dependencies are python packages |
---|
11401 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070427224313 |
---|
11402 | In particular, my brother is an Ubuntu/Debian user who said it would be nice if |
---|
11403 | we had mentioned that those packages were named "python-foo" in the apt package |
---|
11404 | namespace. |
---|
11405 | |
---|
11406 | ] |
---|
11407 | [more README updates in response to user feedback |
---|
11408 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070427230351 |
---|
11409 | The user in this case is my brother Josh. |
---|
11410 | ] |
---|
11411 | [webish.py: add a web page to display the manifest for any particular directory |
---|
11412 | warner@lothar.com**20070627025521] |
---|
11413 | [Add the 'vdrive' service, for clients to access the public/private root dirs. |
---|
11414 | warner@allmydata.com**20070628001106 |
---|
11415 | |
---|
11416 | These allow client-side code to conveniently retrieve the IDirectoryNode |
---|
11417 | instances for both the global shared public root directory, and the per-user |
---|
11418 | private root directory. |
---|
11419 | ] |
---|
11420 | [client.py: use persistent FURLs for our Node, to reduce spurious connection attempts (#26) |
---|
11421 | warner@allmydata.com**20070607223221] |
---|
11422 | [merge vdrive.py and filetable.py into a single dirnode.py |
---|
11423 | warner@lothar.com**20070627001658] |
---|
11424 | [remove old filetree code |
---|
11425 | warner@lothar.com**20070626033419] |
---|
11426 | [filetree: mark leaf nodes by adding is_leaf_subtree(), stop traversing when we hit them, to make vdrive._get_file_uri() work |
---|
11427 | warner@lothar.com**20070121193116] |
---|
11428 | [test_filetree: more vdrive._get_file_uri() coverage |
---|
11429 | warner@lothar.com**20070121193940] |
---|
11430 | [hush pyflakes |
---|
11431 | warner@allmydata.com**20070124212922] |
---|
11432 | [use the "binary" flag on open() for files that shouldn't have line-endings automatically converted |
---|
11433 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070404231230] |
---|
11434 | [vdrive.py: let put_file return the URI that was used for the file itself |
---|
11435 | warner@lothar.com**20070424084140] |
---|
11436 | [add licence, update metadata and URLs |
---|
11437 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070427204715] |
---|
11438 | [rename bin/allmydata to bin/allmydata-tahoe, so the package can co-exist with the regular (amdlib) package |
---|
11439 | warner@allmydata.com**20070120020533] |
---|
11440 | [relnotes.txt: English usage (more) |
---|
11441 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070419211648] |
---|
11442 | [relnotes.txt: update probable project URLs |
---|
11443 | warner@allmydata.com**20070420031121] |
---|
11444 | [further update the notes about the dependencies |
---|
11445 | zooko@zooko.com**20070427051613] |
---|
11446 | [update README re: dependencies |
---|
11447 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070427040049] |
---|
11448 | [add setuptools to required dependencies in README |
---|
11449 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070426225654] |
---|
11450 | [README: mention 'fakeroot' and other build dependencies to creat debian packages |
---|
11451 | warner@allmydata.com**20070426220022] |
---|
11452 | [update README |
---|
11453 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070426212815] |
---|
11454 | [tweak README |
---|
11455 | zooko@zooko.com**20070409231444] |
---|
11456 | [tahoe readme - updated to included all packages and clarify text |
---|
11457 | secorp@allmydata.com**20070329190232] |
---|
11458 | [update relnotes.txt |
---|
11459 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070427051920] |
---|
11460 | [a couple of minor edits to relnotes.txt |
---|
11461 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070426182457] |
---|
11462 | [relnotes.txt: fix typo |
---|
11463 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070419210520] |
---|
11464 | [update tarball URL |
---|
11465 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070427045436] |
---|
11466 | [globally search and replace "mesh" with "grid" and adjust description of the effect of NAT on the topology |
---|
11467 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430200609] |
---|
11468 | [vdrive: protect dirnode contents with an HMAC |
---|
11469 | warner@lothar.com**20070626193621] |
---|
11470 | [more runner.py test coverage: don't bypass argv parsing |
---|
11471 | warner@lothar.com**20070626235138] |
---|
11472 | [improve test coverage of runner.py |
---|
11473 | warner@lothar.com**20070626223646] |
---|
11474 | [test_runner.py: improve test coverage a little bit |
---|
11475 | warner@lothar.com**20070424042819] |
---|
11476 | [dump_uri_extension: improve test coverage of runner.py |
---|
11477 | warner@lothar.com**20070626225500] |
---|
11478 | [testutil: make SignalMixin actually be a mixin (and not inherit from TestCase), use it from all tests that start notes and thus exec ifconfig |
---|
11479 | warner@lothar.com**20070424041502] |
---|
11480 | [iputil/testutil: fix pyflakes errors/warnings |
---|
11481 | warner@allmydata.com**20070419013337] |
---|
11482 | [iputil.list_async_addresses now "works" on cygwin |
---|
11483 | zooko@zooko.com**20070419003008] |
---|
11484 | [util.iputil: try to survive not having a global network connection at all |
---|
11485 | warner@lothar.com**20070308002142] |
---|
11486 | [test_iputil: remove the test that only works on linux, since we're using the cross-unix 'get_local_addresses_async' anyways. This should allow the tests to pass on OS-X |
---|
11487 | warner@allmydata.com**20070329182117] |
---|
11488 | [oops -- the previous commit of iputil wasn't the right version |
---|
11489 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070416221201 |
---|
11490 | Too bad synchronizing pyutil and allmydata.util includes a manual step. |
---|
11491 | |
---|
11492 | ] |
---|
11493 | [test_iputil: improve error message |
---|
11494 | warner@allmydata.com**20070416220525] |
---|
11495 | [pyutil: iputil: fix netbsd, irix, sunos |
---|
11496 | zooko@zooko.com**20070418144026] |
---|
11497 | [iputil.py: remove unused import |
---|
11498 | warner@allmydata.com**20070417000800] |
---|
11499 | [port iputil to Windows (and Irix, and NetBSD, and Solaris 2, ...) |
---|
11500 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070416215913] |
---|
11501 | [iputil: use the subprocess module instead of os.popen |
---|
11502 | warner@lothar.com**20070308012900] |
---|
11503 | [iputil: use explicit /sbin/ifconfig, to avoid depending upon PATH |
---|
11504 | warner@lothar.com**20070308004740] |
---|
11505 | [iputil: switch to a scapy-inspired SIOCGIFADDR approach, very linux-specific now |
---|
11506 | warner@lothar.com**20070308020347] |
---|
11507 | [copy testutil from pyutil |
---|
11508 | zooko@zooko.com**20070419002836] |
---|
11509 | [copy repeatable_random from pyutil |
---|
11510 | zooko@zooko.com**20070419002733] |
---|
11511 | [remove unused/obsoleted workqueue.py |
---|
11512 | warner@lothar.com**20070627002523] |
---|
11513 | [fix some of the filetree/workqueue interface definitions |
---|
11514 | warner@allmydata.com**20070126233124] |
---|
11515 | [extirpate all references the "queen" and "metatracker" |
---|
11516 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430165752 |
---|
11517 | This is a potentially disruptive and potentially ugly change to the code base, |
---|
11518 | because I renamed the object that serves in both roles from "Queen" to |
---|
11519 | "IntroducerAndVdrive", which is a bit of an ugly name. |
---|
11520 | |
---|
11521 | However, I think that clarity is important enough in this release to make this |
---|
11522 | change. All unit tests pass. I'm now darcs recording this patch in order to |
---|
11523 | pull it to other machines for more testing. |
---|
11524 | |
---|
11525 | ] |
---|
11526 | [rename "pyfec" to "zfec" within tahoe build system and source code |
---|
11527 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070418171123] |
---|
11528 | [probably fix the debian dapper packaging to include pyfec and crypto.. sid still needs to be fixed |
---|
11529 | warner@allmydata.com**20070329190724] |
---|
11530 | [debian: change name of debian packages to 'allmydata-tahoe' to avoid conflicts |
---|
11531 | warner@allmydata.com**20061205204002] |
---|
11532 | [fix the sid debian packaging too |
---|
11533 | warner@allmydata.com**20070329191639] |
---|
11534 | [first attempt at adding debian packaging support for ubuntu 'feisty' |
---|
11535 | warner@allmydata.com**20070329213615] |
---|
11536 | [debian: give incrementing version numbers to .deb packages, using timestamps |
---|
11537 | warner@allmydata.com**20070106020651] |
---|
11538 | [dummy line to show off buildbot |
---|
11539 | warner@lothar.com**20070202224545] |
---|
11540 | [add some USAGE notes to the release notes, capitalize section headers, some small edits |
---|
11541 | warner@allmydata.com**20070420003006] |
---|
11542 | [relnotes.txt: English usage |
---|
11543 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070419211100] |
---|
11544 | [rough draft of release announcement for 0.1 |
---|
11545 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070419205513] |
---|
11546 | [more architecture docs, this is fun |
---|
11547 | warner@allmydata.com**20070420081429] |
---|
11548 | [add architecture/code-layout documents describing our current architecture and a bit of our future plans |
---|
11549 | warner@allmydata.com**20070420064347] |
---|
11550 | [add a couple of todos to roadmap.txt (one of which is to eliminate roadmap.txt) |
---|
11551 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070426230134] |
---|
11552 | [remove a couple of items from the todo list in roadmap.txt |
---|
11553 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070419204824] |
---|
11554 | [update roadmap |
---|
11555 | warner@allmydata.com**20070419174437] |
---|
11556 | [merge TODO into roadmap.txt |
---|
11557 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070410173338] |
---|
11558 | [update roadmap: add download-peer-selection |
---|
11559 | warner@allmydata.com**20070405193422] |
---|
11560 | [roadmap: connection management v1 milestone done |
---|
11561 | warner@lothar.com**20061201021924] |
---|
11562 | [update notes about lease deletion logic |
---|
11563 | zooko@zooko.com**20061204072512] |
---|
11564 | [update roadmap with webish UI progress |
---|
11565 | warner@lothar.com**20061205015622] |
---|
11566 | [got read/write webish interface working |
---|
11567 | Brian Warner <warner@lothar.com>**20061204182252] |
---|
11568 | [roadmap.txt: editing |
---|
11569 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070403173234] |
---|
11570 | [roadmap: updated who is working on what |
---|
11571 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070403171620 |
---|
11572 | Namely that we don't know who is working on what at the moment... |
---|
11573 | |
---|
11574 | ] |
---|
11575 | [update roadmap more |
---|
11576 | warner@lothar.com**20061204015505] |
---|
11577 | [add Operations/Deployment for first open source release |
---|
11578 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070403173247 |
---|
11579 | As per discussion I had with Peter this morning, we should do these three things and then release the first open source version. |
---|
11580 | |
---|
11581 | ] |
---|
11582 | [add TODO: port to Windows |
---|
11583 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070410162758] |
---|
11584 | [update TODO (add operational TODOs) |
---|
11585 | zooko@zooko.com**20070409232034] |
---|
11586 | [TODOs |
---|
11587 | zooko@zooko.com**20070330175211] |
---|
11588 | [add TODO |
---|
11589 | zooko@zooko.com**20070330031938] |
---|
11590 | [webish: fix link to private_vdrive |
---|
11591 | warner@allmydata.com**20070629020752] |
---|
11592 | [webish: make each link in the directory name an href to that directory |
---|
11593 | warner@allmydata.com**20070629181718] |
---|
11594 | [vdrive: switch to URI:DIR and URI:DIR-RO, providing transitive readonlyness |
---|
11595 | warner@lothar.com**20070625202351] |
---|
11596 | [filetable: oops, os.listdir() does not guarantee sorted results |
---|
11597 | warner@lothar.com**20070120190226] |
---|
11598 | [rename queen control files to 'introducer' |
---|
11599 | warner@allmydata.com**20070420012415] |
---|
11600 | [switch from FieldStorage.value to FieldStorage.file |
---|
11601 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070525230019 |
---|
11602 | Unfortunately this doesn't make the O(n) memory usage go away. It might reduce the constants -- I'm not sure. I look forward to enhancement #54 -- memory usage tests! |
---|
11603 | |
---|
11604 | ] |
---|
11605 | [test_filetable: fix to match new vdrive approach |
---|
11606 | warner@allmydata.com**20070615070101] |
---|
11607 | [runner.py: add 'dump-directory-node' command |
---|
11608 | warner@lothar.com**20070615074705] |
---|
11609 | [add 'allmydata-tahoe dump-uri-extension' utility command |
---|
11610 | warner@allmydata.com**20070612013821] |
---|
11611 | [runner.py: allow --multiple to enable starting/stopping/creating multiple nodes at once |
---|
11612 | warner@allmydata.com**20070606210657] |
---|
11613 | [test_runner.py: add some coverage for allmydata.scripts.runner, to create nodes |
---|
11614 | warner@allmydata.com**20070420015645] |
---|
11615 | [runner.py: allow all directory-using commands (create/start/stop) to accept argv[-1] as well as --basedir |
---|
11616 | warner@allmydata.com**20070606183719] |
---|
11617 | [runner.py: spoke too soon. Really fix #51 this time. |
---|
11618 | warner@allmydata.com**20070524182039] |
---|
11619 | [make runner find twistd and invoke it with python |
---|
11620 | zooko@zooko.com**20070427061413 |
---|
11621 | This makes allmydata-tahoe work on Windows, and probably doesn't make it fail on other platforms. |
---|
11622 | ] |
---|
11623 | [runner.py: expanduser() basedirs, so '~' works. Closes #51. |
---|
11624 | warner@allmydata.com**20070524181019] |
---|
11625 | [webish: enable deletion of directories |
---|
11626 | warner@lothar.com**20070615083257] |
---|
11627 | [create a personal (non-shared) vdrive, in addition to the global shared one |
---|
11628 | warner@lothar.com**20070615083324] |
---|
11629 | [minor change to test buildbot triggering for new repository |
---|
11630 | warner@allmydata.com**20061207210520] |
---|
11631 | [check_memory.py: finish the failsafe-shutdown code |
---|
11632 | warner@allmydata.com**20070525003442] |
---|
11633 | [make new vdrive work, implement convenience wrapper, passes all tests |
---|
11634 | warner@lothar.com**20070615073732] |
---|
11635 | [webish: present real URI in directory listing, not an unnecessarily b2a'ed form |
---|
11636 | warner@allmydata.com**20070117204602] |
---|
11637 | [vdrive/webish: finish verifierid/uri transition |
---|
11638 | warner@allmydata.com**20070117014313] |
---|
11639 | [add some vdrive logging |
---|
11640 | warner@lothar.com**20061204064636] |
---|
11641 | [webish: show vdrive and introducer connectedness separately |
---|
11642 | warner@lothar.com**20070610040357 |
---|
11643 | Also don't offer a link to the vdrive webpages if we don't have a vdrive.furl |
---|
11644 | ] |
---|
11645 | [fix some python2.5 incompatibilities, and remove an old webish display that suggested we might know about peers but not be connected to them |
---|
11646 | warner@allmydata.com**20070328004449] |
---|
11647 | [replace 'queen' with 'introducer' in a lot of places, but not all |
---|
11648 | warner@allmydata.com**20070420003021] |
---|
11649 | [fix return value of 'allmydata restart' |
---|
11650 | Brian Warner <warner@lothar.com>**20061206014352] |
---|
11651 | [add more useful text to the README |
---|
11652 | warner@allmydata.com**20070405005535] |
---|
11653 | [port the makefile to Windows and update the README |
---|
11654 | zooko@allmydata.com**20070404181838] |
---|
11655 | [Makefile: add a default target to just build the tree |
---|
11656 | warner@lothar.com**20070107190937] |
---|
11657 | [add test-pyfec target, not added to the main 'test' target because it adds 20 seconds to the test run |
---|
11658 | warner@lothar.com**20070308235438] |
---|
11659 | [fix purely syntactic merge conflict |
---|
11660 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201220707] |
---|
11661 | [Makefile: $(PWD) doesn't always work, in particular the buildslaves don't |
---|
11662 | Brian Warner <warner@allmydata.com>**20070201093913 |
---|
11663 | update environment variables like $(PWD) when the launch commands. |
---|
11664 | ] |
---|
11665 | ["make clean" recursively runs cleanup in subprojects (pyfec and Crypto) |
---|
11666 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201214952] |
---|
11667 | [Makefile: update figleaf code to use INSTDIR instead of now-obsolete builddir.py |
---|
11668 | warner@allmydata.com**20070306014606] |
---|
11669 | [Makefile: parameterize 'trial' and 'python' to enable a python2.5 builder |
---|
11670 | warner@allmydata.com**20070201011233] |
---|
11671 | [modify figleaf2html to show module names instead of .py filenames, also add a --root argument to restrict coverage to a specific parent directory |
---|
11672 | warner@lothar.com**20070104042325] |
---|
11673 | [move figleaf2html and figleaf_htmlizer.py into our tree, for easier customization |
---|
11674 | warner@lothar.com**20070104040651] |
---|
11675 | [figleaf: delete coverage file (.figleaf) before each test run, otherwise I suspect coverage data will accumulate from one test run to the next |
---|
11676 | warner@allmydata.com**20070109032808] |
---|
11677 | [figleaf.el: when converting to the elisp-readable format, use our in-tree version of figleaf rather than one found on the system. Also change the keybinding to toggle annotations to C-cC-a, which is easier to type |
---|
11678 | warner@allmydata.com**20070109032903] |
---|
11679 | [more figleaf emacs work: enable the minor mode, then type C-cA to toggle annotations |
---|
11680 | warner@lothar.com**20070104072536] |
---|
11681 | [forget about old peers (closes #26) |
---|
11682 | warner@allmydata.com*-20070508021024 |
---|
11683 | Add a new method to RIIntroducer, to allow the central introducer node to |
---|
11684 | remove peers from the active set after they've gone away. Without this, |
---|
11685 | client nodes accumulate stale peer FURLs forever. This introduces a |
---|
11686 | compatibility break, as old introducers won't know about the 'lost_peers' |
---|
11687 | message, although the errors produced are probably harmless. |
---|
11688 | |
---|
11689 | ] |
---|
11690 | [forget about old peers (closes #26) |
---|
11691 | warner@allmydata.com**20070508021024 |
---|
11692 | Add a new method to RIIntroducer, to allow the central introducer node to |
---|
11693 | remove peers from the active set after they've gone away. Without this, |
---|
11694 | client nodes accumulate stale peer FURLs forever. This introduces a |
---|
11695 | compatibility break, as old introducers won't know about the 'lost_peers' |
---|
11696 | message, although the errors produced are probably harmless. |
---|
11697 | |
---|
11698 | ] |
---|
11699 | [revamp vdrive: nodes with furls. tests still fail. |
---|
11700 | warner@allmydata.com**20070615031434] |
---|
11701 | [test_system: improve webish.py coverage |
---|
11702 | warner@lothar.com**20070424084154] |
---|
11703 | [add RIClient.get_versions, in the hopes of enabling backwards-compatibility code in the future |
---|
11704 | warner@allmydata.com**20070426190125] |
---|
11705 | [enable private upload, in which the file is inserted at the grid layer but not at the vdrive layer |
---|
11706 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070516154019 |
---|
11707 | This patch is actually by Faried Nawaz, as per ticket #33: |
---|
11708 | |
---|
11709 | http://allmydata.org/trac/tahoe/ticket/33 |
---|
11710 | |
---|
11711 | ] |
---|
11712 | [test_system.py: minor reformatting |
---|
11713 | warner@allmydata.com**20070601013101] |
---|
11714 | [client.py: allow operation without vdrive.furl, for storage-only no-UI nodes |
---|
11715 | warner@allmydata.com**20070608005549] |
---|
11716 | [move almost all hashing to SHA256, consolidate into hashutil.py |
---|
11717 | warner@allmydata.com**20070608044721 |
---|
11718 | |
---|
11719 | The only SHA-1 hash that remains is used in the permutation of nodeids, |
---|
11720 | where we need to decide if we care about performance or long-term security. |
---|
11721 | I suspect that we could use a much weaker hash (and faster) hash for |
---|
11722 | this purpose. In the long run, we'll be doing thousands of such hashes |
---|
11723 | for each file uploaded or downloaded (one per known peer). |
---|
11724 | |
---|
11725 | ] |
---|
11726 | [hashutil: convenience methods for tagged and encoded hashes |
---|
11727 | zooko@zooko.com**20070330011130 |
---|
11728 | In various cases, including Merkle Trees, it is useful to tag and encode the inputs to your secure hashes to prevent security flaws due to ambiguous meanings of hash values. |
---|
11729 | ] |
---|
11730 | [interfaces: use explicit TupleOf and ChoiceOf constraints, since the upcoming version of Foolscap changes the meaning of bare tuples (from ChoiceOf to TupleOf) |
---|
11731 | warner@lothar.com**20070414020438] |
---|
11732 | [raise constraint on FURLs from 150 chars to 1000 chars |
---|
11733 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070522205917] |
---|
11734 | [encode/download: reduce memory footprint by deleting large intermediate buffers as soon as possible, improve hash tree usage |
---|
11735 | warner@lothar.com**20070607201558] |
---|
11736 | [encode.py: hush pyflakes warnings |
---|
11737 | warner@lothar.com**20070607201855] |
---|
11738 | [encode.py: fix pyflakes warning |
---|
11739 | Brian Warner <warner@lothar.com>**20070607095616] |
---|
11740 | [test_encode.py: even more testing of merkle trees, getting fairly comprehensive now |
---|
11741 | warner@allmydata.com**20070608042439] |
---|
11742 | [change #!/usr/bin/python to #!/usr/bin/env python |
---|
11743 | zooko@zooko.com**20070329210128 |
---|
11744 | Note that using "whatever version of python the name 'python' maps to in the current shell environment" is more error-prone that specifying which python you mean, such as by executing "/usr/bin/python setup.py" instead of executing "./setup.py". When you build tahoe (by running "make") it will make a copy of bin/allmydata-tahoe in instdir/bin/allmydata-tahoe with the shebang line rewritten to execute the specific version of python that was used when building instead of to execute "/usr/bin/env python". |
---|
11745 | |
---|
11746 | However, it seems better that the default for lazy people be "whatever 'python' means currently" instead of "whatever 'python' meant to the manufacturer of your operating system". |
---|
11747 | |
---|
11748 | ] |
---|
11749 | [tool to generate an overhead/alacrity table for various hashing schemes |
---|
11750 | warner@lothar.com**20061022031004] |
---|
11751 | [added a simulator tool |
---|
11752 | warner@lothar.com**20061128222708] |
---|
11753 | [control.py: fix get_memory_usage, add a sample client tool |
---|
11754 | warner@lothar.com**20070308023149] |
---|
11755 | [add tests for bad/inconsistent plaintext/crypttext merkle tree hashes |
---|
11756 | warner@allmydata.com**20070608023229] |
---|
11757 | [download.py: refactor get-thingA-from-somebody to reuse the logic for other things |
---|
11758 | warner@lothar.com**20070607065002] |
---|
11759 | [fetch plaintext/crypttext merkle trees during download, but don't check the segments against them yet |
---|
11760 | warner@lothar.com**20070607071541] |
---|
11761 | [use absolute import of 'allmydata.Crypto' rather than a relative import of just 'Crypto', to make it clear that we're using our own form rather than relying upon the system version |
---|
11762 | warner@allmydata.com**20070106031226] |
---|
11763 | [encode: add plaintext/crypttext merkle trees to the shares, and the thingA block. Still needs tests and download-side verification. |
---|
11764 | warner@lothar.com**20070607024020] |
---|
11765 | [encode.py: clean up handling of lost peers during upload, add some logging |
---|
11766 | warner@allmydata.com**20070606194016] |
---|
11767 | [test_encode.py: further refactoring of send_and_recover |
---|
11768 | warner@allmydata.com**20070608013625] |
---|
11769 | [test_encode.py: refactor send_and_recover a bit |
---|
11770 | warner@allmydata.com**20070608012426] |
---|
11771 | [encode: tolerate lost peers, as long as we still get enough shares out. Closes #17. |
---|
11772 | warner@allmydata.com**20070606173240] |
---|
11773 | [move validation data to thingA, URI has storage_index plus thingA hash |
---|
11774 | warner@allmydata.com**20070602014801 |
---|
11775 | |
---|
11776 | This (compatibility-breaking) change moves much of the validation data and |
---|
11777 | encoding parameters out of the URI and into the so-called "thingA" block |
---|
11778 | (which will get a better name as soon as we find one we're comfortable with). |
---|
11779 | The URI retains the "storage_index" (a generalized term for the role that |
---|
11780 | we're currently using the verifierid for, the unique index for each file |
---|
11781 | that gets used by storage servers to decide which shares to return), the |
---|
11782 | decryption key, the needed_shares/total_shares counts (since they affect |
---|
11783 | peer selection), and the hash of the thingA block. |
---|
11784 | |
---|
11785 | This shortens the URI and lets us add more kinds of validation data without |
---|
11786 | growing the URI (like plaintext merkle trees, to enable strong incremental |
---|
11787 | plaintext validation), at the cost of maybe 150 bytes of alacrity. Each |
---|
11788 | storage server holds an identical copy of the thingA block. |
---|
11789 | |
---|
11790 | This is an incompatible change: new messages have been added to the storage |
---|
11791 | server interface, and the URI format has changed drastically. |
---|
11792 | |
---|
11793 | ] |
---|
11794 | [fix BucketWriter to not create a finalhome until it is complete, and to clean up the empty $VERIFIERID dir under incoming/ when it moves the last share out of it |
---|
11795 | zooko@zooko.com**20070331010156] |
---|
11796 | [storageserver: ignore files in verifierdir whose filenames aren't of the right form for shares |
---|
11797 | zooko@zooko.com**20070418144156] |
---|
11798 | [fix storage server to handle the case that it has no directory at all when someone asks for buckets |
---|
11799 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070331001207] |
---|
11800 | [fix bug in storage-server: yes, "0" is a number, Mr. storage server |
---|
11801 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070331000704] |
---|
11802 | [factor out the tagged hash function used for subshares/blocks |
---|
11803 | warner@allmydata.com**20070418032756] |
---|
11804 | [encode.py: remove an unused import |
---|
11805 | warner@allmydata.com**20070413030932] |
---|
11806 | [log a running total of how much of your file has been uploaded |
---|
11807 | zooko@zooko.com**20070331010137] |
---|
11808 | [download: remove unused import |
---|
11809 | warner@allmydata.com**20070418041120] |
---|
11810 | [make test_encode less CPU-intense by using 4-out-of-10 encoding instead of 25-out-of-100 |
---|
11811 | warner@allmydata.com**20070419175615] |
---|
11812 | [download: validate handling of missing sharehashes too |
---|
11813 | warner@allmydata.com**20070417001544] |
---|
11814 | [interfaces: allow URIs to be up to 300 chars long, we're just crossing over the edge now |
---|
11815 | warner@allmydata.com**20070427010829] |
---|
11816 | [allmydata.interfaces: remove some of the placeholders now that we require foolscap-0.1.2 |
---|
11817 | warner@lothar.com**20070404225936] |
---|
11818 | [added a README explaining how to get started and what library dependencies are needed |
---|
11819 | warner@allmydata.com**20070328174829] |
---|
11820 | [raise the limit on the number of hashes when retrieving them, too |
---|
11821 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070430130010] |
---|
11822 | [change uri-packer-unpacker to deal with dictionaries, not fragile tuples |
---|
11823 | warner@allmydata.com**20070523181849] |
---|
11824 | [uri.py: share counts are not base32-encoded |
---|
11825 | warner@allmydata.com**20070330193616] |
---|
11826 | [use real encryption, generate/store/verify verifierid and fileid |
---|
11827 | warner@allmydata.com**20070426005310] |
---|
11828 | [download: remove some leftover (and not very useful) debug logging |
---|
11829 | warner@allmydata.com**20070417001757] |
---|
11830 | [test_encode.Encode: cover more combinations of data size relative to segment size and number of block hash tree leaves |
---|
11831 | warner@allmydata.com**20070417192956] |
---|
11832 | [test_encode.Roundtrip: cover more combinations of data size relative to segment size and number of block hash tree leaves |
---|
11833 | warner@allmydata.com**20070417195755] |
---|
11834 | [encode: make MAX_SEGMENT_SIZE controllable, to support tests which force the use of multiple segments. Also, remove not-very-useful upload-side debug messages |
---|
11835 | warner@allmydata.com**20070417022957] |
---|
11836 | [test_encode: test filesizes which are an exact multiple of the segment size. This test fails right now. |
---|
11837 | warner@allmydata.com**20070417025503] |
---|
11838 | [download: more test coverage |
---|
11839 | warner@allmydata.com**20070417002137] |
---|
11840 | [download: verify that bad blocks or hashes are caught by the download process |
---|
11841 | warner@allmydata.com**20070416233021] |
---|
11842 | [download: log more information when hashtree checks fail |
---|
11843 | warner@allmydata.com**20070416200819] |
---|
11844 | [encode: handle uploads of the same file multiple times. Unfortunately we have to do almost as much work the second time around, to compute the full URI |
---|
11845 | warner@allmydata.com**20070419012910] |
---|
11846 | [encode: clean up some weirdness that was there to make unit tests easier to write |
---|
11847 | warner@lothar.com**20070406053618] |
---|
11848 | [download: improve test coverage on our IDownloadTarget classes, make FileHandle return the filehandle when its done so that it is easier to close |
---|
11849 | warner@allmydata.com**20070416200736] |
---|
11850 | [system_test: exercise multiple segments |
---|
11851 | warner@allmydata.com**20070417204047] |
---|
11852 | [test_system: bump up timeouts for the sake of slow slave1, give each test a separate base directory |
---|
11853 | warner@lothar.com**20070407033432] |
---|
11854 | [test_system.py: remove the lowered (20s) timeouts, since some buildslaves require more like 30 or 40 seconds to complete the test |
---|
11855 | warner@lothar.com**20070308233009] |
---|
11856 | [webish: add 'my nodeid' to the page |
---|
11857 | warner@allmydata.com**20070329213155] |
---|
11858 | [tests: clean up tearDown to use flushEventualQueue instead of hacking fixed-time delays |
---|
11859 | warner@allmydata.com**20070404230913] |
---|
11860 | [display file size in directory.xhtml |
---|
11861 | Faried Nawaz <self@node.pk>**20070504200732] |
---|
11862 | [webish: more verifierid-to-uri transition |
---|
11863 | warner@allmydata.com**20070117015553] |
---|
11864 | [download.py: refactor bucket_failed() a bit, add some docs |
---|
11865 | warner@allmydata.com**20070601013136] |
---|
11866 | [hash trees: further cleanup, to make sure we're validating the right thing |
---|
11867 | warner@allmydata.com**20070413024148 |
---|
11868 | hashtree.py: improve the methods available for finding out which hash nodes |
---|
11869 | are needed. Change set_hashes() to require that every hash provided can |
---|
11870 | be validated up to the root. |
---|
11871 | download.py: validate from the top down, including the URI-derived roothash |
---|
11872 | in the share hash tree, and stashing the thus-validated share hash for use |
---|
11873 | in the block hash tree. |
---|
11874 | ] |
---|
11875 | [encode: add more logging to investigate occasional test failures |
---|
11876 | warner@allmydata.com**20070407010438] |
---|
11877 | [encode/upload: add more logging, to understand the test failure on a slow buildslave |
---|
11878 | warner@allmydata.com**20070406224545] |
---|
11879 | [hashtree.py: reindent from 2-spaces to 4-spaces. No functional changes. |
---|
11880 | warner@allmydata.com**20070412212411] |
---|
11881 | [encode: start to fix a few problems, still a lot of work left to go |
---|
11882 | warner@lothar.com**20061214103117] |
---|
11883 | [download: always validate the blockhash, and don't let the bucket trick us into not validating hashes |
---|
11884 | warner@allmydata.com**20070412221846] |
---|
11885 | [verify hash chains on incoming blocks |
---|
11886 | warner@allmydata.com**20070412200740 |
---|
11887 | Implement enough of chunk.IncompleteHashTree to be usable. |
---|
11888 | Rearrange download: all block/hash requests now go through |
---|
11889 | a ValidatedBucket instance, which is responsible for retrieving |
---|
11890 | and verifying hashes before providing validated data. Download |
---|
11891 | was changed to use ValidatedBuckets everywhere instead of |
---|
11892 | unwrapped RIBucketReader references. |
---|
11893 | ] |
---|
11894 | [chunk.py: remove unused non-tagged hash code |
---|
11895 | warner@allmydata.com**20070330183247] |
---|
11896 | [chunk.py: fix a pyflakes warning |
---|
11897 | warner@allmydata.com**20070330024940] |
---|
11898 | [finish making the new encoder/decoder/upload/download work |
---|
11899 | warner@allmydata.com**20070330235050] |
---|
11900 | [small tweaks to test_storage.py |
---|
11901 | zooko@zooko.com**20061204073559] |
---|
11902 | [encode_new: use tagged (sha256) hashes everywhere |
---|
11903 | warner@allmydata.com**20070330183213] |
---|
11904 | [upload: change _compute_uri a bit, get infile in a different way |
---|
11905 | warner@allmydata.com**20070330193014] |
---|
11906 | [add unit tests and fix bugs in upload |
---|
11907 | zooko@zooko.com**20070330215433] |
---|
11908 | [hush pyflakes warnings |
---|
11909 | warner@allmydata.com**20070117033434] |
---|
11910 | [switch upload to use encode_new, fix a few things (but not nearly all of them) |
---|
11911 | warner@allmydata.com**20070330185303] |
---|
11912 | [encode_new.py: add comments, make variable names more illuminating |
---|
11913 | warner@allmydata.com**20070328180619] |
---|
11914 | [ICodecEncoder: resolve some questions about the API, still more to examine |
---|
11915 | warner@allmydata.com**20070328031445] |
---|
11916 | [update the docs on ICodecEncoder and ICodecDecoder |
---|
11917 | warner@allmydata.com**20070328020509] |
---|
11918 | [add some questions to allmydata.interfaces |
---|
11919 | warner@allmydata.com**20070306025738] |
---|
11920 | [encode_new.py: rearrange methods into the order in which they should be called |
---|
11921 | warner@allmydata.com**20070328203017] |
---|
11922 | [chunk: add IncompleteHashTree for download purposes, plus tests |
---|
11923 | warner@lothar.com**20070406160957] |
---|
11924 | [change HashTree to use new hashutil convenience methods, thus fixing a security flaw |
---|
11925 | zooko@zooko.com**20070330011235] |
---|
11926 | [download: retrieve share hashes when downloading. We don't really do much validation with them yet, though. |
---|
11927 | warner@lothar.com**20070407055119] |
---|
11928 | [add new test for doing an encode/decode round trip, and make it almost work |
---|
11929 | warner@allmydata.com**20070330202001] |
---|
11930 | [finish storage server and write new download |
---|
11931 | zooko@zooko.com**20070330175219] |
---|
11932 | [fix counting of bytes written |
---|
11933 | robk@allmydata.com**20061201023736] |
---|
11934 | [fix another read_attr bug |
---|
11935 | robk@allmydata.com**20061201024907] |
---|
11936 | [fix bug in bucketstore read/write _attr |
---|
11937 | robk@allmydata.com**20061201023657] |
---|
11938 | [mv amdlib/util/* to allmydata/util/ |
---|
11939 | zooko@zooko.com**20061204080325] |
---|
11940 | [pulled in assertutil and with it humanreadable from amdlib.util |
---|
11941 | robk@allmydata.com**20061130212225] |
---|
11942 | [fix pyflakes warning in debugshell, by providing a dummy value for 'app' that will be overwritten when the manhole connection is established |
---|
11943 | warner@allmydata.com**20070106031559] |
---|
11944 | [hush pyflakes warnings |
---|
11945 | warner@allmydata.com**20070116033110] |
---|
11946 | [update the use of the encoder API in download.py |
---|
11947 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201223013] |
---|
11948 | [test_encode: make sure encode_new can produce the data it is supposed to |
---|
11949 | warner@allmydata.com**20070330183257] |
---|
11950 | [new upload and storage server |
---|
11951 | zooko@zooko.com**20070330031952] |
---|
11952 | [make initial simple encode_new test pass |
---|
11953 | warner@lothar.com**20061214101701] |
---|
11954 | [change upload to push 2 shares instead of 3 |
---|
11955 | warner@allmydata.com**20070116211526 |
---|
11956 | Now that peers can talk to themselves, the 5-node system test won't fail |
---|
11957 | just because one of the shares was hosted on the downloader (and thus |
---|
11958 | inaccessible until recently). The 3-share push was there to avoid this |
---|
11959 | problem. |
---|
11960 | ] |
---|
11961 | [upload: fix typo in debug messages |
---|
11962 | warner@allmydata.com**20070117014228] |
---|
11963 | [encode_new.py: recent Foolscap accepts 'None' as a constraint |
---|
11964 | warner@allmydata.com**20070117015630] |
---|
11965 | [figleaf doesn't like the last line of a file to be a comment |
---|
11966 | warner@allmydata.com**20061214023512] |
---|
11967 | [filetree: make delete() work |
---|
11968 | warner@allmydata.com**20070124211053] |
---|
11969 | [filetree: change the way addpath works, now we add workqueue steps for all involved subtrees at about the same time, rather than letting one step add the next when it runs. Finally add a (passing) test for uploading files to CHK-based directories |
---|
11970 | warner@lothar.com**20070122070609] |
---|
11971 | [filetree: add vdrive upload/download test, change workqueue relative-filename semantics |
---|
11972 | warner@lothar.com**20070121220315] |
---|
11973 | [workqueue: more tests, coverage now at 63.4%, yay |
---|
11974 | warner@lothar.com**20070109073612] |
---|
11975 | [workqueue: more tests |
---|
11976 | warner@lothar.com**20070109075850] |
---|
11977 | [filetree: test NoSuchDirectoryError in vdrive.list() |
---|
11978 | warner@lothar.com**20070121105037] |
---|
11979 | [complete the Introducer changes, separate out vdrive access, make everything work again |
---|
11980 | warner@allmydata.com**20070327231211] |
---|
11981 | [make sure the StorageServer goes underneath the client's basedir |
---|
11982 | warner@lothar.com**20061203065228] |
---|
11983 | [clients now get the queen's pburl from a file named roster_pburl, not hardcoded in the .tac file |
---|
11984 | warner@lothar.com**20061204102740] |
---|
11985 | [fix bin/allmydata argument-parsing |
---|
11986 | warner@lothar.com**20061205183515] |
---|
11987 | [webish: add queen pburl and connection status to welcome page |
---|
11988 | warner@lothar.com**20061205185132] |
---|
11989 | [queen.sendOnly: ignore DeadReferenceError too |
---|
11990 | warner@lothar.com**20070121220109] |
---|
11991 | [sendOnly: oops, I keep forgetting that you can't really use f.trap in a lambda, because it returns the failure it trapped |
---|
11992 | warner@allmydata.com**20070110031305] |
---|
11993 | [hush a pyflakes warning |
---|
11994 | Brian Warner <warner@allmydata.com>**20070323052200] |
---|
11995 | [more work on a memory-footprint test program |
---|
11996 | warner@lothar.com**20070312232837] |
---|
11997 | [add new build/instdir directories to the boringfile |
---|
11998 | warner@allmydata.com**20070131000345] |
---|
11999 | [add some experimental emacs test-coverage-annotation tools, still in development |
---|
12000 | warner@lothar.com**20070102054842] |
---|
12001 | [start work on a memory-measuring test tool |
---|
12002 | warner@lothar.com**20070309001224] |
---|
12003 | [Makefile: count-lines: ignore build/* files, also add total number of .py files |
---|
12004 | warner@allmydata.com**20070131001037] |
---|
12005 | [Makefile: add target to count lines of code and TODOs |
---|
12006 | warner@lothar.com**20070122071739] |
---|
12007 | [merge incomplete stuff with other patches |
---|
12008 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070323232026] |
---|
12009 | [add a local foolscap control interface, to upload/download files and check memory usage |
---|
12010 | warner@lothar.com**20070308011606] |
---|
12011 | [move IWorkQueue into allmydata.interfaces, give VirtualDrive an uploader |
---|
12012 | warner@lothar.com**20070121211531] |
---|
12013 | [more filetree, workqueue-boxes now hold serialized Nodes, move NodeMaker out to a separate module |
---|
12014 | warner@lothar.com**20070121101854] |
---|
12015 | [workqueue: more improvements, more tests |
---|
12016 | warner@allmydata.com**20070109042942] |
---|
12017 | [workqueue: start adding tests |
---|
12018 | warner@allmydata.com**20070109032933] |
---|
12019 | [move upload/download interfaces to allmydata.interfaces, let SubTreeMaker assert IDownloader-ness of its 'downloader' argument |
---|
12020 | warner@lothar.com**20070121210134] |
---|
12021 | [download.py: fix IDownloader to take a URI |
---|
12022 | warner@lothar.com**20070119081748] |
---|
12023 | [filetree: start testing IVirtualDrive, beginning with list() |
---|
12024 | warner@lothar.com**20070121031441] |
---|
12025 | [filetree: put SubTreeMaker and NodeMaker in separate classes |
---|
12026 | warner@lothar.com**20070120230456] |
---|
12027 | [more filetree work, more tests now pass |
---|
12028 | warner@lothar.com**20070120215021] |
---|
12029 | [more filetree, it's actually starting to make sense now |
---|
12030 | warner@lothar.com**20070120204151] |
---|
12031 | [filetree: more tests, still very early |
---|
12032 | warner@lothar.com**20070120111315] |
---|
12033 | [filetree: refactor INode serialization, start on tests |
---|
12034 | warner@lothar.com**20070120105253] |
---|
12035 | [more filetree hacking, still too early to test |
---|
12036 | warner@lothar.com**20070120102520] |
---|
12037 | [checkpont more filetree stuff |
---|
12038 | warner@allmydata.com**20070120052239] |
---|
12039 | [snapshot filetree work: fix pyflakes complaints |
---|
12040 | warner@lothar.com**20070119083536] |
---|
12041 | [snapshot filetree work: it's getting close |
---|
12042 | warner@lothar.com**20070119082303] |
---|
12043 | [workqueue: fix pyflakes warnings, code is still quite incomplete |
---|
12044 | warner@allmydata.com**20070106031119] |
---|
12045 | [filetree.interfaces: remove not-really-code to improve coverage stats |
---|
12046 | warner@allmydata.com**20070117230047] |
---|
12047 | [rearrange service startup a bit, now Node.startService() returns a Deferred that fires when the tub is actually ready, and there is also a Node.when_tub_ready() hook. This allows get_local_addresses() to be slow and not break everything. Changed all necessary test cases to accomodate this slow startup. |
---|
12048 | warner@lothar.com**20070308211036] |
---|
12049 | [change node startup to put all local addresses in the PBURL, including 127.0.0.1. This should facilitate testing on both connected and disconnected systems. |
---|
12050 | warner@lothar.com**20070308004317] |
---|
12051 | [iputil: add get_local_addresses(), an attempt to enumerate all IPv4 addresses on this host. This is pretty unix-specific for right now (it calls ifconfig) |
---|
12052 | warner@lothar.com**20070308002230] |
---|
12053 | [incomplete work to be finished elsewhere |
---|
12054 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070323231557] |
---|
12055 | [client: closures confuse me, late binding bites me yet again |
---|
12056 | warner@lothar.com**20061203065307] |
---|
12057 | [add simple metadata (a single string) to the storage protocol |
---|
12058 | warner@allmydata.com**20070115200122] |
---|
12059 | [remove a couple of unused methods of buckets |
---|
12060 | zooko@zooko.com**20061204081401] |
---|
12061 | [now that foolscap-0.0.7 accepts connect-to-self, allow peers to know about themselves. We now require foolscap-0.0.7 |
---|
12062 | warner@allmydata.com**20070116211249] |
---|
12063 | [test_system.py: exercise queen.Roster._lost_node too |
---|
12064 | warner@allmydata.com**20070110014036] |
---|
12065 | [webish: add PBURL to the all-peers table on the welcome page |
---|
12066 | warner@allmydata.com**20070117030118] |
---|
12067 | [make logging multiple nodes at once easier to follow |
---|
12068 | warner@lothar.com**20061203022750] |
---|
12069 | [separate queen's service of introduction-to-the-network from queen's service of providing-access-to-the-vdrive |
---|
12070 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070322213930] |
---|
12071 | [fix test_codec and test_upload to handle current API |
---|
12072 | zooko@zooko.com**20070328055715] |
---|
12073 | [upload: rearrange peer-selection code to be more readable, and fix a silly bug |
---|
12074 | warner@allmydata.com**20070117013512] |
---|
12075 | [oops, fix that NotEnoughPeersError instrumentation |
---|
12076 | warner@allmydata.com**20070117010723] |
---|
12077 | [add better error reporting to NotEnoughPeersError |
---|
12078 | warner@allmydata.com**20070117004752] |
---|
12079 | [update ReplicatingEncoder and decoder to match the current ICodecEncoder/decoder interface |
---|
12080 | warner@lothar.com**20070328051731] |
---|
12081 | [switch to pyfec |
---|
12082 | zooko@zooko.com**20070328070516] |
---|
12083 | [update roadmap |
---|
12084 | warner@lothar.com**20070119081724] |
---|
12085 | [update roadmap |
---|
12086 | warner@lothar.com**20061204015133] |
---|
12087 | [more roadmap updates |
---|
12088 | warner@lothar.com**20061204104333] |
---|
12089 | [document IEncoder, add Encoder.set_landlords() |
---|
12090 | warner@allmydata.com**20070328182453] |
---|
12091 | [use pyfec instead of py_ecc for erasure coding and update API to codec |
---|
12092 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201220700] |
---|
12093 | [disable figleaf tracing during py_ecc, since it takes *forever*, especially on the slow buildslave |
---|
12094 | warner@allmydata.com**20070106001204] |
---|
12095 | [figleaf: move a copy into allmydata.util.figleaf, update Makefile/trial stuff |
---|
12096 | warner@lothar.com**20070104033829] |
---|
12097 | [Makefile: allow 'make test TEST=something.else' |
---|
12098 | warner@lothar.com**20061214101329] |
---|
12099 | [Makefile: fix location of figleaf.excludes |
---|
12100 | warner@lothar.com**20061214101643] |
---|
12101 | [Makefile: add pyflakes target, only covering allmydata code (not pycrypto) |
---|
12102 | warner@lothar.com**20061214100522] |
---|
12103 | [add figleaf-output target |
---|
12104 | warner@allmydata.com**20061207012402] |
---|
12105 | [encode.py: add some timing comments |
---|
12106 | warner@allmydata.com**20070105064842] |
---|
12107 | [update URI format, include codec name |
---|
12108 | warner@allmydata.com**20070117032959] |
---|
12109 | [update interfaces and docs for codec |
---|
12110 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070124213402 |
---|
12111 | It now takes a sequence of buffers instead of a single string for both encode and decode, and it also takes a separate sequence of shareids for decode instead of a sequence of tuples, and it returns a sequence of buffers instead of a single string. |
---|
12112 | ] |
---|
12113 | [change IEncoder to ICodecEncoder, to match the previous change |
---|
12114 | warner@allmydata.com**20070112025714] |
---|
12115 | [nicer API -- you don't have to shuffle the shares into place before calling decode_all() |
---|
12116 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070124212053 |
---|
12117 | Instead it does that shuffling in C inside fecmodule. |
---|
12118 | |
---|
12119 | ] |
---|
12120 | [pyfec v0.9 |
---|
12121 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070122231731 |
---|
12122 | |
---|
12123 | Here is the change history from the first darcs era, in reverse chronological |
---|
12124 | order: |
---|
12125 | |
---|
12126 | Mon Jan 22 16:12:56 MST 2007 "Zooko O'Whielacronx <zooko@zooko.com>" |
---|
12127 | * move everything into a subdirectory so that I can merge this darcs repo with the tahoe darcs repo |
---|
12128 | |
---|
12129 | |
---|
12130 | ./fec -> ./pyfec/fec |
---|
12131 | ./setup.py -> ./pyfec/setup.py |
---|
12132 | A ./pyfec/ |
---|
12133 | |
---|
12134 | Mon Jan 22 16:10:17 MST 2007 "Zooko O'Whielacronx <zooko@zooko.com>" |
---|
12135 | * clean up and minimize fec.c |
---|
12136 | * strip out unused code |
---|
12137 | * hard-code GF_BITS to 8 |
---|
12138 | * reindent and reformat curly bracket placement |
---|
12139 | |
---|
12140 | |
---|
12141 | M ./fec/fec.c -655 +324 |
---|
12142 | M ./fec/fec.h -25 |
---|
12143 | |
---|
12144 | Mon Jan 22 14:24:32 MST 2007 "Zooko O'Whielacronx <zooko@zooko.com>" |
---|
12145 | * change API to allow a subset of the shares to be produced, and to just pass back pointers to primary shares instead of copying them |
---|
12146 | |
---|
12147 | M ./fec/fec.c -24 +40 |
---|
12148 | M ./fec/fec.h -5 +17 |
---|
12149 | M ./fec/fecmodule.c -63 +144 |
---|
12150 | M ./fec/test/test_pyfec.py -16 +25 |
---|
12151 | M ./setup.py -2 +27 |
---|
12152 | |
---|
12153 | Tue Jan 16 23:01:44 MST 2007 "Zooko O'Whielacronx <zooko@zooko.com>" |
---|
12154 | * split encoder from decoder |
---|
12155 | |
---|
12156 | M ./fec/fecmodule.c -48 +161 |
---|
12157 | M ./fec/test/test_pyfec.py -3 +4 |
---|
12158 | |
---|
12159 | Tue Jan 16 14:35:25 MST 2007 "Zooko O'Whielacronx <zooko@zooko.com>" |
---|
12160 | * it compiles now! |
---|
12161 | |
---|
12162 | ./fec.c -> ./pyfec/fec.c |
---|
12163 | ./fec.h -> ./pyfec/fec.h |
---|
12164 | ./fecmodule.c -> ./pyfec/fecmodule.c |
---|
12165 | ./pyfec -> ./fec |
---|
12166 | M ./fec/fec.c -109 +85 r13 |
---|
12167 | M ./fec/fec.h -3 +2 r13 |
---|
12168 | M ./fec/fecmodule.c -23 +241 r13 |
---|
12169 | A ./fec/test/ |
---|
12170 | A ./fec/test/test_pyfec.py |
---|
12171 | A ./pyfec/ |
---|
12172 | A ./setup.py |
---|
12173 | |
---|
12174 | Tue Jan 9 10:47:58 MST 2007 zooko@zooko.com |
---|
12175 | * start of new fecmodule.c |
---|
12176 | |
---|
12177 | A ./fecmodule.c |
---|
12178 | |
---|
12179 | Mon Jan 1 15:00:04 MST 2007 zooko@zooko.com |
---|
12180 | * tidy up error handling |
---|
12181 | |
---|
12182 | M ./fec.c -26 +16 |
---|
12183 | |
---|
12184 | Mon Jan 1 14:06:30 MST 2007 zooko@zooko.com |
---|
12185 | * remove the on-the-fly encoding option |
---|
12186 | We don't currently need it. |
---|
12187 | |
---|
12188 | M ./fec.c -68 |
---|
12189 | M ./fec.h -22 |
---|
12190 | |
---|
12191 | Mon Jan 1 13:53:28 MST 2007 zooko@zooko.com |
---|
12192 | * original import from Mnet project |
---|
12193 | |
---|
12194 | A ./fec.c |
---|
12195 | A ./fec.h |
---|
12196 | |
---|
12197 | ] |
---|
12198 | [download: update all users to match Zooko's change to ICodecDecoder.decode (as it now returns a list instead of a single string) |
---|
12199 | warner@allmydata.com**20070124232322] |
---|
12200 | [change build system to use subpackages pristinely and ask them to install themselves into an "instdir" |
---|
12201 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070130205759] |
---|
12202 | [add __init__ and setup.py glue for py_ecc, so we can import it |
---|
12203 | warner@lothar.com**20070102054324] |
---|
12204 | [Makefile: use absolute paths when setting PYTHONPATH |
---|
12205 | warner@allmydata.com**20070117030200] |
---|
12206 | [Makefile: add correct generated build/lib.linux-i686-2.4 directory to PYTHONPATH for tests |
---|
12207 | warner@lothar.com**20061214095951] |
---|
12208 | [tests: add support for figleaf code-coverage gathering |
---|
12209 | warner@allmydata.com**20061206212612] |
---|
12210 | [add preliminary debian packaging |
---|
12211 | warner@lothar.com**20061205080044] |
---|
12212 | [split filetree_new.py up into smaller pieces, in a new subpackage |
---|
12213 | warner@allmydata.com**20070117195438] |
---|
12214 | [filetable_new: fix the test |
---|
12215 | warner@lothar.com**20061224184703] |
---|
12216 | [checkpoint work-in-progress for WorkQueue, a disk-persistent list of work to be done |
---|
12217 | warner@lothar.com**20070102054716] |
---|
12218 | [rename the new filetable code to 'filetree', since robk astutely pointed out that 'table' is misleading and implies a flat list of files in a single directory |
---|
12219 | warner@allmydata.com**20070108222914] |
---|
12220 | [add mathutil.next_power_of_k() and mathutil.ave() |
---|
12221 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070201215526] |
---|
12222 | [filetable: switch to new approach with anonymous nodes |
---|
12223 | warner@allmydata.com**20070615002456] |
---|
12224 | [improve test coverage a bit |
---|
12225 | warner@allmydata.com**20070117213429] |
---|
12226 | [add RIMutableDirectoryNode.get, to get a specific child file or directory |
---|
12227 | warner@lothar.com**20061204100329] |
---|
12228 | [more filetable_new tests |
---|
12229 | warner@lothar.com**20061225065618] |
---|
12230 | [rearrange encode/upload, add URIs, switch to ReplicatingEncoder |
---|
12231 | warner@allmydata.com**20070116032222 |
---|
12232 | |
---|
12233 | Added metadata to the bucket store, which is used to hold the share number |
---|
12234 | (but the bucket doesn't know that, it just gets a string). |
---|
12235 | |
---|
12236 | Modified the codec interfaces a bit. |
---|
12237 | |
---|
12238 | Try to pass around URIs to/from download/upload instead of verifierids. |
---|
12239 | URI format is still in flux. |
---|
12240 | |
---|
12241 | Change the current (primitive) file encoder to use a ReplicatingEncoder |
---|
12242 | because it provides ICodecEncoder. We will be moving to the (less primitive) |
---|
12243 | file encoder (currently in allmydata.encode_new) eventually, but for now |
---|
12244 | this change lets us test out PyRS or zooko's upcoming C-based RS codec in |
---|
12245 | something larger than a single unit test. This primitive file encoder only |
---|
12246 | uses a single segment, and has no merkle trees. |
---|
12247 | |
---|
12248 | Also added allmydata.util.deferredutil for a DeferredList wrapper that |
---|
12249 | errbacks (but only when all component Deferreds have fired) if there were |
---|
12250 | any errors, which unfortunately is not a behavior available from the standard |
---|
12251 | DeferredList. |
---|
12252 | |
---|
12253 | |
---|
12254 | ] |
---|
12255 | [more upload unit tests |
---|
12256 | warner@lothar.com**20061204064621] |
---|
12257 | [increase the maximum size of ShareData, since currently it is also a limit on uploaded file size |
---|
12258 | warner@lothar.com**20061204111431] |
---|
12259 | [only run a single (short) py_ecc test on slave3, since it is so slow the tests timeout |
---|
12260 | warner@allmydata.com**20070105064252] |
---|
12261 | [test_encode_share.py: fix some pyflakes warnings |
---|
12262 | warner@allmydata.com**20070106005322] |
---|
12263 | [add some (disabled) encoder benchmarking code |
---|
12264 | warner@allmydata.com**20070106004603] |
---|
12265 | [use the word 'codec' for erasure coding, for now. 'encode' is used for file-level segmentation/hashing |
---|
12266 | warner@allmydata.com**20070112025127] |
---|
12267 | [encoding: fix the last py_ecc problem, tests pass now |
---|
12268 | warner@allmydata.com**20070105060642] |
---|
12269 | [fix our use of py_ecc (set log2FieldSize=8 explicitly) |
---|
12270 | warner@allmydata.com**20070105055021] |
---|
12271 | [establish IEncoder/IDecoder, create suitable interfaces for both the simple replicating encoder and the py_ecc one, add a (failing) unit test for it |
---|
12272 | warner@allmydata.com**20070105035251] |
---|
12273 | [figleaf gets confused when the last line of a file is a comment |
---|
12274 | warner@allmydata.com**20061207205823] |
---|
12275 | [webish: improve download, now you can just append the vdrive path to the base URL to get at the contents of the file. Also added a download-by-URI box |
---|
12276 | warner@allmydata.com**20061207204837] |
---|
12277 | [webish: add mesh stats, peer list. improve distribution of client services within rend_* methods |
---|
12278 | warner@lothar.com**20061205015435] |
---|
12279 | [add mkdir to webish interface, switch to new bind_* approach |
---|
12280 | warner@lothar.com**20061205004924] |
---|
12281 | [allow webfront to use a strports port specification |
---|
12282 | warner@allmydata.com**20061207184740] |
---|
12283 | [add a basic read-only webfront test |
---|
12284 | warner@allmydata.com**20061207184806] |
---|
12285 | [change Encoder to use py_ecc, now that it works |
---|
12286 | warner@allmydata.com**20070106001245] |
---|
12287 | [more pyflakes cleanups |
---|
12288 | warner@allmydata.com**20070105000620] |
---|
12289 | [checkpointing new filetable work.. tests don't pass yet |
---|
12290 | warner@lothar.com**20061224183924] |
---|
12291 | [filetable: shuffle lines a bit to appease figleaf's confusion |
---|
12292 | warner@lothar.com**20061214103357] |
---|
12293 | [record some WIP structure for filetable |
---|
12294 | warner@allmydata.com**20061214023700] |
---|
12295 | [change encode_new to use IEncoder |
---|
12296 | warner@allmydata.com**20070105055135] |
---|
12297 | [filetable_new: import py_ecc, make the tests get a little bit further |
---|
12298 | warner@lothar.com**20070102054412] |
---|
12299 | [add padding to segments and convert type from string to list of integers before passing to py_ecc |
---|
12300 | "Zooko O'Whielacronx <zooko@zooko.com>"**20070104235814 |
---|
12301 | But then I get an error that I don't understand about ECC math... |
---|
12302 | |
---|
12303 | ] |
---|
12304 | [make encode_new use py_ecc for real live erasure coding |
---|
12305 | zooko@zooko.com**20061229195053 |
---|
12306 | (This patch is not tested -- I'm working on a Mac which doesn't have gcc |
---|
12307 | installed... (gcc is necessary for the crypto module.) I will now attempt to |
---|
12308 | connect to a better development computer over my mom's staticy, failure-prone, |
---|
12309 | 14.4 K modem...) |
---|
12310 | |
---|
12311 | ] |
---|
12312 | [encode_new: fix a bug in subshare hashes and tidy-up a couple of things |
---|
12313 | zooko@zooko.com**20061229184010] |
---|
12314 | [start work on new encoder, with merkle trees and subshares and stuff |
---|
12315 | warner@allmydata.com**20061214023235] |
---|
12316 | [import py_ecc, a pure python fec by Emin Martinian, which is under a permissive licence |
---|
12317 | zooko@zooko.com**20061229194645 |
---|
12318 | It is too slow for a real product, but is a quick way to get a working prototype, and also is freely redistributable by us... |
---|
12319 | ] |
---|
12320 | [move all packages into src/, fix allmydata.Crypto build. Now you must perform a 'setup.py build' before using anything, and you must add the build directory (build/lib.linux-i686-2.4) to your PYTHONPATH before doing anything |
---|
12321 | warner@lothar.com**20061214093950] |
---|
12322 | [first cut at creating allmydata.Crypto, starting with python-amycrypto-2.0.1.allmydata2 (with working CTR mode) |
---|
12323 | warner@lothar.com**20061214092530] |
---|
12324 | [add bin/allmydata to create/stop/start nodes |
---|
12325 | warner@lothar.com**20061205182523] |
---|
12326 | [setup.py: oops, add sub-packages, needed since I went back to distutils |
---|
12327 | Brian Warner <warner@lothar.com>**20061206010622] |
---|
12328 | [add distutils-based packaging |
---|
12329 | warner@lothar.com**20061205072926] |
---|
12330 | [ignore .buildbot options directory |
---|
12331 | warner@lothar.com**20061204031049] |
---|
12332 | [import mathutil from pyutil |
---|
12333 | zooko@zooko.com**20061229195042] |
---|
12334 | [webish: add option to export/import shared directories (always read-write) |
---|
12335 | warner@lothar.com**20070615093123] |
---|
12336 | [webish: implement delete (for files only, not directories) |
---|
12337 | warner@lothar.com**20061205012738] |
---|
12338 | [add 'make directory' button to webish |
---|
12339 | warner@lothar.com**20061204180329] |
---|
12340 | [implemented upload side of webish |
---|
12341 | warner@lothar.com**20061204111536] |
---|
12342 | [add a (read-only) web frontend. Put a 'webport' file in your base directory to activate it. |
---|
12343 | warner@lothar.com**20061204100609] |
---|
12344 | [add download code to vdrive, add system-level test for vdrive functionality, refactor DownloadTargets |
---|
12345 | warner@lothar.com**20061204044219] |
---|
12346 | [unit tests for vdrive |
---|
12347 | warner@lothar.com**20061204031126] |
---|
12348 | [initial file-table support, VirtualDrive service, rearrange Storage somewhat |
---|
12349 | warner@lothar.com**20061204010741] |
---|
12350 | [added run-client2 target to makefile |
---|
12351 | robk@allmydata.com**20061201015119] |
---|
12352 | [added create_dirs makefile target to create initial dirs |
---|
12353 | robk@allmydata.com**20061130231606] |
---|
12354 | [create a Makefile to drive things |
---|
12355 | warner@lothar.com**20061130214005] |
---|
12356 | [fix pyflakes warnings/errors |
---|
12357 | warner@lothar.com**20061202222846] |
---|
12358 | [added 'debugshell' module a convenient dumping ground for tools for manhole environment |
---|
12359 | robk@allmydata.com**20061201015308] |
---|
12360 | [misc upload fixes and improvements |
---|
12361 | warner@lothar.com**20061203023143] |
---|
12362 | [add more logging |
---|
12363 | warner@lothar.com**20061203065353] |
---|
12364 | [avoid race conditions and multiple-notify in the Roster |
---|
12365 | warner@lothar.com**20061203022909] |
---|
12366 | [deal with the face that peerids are always binary in tests |
---|
12367 | warner@lothar.com**20061203023102] |
---|
12368 | [implement/test download, modify Storage to match |
---|
12369 | warner@lothar.com**20061203090143] |
---|
12370 | [added read and cross check to storage unit test, minor cleanups |
---|
12371 | robk@allmydata.com**20061201082111] |
---|
12372 | [split 'Bucket' into separate subclasses for read and write |
---|
12373 | robk@allmydata.com**20061201090454] |
---|
12374 | [allow buckets written by previous runs to be read |
---|
12375 | robk@allmydata.com**20061201084555] |
---|
12376 | [prevent reading unfinished buckets |
---|
12377 | robk@allmydata.com**20061201084827] |
---|
12378 | [rearrange names, add more RemoteInterfaces to make tests pass again |
---|
12379 | warner@lothar.com**20061202232557] |
---|
12380 | [prototype encoder |
---|
12381 | zooko@zooko.com**20061202233126] |
---|
12382 | [make the system test work |
---|
12383 | warner@lothar.com**20061203065627] |
---|
12384 | [improving system test, still broken, possibly a Foolscap problem |
---|
12385 | warner@lothar.com**20061203023208] |
---|
12386 | [rearrange node startup again, allowing Tub.registerReference to happen in startService rather than in some later turn. Also add a 'local_ip' file with which you can override the published IP address of the node |
---|
12387 | warner@lothar.com**20061203013731] |
---|
12388 | [rearrange client setup, factor out common Node functionality, add Uploader service to client |
---|
12389 | warner@lothar.com**20061203002718] |
---|
12390 | [point client.tac at yumyum's queen |
---|
12391 | warner@lothar.com**20061130231631] |
---|
12392 | [remove that queen_host stuff |
---|
12393 | warner@lothar.com**20061130231340] |
---|
12394 | [change manhole setup for queen too |
---|
12395 | warner@lothar.com**20061201013838] |
---|
12396 | [add Manhole to queen (port 8021), also change manhole namespace to just have 'app' (for both queen and client) |
---|
12397 | warner@lothar.com**20061130233045] |
---|
12398 | [fix up StorageServer so that unit tests will run again |
---|
12399 | warner@lothar.com**20061201021829] |
---|
12400 | [add Client.permute_peers |
---|
12401 | warner@lothar.com**20061201021851] |
---|
12402 | [change bucket writer protocol, give Encoder a RemoteReference instead of a file-like object |
---|
12403 | warner@lothar.com**20061202011726] |
---|
12404 | [upload: add WriterProxy |
---|
12405 | warner@lothar.com**20061201100611] |
---|
12406 | [standardize on keeping nodeids (and all other SHA1-derived values as binary everywhere, only doing idlib.b2a() when interacting with a human or the filesystem |
---|
12407 | warner@lothar.com**20061202222626] |
---|
12408 | [fix losing-client-connection handler |
---|
12409 | warner@lothar.com**20061201001346] |
---|
12410 | [set Client.nodeid to our (ascii, base32) tubid |
---|
12411 | warner@lothar.com**20061201012017] |
---|
12412 | [implement upload peer selection |
---|
12413 | warner@lothar.com**20061201085428] |
---|
12414 | [add Client.get_remote_service utility method |
---|
12415 | warner@lothar.com**20061201001736] |
---|
12416 | [improve RemoteInterface specifications |
---|
12417 | warner@lothar.com**20061202220309] |
---|
12418 | [added storage test |
---|
12419 | robk@allmydata.com**20061201043842] |
---|
12420 | [add RemoteInterfaces (foolscap schemas). some tests break. |
---|
12421 | warner@lothar.com**20061202011750] |
---|
12422 | [add roadmap |
---|
12423 | warner@lothar.com**20061130231619] |
---|
12424 | [rerecord all the storageserver patches in one go |
---|
12425 | robk@allmydata.com**20061201021423 |
---|
12426 | |
---|
12427 | darcs was dying trying to deal with the conflict resolution patches. |
---|
12428 | |
---|
12429 | this adds a (very rough) bucketstore and storageserver. |
---|
12430 | probably needs lots of work both in api and implementation. |
---|
12431 | |
---|
12432 | ] |
---|
12433 | [implement more Roster stuff: add_peer, lost_peer. Changed Client service registration scheme. |
---|
12434 | warner@lothar.com**20061201000957] |
---|
12435 | [start developing Roster, track all active peers |
---|
12436 | warner@lothar.com**20061130234315] |
---|
12437 | [help the queen have a persistent PBURL, have the client connect to it |
---|
12438 | warner@lothar.com**20061130223938] |
---|
12439 | [change manhole setup for client: create authorized_keys.8022 (or other portnum) |
---|
12440 | warner@lothar.com**20061201013425] |
---|
12441 | [add Manhole functionality to the client: port 8022, add an authorized_keys file to the client's basedir to enable it |
---|
12442 | warner@lothar.com**20061130232641] |
---|
12443 | [start on client what-is-my-ipaddress functionality |
---|
12444 | warner@lothar.com**20061130222339] |
---|
12445 | [create a stub Storage service, start work on publishing it |
---|
12446 | warner@lothar.com**20061130212952] |
---|
12447 | [add test infrastructure, use 'make test' to run it, please run before pushing |
---|
12448 | warner@lothar.com**20061130215526] |
---|
12449 | [have client running, no queen to connect to yet |
---|
12450 | warner@lothar.com**20061130212706] |
---|
12451 | [add darcs boringfile |
---|
12452 | warner@lothar.com**20061130213733] |
---|
12453 | [add beginning queen code |
---|
12454 | warner@lothar.com**20061130213924] |
---|
12455 | [beginnings of a system test, with 5 nodes and a queen |
---|
12456 | warner@lothar.com**20061203003018] |
---|
12457 | [webapi.txt: note that the 'curl' utility can be used to exercise most of this interface |
---|
12458 | warner@lothar.com**20070710173637] |
---|
12459 | [add webapi.txt: explain our plans for the node's webserver |
---|
12460 | warner@allmydata.com**20070705203603] |
---|
12461 | [NEWS: update to summarize all changes since the last update |
---|
12462 | warner@lothar.com**20081020164047] |
---|
12463 | [NEWS: more edits, almost done |
---|
12464 | warner@lothar.com**20080919010036] |
---|
12465 | [NEWS: finish editing for the upcoming 1.3.0 release |
---|
12466 | warner@lothar.com**20080919193053] |
---|
12467 | [NEWS: describe all changes since the last release. Still needs editing. |
---|
12468 | warner@lothar.com**20080919002755] |
---|
12469 | [NEWS: add user-visible changes since the previous release |
---|
12470 | warner@lothar.com**20080721232930] |
---|
12471 | [docs: NEWS: a couple of small edits |
---|
12472 | zooko@zooko.com**20080611195140] |
---|
12473 | [NEWS: description of user-visible changes in the new release |
---|
12474 | warner@allmydata.com**20080611193935] |
---|
12475 | [docs: add a copy of the NEWS file into docs/ since I sent out a release announcement which links to it there |
---|
12476 | zooko@zooko.com**20080612024150] |
---|
12477 | [docs: add statement on our refusal to insert backdoors |
---|
12478 | zooko@zooko.com**20101006051147 |
---|
12479 | Ignore-this: 644d308319a7b80c4434bdff9760404a |
---|
12480 | ] |
---|
12481 | [add the 'Denver Airport' design doc, for Chord-based peer selection |
---|
12482 | warner@lothar.com**20061202010914] |
---|
12483 | [actually add tests |
---|
12484 | warner@lothar.com**20061130222301] |
---|
12485 | [start client framework |
---|
12486 | warner@lothar.com**20061130211447] |
---|
12487 | Patch bundle hash: |
---|
12488 | 5953c6bfe7ed2f5971a54a57bbba2e17660a14ab |
---|