1 | 1 patch for repository /home/davidsarah/tahoe/mdmf: |
---|
2 | |
---|
3 | Sat Jul 30 00:31:02 BST 2011 david-sarah@jacaranda.org |
---|
4 | * SFTP: write an error message to standard error for unrecognized shell commands. Change the existing message for shell sessions to be written to standard error, and refactor some duplicated code. Also change the lines of the error messages to end in CRLF, and take into account Kevan's review comments. fixes #1442, #1446 |
---|
5 | |
---|
6 | New patches: |
---|
7 | |
---|
8 | [SFTP: write an error message to standard error for unrecognized shell commands. Change the existing message for shell sessions to be written to standard error, and refactor some duplicated code. Also change the lines of the error messages to end in CRLF, and take into account Kevan's review comments. fixes #1442, #1446 |
---|
9 | david-sarah@jacaranda.org**20110729233102 |
---|
10 | Ignore-this: d2f2bb4664f25007d1602bf7333e2cdd |
---|
11 | ] { |
---|
12 | hunk ./src/allmydata/frontends/sftpd.py 1865 |
---|
13 | if hasattr(protocol, 'transport') and protocol.transport is None: |
---|
14 | protocol.transport = FakeTransport() # work around Twisted bug |
---|
15 | |
---|
16 | - d = defer.succeed(None) |
---|
17 | - d.addCallback(lambda ign: protocol.write("This server supports only SFTP, not shell sessions.\n")) |
---|
18 | - d.addCallback(lambda ign: protocol.processEnded(Reason(ProcessTerminated(exitCode=1)))) |
---|
19 | - return d |
---|
20 | + return self._unsupported(protocol) |
---|
21 | |
---|
22 | def execCommand(self, protocol, cmd): |
---|
23 | self.log(".execCommand(%r, %r)" % (protocol, cmd), level=OPERATIONAL) |
---|
24 | hunk ./src/allmydata/frontends/sftpd.py 1875 |
---|
25 | d = defer.succeed(None) |
---|
26 | if cmd == "df -P -k /": |
---|
27 | d.addCallback(lambda ign: protocol.write( |
---|
28 | - "Filesystem 1024-blocks Used Available Capacity Mounted on\n" |
---|
29 | - "tahoe 628318530 314159265 314159265 50% /\n")) |
---|
30 | + "Filesystem 1024-blocks Used Available Capacity Mounted on\r\n" |
---|
31 | + "tahoe 628318530 314159265 314159265 50% /\r\n")) |
---|
32 | d.addCallback(lambda ign: protocol.processEnded(Reason(ProcessDone(None)))) |
---|
33 | else: |
---|
34 | hunk ./src/allmydata/frontends/sftpd.py 1879 |
---|
35 | - d.addCallback(lambda ign: protocol.processEnded(Reason(ProcessTerminated(exitCode=1)))) |
---|
36 | + d.addCallback(lambda ign: self._unsupported(protocol)) |
---|
37 | + return d |
---|
38 | + |
---|
39 | + def _unsupported(self, protocol): |
---|
40 | + d = defer.succeed(None) |
---|
41 | + d.addCallback(lambda ign: protocol.errReceived( |
---|
42 | + "This server supports only the SFTP protocol. It does not support SCP,\r\n" |
---|
43 | + "interactive shell sessions, or commands other than one needed by sshfs.\r\n")) |
---|
44 | + d.addCallback(lambda ign: protocol.processEnded(Reason(ProcessTerminated(exitCode=1)))) |
---|
45 | return d |
---|
46 | |
---|
47 | def windowChanged(self, newWindowSize): |
---|
48 | hunk ./src/allmydata/test/test_sftp.py 1333 |
---|
49 | test_makeDirectory.timeout = 15 |
---|
50 | |
---|
51 | def test_execCommand_and_openShell(self): |
---|
52 | - class FakeProtocol: |
---|
53 | + class MockProtocol: |
---|
54 | def __init__(self): |
---|
55 | self.output = "" |
---|
56 | hunk ./src/allmydata/test/test_sftp.py 1336 |
---|
57 | + self.error = "" |
---|
58 | self.reason = None |
---|
59 | hunk ./src/allmydata/test/test_sftp.py 1338 |
---|
60 | + |
---|
61 | def write(self, data): |
---|
62 | hunk ./src/allmydata/test/test_sftp.py 1340 |
---|
63 | + return self.outReceived(data) |
---|
64 | + |
---|
65 | + def outReceived(self, data): |
---|
66 | self.output += data |
---|
67 | return defer.succeed(None) |
---|
68 | hunk ./src/allmydata/test/test_sftp.py 1345 |
---|
69 | + |
---|
70 | + def errReceived(self, data): |
---|
71 | + self.error += data |
---|
72 | + return defer.succeed(None) |
---|
73 | + |
---|
74 | def processEnded(self, reason): |
---|
75 | self.reason = reason |
---|
76 | return defer.succeed(None) |
---|
77 | hunk ./src/allmydata/test/test_sftp.py 1354 |
---|
78 | |
---|
79 | + def _lines_end_in_crlf(s): |
---|
80 | + return s.replace('\r\n', '').find('\n') == -1 and s.endswith('\r\n') |
---|
81 | + |
---|
82 | d = self._set_up("execCommand_and_openShell") |
---|
83 | |
---|
84 | d.addCallback(lambda ign: conch_interfaces.ISession(self.handler)) |
---|
85 | hunk ./src/allmydata/test/test_sftp.py 1361 |
---|
86 | def _exec_df(session): |
---|
87 | - protocol = FakeProtocol() |
---|
88 | + protocol = MockProtocol() |
---|
89 | d2 = session.execCommand(protocol, "df -P -k /") |
---|
90 | d2.addCallback(lambda ign: self.failUnlessIn("1024-blocks", protocol.output)) |
---|
91 | hunk ./src/allmydata/test/test_sftp.py 1364 |
---|
92 | + d2.addCallback(lambda ign: self.failUnless(_lines_end_in_crlf(protocol.output), protocol.output)) |
---|
93 | + d2.addCallback(lambda ign: self.failUnlessEqual(protocol.error, "")) |
---|
94 | d2.addCallback(lambda ign: self.failUnless(isinstance(protocol.reason.value, ProcessDone))) |
---|
95 | d2.addCallback(lambda ign: session.eofReceived()) |
---|
96 | d2.addCallback(lambda ign: session.closed()) |
---|
97 | hunk ./src/allmydata/test/test_sftp.py 1372 |
---|
98 | return d2 |
---|
99 | d.addCallback(_exec_df) |
---|
100 | |
---|
101 | + def _check_unsupported(protocol): |
---|
102 | + d2 = defer.succeed(None) |
---|
103 | + d2.addCallback(lambda ign: self.failUnlessEqual(protocol.output, "")) |
---|
104 | + d2.addCallback(lambda ign: self.failUnlessIn("only the SFTP protocol", protocol.error)) |
---|
105 | + d2.addCallback(lambda ign: self.failUnless(_lines_end_in_crlf(protocol.error), protocol.error)) |
---|
106 | + d2.addCallback(lambda ign: self.failUnless(isinstance(protocol.reason.value, ProcessTerminated))) |
---|
107 | + d2.addCallback(lambda ign: self.failUnlessEqual(protocol.reason.value.exitCode, 1)) |
---|
108 | + return d2 |
---|
109 | + |
---|
110 | d.addCallback(lambda ign: conch_interfaces.ISession(self.handler)) |
---|
111 | def _exec_error(session): |
---|
112 | hunk ./src/allmydata/test/test_sftp.py 1383 |
---|
113 | - protocol = FakeProtocol() |
---|
114 | + protocol = MockProtocol() |
---|
115 | d2 = session.execCommand(protocol, "error") |
---|
116 | d2.addCallback(lambda ign: session.windowChanged(None)) |
---|
117 | hunk ./src/allmydata/test/test_sftp.py 1386 |
---|
118 | - d2.addCallback(lambda ign: self.failUnlessEqual("", protocol.output)) |
---|
119 | - d2.addCallback(lambda ign: self.failUnless(isinstance(protocol.reason.value, ProcessTerminated))) |
---|
120 | - d2.addCallback(lambda ign: self.failUnlessEqual(protocol.reason.value.exitCode, 1)) |
---|
121 | + d2.addCallback(lambda ign: _check_unsupported(protocol)) |
---|
122 | d2.addCallback(lambda ign: session.closed()) |
---|
123 | return d2 |
---|
124 | d.addCallback(_exec_error) |
---|
125 | hunk ./src/allmydata/test/test_sftp.py 1393 |
---|
126 | |
---|
127 | d.addCallback(lambda ign: conch_interfaces.ISession(self.handler)) |
---|
128 | def _openShell(session): |
---|
129 | - protocol = FakeProtocol() |
---|
130 | + protocol = MockProtocol() |
---|
131 | d2 = session.openShell(protocol) |
---|
132 | hunk ./src/allmydata/test/test_sftp.py 1395 |
---|
133 | - d2.addCallback(lambda ign: self.failUnlessIn("only SFTP", protocol.output)) |
---|
134 | - d2.addCallback(lambda ign: self.failUnless(isinstance(protocol.reason.value, ProcessTerminated))) |
---|
135 | - d2.addCallback(lambda ign: self.failUnlessEqual(protocol.reason.value.exitCode, 1)) |
---|
136 | + d2.addCallback(lambda ign: _check_unsupported(protocol)) |
---|
137 | d2.addCallback(lambda ign: session.closed()) |
---|
138 | return d2 |
---|
139 | d.addCallback(_openShell) |
---|
140 | } |
---|
141 | |
---|
142 | Context: |
---|
143 | |
---|
144 | [Resolve conflict with trunk in src/allmydata/scripts/cli.py. refs #393 |
---|
145 | david-sarah@jacaranda.org**20110728233303 |
---|
146 | Ignore-this: 5ea8bfbffd84233d59a97706a12bc0c7 |
---|
147 | ] |
---|
148 | [test/test_cli: test CLI's MDMF creation powers |
---|
149 | Kevan Carstensen <kevan@isnotajoke.com>**20110617180209 |
---|
150 | Ignore-this: d4b493b266446b2be3ce3c5f2505577d |
---|
151 | ] |
---|
152 | [scripts: teach CLI to make MDMF directories |
---|
153 | Kevan Carstensen <kevan@isnotajoke.com>**20110617180137 |
---|
154 | Ignore-this: 5dc968bd22278033b534a561f230a4f |
---|
155 | ] |
---|
156 | [test/test_web: test webapi and WUI for MDMF directory handling |
---|
157 | Kevan Carstensen <kevan@isnotajoke.com>**20110617180100 |
---|
158 | Ignore-this: 63ed7832872fd35eb7319cf6a6f251b |
---|
159 | ] |
---|
160 | [web: teach WUI and webapi to create MDMF directories |
---|
161 | Kevan Carstensen <kevan@isnotajoke.com>**20110617180019 |
---|
162 | Ignore-this: 956a60542a26c2d5118085ab9e3c470e |
---|
163 | ] |
---|
164 | [Add tests for MDMF directories |
---|
165 | Kevan Carstensen <kevan@isnotajoke.com>**20110617175950 |
---|
166 | Ignore-this: 27882fd4cf827030d7574bd4b2b8cb77 |
---|
167 | ] |
---|
168 | [Add MDMF dirnodes |
---|
169 | Kevan Carstensen <kevan@isnotajoke.com>**20110617175808 |
---|
170 | Ignore-this: e7d184ece57b272be0e5a3917cc7642a |
---|
171 | ] |
---|
172 | [test: change test fixtures to work with our new extension passing API; add, change, and delete tests as appropriate to reflect the fact that caps without hints are now the exception rather than the norm |
---|
173 | Kevan Carstensen <kevan@isnotajoke.com>**20110531012739 |
---|
174 | Ignore-this: 30ebf79b5f6c17f40fa4385de12070a0 |
---|
175 | ] |
---|
176 | [mutable/filenode: pass downloader hints between publisher, MutableFileNode, and MutableFileVersion as convenient |
---|
177 | Kevan Carstensen <kevan@isnotajoke.com>**20110531012641 |
---|
178 | Ignore-this: 672c586891abfa38397bcdf90b64ca72 |
---|
179 | |
---|
180 | We still need to work on making this more thorough; i.e., passing hints |
---|
181 | when other operations change encoding parameters. |
---|
182 | ] |
---|
183 | [mutable/servermap: caps imply protocol version, so the servermap doesn't need to tell the filenode what it is anymore. |
---|
184 | Kevan Carstensen <kevan@isnotajoke.com>**20110531012557 |
---|
185 | Ignore-this: 9925f5dde5452db92cdbc4a7d6adf1c1 |
---|
186 | ] |
---|
187 | [mutable/publish: tell filenodes about encoding parameters so they can be put in the cap |
---|
188 | Kevan Carstensen <kevan@isnotajoke.com>**20110531012447 |
---|
189 | Ignore-this: cf19f07a6913208a327604457466f2f2 |
---|
190 | ] |
---|
191 | [interfaces: working update to interfaces.py for extension handling |
---|
192 | Kevan Carstensen <kevan@isnotajoke.com>**20110531012201 |
---|
193 | Ignore-this: 559c43cbf14eec7ac163ebd00c0b7a36 |
---|
194 | ] |
---|
195 | [uri: teach mutable URI objects how to allow other objects to give them extension parameters |
---|
196 | Kevan Carstensen <kevan@isnotajoke.com>**20110531012036 |
---|
197 | Ignore-this: 96c06cee1efe5a92a5ed8d87ca09a7dd |
---|
198 | ] |
---|
199 | [web/info.py: Display mutable type information when describing a mutable file |
---|
200 | Kevan Carstensen <kevan@isnotajoke.com>**20110515230444 |
---|
201 | Ignore-this: ce5ad22b494effe6c15e49471fae0d99 |
---|
202 | ] |
---|
203 | [web/filenode.py: complain if a PUT is requested with a readonly cap |
---|
204 | Kevan Carstensen <kevan@isnotajoke.com>**20110515230421 |
---|
205 | Ignore-this: e2f05201f3b008e157062ed187eacbb9 |
---|
206 | ] |
---|
207 | [test/test_web: add MDMF cap tests |
---|
208 | Kevan Carstensen <kevan@isnotajoke.com>**20110515230358 |
---|
209 | Ignore-this: ace5af3bdc9b65c3f6964c8fe056816 |
---|
210 | ] |
---|
211 | [test/test_mutable.py: implement cap type checking |
---|
212 | Kevan Carstensen <kevan@isnotajoke.com>**20110515230326 |
---|
213 | Ignore-this: 64cf51b809605061047c8a1b02f5e212 |
---|
214 | ] |
---|
215 | [test/test_mutable.py: write a test for pausing during retrieval, write support structure for that test |
---|
216 | Kevan Carstensen <kevan@isnotajoke.com>**20110515230207 |
---|
217 | Ignore-this: 8884ef3ad5be59dbc870ed14002ac45 |
---|
218 | ] |
---|
219 | [test/test_cli: Alter existing MDMF tests to test for MDMF caps |
---|
220 | Kevan Carstensen <kevan@isnotajoke.com>**20110515230054 |
---|
221 | Ignore-this: a90d089e1afb0f261710083c2be6b2fa |
---|
222 | ] |
---|
223 | [test/common.py: fix some MDMF-related bugs in common test fixtures |
---|
224 | Kevan Carstensen <kevan@isnotajoke.com>**20110515230038 |
---|
225 | Ignore-this: ab5ffe4789bb5e6ed5f54b91b760bac9 |
---|
226 | ] |
---|
227 | [scripts/tahoe_put.py: teach tahoe put about MDMF caps |
---|
228 | Kevan Carstensen <kevan@isnotajoke.com>**20110515230008 |
---|
229 | Ignore-this: 1522f434f651683c924e37251a3c1bfd |
---|
230 | ] |
---|
231 | [mutable/retrieve: fix typo in paused check |
---|
232 | Kevan Carstensen <kevan@isnotajoke.com>**20110515225946 |
---|
233 | Ignore-this: a9c7f3bdbab2f8248f8b6a64f574e7c4 |
---|
234 | ] |
---|
235 | [nodemaker, mutable/filenode: train nodemaker and filenode to handle MDMF caps |
---|
236 | Kevan Carstensen <kevan@isnotajoke.com>**20110501224523 |
---|
237 | Ignore-this: 1f3b4581eb583e7bb93d234182bda395 |
---|
238 | ] |
---|
239 | [uri.py: Add MDMF cap |
---|
240 | Kevan Carstensen <kevan@isnotajoke.com>**20110501224249 |
---|
241 | Ignore-this: a6d1046d33f5cc811c5e8b10af925f33 |
---|
242 | ] |
---|
243 | [mutable/layout.py: reorder on-disk format to aput variable-length fields at the end of the share, after a predictably long preamble |
---|
244 | Kevan Carstensen <kevan@isnotajoke.com>**20110501224125 |
---|
245 | Ignore-this: 8b2c5d29b8984dfe675c1a2ada5205cf |
---|
246 | ] |
---|
247 | [mutable: use integer division where appropriate |
---|
248 | Kevan Carstensen <kevan@isnotajoke.com>**20110307082229 |
---|
249 | Ignore-this: a8767e89d919c9f2a5d5fef3953d53f9 |
---|
250 | ] |
---|
251 | [mutable/filenode: remove incorrect comments about segment boundaries |
---|
252 | Kevan Carstensen <kevan@isnotajoke.com>**20110307081713 |
---|
253 | Ignore-this: 7008644c3d9588815000a86edbf9c568 |
---|
254 | ] |
---|
255 | [web: use None instead of False in the case of no offset, use object identity comparison to check whether or not an offset was specified. |
---|
256 | Kevan Carstensen <kevan@isnotajoke.com>**20110305010858 |
---|
257 | Ignore-this: 14b7550ca95ce423c9b0b7f6f14ffd2f |
---|
258 | ] |
---|
259 | [tahoe-put: raise UsageError when given a nonsensical mutable type, move option validation code to the option parser. |
---|
260 | Kevan Carstensen <kevan@isnotajoke.com>**20110301030807 |
---|
261 | Ignore-this: 2dc19d8bd741842eff458ca553d0bf2a |
---|
262 | ] |
---|
263 | [mutable/publish: account for offsets on segment boundaries. |
---|
264 | Kevan Carstensen <kevan@isnotajoke.com>**20110228083327 |
---|
265 | Ignore-this: c8758a0580fcc15a22c2f8582d758a6b |
---|
266 | ] |
---|
267 | [test_mutable.py: add test to exercise fencepost bug |
---|
268 | warner@lothar.com**20110228021056 |
---|
269 | Ignore-this: d2f9cf237ce6db42fb250c8ad71a4fc3 |
---|
270 | ] |
---|
271 | [mutable/layout: remove references to the salt hash tree. |
---|
272 | Kevan Carstensen <kevan@isnotajoke.com>**20110228010637 |
---|
273 | Ignore-this: b3b2963ba4d0b42c78b6bba219d4deb5 |
---|
274 | ] |
---|
275 | [docs/configuration.rst: fix more conflicts between #393 and trunk |
---|
276 | Kevan Carstensen <kevan@isnotajoke.com>**20110228003426 |
---|
277 | Ignore-this: 7917effdeecab00d634a06f1df8fe2cf |
---|
278 | ] |
---|
279 | [web: Use the string "replace" to trigger whole-file replacement when processing an offset parameter. |
---|
280 | Kevan Carstensen <kevan@isnotajoke.com>**20110227231643 |
---|
281 | Ignore-this: 5bbf0b90d68efe20d4c531bb98a8321a |
---|
282 | ] |
---|
283 | [mutable/filenode: Clean up servermap handling in MutableFileVersion |
---|
284 | Kevan Carstensen <kevan@isnotajoke.com>**20110226010433 |
---|
285 | Ignore-this: 2257c9f65502098789f5ea355b94f130 |
---|
286 | |
---|
287 | We want to update the servermap before attempting to modify a file, |
---|
288 | which we now do. This introduced code duplication, which was addressed |
---|
289 | by refactoring the servermap update into its own method, and then |
---|
290 | eliminating duplicate servermap updates throughout the |
---|
291 | MutableFileVersion. |
---|
292 | ] |
---|
293 | [update MDMF code with StorageFarmBroker changes |
---|
294 | "Brian Warner <warner@lothar.com>"**20110221061004 |
---|
295 | Ignore-this: a693b201d31125b391cebe0412ddd027 |
---|
296 | ] |
---|
297 | [resolve more conflicts with current trunk |
---|
298 | "Brian Warner <warner@lothar.com>"**20110221055600 |
---|
299 | Ignore-this: 77ad038a478dbf5d9b34f7a68159a3e0 |
---|
300 | ] |
---|
301 | [mutable/filenode.py: fix create_mutable_file('string') |
---|
302 | "Brian Warner <warner@lothar.com>"**20110221014659 |
---|
303 | Ignore-this: dc6bdad761089f0199681eeb784f1001 |
---|
304 | ] |
---|
305 | [resolve conflicts between 393-MDMF patches and trunk as of 1.8.2 |
---|
306 | "Brian Warner <warner@lothar.com>"**20110220230201 |
---|
307 | Ignore-this: 9bbf5d26c994e8069202331dcb4cdd95 |
---|
308 | ] |
---|
309 | [tests: |
---|
310 | Kevan Carstensen <kevan@isnotajoke.com>**20100819003531 |
---|
311 | Ignore-this: 314e8bbcce532ea4d5d2cecc9f31cca0 |
---|
312 | |
---|
313 | - A lot of existing tests relied on aspects of the mutable file |
---|
314 | implementation that were changed. This patch updates those tests |
---|
315 | to work with the changes. |
---|
316 | - This patch also adds tests for new features. |
---|
317 | ] |
---|
318 | [mutable/servermap.py: Alter the servermap updater to work with MDMF files |
---|
319 | Kevan Carstensen <kevan@isnotajoke.com>**20100819003439 |
---|
320 | Ignore-this: 7e408303194834bd59a2f27efab3bdb |
---|
321 | |
---|
322 | These modifications were basically all to the end of having the |
---|
323 | servermap updater use the unified MDMF + SDMF read interface whenever |
---|
324 | possible -- this reduces the complexity of the code, making it easier to |
---|
325 | read and maintain. To do this, I needed to modify the process of |
---|
326 | updating the servermap a little bit. |
---|
327 | |
---|
328 | To support partial-file updates, I also modified the servermap updater |
---|
329 | to fetch the block hash trees and certain segments of files while it |
---|
330 | performed a servermap update (this can be done without adding any new |
---|
331 | roundtrips because of batch-read functionality that the read proxy has). |
---|
332 | |
---|
333 | ] |
---|
334 | [mutable/retrieve.py: Modify the retrieval process to support MDMF |
---|
335 | Kevan Carstensen <kevan@isnotajoke.com>**20100819003409 |
---|
336 | Ignore-this: c03f4e41aaa0366a9bf44847f2caf9db |
---|
337 | |
---|
338 | The logic behind a mutable file download had to be adapted to work with |
---|
339 | segmented mutable files; this patch performs those adaptations. It also |
---|
340 | exposes some decoding and decrypting functionality to make partial-file |
---|
341 | updates a little easier, and supports efficient random-access downloads |
---|
342 | of parts of an MDMF file. |
---|
343 | ] |
---|
344 | [mutable/layout.py and interfaces.py: add MDMF writer and reader |
---|
345 | Kevan Carstensen <kevan@isnotajoke.com>**20100819003304 |
---|
346 | Ignore-this: 44400fec923987b62830da2ed5075fb4 |
---|
347 | |
---|
348 | The MDMF writer is responsible for keeping state as plaintext is |
---|
349 | gradually processed into share data by the upload process. When the |
---|
350 | upload finishes, it will write all of its share data to a remote server, |
---|
351 | reporting its status back to the publisher. |
---|
352 | |
---|
353 | The MDMF reader is responsible for abstracting an MDMF file as it sits |
---|
354 | on the grid from the downloader; specifically, by receiving and |
---|
355 | responding to requests for arbitrary data within the MDMF file. |
---|
356 | |
---|
357 | The interfaces.py file has also been modified to contain an interface |
---|
358 | for the writer. |
---|
359 | ] |
---|
360 | [docs: update docs to mention MDMF |
---|
361 | Kevan Carstensen <kevan@isnotajoke.com>**20100814225644 |
---|
362 | Ignore-this: 1c3caa3cd44831007dcfbef297814308 |
---|
363 | ] |
---|
364 | [nodemaker.py: Make nodemaker expose a way to create MDMF files |
---|
365 | Kevan Carstensen <kevan@isnotajoke.com>**20100819003509 |
---|
366 | Ignore-this: a6701746d6b992fc07bc0556a2b4a61d |
---|
367 | ] |
---|
368 | [mutable/publish.py: Modify the publish process to support MDMF |
---|
369 | Kevan Carstensen <kevan@isnotajoke.com>**20100819003342 |
---|
370 | Ignore-this: 2bb379974927e2e20cff75bae8302d1d |
---|
371 | |
---|
372 | The inner workings of the publishing process needed to be reworked to a |
---|
373 | large extend to cope with segmented mutable files, and to cope with |
---|
374 | partial-file updates of mutable files. This patch does that. It also |
---|
375 | introduces wrappers for uploadable data, allowing the use of |
---|
376 | filehandle-like objects as data sources, in addition to strings. This |
---|
377 | reduces memory inefficiency when dealing with large files through the |
---|
378 | webapi, and clarifies update code there. |
---|
379 | ] |
---|
380 | [mutable/filenode.py: add versions and partial-file updates to the mutable file node |
---|
381 | Kevan Carstensen <kevan@isnotajoke.com>**20100819003231 |
---|
382 | Ignore-this: b7b5434201fdb9b48f902d7ab25ef45c |
---|
383 | |
---|
384 | One of the goals of MDMF as a GSoC project is to lay the groundwork for |
---|
385 | LDMF, a format that will allow Tahoe-LAFS to deal with and encourage |
---|
386 | multiple versions of a single cap on the grid. In line with this, there |
---|
387 | is a now a distinction between an overriding mutable file (which can be |
---|
388 | thought to correspond to the cap/unique identifier for that mutable |
---|
389 | file) and versions of the mutable file (which we can download, update, |
---|
390 | and so on). All download, upload, and modification operations end up |
---|
391 | happening on a particular version of a mutable file, but there are |
---|
392 | shortcut methods on the object representing the overriding mutable file |
---|
393 | that perform these operations on the best version of the mutable file |
---|
394 | (which is what code should be doing until we have LDMF and better |
---|
395 | support for other paradigms). |
---|
396 | |
---|
397 | Another goal of MDMF was to take advantage of segmentation to give |
---|
398 | callers more efficient partial file updates or appends. This patch |
---|
399 | implements methods that do that, too. |
---|
400 | |
---|
401 | ] |
---|
402 | [mutable/checker.py and mutable/repair.py: Modify checker and repairer to work with MDMF |
---|
403 | Kevan Carstensen <kevan@isnotajoke.com>**20100819003216 |
---|
404 | Ignore-this: d3bd3260742be8964877f0a53543b01b |
---|
405 | |
---|
406 | The checker and repairer required minimal changes to work with the MDMF |
---|
407 | modifications made elsewhere. The checker duplicated a lot of the code |
---|
408 | that was already in the downloader, so I modified the downloader |
---|
409 | slightly to expose this functionality to the checker and removed the |
---|
410 | duplicated code. The repairer only required a minor change to deal with |
---|
411 | data representation. |
---|
412 | ] |
---|
413 | [client.py: learn how to create different kinds of mutable files |
---|
414 | Kevan Carstensen <kevan@isnotajoke.com>**20100814225711 |
---|
415 | Ignore-this: 61ff665bc050cba5f58bf2ed779d692b |
---|
416 | ] |
---|
417 | [web: Alter the webapi to get along with and take advantage of the MDMF changes |
---|
418 | Kevan Carstensen <kevan@isnotajoke.com>**20100814081012 |
---|
419 | Ignore-this: 96c2ed4e4a9f450fb84db5d711d10bd6 |
---|
420 | |
---|
421 | The main benefit that the webapi gets from MDMF, at least initially, is |
---|
422 | the ability to do a streaming download of an MDMF mutable file. It also |
---|
423 | exposes a way (through the PUT verb) to append to or otherwise modify |
---|
424 | (in-place) an MDMF mutable file. |
---|
425 | ] |
---|
426 | [scripts: tell 'tahoe put' about MDMF |
---|
427 | Kevan Carstensen <kevan@isnotajoke.com>**20100813234957 |
---|
428 | Ignore-this: c106b3384fc676bd3c0fb466d2a52b1b |
---|
429 | ] |
---|
430 | [immutable/literal.py: implement the same interfaces as other filenodes |
---|
431 | Kevan Carstensen <kevan@isnotajoke.com>**20100810000633 |
---|
432 | Ignore-this: b50dd5df2d34ecd6477b8499a27aef13 |
---|
433 | ] |
---|
434 | [immutable/filenode.py: Make the immutable file node implement the same interfaces as the mutable one |
---|
435 | Kevan Carstensen <kevan@isnotajoke.com>**20100810000619 |
---|
436 | Ignore-this: 93e536c0f8efb705310f13ff64621527 |
---|
437 | ] |
---|
438 | [frontends/sftpd.py: Modify the sftp frontend to work with the MDMF changes |
---|
439 | Kevan Carstensen <kevan@isnotajoke.com>**20100809233535 |
---|
440 | Ignore-this: 2d25e2cfcd0d7bbcbba660c7e1da12f |
---|
441 | ] |
---|
442 | [interfaces.py: Add #993 interfaces |
---|
443 | Kevan Carstensen <kevan@isnotajoke.com>**20100809233244 |
---|
444 | Ignore-this: b58621ac5cc86f1b4b4149f9e6c6a1ce |
---|
445 | ] |
---|
446 | [src/allmydata/scripts/cli.py: fix pyflakes warning. |
---|
447 | david-sarah@jacaranda.org**20110728021402 |
---|
448 | Ignore-this: 94050140ddb99865295973f49927c509 |
---|
449 | ] |
---|
450 | [Fix the help synopses of CLI commands to include [options] in the right place. fixes #1359, fixes #636 |
---|
451 | david-sarah@jacaranda.org**20110724225440 |
---|
452 | Ignore-this: 2a8e488a5f63dabfa9db9efd83768a5 |
---|
453 | ] |
---|
454 | [encodingutil: argv and output encodings are always the same on all platforms. Lose the unnecessary generality of them being different. fixes #1120 |
---|
455 | david-sarah@jacaranda.org**20110629185356 |
---|
456 | Ignore-this: 5ebacbe6903dfa83ffd3ff8436a97787 |
---|
457 | ] |
---|
458 | [docs/man/tahoe.1: add man page. fixes #1420 |
---|
459 | david-sarah@jacaranda.org**20110724171728 |
---|
460 | Ignore-this: fc7601ec7f25494288d6141d0ae0004c |
---|
461 | ] |
---|
462 | [Update the dependency on zope.interface to fix an incompatiblity between Nevow and zope.interface 3.6.4. fixes #1435 |
---|
463 | david-sarah@jacaranda.org**20110721234941 |
---|
464 | Ignore-this: 2ff3fcfc030fca1a4d4c7f1fed0f2aa9 |
---|
465 | ] |
---|
466 | [frontends/ftpd.py: remove the check for IWriteFile.close since we're now guaranteed to be using Twisted >= 10.1 which has it. |
---|
467 | david-sarah@jacaranda.org**20110722000320 |
---|
468 | Ignore-this: 55cd558b791526113db3f83c00ec328a |
---|
469 | ] |
---|
470 | [Update the dependency on Twisted to >= 10.1. This allows us to simplify some documentation: it's no longer necessary to install pywin32 on Windows, or apply a patch to Twisted in order to use the FTP frontend. fixes #1274, #1438. refs #1429 |
---|
471 | david-sarah@jacaranda.org**20110721233658 |
---|
472 | Ignore-this: 81b41745477163c9b39c0b59db91cc62 |
---|
473 | ] |
---|
474 | [misc/build_helpers/run_trial.py: undo change to block pywin32 (it didn't work because run_trial.py is no longer used). refs #1334 |
---|
475 | david-sarah@jacaranda.org**20110722035402 |
---|
476 | Ignore-this: 5d03f544c4154f088e26c7107494bf39 |
---|
477 | ] |
---|
478 | [misc/build_helpers/run_trial.py: ensure that pywin32 is not on the sys.path when running the test suite. Includes some temporary debugging printouts that will be removed. refs #1334 |
---|
479 | david-sarah@jacaranda.org**20110722024907 |
---|
480 | Ignore-this: 5141a9f83a4085ed4ca21f0bbb20bb9c |
---|
481 | ] |
---|
482 | [docs/running.rst: use 'tahoe run ~/.tahoe' instead of 'tahoe run' (the default is the current directory, unlike 'tahoe start'). |
---|
483 | david-sarah@jacaranda.org**20110718005949 |
---|
484 | Ignore-this: 81837fbce073e93d88a3e7ae3122458c |
---|
485 | ] |
---|
486 | [docs/running.rst: say to put the introducer.furl in tahoe.cfg. |
---|
487 | david-sarah@jacaranda.org**20110717194315 |
---|
488 | Ignore-this: 954cc4c08e413e8c62685d58ff3e11f3 |
---|
489 | ] |
---|
490 | [README.txt: say that quickstart.rst is in the docs directory. |
---|
491 | david-sarah@jacaranda.org**20110717192400 |
---|
492 | Ignore-this: bc6d35a85c496b77dbef7570677ea42a |
---|
493 | ] |
---|
494 | [setup: remove the dependency on foolscap's "secure_connections" extra, add a dependency on pyOpenSSL |
---|
495 | zooko@zooko.com**20110717114226 |
---|
496 | Ignore-this: df222120d41447ce4102616921626c82 |
---|
497 | fixes #1383 |
---|
498 | ] |
---|
499 | [test_sftp.py cleanup: remove a redundant definition of failUnlessReallyEqual. |
---|
500 | david-sarah@jacaranda.org**20110716181813 |
---|
501 | Ignore-this: 50113380b368c573f07ac6fe2eb1e97f |
---|
502 | ] |
---|
503 | [docs: add missing link in NEWS.rst |
---|
504 | zooko@zooko.com**20110712153307 |
---|
505 | Ignore-this: be7b7eb81c03700b739daa1027d72b35 |
---|
506 | ] |
---|
507 | [contrib: remove the contributed fuse modules and the entire contrib/ directory, which is now empty |
---|
508 | zooko@zooko.com**20110712153229 |
---|
509 | Ignore-this: 723c4f9e2211027c79d711715d972c5 |
---|
510 | Also remove a couple of vestigial references to figleaf, which is long gone. |
---|
511 | fixes #1409 (remove contrib/fuse) |
---|
512 | ] |
---|
513 | [add Protovis.js-based download-status timeline visualization |
---|
514 | Brian Warner <warner@lothar.com>**20110629222606 |
---|
515 | Ignore-this: 477ccef5c51b30e246f5b6e04ab4a127 |
---|
516 | |
---|
517 | provide status overlap info on the webapi t=json output, add decode/decrypt |
---|
518 | rate tooltips, add zoomin/zoomout buttons |
---|
519 | ] |
---|
520 | [add more download-status data, fix tests |
---|
521 | Brian Warner <warner@lothar.com>**20110629222555 |
---|
522 | Ignore-this: e9e0b7e0163f1e95858aa646b9b17b8c |
---|
523 | ] |
---|
524 | [prepare for viz: improve DownloadStatus events |
---|
525 | Brian Warner <warner@lothar.com>**20110629222542 |
---|
526 | Ignore-this: 16d0bde6b734bb501aa6f1174b2b57be |
---|
527 | |
---|
528 | consolidate IDownloadStatusHandlingConsumer stuff into DownloadNode |
---|
529 | ] |
---|
530 | [docs: fix error in crypto specification that was noticed by Taylor R Campbell <campbell+tahoe@mumble.net> |
---|
531 | zooko@zooko.com**20110629185711 |
---|
532 | Ignore-this: b921ed60c1c8ba3c390737fbcbe47a67 |
---|
533 | ] |
---|
534 | [setup.py: don't make bin/tahoe.pyscript executable. fixes #1347 |
---|
535 | david-sarah@jacaranda.org**20110130235809 |
---|
536 | Ignore-this: 3454c8b5d9c2c77ace03de3ef2d9398a |
---|
537 | ] |
---|
538 | [Makefile: remove targets relating to 'setup.py check_auto_deps' which no longer exists. fixes #1345 |
---|
539 | david-sarah@jacaranda.org**20110626054124 |
---|
540 | Ignore-this: abb864427a1b91bd10d5132b4589fd90 |
---|
541 | ] |
---|
542 | [Makefile: add 'make check' as an alias for 'make test'. Also remove an unnecessary dependency of 'test' on 'build' and 'src/allmydata/_version.py'. fixes #1344 |
---|
543 | david-sarah@jacaranda.org**20110623205528 |
---|
544 | Ignore-this: c63e23146c39195de52fb17c7c49b2da |
---|
545 | ] |
---|
546 | [Rename test_package_initialization.py to (much shorter) test_import.py . |
---|
547 | Brian Warner <warner@lothar.com>**20110611190234 |
---|
548 | Ignore-this: 3eb3dbac73600eeff5cfa6b65d65822 |
---|
549 | |
---|
550 | The former name was making my 'ls' listings hard to read, by forcing them |
---|
551 | down to just two columns. |
---|
552 | ] |
---|
553 | [tests: fix tests to accomodate [20110611153758-92b7f-0ba5e4726fb6318dac28fb762a6512a003f4c430] |
---|
554 | zooko@zooko.com**20110611163741 |
---|
555 | Ignore-this: 64073a5f39e7937e8e5e1314c1a302d1 |
---|
556 | Apparently none of the two authors (stercor, terrell), three reviewers (warner, davidsarah, terrell), or one committer (me) actually ran the tests. This is presumably due to #20. |
---|
557 | fixes #1412 |
---|
558 | ] |
---|
559 | [wui: right-align the size column in the WUI |
---|
560 | zooko@zooko.com**20110611153758 |
---|
561 | Ignore-this: 492bdaf4373c96f59f90581c7daf7cd7 |
---|
562 | Thanks to Ted "stercor" Rolle Jr. and Terrell Russell. |
---|
563 | fixes #1412 |
---|
564 | ] |
---|
565 | [docs: three minor fixes |
---|
566 | zooko@zooko.com**20110610121656 |
---|
567 | Ignore-this: fec96579eb95aceb2ad5fc01a814c8a2 |
---|
568 | CREDITS for arc for stats tweak |
---|
569 | fix link to .zip file in quickstart.rst (thanks to ChosenOne for noticing) |
---|
570 | English usage tweak |
---|
571 | ] |
---|
572 | [docs/running.rst: fix stray HTML (not .rst) link noticed by ChosenOne. |
---|
573 | david-sarah@jacaranda.org**20110609223719 |
---|
574 | Ignore-this: fc50ac9c94792dcac6f1067df8ac0d4a |
---|
575 | ] |
---|
576 | [server.py: get_latencies now reports percentiles _only_ if there are sufficient observations for the interpretation of the percentile to be unambiguous. |
---|
577 | wilcoxjg@gmail.com**20110527120135 |
---|
578 | Ignore-this: 2e7029764bffc60e26f471d7c2b6611e |
---|
579 | interfaces.py: modified the return type of RIStatsProvider.get_stats to allow for None as a return value |
---|
580 | NEWS.rst, stats.py: documentation of change to get_latencies |
---|
581 | stats.rst: now documents percentile modification in get_latencies |
---|
582 | test_storage.py: test_latencies now expects None in output categories that contain too few samples for the associated percentile to be unambiguously reported. |
---|
583 | fixes #1392 |
---|
584 | ] |
---|
585 | [docs: revert link in relnotes.txt from NEWS.rst to NEWS, since the former did not exist at revision 5000. |
---|
586 | david-sarah@jacaranda.org**20110517011214 |
---|
587 | Ignore-this: 6a5be6e70241e3ec0575641f64343df7 |
---|
588 | ] |
---|
589 | [docs: convert NEWS to NEWS.rst and change all references to it. |
---|
590 | david-sarah@jacaranda.org**20110517010255 |
---|
591 | Ignore-this: a820b93ea10577c77e9c8206dbfe770d |
---|
592 | ] |
---|
593 | [docs: remove out-of-date docs/testgrid/introducer.furl and containing directory. fixes #1404 |
---|
594 | david-sarah@jacaranda.org**20110512140559 |
---|
595 | Ignore-this: 784548fc5367fac5450df1c46890876d |
---|
596 | ] |
---|
597 | [scripts/common.py: don't assume that the default alias is always 'tahoe' (it is, but the API of get_alias doesn't say so). refs #1342 |
---|
598 | david-sarah@jacaranda.org**20110130164923 |
---|
599 | Ignore-this: a271e77ce81d84bb4c43645b891d92eb |
---|
600 | ] |
---|
601 | [setup: don't catch all Exception from check_requirement(), but only PackagingError and ImportError |
---|
602 | zooko@zooko.com**20110128142006 |
---|
603 | Ignore-this: 57d4bc9298b711e4bc9dc832c75295de |
---|
604 | I noticed this because I had accidentally inserted a bug which caused AssertionError to be raised from check_requirement(). |
---|
605 | ] |
---|
606 | [M-x whitespace-cleanup |
---|
607 | zooko@zooko.com**20110510193653 |
---|
608 | Ignore-this: dea02f831298c0f65ad096960e7df5c7 |
---|
609 | ] |
---|
610 | [docs: fix typo in running.rst, thanks to arch_o_median |
---|
611 | zooko@zooko.com**20110510193633 |
---|
612 | Ignore-this: ca06de166a46abbc61140513918e79e8 |
---|
613 | ] |
---|
614 | [relnotes.txt: don't claim to work on Cygwin (which has been untested for some time). refs #1342 |
---|
615 | david-sarah@jacaranda.org**20110204204902 |
---|
616 | Ignore-this: 85ef118a48453d93fa4cddc32d65b25b |
---|
617 | ] |
---|
618 | [relnotes.txt: forseeable -> foreseeable. refs #1342 |
---|
619 | david-sarah@jacaranda.org**20110204204116 |
---|
620 | Ignore-this: 746debc4d82f4031ebf75ab4031b3a9 |
---|
621 | ] |
---|
622 | [replace remaining .html docs with .rst docs |
---|
623 | zooko@zooko.com**20110510191650 |
---|
624 | Ignore-this: d557d960a986d4ac8216d1677d236399 |
---|
625 | Remove install.html (long since deprecated). |
---|
626 | Also replace some obsolete references to install.html with references to quickstart.rst. |
---|
627 | Fix some broken internal references within docs/historical/historical_known_issues.txt. |
---|
628 | Thanks to Ravi Pinjala and Patrick McDonald. |
---|
629 | refs #1227 |
---|
630 | ] |
---|
631 | [docs: FTP-and-SFTP.rst: fix a minor error and update the information about which version of Twisted fixes #1297 |
---|
632 | zooko@zooko.com**20110428055232 |
---|
633 | Ignore-this: b63cfb4ebdbe32fb3b5f885255db4d39 |
---|
634 | ] |
---|
635 | [munin tahoe_files plugin: fix incorrect file count |
---|
636 | francois@ctrlaltdel.ch**20110428055312 |
---|
637 | Ignore-this: 334ba49a0bbd93b4a7b06a25697aba34 |
---|
638 | fixes #1391 |
---|
639 | ] |
---|
640 | [corrected "k must never be smaller than N" to "k must never be greater than N" |
---|
641 | secorp@allmydata.org**20110425010308 |
---|
642 | Ignore-this: 233129505d6c70860087f22541805eac |
---|
643 | ] |
---|
644 | [Fix a test failure in test_package_initialization on Python 2.4.x due to exceptions being stringified differently than in later versions of Python. refs #1389 |
---|
645 | david-sarah@jacaranda.org**20110411190738 |
---|
646 | Ignore-this: 7847d26bc117c328c679f08a7baee519 |
---|
647 | ] |
---|
648 | [tests: add test for including the ImportError message and traceback entry in the summary of errors from importing dependencies. refs #1389 |
---|
649 | david-sarah@jacaranda.org**20110410155844 |
---|
650 | Ignore-this: fbecdbeb0d06a0f875fe8d4030aabafa |
---|
651 | ] |
---|
652 | [allmydata/__init__.py: preserve the message and last traceback entry (file, line number, function, and source line) of ImportErrors in the package versions string. fixes #1389 |
---|
653 | david-sarah@jacaranda.org**20110410155705 |
---|
654 | Ignore-this: 2f87b8b327906cf8bfca9440a0904900 |
---|
655 | ] |
---|
656 | [remove unused variable detected by pyflakes |
---|
657 | zooko@zooko.com**20110407172231 |
---|
658 | Ignore-this: 7344652d5e0720af822070d91f03daf9 |
---|
659 | ] |
---|
660 | [allmydata/__init__.py: Nicer reporting of unparseable version numbers in dependencies. fixes #1388 |
---|
661 | david-sarah@jacaranda.org**20110401202750 |
---|
662 | Ignore-this: 9c6bd599259d2405e1caadbb3e0d8c7f |
---|
663 | ] |
---|
664 | [update FTP-and-SFTP.rst: the necessary patch is included in Twisted-10.1 |
---|
665 | Brian Warner <warner@lothar.com>**20110325232511 |
---|
666 | Ignore-this: d5307faa6900f143193bfbe14e0f01a |
---|
667 | ] |
---|
668 | [control.py: remove all uses of s.get_serverid() |
---|
669 | warner@lothar.com**20110227011203 |
---|
670 | Ignore-this: f80a787953bd7fa3d40e828bde00e855 |
---|
671 | ] |
---|
672 | [web: remove some uses of s.get_serverid(), not all |
---|
673 | warner@lothar.com**20110227011159 |
---|
674 | Ignore-this: a9347d9cf6436537a47edc6efde9f8be |
---|
675 | ] |
---|
676 | [immutable/downloader/fetcher.py: remove all get_serverid() calls |
---|
677 | warner@lothar.com**20110227011156 |
---|
678 | Ignore-this: fb5ef018ade1749348b546ec24f7f09a |
---|
679 | ] |
---|
680 | [immutable/downloader/fetcher.py: fix diversity bug in server-response handling |
---|
681 | warner@lothar.com**20110227011153 |
---|
682 | Ignore-this: bcd62232c9159371ae8a16ff63d22c1b |
---|
683 | |
---|
684 | When blocks terminate (either COMPLETE or CORRUPT/DEAD/BADSEGNUM), the |
---|
685 | _shares_from_server dict was being popped incorrectly (using shnum as the |
---|
686 | index instead of serverid). I'm still thinking through the consequences of |
---|
687 | this bug. It was probably benign and really hard to detect. I think it would |
---|
688 | cause us to incorrectly believe that we're pulling too many shares from a |
---|
689 | server, and thus prefer a different server rather than asking for a second |
---|
690 | share from the first server. The diversity code is intended to spread out the |
---|
691 | number of shares simultaneously being requested from each server, but with |
---|
692 | this bug, it might be spreading out the total number of shares requested at |
---|
693 | all, not just simultaneously. (note that SegmentFetcher is scoped to a single |
---|
694 | segment, so the effect doesn't last very long). |
---|
695 | ] |
---|
696 | [immutable/downloader/share.py: reduce get_serverid(), one left, update ext deps |
---|
697 | warner@lothar.com**20110227011150 |
---|
698 | Ignore-this: d8d56dd8e7b280792b40105e13664554 |
---|
699 | |
---|
700 | test_download.py: create+check MyShare instances better, make sure they share |
---|
701 | Server objects, now that finder.py cares |
---|
702 | ] |
---|
703 | [immutable/downloader/finder.py: reduce use of get_serverid(), one left |
---|
704 | warner@lothar.com**20110227011146 |
---|
705 | Ignore-this: 5785be173b491ae8a78faf5142892020 |
---|
706 | ] |
---|
707 | [immutable/offloaded.py: reduce use of get_serverid() a bit more |
---|
708 | warner@lothar.com**20110227011142 |
---|
709 | Ignore-this: b48acc1b2ae1b311da7f3ba4ffba38f |
---|
710 | ] |
---|
711 | [immutable/upload.py: reduce use of get_serverid() |
---|
712 | warner@lothar.com**20110227011138 |
---|
713 | Ignore-this: ffdd7ff32bca890782119a6e9f1495f6 |
---|
714 | ] |
---|
715 | [immutable/checker.py: remove some uses of s.get_serverid(), not all |
---|
716 | warner@lothar.com**20110227011134 |
---|
717 | Ignore-this: e480a37efa9e94e8016d826c492f626e |
---|
718 | ] |
---|
719 | [add remaining get_* methods to storage_client.Server, NoNetworkServer, and |
---|
720 | warner@lothar.com**20110227011132 |
---|
721 | Ignore-this: 6078279ddf42b179996a4b53bee8c421 |
---|
722 | MockIServer stubs |
---|
723 | ] |
---|
724 | [upload.py: rearrange _make_trackers a bit, no behavior changes |
---|
725 | warner@lothar.com**20110227011128 |
---|
726 | Ignore-this: 296d4819e2af452b107177aef6ebb40f |
---|
727 | ] |
---|
728 | [happinessutil.py: finally rename merge_peers to merge_servers |
---|
729 | warner@lothar.com**20110227011124 |
---|
730 | Ignore-this: c8cd381fea1dd888899cb71e4f86de6e |
---|
731 | ] |
---|
732 | [test_upload.py: factor out FakeServerTracker |
---|
733 | warner@lothar.com**20110227011120 |
---|
734 | Ignore-this: 6c182cba90e908221099472cc159325b |
---|
735 | ] |
---|
736 | [test_upload.py: server-vs-tracker cleanup |
---|
737 | warner@lothar.com**20110227011115 |
---|
738 | Ignore-this: 2915133be1a3ba456e8603885437e03 |
---|
739 | ] |
---|
740 | [happinessutil.py: server-vs-tracker cleanup |
---|
741 | warner@lothar.com**20110227011111 |
---|
742 | Ignore-this: b856c84033562d7d718cae7cb01085a9 |
---|
743 | ] |
---|
744 | [upload.py: more tracker-vs-server cleanup |
---|
745 | warner@lothar.com**20110227011107 |
---|
746 | Ignore-this: bb75ed2afef55e47c085b35def2de315 |
---|
747 | ] |
---|
748 | [upload.py: fix var names to avoid confusion between 'trackers' and 'servers' |
---|
749 | warner@lothar.com**20110227011103 |
---|
750 | Ignore-this: 5d5e3415b7d2732d92f42413c25d205d |
---|
751 | ] |
---|
752 | [refactor: s/peer/server/ in immutable/upload, happinessutil.py, test_upload |
---|
753 | warner@lothar.com**20110227011100 |
---|
754 | Ignore-this: 7ea858755cbe5896ac212a925840fe68 |
---|
755 | |
---|
756 | No behavioral changes, just updating variable/method names and log messages. |
---|
757 | The effects outside these three files should be minimal: some exception |
---|
758 | messages changed (to say "server" instead of "peer"), and some internal class |
---|
759 | names were changed. A few things still use "peer" to minimize external |
---|
760 | changes, like UploadResults.timings["peer_selection"] and |
---|
761 | happinessutil.merge_peers, which can be changed later. |
---|
762 | ] |
---|
763 | [storage_client.py: clean up test_add_server/test_add_descriptor, remove .test_servers |
---|
764 | warner@lothar.com**20110227011056 |
---|
765 | Ignore-this: efad933e78179d3d5fdcd6d1ef2b19cc |
---|
766 | ] |
---|
767 | [test_client.py, upload.py:: remove KiB/MiB/etc constants, and other dead code |
---|
768 | warner@lothar.com**20110227011051 |
---|
769 | Ignore-this: dc83c5794c2afc4f81e592f689c0dc2d |
---|
770 | ] |
---|
771 | [test: increase timeout on a network test because Francois's ARM machine hit that timeout |
---|
772 | zooko@zooko.com**20110317165909 |
---|
773 | Ignore-this: 380c345cdcbd196268ca5b65664ac85b |
---|
774 | I'm skeptical that the test was proceeding correctly but ran out of time. It seems more likely that it had gotten hung. But if we raise the timeout to an even more extravagant number then we can be even more certain that the test was never going to finish. |
---|
775 | ] |
---|
776 | [docs/configuration.rst: add a "Frontend Configuration" section |
---|
777 | Brian Warner <warner@lothar.com>**20110222014323 |
---|
778 | Ignore-this: 657018aa501fe4f0efef9851628444ca |
---|
779 | |
---|
780 | this points to docs/frontends/*.rst, which were previously underlinked |
---|
781 | ] |
---|
782 | [web/filenode.py: avoid calling req.finish() on closed HTTP connections. Closes #1366 |
---|
783 | "Brian Warner <warner@lothar.com>"**20110221061544 |
---|
784 | Ignore-this: 799d4de19933f2309b3c0c19a63bb888 |
---|
785 | ] |
---|
786 | [Add unit tests for cross_check_pkg_resources_versus_import, and a regression test for ref #1355. This requires a little refactoring to make it testable. |
---|
787 | david-sarah@jacaranda.org**20110221015817 |
---|
788 | Ignore-this: 51d181698f8c20d3aca58b057e9c475a |
---|
789 | ] |
---|
790 | [allmydata/__init__.py: .name was used in place of the correct .__name__ when printing an exception. Also, robustify string formatting by using %r instead of %s in some places. fixes #1355. |
---|
791 | david-sarah@jacaranda.org**20110221020125 |
---|
792 | Ignore-this: b0744ed58f161bf188e037bad077fc48 |
---|
793 | ] |
---|
794 | [Refactor StorageFarmBroker handling of servers |
---|
795 | Brian Warner <warner@lothar.com>**20110221015804 |
---|
796 | Ignore-this: 842144ed92f5717699b8f580eab32a51 |
---|
797 | |
---|
798 | Pass around IServer instance instead of (peerid, rref) tuple. Replace |
---|
799 | "descriptor" with "server". Other replacements: |
---|
800 | |
---|
801 | get_all_servers -> get_connected_servers/get_known_servers |
---|
802 | get_servers_for_index -> get_servers_for_psi (now returns IServers) |
---|
803 | |
---|
804 | This change still needs to be pushed further down: lots of code is now |
---|
805 | getting the IServer and then distributing (peerid, rref) internally. |
---|
806 | Instead, it ought to distribute the IServer internally and delay |
---|
807 | extracting a serverid or rref until the last moment. |
---|
808 | |
---|
809 | no_network.py was updated to retain parallelism. |
---|
810 | ] |
---|
811 | [TAG allmydata-tahoe-1.8.2 |
---|
812 | warner@lothar.com**20110131020101] |
---|
813 | Patch bundle hash: |
---|
814 | 5c91cd26a8438dc743cebd72eee4011160933295 |
---|