Ticket #1463: edit-description-of-K-of-N-tradeoff.darcs.patch

File edit-description-of-K-of-N-tradeoff.darcs.patch, 58.2 KB (added by zooko, at 2011-08-04T19:47:17Z)
Line 
12 patches for repository /home/zooko/playground/tahoe-lafs/pristine:
2
3Thu Aug  4 13:27:22 MDT 2011  zooko@zooko.com
4  * doc: clean up formatting of doc/configuration.rst
5  reflow to 77 chars line width, M-x white-space cleanup, blank link between name and definition
6
7Thu Aug  4 13:34:09 MDT 2011  zooko@zooko.com
8  * doc: edit the explanation of K-of-N tradeoffs
9
10New patches:
11
12[doc: clean up formatting of doc/configuration.rst
13zooko@zooko.com**20110804192722
14 Ignore-this: 7a98a3a8afb7e5441ff1f534211199ba
15 reflow to 77 chars line width, M-x white-space cleanup, blank link between name and definition
16] {
17hunk ./docs/configuration.rst 16
18 9.  `Backwards Compatibility Files`_
19 10. `Example`_
20 
21-A Tahoe-LAFS node is configured by writing to files in its base directory. These
22-files are read by the node when it starts, so each time you change them, you
23-need to restart the node.
24+A Tahoe-LAFS node is configured by writing to files in its base
25+directory. These files are read by the node when it starts, so each time you
26+change them, you need to restart the node.
27 
28 The node also writes state to its base directory, so it will create files on
29 its own.
30hunk ./docs/configuration.rst 29
31 
32 The main file is named "``tahoe.cfg``", and is an ".INI"-style configuration
33 file (parsed by the Python stdlib 'ConfigParser' module: "``[name]``" section
34-markers, lines with "``key.subkey: value``", rfc822-style continuations). There
35-are also other files containing information that does not easily fit into this
36-format. The "``tahoe create-node``" or "``tahoe create-client``" command will
37-create an initial ``tahoe.cfg`` file for you. After creation, the node will
38-never modify the ``tahoe.cfg`` file: all persistent state is put in other files.
39+markers, lines with "``key.subkey: value``", rfc822-style
40+continuations). There are also other files containing information that does
41+not easily fit into this format. The "``tahoe create-node``" or "``tahoe
42+create-client``" command will create an initial ``tahoe.cfg`` file for
43+you. After creation, the node will never modify the ``tahoe.cfg`` file: all
44+persistent state is put in other files.
45 
46 The item descriptions below use the following types:
47 
48hunk ./docs/configuration.rst 39
49 ``boolean``
50+
51     one of (True, yes, on, 1, False, off, no, 0), case-insensitive
52 
53 ``strports string``
54hunk ./docs/configuration.rst 43
55-    a Twisted listening-port specification string, like "``tcp:80``"
56-    or "``tcp:3456:interface=127.0.0.1``". For a full description of
57-    the format, see `the Twisted strports documentation
58+
59+    a Twisted listening-port specification string, like "``tcp:80``" or
60+    "``tcp:3456:interface=127.0.0.1``". For a full description of the format,
61+    see `the Twisted strports documentation
62     <http://twistedmatrix.com/documents/current/api/twisted.application.strports.html>`_.
63 
64 ``FURL string``
65hunk ./docs/configuration.rst 50
66+
67     a Foolscap endpoint identifier, like
68     ``pb://soklj4y7eok5c3xkmjeqpw@192.168.69.247:44801/eqpwqtzm``
69 
70hunk ./docs/configuration.rst 82
71     filesystem access and node status as defined in `webapi.rst
72     <frontends/webapi.rst>`_. This file contains a Twisted "strports"
73     specification such as "``3456``" or "``tcp:3456:interface=127.0.0.1``".
74-    The "``tahoe create-node``" or "``tahoe create-client``" commands set
75-    the ``web.port`` to "``tcp:3456:interface=127.0.0.1``" by default; this
76-    is overridable by the ``--webport`` option. You can make it use SSL by
77+    The "``tahoe create-node``" or "``tahoe create-client``" commands set the
78+    ``web.port`` to "``tcp:3456:interface=127.0.0.1``" by default; this is
79+    overridable by the ``--webport`` option. You can make it use SSL by
80     writing "``ssl:3456:privateKey=mykey.pem:certKey=cert.pem``" instead.
81 
82     If this is not provided, the node will not run a web server.
83hunk ./docs/configuration.rst 91
84 
85 ``web.static = (string, optional)``
86 
87-    This controls where the ``/static`` portion of the URL space is served. The
88-    value is a directory name (``~username`` is allowed, and non-absolute names
89-    are interpreted relative to the node's basedir), which can contain HTML
90-    and other files. This can be used to serve a Javascript-based frontend to
91-    the Tahoe-LAFS node, or other services.
92+    This controls where the ``/static`` portion of the URL space is
93+    served. The value is a directory name (``~username`` is allowed, and
94+    non-absolute names are interpreted relative to the node's basedir), which
95+    can contain HTML and other files. This can be used to serve a
96+    Javascript-based frontend to the Tahoe-LAFS node, or other services.
97 
98hunk ./docs/configuration.rst 97
99-    The default value is "``public_html``", which will serve ``BASEDIR/public_html`` .
100-    With the default settings, ``http://127.0.0.1:3456/static/foo.html`` will
101-    serve the contents of ``BASEDIR/public_html/foo.html`` .
102+    The default value is "``public_html``", which will serve
103+    ``BASEDIR/public_html`` .  With the default settings,
104+    ``http://127.0.0.1:3456/static/foo.html`` will serve the contents of
105+    ``BASEDIR/public_html/foo.html`` .
106 
107 ``tub.port = (integer, optional)``
108 
109hunk ./docs/configuration.rst 121
110 
111     If you don't provide ``tub.location``, the node will try to figure out a
112     useful one by itself, by using tools like "``ifconfig``" to determine the
113-    set of IP addresses on which it can be reached from nodes both near and far.
114-    It will also include the TCP port number on which it is listening (either
115-    the one specified by ``tub.port``, or whichever port was assigned by the
116-    kernel when ``tub.port`` is left unspecified).
117+    set of IP addresses on which it can be reached from nodes both near and
118+    far.  It will also include the TCP port number on which it is listening
119+    (either the one specified by ``tub.port``, or whichever port was assigned
120+    by the kernel when ``tub.port`` is left unspecified).
121 
122     You might want to override this value if your node lives behind a
123     firewall that is doing inbound port forwarding, or if you are using other
124hunk ./docs/configuration.rst 158
125         tub.port = 8098
126         tub.location = external-firewall.example.com:7912
127 
128-    * Run a node behind a Tor proxy (perhaps via ``torsocks``), in client-only
129-      mode (i.e. we can make outbound connections, but other nodes will not
130-      be able to connect to us). The literal '``unreachable.example.org``' will
131-      not resolve, but will serve as a reminder to human observers that this
132-      node cannot be reached. "Don't call us.. we'll call you"::
133+    * Run a node behind a Tor proxy (perhaps via ``torsocks``), in
134+      client-only mode (i.e. we can make outbound connections, but other
135+      nodes will not be able to connect to us). The literal
136+      '``unreachable.example.org``' will not resolve, but will serve as a
137+      reminder to human observers that this node cannot be reached. "Don't
138+      call us.. we'll call you"::
139 
140         tub.port = 8098
141         tub.location = unreachable.example.org:0
142hunk ./docs/configuration.rst 189
143 
144 ``log_gatherer.furl = (FURL, optional)``
145 
146-    If provided, this contains a single FURL string that is used to contact
147-    a "log gatherer", which will be granted access to the logport. This can
148-    be used to gather operational logs in a single place. Note that in
149-    previous releases of Tahoe-LAFS, if an old-style
150-    ``BASEDIR/log_gatherer.furl`` file existed it would also be used in
151-    addition to this value, allowing multiple log gatherers to be used at
152-    once. As of Tahoe-LAFS v1.9.0, an old-style file is ignored and a
153-    warning will be emitted if one is detected. This means that as of
154-    Tahoe-LAFS v1.9.0 you can have at most one log gatherer per node. See
155-    ticket `#1423`_ about lifting this restriction and letting you have
156-    multiple log gatherers.
157+    If provided, this contains a single FURL string that is used to contact a
158+    "log gatherer", which will be granted access to the logport. This can be
159+    used to gather operational logs in a single place. Note that in previous
160+    releases of Tahoe-LAFS, if an old-style ``BASEDIR/log_gatherer.furl``
161+    file existed it would also be used in addition to this value, allowing
162+    multiple log gatherers to be used at once. As of Tahoe-LAFS v1.9.0, an
163+    old-style file is ignored and a warning will be emitted if one is
164+    detected. This means that as of Tahoe-LAFS v1.9.0 you can have at most
165+    one log gatherer per node. See ticket `#1423`_ about lifting this
166+    restriction and letting you have multiple log gatherers.
167 
168     .. _`#1423`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1423
169 
170hunk ./docs/configuration.rst 206
171 
172 ``timeout.disconnect = (integer in seconds, optional)``
173 
174-    If ``timeout.keepalive`` is provided, it is treated as an integral number of
175-    seconds, and sets the Foolscap "keepalive timer" to that value. For each
176-    connection to another node, if nothing has been heard for a while, we
177-    will attempt to provoke the other end into saying something. The duration
178-    of silence that passes before sending the PING will be between KT and
179-    2*KT. This is mainly intended to keep NAT boxes from expiring idle TCP
180-    sessions, but also gives TCP's long-duration keepalive/disconnect timers
181-    some traffic to work with. The default value is 240 (i.e. 4 minutes).
182+    If ``timeout.keepalive`` is provided, it is treated as an integral number
183+    of seconds, and sets the Foolscap "keepalive timer" to that value. For
184+    each connection to another node, if nothing has been heard for a while,
185+    we will attempt to provoke the other end into saying something. The
186+    duration of silence that passes before sending the PING will be between
187+    KT and 2*KT. This is mainly intended to keep NAT boxes from expiring idle
188+    TCP sessions, but also gives TCP's long-duration keepalive/disconnect
189+    timers some traffic to work with. The default value is 240 (i.e. 4
190+    minutes).
191 
192     If timeout.disconnect is provided, this is treated as an integral number
193     of seconds, and sets the Foolscap "disconnect timer" to that value. For
194hunk ./docs/configuration.rst 221
195     each connection to another node, if nothing has been heard for a while,
196     we will drop the connection. The duration of silence that passes before
197     dropping the connection will be between DT-2*KT and 2*DT+2*KT (please see
198-    ticket `#521`_ for more details). If we are sending a large amount of data
199-    to the other end (which takes more than DT-2*KT to deliver), we might
200-    incorrectly drop the connection. The default behavior (when this value is
201-    not provided) is to disable the disconnect timer.
202+    ticket `#521`_ for more details). If we are sending a large amount of
203+    data to the other end (which takes more than DT-2*KT to deliver), we
204+    might incorrectly drop the connection. The default behavior (when this
205+    value is not provided) is to disable the disconnect timer.
206 
207     See ticket `#521`_ for a discussion of how to pick these timeout values.
208     Using 30 minutes means we'll disconnect after 22 to 68 minutes of
209hunk ./docs/configuration.rst 258
210 
211     The default value is the ``tmp`` directory in the node's base directory
212     (i.e. ``BASEDIR/tmp``), but it can be placed elsewhere. This directory is
213-    used for files that usually (on a Unix system) go into ``/tmp``. The string
214-    will be interpreted relative to the node's base directory.
215+    used for files that usually (on a Unix system) go into ``/tmp``. The
216+    string will be interpreted relative to the node's base directory.
217 
218 
219 Client Configuration
220hunk ./docs/configuration.rst 269
221 
222 ``introducer.furl = (FURL string, mandatory)``
223 
224-    This FURL tells the client how to connect to the introducer. Each Tahoe-LAFS
225-    grid is defined by an introducer. The introducer's FURL is created by the
226-    introducer node and written into its base directory when it starts,
227-    whereupon it should be published to everyone who wishes to attach a
228-    client to that grid
229+    This FURL tells the client how to connect to the introducer. Each
230+    Tahoe-LAFS grid is defined by an introducer. The introducer's FURL is
231+    created by the introducer node and written into its base directory when
232+    it starts, whereupon it should be published to everyone who wishes to
233+    attach a client to that grid
234 
235 ``helper.furl = (FURL string, optional)``
236 
237hunk ./docs/configuration.rst 299
238 
239     These three values set the default encoding parameters. Each time a new
240     file is uploaded, erasure-coding is used to break the ciphertext into
241-    separate pieces. There will be ``N`` (i.e. ``shares.total``) pieces created,
242-    and the file will be recoverable if any ``k`` (i.e. ``shares.needed``)
243-    pieces are retrieved. The default values are 3-of-10 (i.e.
244-    ``shares.needed = 3``, ``shares.total = 10``). Setting ``k`` to 1 is
245-    equivalent to simple replication (uploading ``N`` copies of the file).
246+    separate pieces. There will be ``N`` (i.e. ``shares.total``) pieces
247+    created, and the file will be recoverable if any ``k``
248+    (i.e. ``shares.needed``) pieces are retrieved. The default values are
249+    3-of-10 (i.e.  ``shares.needed = 3``, ``shares.total = 10``). Setting
250+    ``k`` to 1 is equivalent to simple replication (uploading ``N`` copies of
251+    the file).
252 
253     These values control the tradeoff between storage overhead, performance,
254hunk ./docs/configuration.rst 307
255-    and reliability. To a first approximation, a 1MB file will use (1MB * ``N``/``k``)
256-    of backend storage space (the actual value will be a bit more, because of
257-    other forms of overhead). Up to ``N``-``k`` shares can be lost before the file
258-    becomes unrecoverable, so assuming there are at least ``N`` servers, up to
259-    ``N``-``k`` servers can be offline without losing the file. So large ``N``/``k``
260-    ratios are more reliable, and small ``N``/``k`` ratios use less disk space.
261-    Clearly, ``k`` must never be greater than ``N``.
262+    and reliability. To a first approximation, a 1MB file will use (1MB *
263+    ``N``/``k``) of backend storage space (the actual value will be a bit
264+    more, because of other forms of overhead). Up to ``N``-``k`` shares can
265+    be lost before the file becomes unrecoverable, so assuming there are at
266+    least ``N`` servers, up to ``N``-``k`` servers can be offline without
267+    losing the file. So large ``N``/``k`` ratios are more reliable, and small
268+    ``N``/``k`` ratios use less disk space.  Clearly, ``k`` must never be
269+    greater than ``N``.
270 
271hunk ./docs/configuration.rst 316
272-    Large values of ``N`` will slow down upload operations slightly, since more
273-    servers must be involved, and will slightly increase storage overhead due
274-    to the hash trees that are created. Large values of ``k`` will cause
275-    downloads to be marginally slower, because more servers must be involved.
276-    ``N`` cannot be larger than 256, because of the 8-bit erasure-coding
277-    algorithm that Tahoe-LAFS uses.
278+    Large values of ``N`` will slow down upload operations slightly, since
279+    more servers must be involved, and will slightly increase storage
280+    overhead due to the hash trees that are created. Large values of ``k``
281+    will cause downloads to be marginally slower, because more servers must
282+    be involved.  ``N`` cannot be larger than 256, because of the 8-bit
283+    erasure-coding algorithm that Tahoe-LAFS uses.
284 
285hunk ./docs/configuration.rst 323
286-    ``shares.happy`` allows you control over the distribution of your immutable
287-    file. For a successful upload, shares are guaranteed to be initially
288-    placed on at least ``shares.happy`` distinct servers, the correct
289-    functioning of any ``k`` of which is sufficient to guarantee the availability
290-    of the uploaded file. This value should not be larger than the number of
291-    servers on your grid.
292+    ``shares.happy`` allows you control over the distribution of your
293+    immutable file. For a successful upload, shares are guaranteed to be
294+    initially placed on at least ``shares.happy`` distinct servers, the
295+    correct functioning of any ``k`` of which is sufficient to guarantee the
296+    availability of the uploaded file. This value should not be larger than
297+    the number of servers on your grid.
298 
299     A value of ``shares.happy`` <= ``k`` is allowed, but does not provide any
300     redundancy if some servers fail or lose shares.
301hunk ./docs/configuration.rst 379
302 
303 ``enabled = (boolean, optional)``
304 
305-    If this is ``True``, the node will run a storage server, offering space to
306-    other clients. If it is ``False``, the node will not run a storage server,
307-    meaning that no shares will be stored on this node. Use ``False`` for
308-    clients who do not wish to provide storage service. The default value is
309-    ``True``.
310+    If this is ``True``, the node will run a storage server, offering space
311+    to other clients. If it is ``False``, the node will not run a storage
312+    server, meaning that no shares will be stored on this node. Use ``False``
313+    for clients who do not wish to provide storage service. The default value
314+    is ``True``.
315 
316 ``readonly = (boolean, optional)``
317 
318hunk ./docs/configuration.rst 389
319     If ``True``, the node will run a storage server but will not accept any
320     shares, making it effectively read-only. Use this for storage servers
321-    that are being decommissioned: the ``storage/`` directory could be mounted
322-    read-only, while shares are moved to other servers. Note that this
323-    currently only affects immutable shares. Mutable shares (used for
324+    that are being decommissioned: the ``storage/`` directory could be
325+    mounted read-only, while shares are moved to other servers. Note that
326+    this currently only affects immutable shares. Mutable shares (used for
327     directories) will be written and modified anyway. See ticket `#390
328     <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/390>`_ for the current
329     status of this bug. The default value is ``False``.
330hunk ./docs/configuration.rst 441
331 
332 ``enabled = (boolean, optional)``
333 
334-    If ``True``, the node will run a helper (see `<helper.rst>`_ for details).
335-    The helper's contact FURL will be placed in ``private/helper.furl``, from
336-    which it can be copied to any clients that wish to use it. Clearly nodes
337-    should not both run a helper and attempt to use one: do not create
338-    ``helper.furl`` and also define ``[helper]enabled`` in the same node.
339-    The default is ``False``.
340+    If ``True``, the node will run a helper (see `<helper.rst>`_ for
341+    details).  The helper's contact FURL will be placed in
342+    ``private/helper.furl``, from which it can be copied to any clients that
343+    wish to use it. Clearly nodes should not both run a helper and attempt to
344+    use one: do not create ``helper.furl`` and also define
345+    ``[helper]enabled`` in the same node.  The default is ``False``.
346 
347 
348 Running An Introducer
349hunk ./docs/configuration.rst 452
350 =====================
351 
352-The introducer node uses a different ``.tac`` file (named "``introducer.tac``"),
353-and pays attention to the ``[node]`` section, but not the others.
354+The introducer node uses a different ``.tac`` file (named
355+"``introducer.tac``"), and pays attention to the ``[node]`` section, but not
356+the others.
357 
358 The Introducer node maintains some different state than regular client nodes.
359 
360hunk ./docs/configuration.rst 459
361 ``BASEDIR/introducer.furl``
362+
363   This is generated the first time the introducer node is started, and used
364   again on subsequent runs, to give the introduction service a persistent
365hunk ./docs/configuration.rst 462
366-  long-term identity. This file should be published and copied into new client
367-  nodes before they are started for the first time.
368+  long-term identity. This file should be published and copied into new
369+  client nodes before they are started for the first time.
370 
371 
372 Other Files in BASEDIR
373hunk ./docs/configuration.rst 481
374 This section describes these other files.
375 
376 ``private/node.pem``
377-  This contains an SSL private-key certificate. The node
378-  generates this the first time it is started, and re-uses it on subsequent
379-  runs. This certificate allows the node to have a cryptographically-strong
380-  identifier (the Foolscap "TubID"), and to establish secure connections to
381-  other nodes.
382+
383+  This contains an SSL private-key certificate. The node generates this the
384+  first time it is started, and re-uses it on subsequent runs. This
385+  certificate allows the node to have a cryptographically-strong identifier
386+  (the Foolscap "TubID"), and to establish secure connections to other nodes.
387 
388 ``storage/``
389hunk ./docs/configuration.rst 488
390-  Nodes that host StorageServers will create this directory to hold shares
391-  of files on behalf of other clients. There will be a directory underneath
392-  it for each StorageIndex for which this node is holding shares. There is
393-  also an "incoming" directory where partially-completed shares are held
394-  while they are being received.
395+
396+  Nodes that host StorageServers will create this directory to hold shares of
397+  files on behalf of other clients. There will be a directory underneath it
398+  for each StorageIndex for which this node is holding shares. There is also
399+  an "incoming" directory where partially-completed shares are held while
400+  they are being received.
401 
402 ``tahoe-client.tac``
403hunk ./docs/configuration.rst 496
404+
405   This file defines the client, by constructing the actual Client instance
406   each time the node is started. It is used by the "``twistd``" daemonization
407hunk ./docs/configuration.rst 499
408-  program (in the ``-y`` mode), which is run internally by the "``tahoe start``"
409-  command. This file is created by the "``tahoe create-node``" or
410+  program (in the ``-y`` mode), which is run internally by the "``tahoe
411+  start``" command. This file is created by the "``tahoe create-node``" or
412   "``tahoe create-client``" commands.
413 
414 ``tahoe-introducer.tac``
415hunk ./docs/configuration.rst 504
416+
417   This file is used to construct an introducer, and is created by the
418   "``tahoe create-introducer``" command.
419 
420hunk ./docs/configuration.rst 509
421 ``tahoe-key-generator.tac``
422+
423   This file is used to construct a key generator, and is created by the
424   "``tahoe create-key-gernerator``" command.
425 
426hunk ./docs/configuration.rst 514
427 ``tahoe-stats-gatherer.tac``
428-  This file is used to construct a statistics gatherer, and is created by
429-  the "``tahoe create-stats-gatherer``" command.
430+
431+  This file is used to construct a statistics gatherer, and is created by the
432+  "``tahoe create-stats-gatherer``" command.
433 
434 ``private/control.furl``
435hunk ./docs/configuration.rst 519
436+
437   This file contains a FURL that provides access to a control port on the
438   client node, from which files can be uploaded and downloaded. This file is
439   created with permissions that prevent anyone else from reading it (on
440hunk ./docs/configuration.rst 528
441   debugging and testing use.
442 
443 ``private/logport.furl``
444+
445   This file contains a FURL that provides access to a 'log port' on the
446   client node, from which operational logs can be retrieved. Do not grant
447   logport access to strangers, because occasionally secret information may be
448hunk ./docs/configuration.rst 535
449   placed in the logs.
450 
451 ``private/helper.furl``
452+
453   If the node is running a helper (for use by other clients), its contact
454   FURL will be placed here. See `<helper.rst>`_ for more details.
455 
456hunk ./docs/configuration.rst 540
457 ``private/root_dir.cap`` (optional)
458+
459   The command-line tools will read a directory cap out of this file and use
460   it, if you don't specify a '--dir-cap' option or if you specify
461   '--dir-cap=root'.
462hunk ./docs/configuration.rst 546
463 
464 ``private/convergence`` (automatically generated)
465+
466   An added secret for encrypting immutable files. Everyone who has this same
467   string in their ``private/convergence`` file encrypts their immutable files
468   in the same way when uploading them. This causes identical files to
469hunk ./docs/configuration.rst 557
470   contents of a file, then they can use brute-force to learn the remaining
471   contents.
472 
473-  So the set of people who know your ``private/convergence`` string is the set
474-  of people who converge their storage space with you when you and they upload
475-  identical immutable files, and it is also the set of people who could mount
476-  such an attack.
477+  So the set of people who know your ``private/convergence`` string is the
478+  set of people who converge their storage space with you when you and they
479+  upload identical immutable files, and it is also the set of people who
480+  could mount such an attack.
481 
482hunk ./docs/configuration.rst 562
483-  The content of the ``private/convergence`` file is a base-32 encoded string.
484-  If the file doesn't exist, then when the Tahoe-LAFS client starts up it will
485-  generate a random 256-bit string and write the base-32 encoding of this
486-  string into the file. If you want to converge your immutable files with as
487-  many people as possible, put the empty string (so that ``private/convergence``
488-  is a zero-length file).
489+  The content of the ``private/convergence`` file is a base-32 encoded
490+  string.  If the file doesn't exist, then when the Tahoe-LAFS client starts
491+  up it will generate a random 256-bit string and write the base-32 encoding
492+  of this string into the file. If you want to converge your immutable files
493+  with as many people as possible, put the empty string (so that
494+  ``private/convergence`` is a zero-length file).
495 
496 
497 Other files
498hunk ./docs/configuration.rst 574
499 ===========
500 
501 ``logs/``
502-  Each Tahoe-LAFS node creates a directory to hold the log messages produced as
503-  the node runs. These logfiles are created and rotated by the "``twistd``"
504-  daemonization program, so ``logs/twistd.log`` will contain the most recent
505-  messages, ``logs/twistd.log.1`` will contain the previous ones,
506+
507+  Each Tahoe-LAFS node creates a directory to hold the log messages produced
508+  as the node runs. These logfiles are created and rotated by the
509+  "``twistd``" daemonization program, so ``logs/twistd.log`` will contain the
510+  most recent messages, ``logs/twistd.log.1`` will contain the previous ones,
511   ``logs/twistd.log.2`` will be older still, and so on. ``twistd`` rotates
512hunk ./docs/configuration.rst 580
513-  logfiles after they grow beyond 1MB in size. If the space consumed by logfiles
514-  becomes troublesome, they should be pruned: a cron job to delete all files
515-  that were created more than a month ago in this ``logs/`` directory should be
516-  sufficient.
517+  logfiles after they grow beyond 1MB in size. If the space consumed by
518+  logfiles becomes troublesome, they should be pruned: a cron job to delete
519+  all files that were created more than a month ago in this ``logs/``
520+  directory should be sufficient.
521 
522 ``my_nodeid``
523hunk ./docs/configuration.rst 586
524+
525   this is written by all nodes after startup, and contains a base32-encoded
526   (i.e. human-readable) NodeID that identifies this specific node. This
527   NodeID is the same string that gets displayed on the web page (in the
528hunk ./docs/configuration.rst 597
529 Example
530 =======
531 
532-The following is a sample ``tahoe.cfg`` file, containing values for some of the
533-keys described in the previous section. Note that this is not a recommended
534-configuration (most of these are not the default values), merely a legal one.
535+The following is a sample ``tahoe.cfg`` file, containing values for some of
536+the keys described in the previous section. Note that this is not a
537+recommended configuration (most of these are not the default values), merely
538+a legal one.
539 
540 ::
541 
542hunk ./docs/configuration.rst 635
543 =======================
544 
545 Tahoe-LAFS releases before v1.3.0 had no ``tahoe.cfg`` file, and used
546-distinct files for each item. This is no longer supported and if you
547-have configuration in the old format you must manually convert it to
548-the new format for Tahoe-LAFS to detect it. See
549-`<historical/configuration.rst>`_.
550+distinct files for each item. This is no longer supported and if you have
551+configuration in the old format you must manually convert it to the new
552+format for Tahoe-LAFS to detect it. See `<historical/configuration.rst>`_.
553}
554[doc: edit the explanation of K-of-N tradeoffs
555zooko@zooko.com**20110804193409
556 Ignore-this: ab6f4e35a995c2099340b5c9c5d30f40
557] {
558hunk ./docs/configuration.rst 79
559 ``web.port = (strports string, optional)``
560 
561     This controls where the node's webserver should listen, providing
562-    filesystem access and node status as defined in `webapi.rst
563-    <frontends/webapi.rst>`_. This file contains a Twisted "strports"
564+    filesystem access and node status as defined in
565+    `<frontends/webapi.rst>`_. This file contains a Twisted "strports"
566     specification such as "``3456``" or "``tcp:3456:interface=127.0.0.1``".
567     The "``tahoe create-node``" or "``tahoe create-client``" commands set the
568     ``web.port`` to "``tcp:3456:interface=127.0.0.1``" by default; this is
569hunk ./docs/configuration.rst 299
570 
571     These three values set the default encoding parameters. Each time a new
572     file is uploaded, erasure-coding is used to break the ciphertext into
573-    separate pieces. There will be ``N`` (i.e. ``shares.total``) pieces
574+    separate shares. There will be ``N`` (i.e. ``shares.total``) shares
575     created, and the file will be recoverable if any ``k``
576hunk ./docs/configuration.rst 301
577-    (i.e. ``shares.needed``) pieces are retrieved. The default values are
578+    (i.e. ``shares.needed``) shares are retrieved. The default values are
579     3-of-10 (i.e.  ``shares.needed = 3``, ``shares.total = 10``). Setting
580     ``k`` to 1 is equivalent to simple replication (uploading ``N`` copies of
581     the file).
582hunk ./docs/configuration.rst 306
583 
584-    These values control the tradeoff between storage overhead, performance,
585-    and reliability. To a first approximation, a 1MB file will use (1MB *
586+    These values control the tradeoff between storage overhead and
587+    reliability. To a first approximation, a 1MB file will use (1MB *
588     ``N``/``k``) of backend storage space (the actual value will be a bit
589     more, because of other forms of overhead). Up to ``N``-``k`` shares can
590hunk ./docs/configuration.rst 310
591-    be lost before the file becomes unrecoverable, so assuming there are at
592-    least ``N`` servers, up to ``N``-``k`` servers can be offline without
593-    losing the file. So large ``N``/``k`` ratios are more reliable, and small
594-    ``N``/``k`` ratios use less disk space.  Clearly, ``k`` must never be
595-    greater than ``N``.
596+    be lost before the file becomes unrecoverable.  So large ``N``/``k``
597+    ratios are more reliable, and small ``N``/``k`` ratios use less disk
598+    space. ``N`` cannot be larger than 256, because of the 8-bit
599+    erasure-coding algorithm that Tahoe-LAFS uses. ``k`` can not be greater
600+    than ``N``. See `<performance.rst>`_ for more details.
601 
602hunk ./docs/configuration.rst 316
603-    Large values of ``N`` will slow down upload operations slightly, since
604-    more servers must be involved, and will slightly increase storage
605-    overhead due to the hash trees that are created. Large values of ``k``
606-    will cause downloads to be marginally slower, because more servers must
607-    be involved.  ``N`` cannot be larger than 256, because of the 8-bit
608-    erasure-coding algorithm that Tahoe-LAFS uses.
609-
610-    ``shares.happy`` allows you control over the distribution of your
611-    immutable file. For a successful upload, shares are guaranteed to be
612-    initially placed on at least ``shares.happy`` distinct servers, the
613-    correct functioning of any ``k`` of which is sufficient to guarantee the
614-    availability of the uploaded file. This value should not be larger than
615-    the number of servers on your grid.
616+    ``shares.happy`` allows you control over how well to "spread out" the
617+    shares of an immutable file. For a successful upload, shares are
618+    guaranteed to be initially placed on at least ``shares.happy`` distinct
619+    servers, the correct functioning of any ``k`` of which is sufficient to
620+    guarantee the availability of the uploaded file. This value should not be
621+    larger than the number of servers on your grid.
622 
623     A value of ``shares.happy`` <= ``k`` is allowed, but does not provide any
624     redundancy if some servers fail or lose shares.
625}
626
627Context:
628
629[test_runner.py: fix a bug in CreateNode.do_create introduced in changeset [5114] when the tahoe.cfg file has been written with CRLF line endings. refs #1385
630david-sarah@jacaranda.org**20110804003032
631 Ignore-this: 7b7afdcf99da6671afac2d42828883eb
632]
633[test_client.py: repair Basic.test_error_on_old_config_files. refs #1385
634david-sarah@jacaranda.org**20110803235036
635 Ignore-this: 31e2a9c3febe55948de7e144353663e
636]
637[test_checker.py: increase timeout for TooParallel.test_immutable again. The ARM buildslave took 38 seconds, so 40 seconds is too close to the edge; make it 80.
638david-sarah@jacaranda.org**20110803214042
639 Ignore-this: 2d8026a6b25534e01738f78d6c7495cb
640]
641[test_runner.py: fix RunNode.test_introducer to not rely on the mtime of introducer.furl to detect when the node has restarted. Instead we detect when node.url has been written. refs #1385
642david-sarah@jacaranda.org**20110803180917
643 Ignore-this: 11ddc43b107beca42cb78af88c5c394c
644]
645[Further improve error message about old config files. refs #1385
646david-sarah@jacaranda.org**20110803174546
647 Ignore-this: 9d6cc3c288d9863dce58faafb3855917
648]
649[Slightly improve error message about old config files (avoid unnecessary Unicode escaping). refs #1385
650david-sarah@jacaranda.org**20110803163848
651 Ignore-this: a3e3930fba7ccf90b8db3d2ed5829df4
652]
653[test_checker.py: increase timeout for TooParallel.test_immutable (was consistently failing on ARM buildslave).
654david-sarah@jacaranda.org**20110803163213
655 Ignore-this: d0efceaf12628e8791862b80c85b5d56
656]
657[Fix the bug that prevents an introducer from starting when introducer.furl already exists. Also remove some dead code that used to read old config files, and rename 'warn_about_old_config_files' to reflect that it's not a warning. refs #1385
658david-sarah@jacaranda.org**20110803013212
659 Ignore-this: 2d6cd14bd06a7493b26f2027aff78f4d
660]
661[test_runner.py: modify RunNode.test_introducer to test that starting an introducer works when the introducer.furl file already exists. refs #1385
662david-sarah@jacaranda.org**20110803012704
663 Ignore-this: 8cf7f27ac4bfbb5ad8ca4a974106d437
664]
665[verifier: correct a bug introduced in changeset [5106] that caused us to only verify the first block of a file. refs #1395
666david-sarah@jacaranda.org**20110802172437
667 Ignore-this: 87fb77854a839ff217dce73544775b11
668]
669[test_repairer: add a deterministic test of share data corruption that always flips the bits of the last byte of the share data. refs #1395
670david-sarah@jacaranda.org**20110802175841
671 Ignore-this: 72f54603785007e88220c8d979e08be7
672]
673[verifier: serialize the fetching of blocks within a share so that we don't use too much RAM
674zooko@zooko.com**20110802063703
675 Ignore-this: debd9bac07dcbb6803f835a9e2eabaa1
676 
677 Shares are still verified in parallel, but within a share, don't request a
678 block until the previous block has been verified and the memory we used to hold
679 it has been freed up.
680 
681 Patch originally due to Brian. This version has a mockery-patchery-style test
682 which is "low tech" (it implements the patching inline in the test code instead
683 of using an extension of the mock.patch() function from the mock library) and
684 which unpatches in case of exception.
685 
686 fixes #1395
687]
688[add docs about timing-channel attacks
689Brian Warner <warner@lothar.com>**20110802044541
690 Ignore-this: 73114d5f5ed9ce252597b707dba3a194
691]
692['test-coverage' now needs PYTHONPATH=. to find TOP/twisted/plugins/
693Brian Warner <warner@lothar.com>**20110802041952
694 Ignore-this: d40f1f4cb426ea1c362fc961baedde2
695]
696[reject old-style (pre-Tahoe-LAFS-v1.3) configuration files
697zooko@zooko.com**20110801232423
698 Ignore-this: b58218fcc064cc75ad8f05ed0c38902b
699 Check for the existence of any of them and if any are found raise exception which will abort the startup of the node.
700 This is a backwards-incompatible change for anyone who is still using old-style configuration files.
701 fixes #1385
702]
703[whitespace-cleanup
704zooko@zooko.com**20110725015546
705 Ignore-this: 442970d0545183b97adc7bd66657876c
706]
707[tests: use fileutil.write() instead of open() to ensure timely close even without CPython-style reference counting
708zooko@zooko.com**20110331145427
709 Ignore-this: 75aae4ab8e5fa0ad698f998aaa1888ce
710 Some of these already had an explicit close() but I went ahead and replaced them with fileutil.write() as well for the sake of uniformity.
711]
712[remove nodeid from WriteBucketProxy classes and customers
713warner@lothar.com**20110801224317
714 Ignore-this: e55334bb0095de11711eeb3af827e8e8
715 refs #1363
716]
717[remove get_serverid() from ReadBucketProxy and customers, including Checker
718warner@lothar.com**20110801224307
719 Ignore-this: 837aba457bc853e4fd413ab1a94519cb
720 and debug.py dump-share commands
721 refs #1363
722]
723[Address Kevan's comment in #776 about Options classes missed when adding 'self.command_name'. refs #776, #1359
724david-sarah@jacaranda.org**20110801221317
725 Ignore-this: 8881d42cf7e6a1d15468291b0cb8fab9
726]
727[docs/frontends/webapi.rst: change some more instances of 'delete' or 'remove' to 'unlink', change some section titles, and use two blank lines between all sections. refs #776, #1104
728david-sarah@jacaranda.org**20110801220919
729 Ignore-this: 572327591137bb05c24c44812d4b163f
730]
731[cleanup: implement rm as a synonym for unlink rather than vice-versa. refs #776
732david-sarah@jacaranda.org**20110801220108
733 Ignore-this: 598dcbed870f4f6bb9df62de9111b343
734]
735[docs/webapi.rst: address Kevan's comments about use of 'delete' on ref #1104
736david-sarah@jacaranda.org**20110801205356
737 Ignore-this: 4fbf03864934753c951ddeff64392491
738]
739[docs: some changes of 'delete' or 'rm' to 'unlink'. refs #1104
740david-sarah@jacaranda.org**20110713002722
741 Ignore-this: 304d2a330d5e6e77d5f1feed7814b21c
742]
743[WUI: change the label of the button to unlink a file from 'del' to 'unlink'. Also change some internal names to 'unlink', and allow 't=unlink' as a synonym for 't=delete' in the web-API interface. Incidentally, improve a test to check for the rename button as well as the unlink button. fixes #1104
744david-sarah@jacaranda.org**20110713001218
745 Ignore-this: 3eef6b3f81b94a9c0020a38eb20aa069
746]
747[src/allmydata/web/filenode.py: delete a stale comment that was made incorrect by changeset [3133].
748david-sarah@jacaranda.org**20110801203009
749 Ignore-this: b3912e95a874647027efdc97822dd10e
750]
751[fix typo introduced during rebasing of 'remove get_serverid from
752Brian Warner <warner@lothar.com>**20110801200341
753 Ignore-this: 4235b0f585c0533892193941dbbd89a8
754 DownloadStatus.add_dyhb_request and customers' patch, to fix test failure.
755]
756[remove get_serverid from DownloadStatus.add_dyhb_request and customers
757zooko@zooko.com**20110801185401
758 Ignore-this: db188c18566d2d0ab39a80c9dc8f6be6
759 This patch is a rebase of a patch originally written by Brian. I didn't change any of the intent of Brian's patch, just ported it to current trunk.
760 refs #1363
761]
762[remove get_serverid from DownloadStatus.add_block_request and customers
763zooko@zooko.com**20110801185344
764 Ignore-this: 8bfa8201d6147f69b0fbe31beea9c1e
765 This is a rebase of a patch Brian originally wrote. I haven't changed the intent of that patch, just ported it to trunk.
766 refs #1363
767]
768[apply zooko's advice: storage_client get_known_servers() returns a frozenset, caller sorts
769warner@lothar.com**20110801174452
770 Ignore-this: 2aa13ea6cbed4e9084bd604bf8633692
771 refs #1363
772]
773[test_immutable.Test: rewrite to use NoNetworkGrid, now takes 2.7s not 97s
774warner@lothar.com**20110801174444
775 Ignore-this: 54f30b5d7461d2b3514e2a0172f3a98c
776 remove now-unused ShareManglingMixin
777 refs #1363
778]
779[DownloadStatus.add_known_share wants to be used by Finder, web.status
780warner@lothar.com**20110801174436
781 Ignore-this: 1433bcd73099a579abe449f697f35f9
782 refs #1363
783]
784[replace IServer.name() with get_name(), and get_longname()
785warner@lothar.com**20110801174428
786 Ignore-this: e5a6f7f6687fd7732ddf41cfdd7c491b
787 
788 This patch was originally written by Brian, but was re-recorded by Zooko to use
789 darcs replace instead of hunks for any file in which it would result in fewer
790 total hunks.
791 refs #1363
792]
793[upload.py: apply David-Sarah's advice rename (un)contacted(2) trackers to first_pass/second_pass/next_pass
794zooko@zooko.com**20110801174143
795 Ignore-this: e36e1420bba0620a0107bd90032a5198
796 This patch was written by Brian but was re-recorded by Zooko (with David-Sarah looking on) to use darcs replace instead of editing to rename the three variables to their new names.
797 refs #1363
798]
799[Coalesce multiple Share.loop() calls, make downloads faster. Closes #1268.
800Brian Warner <warner@lothar.com>**20110801151834
801 Ignore-this: 48530fce36c01c0ff708f61c2de7e67a
802]
803[src/allmydata/_auto_deps.py: 'i686' is another way of spelling x86.
804david-sarah@jacaranda.org**20110801034035
805 Ignore-this: 6971e0621db2fba794d86395b4d51038
806]
807[tahoe_rm.py: better error message when there is no path. refs #1292
808david-sarah@jacaranda.org**20110122064212
809 Ignore-this: ff3bb2c9f376250e5fd77eb009e09018
810]
811[test_cli.py: Test for error message when 'tahoe rm' is invoked without a path. refs #1292
812david-sarah@jacaranda.org**20110104105108
813 Ignore-this: 29ec2f2e0251e446db96db002ad5dd7d
814]
815[src/allmydata/__init__.py: suppress a spurious warning from 'bin/tahoe --version[-and-path]' about twisted-web and twisted-core packages.
816david-sarah@jacaranda.org**20110801005209
817 Ignore-this: 50e7cd53cca57b1870d9df0361c7c709
818]
819[test_cli.py: use to_str on fields loaded using simplejson.loads in new tests. refs #1304
820david-sarah@jacaranda.org**20110730032521
821 Ignore-this: d1d6dfaefd1b4e733181bf127c79c00b
822]
823[cli: make 'tahoe cp' overwrite mutable files in-place
824Kevan Carstensen <kevan@isnotajoke.com>**20110729202039
825 Ignore-this: b2ad21a19439722f05c49bfd35b01855
826]
827[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
828david-sarah@jacaranda.org**20110729233102
829 Ignore-this: d2f2bb4664f25007d1602bf7333e2cdd
830]
831[src/allmydata/scripts/cli.py: fix pyflakes warning.
832david-sarah@jacaranda.org**20110728021402
833 Ignore-this: 94050140ddb99865295973f49927c509
834]
835[Fix the help synopses of CLI commands to include [options] in the right place. fixes #1359, fixes #636
836david-sarah@jacaranda.org**20110724225440
837 Ignore-this: 2a8e488a5f63dabfa9db9efd83768a5
838]
839[encodingutil: argv and output encodings are always the same on all platforms. Lose the unnecessary generality of them being different. fixes #1120
840david-sarah@jacaranda.org**20110629185356
841 Ignore-this: 5ebacbe6903dfa83ffd3ff8436a97787
842]
843[docs/man/tahoe.1: add man page. fixes #1420
844david-sarah@jacaranda.org**20110724171728
845 Ignore-this: fc7601ec7f25494288d6141d0ae0004c
846]
847[Update the dependency on zope.interface to fix an incompatiblity between Nevow and zope.interface 3.6.4. fixes #1435
848david-sarah@jacaranda.org**20110721234941
849 Ignore-this: 2ff3fcfc030fca1a4d4c7f1fed0f2aa9
850]
851[frontends/ftpd.py: remove the check for IWriteFile.close since we're now guaranteed to be using Twisted >= 10.1 which has it.
852david-sarah@jacaranda.org**20110722000320
853 Ignore-this: 55cd558b791526113db3f83c00ec328a
854]
855[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
856david-sarah@jacaranda.org**20110721233658
857 Ignore-this: 81b41745477163c9b39c0b59db91cc62
858]
859[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
860david-sarah@jacaranda.org**20110722035402
861 Ignore-this: 5d03f544c4154f088e26c7107494bf39
862]
863[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
864david-sarah@jacaranda.org**20110722024907
865 Ignore-this: 5141a9f83a4085ed4ca21f0bbb20bb9c
866]
867[docs/running.rst: use 'tahoe run ~/.tahoe' instead of 'tahoe run' (the default is the current directory, unlike 'tahoe start').
868david-sarah@jacaranda.org**20110718005949
869 Ignore-this: 81837fbce073e93d88a3e7ae3122458c
870]
871[docs/running.rst: say to put the introducer.furl in tahoe.cfg.
872david-sarah@jacaranda.org**20110717194315
873 Ignore-this: 954cc4c08e413e8c62685d58ff3e11f3
874]
875[README.txt: say that quickstart.rst is in the docs directory.
876david-sarah@jacaranda.org**20110717192400
877 Ignore-this: bc6d35a85c496b77dbef7570677ea42a
878]
879[setup: remove the dependency on foolscap's "secure_connections" extra, add a dependency on pyOpenSSL
880zooko@zooko.com**20110717114226
881 Ignore-this: df222120d41447ce4102616921626c82
882 fixes #1383
883]
884[test_sftp.py cleanup: remove a redundant definition of failUnlessReallyEqual.
885david-sarah@jacaranda.org**20110716181813
886 Ignore-this: 50113380b368c573f07ac6fe2eb1e97f
887]
888[docs: add missing link in NEWS.rst
889zooko@zooko.com**20110712153307
890 Ignore-this: be7b7eb81c03700b739daa1027d72b35
891]
892[contrib: remove the contributed fuse modules and the entire contrib/ directory, which is now empty
893zooko@zooko.com**20110712153229
894 Ignore-this: 723c4f9e2211027c79d711715d972c5
895 Also remove a couple of vestigial references to figleaf, which is long gone.
896 fixes #1409 (remove contrib/fuse)
897]
898[add Protovis.js-based download-status timeline visualization
899Brian Warner <warner@lothar.com>**20110629222606
900 Ignore-this: 477ccef5c51b30e246f5b6e04ab4a127
901 
902 provide status overlap info on the webapi t=json output, add decode/decrypt
903 rate tooltips, add zoomin/zoomout buttons
904]
905[add more download-status data, fix tests
906Brian Warner <warner@lothar.com>**20110629222555
907 Ignore-this: e9e0b7e0163f1e95858aa646b9b17b8c
908]
909[prepare for viz: improve DownloadStatus events
910Brian Warner <warner@lothar.com>**20110629222542
911 Ignore-this: 16d0bde6b734bb501aa6f1174b2b57be
912 
913 consolidate IDownloadStatusHandlingConsumer stuff into DownloadNode
914]
915[docs: fix error in crypto specification that was noticed by Taylor R Campbell <campbell+tahoe@mumble.net>
916zooko@zooko.com**20110629185711
917 Ignore-this: b921ed60c1c8ba3c390737fbcbe47a67
918]
919[setup.py: don't make bin/tahoe.pyscript executable. fixes #1347
920david-sarah@jacaranda.org**20110130235809
921 Ignore-this: 3454c8b5d9c2c77ace03de3ef2d9398a
922]
923[Makefile: remove targets relating to 'setup.py check_auto_deps' which no longer exists. fixes #1345
924david-sarah@jacaranda.org**20110626054124
925 Ignore-this: abb864427a1b91bd10d5132b4589fd90
926]
927[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
928david-sarah@jacaranda.org**20110623205528
929 Ignore-this: c63e23146c39195de52fb17c7c49b2da
930]
931[Rename test_package_initialization.py to (much shorter) test_import.py .
932Brian Warner <warner@lothar.com>**20110611190234
933 Ignore-this: 3eb3dbac73600eeff5cfa6b65d65822
934 
935 The former name was making my 'ls' listings hard to read, by forcing them
936 down to just two columns.
937]
938[tests: fix tests to accomodate [20110611153758-92b7f-0ba5e4726fb6318dac28fb762a6512a003f4c430]
939zooko@zooko.com**20110611163741
940 Ignore-this: 64073a5f39e7937e8e5e1314c1a302d1
941 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.
942 fixes #1412
943]
944[wui: right-align the size column in the WUI
945zooko@zooko.com**20110611153758
946 Ignore-this: 492bdaf4373c96f59f90581c7daf7cd7
947 Thanks to Ted "stercor" Rolle Jr. and Terrell Russell.
948 fixes #1412
949]
950[docs: three minor fixes
951zooko@zooko.com**20110610121656
952 Ignore-this: fec96579eb95aceb2ad5fc01a814c8a2
953 CREDITS for arc for stats tweak
954 fix link to .zip file in quickstart.rst (thanks to ChosenOne for noticing)
955 English usage tweak
956]
957[docs/running.rst: fix stray HTML (not .rst) link noticed by ChosenOne.
958david-sarah@jacaranda.org**20110609223719
959 Ignore-this: fc50ac9c94792dcac6f1067df8ac0d4a
960]
961[server.py:  get_latencies now reports percentiles _only_ if there are sufficient observations for the interpretation of the percentile to be unambiguous.
962wilcoxjg@gmail.com**20110527120135
963 Ignore-this: 2e7029764bffc60e26f471d7c2b6611e
964 interfaces.py:  modified the return type of RIStatsProvider.get_stats to allow for None as a return value
965 NEWS.rst, stats.py: documentation of change to get_latencies
966 stats.rst: now documents percentile modification in get_latencies
967 test_storage.py:  test_latencies now expects None in output categories that contain too few samples for the associated percentile to be unambiguously reported.
968 fixes #1392
969]
970[corrected "k must never be smaller than N" to "k must never be greater than N"
971secorp@allmydata.org**20110425010308
972 Ignore-this: 233129505d6c70860087f22541805eac
973]
974[docs: revert link in relnotes.txt from NEWS.rst to NEWS, since the former did not exist at revision 5000.
975david-sarah@jacaranda.org**20110517011214
976 Ignore-this: 6a5be6e70241e3ec0575641f64343df7
977]
978[docs: convert NEWS to NEWS.rst and change all references to it.
979david-sarah@jacaranda.org**20110517010255
980 Ignore-this: a820b93ea10577c77e9c8206dbfe770d
981]
982[docs: remove out-of-date docs/testgrid/introducer.furl and containing directory. fixes #1404
983david-sarah@jacaranda.org**20110512140559
984 Ignore-this: 784548fc5367fac5450df1c46890876d
985]
986[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
987david-sarah@jacaranda.org**20110130164923
988 Ignore-this: a271e77ce81d84bb4c43645b891d92eb
989]
990[setup: don't catch all Exception from check_requirement(), but only PackagingError and ImportError
991zooko@zooko.com**20110128142006
992 Ignore-this: 57d4bc9298b711e4bc9dc832c75295de
993 I noticed this because I had accidentally inserted a bug which caused AssertionError to be raised from check_requirement().
994]
995[M-x whitespace-cleanup
996zooko@zooko.com**20110510193653
997 Ignore-this: dea02f831298c0f65ad096960e7df5c7
998]
999[docs: fix typo in running.rst, thanks to arch_o_median
1000zooko@zooko.com**20110510193633
1001 Ignore-this: ca06de166a46abbc61140513918e79e8
1002]
1003[relnotes.txt: don't claim to work on Cygwin (which has been untested for some time). refs #1342
1004david-sarah@jacaranda.org**20110204204902
1005 Ignore-this: 85ef118a48453d93fa4cddc32d65b25b
1006]
1007[relnotes.txt: forseeable -> foreseeable. refs #1342
1008david-sarah@jacaranda.org**20110204204116
1009 Ignore-this: 746debc4d82f4031ebf75ab4031b3a9
1010]
1011[replace remaining .html docs with .rst docs
1012zooko@zooko.com**20110510191650
1013 Ignore-this: d557d960a986d4ac8216d1677d236399
1014 Remove install.html (long since deprecated).
1015 Also replace some obsolete references to install.html with references to quickstart.rst.
1016 Fix some broken internal references within docs/historical/historical_known_issues.txt.
1017 Thanks to Ravi Pinjala and Patrick McDonald.
1018 refs #1227
1019]
1020[docs: FTP-and-SFTP.rst: fix a minor error and update the information about which version of Twisted fixes #1297
1021zooko@zooko.com**20110428055232
1022 Ignore-this: b63cfb4ebdbe32fb3b5f885255db4d39
1023]
1024[munin tahoe_files plugin: fix incorrect file count
1025francois@ctrlaltdel.ch**20110428055312
1026 Ignore-this: 334ba49a0bbd93b4a7b06a25697aba34
1027 fixes #1391
1028]
1029[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
1030david-sarah@jacaranda.org**20110411190738
1031 Ignore-this: 7847d26bc117c328c679f08a7baee519
1032]
1033[tests: add test for including the ImportError message and traceback entry in the summary of errors from importing dependencies. refs #1389
1034david-sarah@jacaranda.org**20110410155844
1035 Ignore-this: fbecdbeb0d06a0f875fe8d4030aabafa
1036]
1037[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
1038david-sarah@jacaranda.org**20110410155705
1039 Ignore-this: 2f87b8b327906cf8bfca9440a0904900
1040]
1041[remove unused variable detected by pyflakes
1042zooko@zooko.com**20110407172231
1043 Ignore-this: 7344652d5e0720af822070d91f03daf9
1044]
1045[allmydata/__init__.py: Nicer reporting of unparseable version numbers in dependencies. fixes #1388
1046david-sarah@jacaranda.org**20110401202750
1047 Ignore-this: 9c6bd599259d2405e1caadbb3e0d8c7f
1048]
1049[update FTP-and-SFTP.rst: the necessary patch is included in Twisted-10.1
1050Brian Warner <warner@lothar.com>**20110325232511
1051 Ignore-this: d5307faa6900f143193bfbe14e0f01a
1052]
1053[control.py: remove all uses of s.get_serverid()
1054warner@lothar.com**20110227011203
1055 Ignore-this: f80a787953bd7fa3d40e828bde00e855
1056]
1057[web: remove some uses of s.get_serverid(), not all
1058warner@lothar.com**20110227011159
1059 Ignore-this: a9347d9cf6436537a47edc6efde9f8be
1060]
1061[immutable/downloader/fetcher.py: remove all get_serverid() calls
1062warner@lothar.com**20110227011156
1063 Ignore-this: fb5ef018ade1749348b546ec24f7f09a
1064]
1065[immutable/downloader/fetcher.py: fix diversity bug in server-response handling
1066warner@lothar.com**20110227011153
1067 Ignore-this: bcd62232c9159371ae8a16ff63d22c1b
1068 
1069 When blocks terminate (either COMPLETE or CORRUPT/DEAD/BADSEGNUM), the
1070 _shares_from_server dict was being popped incorrectly (using shnum as the
1071 index instead of serverid). I'm still thinking through the consequences of
1072 this bug. It was probably benign and really hard to detect. I think it would
1073 cause us to incorrectly believe that we're pulling too many shares from a
1074 server, and thus prefer a different server rather than asking for a second
1075 share from the first server. The diversity code is intended to spread out the
1076 number of shares simultaneously being requested from each server, but with
1077 this bug, it might be spreading out the total number of shares requested at
1078 all, not just simultaneously. (note that SegmentFetcher is scoped to a single
1079 segment, so the effect doesn't last very long).
1080]
1081[immutable/downloader/share.py: reduce get_serverid(), one left, update ext deps
1082warner@lothar.com**20110227011150
1083 Ignore-this: d8d56dd8e7b280792b40105e13664554
1084 
1085 test_download.py: create+check MyShare instances better, make sure they share
1086 Server objects, now that finder.py cares
1087]
1088[immutable/downloader/finder.py: reduce use of get_serverid(), one left
1089warner@lothar.com**20110227011146
1090 Ignore-this: 5785be173b491ae8a78faf5142892020
1091]
1092[immutable/offloaded.py: reduce use of get_serverid() a bit more
1093warner@lothar.com**20110227011142
1094 Ignore-this: b48acc1b2ae1b311da7f3ba4ffba38f
1095]
1096[immutable/upload.py: reduce use of get_serverid()
1097warner@lothar.com**20110227011138
1098 Ignore-this: ffdd7ff32bca890782119a6e9f1495f6
1099]
1100[immutable/checker.py: remove some uses of s.get_serverid(), not all
1101warner@lothar.com**20110227011134
1102 Ignore-this: e480a37efa9e94e8016d826c492f626e
1103]
1104[add remaining get_* methods to storage_client.Server, NoNetworkServer, and
1105warner@lothar.com**20110227011132
1106 Ignore-this: 6078279ddf42b179996a4b53bee8c421
1107 MockIServer stubs
1108]
1109[upload.py: rearrange _make_trackers a bit, no behavior changes
1110warner@lothar.com**20110227011128
1111 Ignore-this: 296d4819e2af452b107177aef6ebb40f
1112]
1113[happinessutil.py: finally rename merge_peers to merge_servers
1114warner@lothar.com**20110227011124
1115 Ignore-this: c8cd381fea1dd888899cb71e4f86de6e
1116]
1117[test_upload.py: factor out FakeServerTracker
1118warner@lothar.com**20110227011120
1119 Ignore-this: 6c182cba90e908221099472cc159325b
1120]
1121[test_upload.py: server-vs-tracker cleanup
1122warner@lothar.com**20110227011115
1123 Ignore-this: 2915133be1a3ba456e8603885437e03
1124]
1125[happinessutil.py: server-vs-tracker cleanup
1126warner@lothar.com**20110227011111
1127 Ignore-this: b856c84033562d7d718cae7cb01085a9
1128]
1129[upload.py: more tracker-vs-server cleanup
1130warner@lothar.com**20110227011107
1131 Ignore-this: bb75ed2afef55e47c085b35def2de315
1132]
1133[upload.py: fix var names to avoid confusion between 'trackers' and 'servers'
1134warner@lothar.com**20110227011103
1135 Ignore-this: 5d5e3415b7d2732d92f42413c25d205d
1136]
1137[refactor: s/peer/server/ in immutable/upload, happinessutil.py, test_upload
1138warner@lothar.com**20110227011100
1139 Ignore-this: 7ea858755cbe5896ac212a925840fe68
1140 
1141 No behavioral changes, just updating variable/method names and log messages.
1142 The effects outside these three files should be minimal: some exception
1143 messages changed (to say "server" instead of "peer"), and some internal class
1144 names were changed. A few things still use "peer" to minimize external
1145 changes, like UploadResults.timings["peer_selection"] and
1146 happinessutil.merge_peers, which can be changed later.
1147]
1148[storage_client.py: clean up test_add_server/test_add_descriptor, remove .test_servers
1149warner@lothar.com**20110227011056
1150 Ignore-this: efad933e78179d3d5fdcd6d1ef2b19cc
1151]
1152[test_client.py, upload.py:: remove KiB/MiB/etc constants, and other dead code
1153warner@lothar.com**20110227011051
1154 Ignore-this: dc83c5794c2afc4f81e592f689c0dc2d
1155]
1156[test: increase timeout on a network test because Francois's ARM machine hit that timeout
1157zooko@zooko.com**20110317165909
1158 Ignore-this: 380c345cdcbd196268ca5b65664ac85b
1159 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.
1160]
1161[docs/configuration.rst: add a "Frontend Configuration" section
1162Brian Warner <warner@lothar.com>**20110222014323
1163 Ignore-this: 657018aa501fe4f0efef9851628444ca
1164 
1165 this points to docs/frontends/*.rst, which were previously underlinked
1166]
1167[web/filenode.py: avoid calling req.finish() on closed HTTP connections. Closes #1366
1168"Brian Warner <warner@lothar.com>"**20110221061544
1169 Ignore-this: 799d4de19933f2309b3c0c19a63bb888
1170]
1171[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.
1172david-sarah@jacaranda.org**20110221015817
1173 Ignore-this: 51d181698f8c20d3aca58b057e9c475a
1174]
1175[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.
1176david-sarah@jacaranda.org**20110221020125
1177 Ignore-this: b0744ed58f161bf188e037bad077fc48
1178]
1179[Refactor StorageFarmBroker handling of servers
1180Brian Warner <warner@lothar.com>**20110221015804
1181 Ignore-this: 842144ed92f5717699b8f580eab32a51
1182 
1183 Pass around IServer instance instead of (peerid, rref) tuple. Replace
1184 "descriptor" with "server". Other replacements:
1185 
1186  get_all_servers -> get_connected_servers/get_known_servers
1187  get_servers_for_index -> get_servers_for_psi (now returns IServers)
1188 
1189 This change still needs to be pushed further down: lots of code is now
1190 getting the IServer and then distributing (peerid, rref) internally.
1191 Instead, it ought to distribute the IServer internally and delay
1192 extracting a serverid or rref until the last moment.
1193 
1194 no_network.py was updated to retain parallelism.
1195]
1196[TAG allmydata-tahoe-1.8.2
1197warner@lothar.com**20110131020101]
1198Patch bundle hash:
1199289e14cd175598c285b9c7c59b476ea38b41d91f