Sun Jan 22 21:18:56 GMT 2012 zooko@zooko.com
* docs: a newline between the utf-8 BOF and the comment in order to prevent trac from misrendering the comment
sheesh
Sun Jan 22 21:17:31 GMT 2012 zooko@zooko.com
* docs: a comment to inform the (human) reader about encoding and to prevent someone from moving the title up to where it will interact with the utf-8 BOM and cause trac to mis-render the title
Tue Dec 6 17:19:08 GMT 2011 zooko@zooko.com
* doc: about.rst: use unicode emdash, use non-embedded URIs, add clarificaiton of when a file gets its mutable-or-immutable nature
embedded URIs, although documented here:
http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#embedded-uris
generate messages like this from rst2html --verbose:
quickstart.rst:3: (INFO/1) Duplicate explicit target name: "the tahoe-dev mailing list".
Also this patch prepends a "utf-8 BOM" to the beginning of the file.
Tue Jan 24 20:52:09 GMT 2012 Brian Warner <warner@lothar.com>
* Add test_verify_mdmf_all_bad_sharedata
test_verify_mdmf_all_bad_sharedata tests for the regression described
in ticket 1648. In particular, it will trigger the misplaced assertion
in the share activation code. It also tests to make sure that
verification continues with fewer than k shares.
Tue Jan 24 20:52:09 GMT 2012 Brian Warner <warner@lothar.com>
* Ensure that verification proceeds and stops when appropriate.
The removed assertions are appropriate for a download that seeks to
return plaintext to a caller; if we don't have at least k active remote
shares, then we can't hope to do that. They're not appropriate for a
verification operation; a user can try to verify a file that has fewer
than k shares available, so that shouldn't be treated as an error.
Instead, we proceed with fewer than k shares, and ensure that we
terminate the download if we have no shares at all and we're verifying.
Fri Jan 27 01:55:25 GMT 2012 david-sarah@jacaranda.org
* Add a Python 3 blocker to setup.py, to display a better error message when it is run under Python 3.
Tue Jan 31 00:06:43 GMT 2012 david-sarah@jacaranda.org
* configuration.rst: remove the obsolete sizelimit option from the sample tahoe.cfg. Also fix the RST formatting of blank lines in the file.
Wed Mar 7 02:22:41 GMT 2012 Brian Warner <warner@lothar.com>
* tahoe.css: fix #section typo, update welcome.xhtml to match
The "#section" declaration (which matches id="section") should have been
".section" (which matches class="section").
The welcome page has a feature that I actually liked: the little "This
Client" sidebar sits just to the right of the start of the Controls block.
Fixing .section broke that (the clear:both introduces a gap, forcing the
Controls block to start strictly below the bottom of the This Client block).
So I also removed class="section" from the Controls block to allow them to
share the horizontal space again.
Tue Mar 13 20:30:41 GMT 2012 david-sarah@jacaranda.org
* Update find_links URLs in setup.cfg to https://tahoe-lafs.org. This is not just a doc change; look out for compatibility problems.
Mon Aug 8 19:05:52 BST 2011 david-sarah@jacaranda.org
* test_node.py: test that we tolerate a UTF-8 BOM at the start of tahoe.cfg, and can read UTF-8 option values. refs #1470
Wed Aug 17 23:26:51 BST 2011 david-sarah@jacaranda.org
* bin/tahoe-script.template: fix the error message that is displayed when a runner script cannot be found. fixes #1488
Sun Apr 1 01:59:25 BST 2012 zooko@zooko.com
* setup: show-tool-versions: report cl only on windows, report buildslave, git, openssl, and lzip, but not 7za
Sun Aug 14 23:59:59 BST 2011 david-sarah@jacaranda.org
* interfaces.py: ensure that NoSuchChildError can be converted to str even when it is for a non-ASCII name. fixes #1483
Tue Apr 3 04:04:51 BST 2012 Brian Warner <warner@lothar.com>
* Rename web CheckResults to -Renderer, to avoid confusion. Closes #1705.
This avoids the name collision between the actual results
objects (defined in allmydata.check_results) and the code that renders
these objects into HTML (defined in allmydata.web.check_results). Only
the web-side objects were renamed.
Fri Apr 6 05:39:46 BST 2012 david-sarah@jacaranda.org
* docs/frontends/drop-upload.rst: document more known issues and link to new ticket for an existing one.
Sun Apr 29 03:28:44 BST 2012 david-sarah@jacaranda.org
* Make sure that foolscap.logging.log.setLogDir is called with a str (not unicode) path, v2. Includes test. fixes #1725
Sun May 13 07:34:03 BST 2012 Brian Warner <warner@lothar.com>
* test-dont-use-too-old-dep.py: fix tarfile timestamps
It turns out that TarFile.addfile() doesn't provide a reasonable default
timestamp, resulting in files dated to 1970 (they're probably wearing
bell-bottoms and listening to disco too). Then, when the bdist_egg command
tries to create a *zip*file with those files, it explodes because zipfiles
cannot handle timestamps before 1980 (it prefers boomboxes and jackets with
straps on the shoulders, thank you very much).
This puts a modern time.time() on the members of the tarfile, allowing future
cryptocoderarchaeologists the opportunity to make fun of fashion trends from
the user's chosen era, rather than an artificially older one.
Sun May 13 04:47:01 BST 2012 Brian Warner <warner@lothar.com>
* rename build_helpers files
This is from the darcs patch for #1342, which failed to apply on my darcs
tree, so I'm landing it from git. I'm landing the rename-files part
separately from the modify-those-files part to avoid VC complications.
Sun May 13 08:59:30 BST 2012 Brian Warner <warner@lothar.com>
* Fixed an error in previous commit where an empty servermap would throw an exception in 'count-good-share-hosts'. Augmented unit test.
Signed-off-by: Andrew Miller <amiller@dappervision.com>
Sun May 13 08:59:30 BST 2012 Brian Warner <warner@lothar.com>
* Added tests for count-good-share-hosts under check and repair conditions. Patched the incorrect computation in immutable/filenode.py
Signed-off-by: Andrew Miller <amiller@dappervision.com>
Fixed missing import statements
Signed-off-by: Andrew Miller <amiller@dappervision.com>
Wed Dec 28 05:33:58 GMT 2011 Brian Warner <warner@lothar.com>
* mutable publish: track multiple servers-per-share. Fixes some of #1628.
The remaining work is to write additional tests.
src/allmydata/test/no_network.py:
This supports tests in which servers leave the grid only to return with
their shares intact at a later time.
src/allmydata/test/test_mutable.py:
The UCWEs in the incident reports associated with #1628 all seem to be
associated with shares that the servermap knows about, but which aren't
accounted for during the publish process for whatever reason. Specifically,
it looks like the publisher is only capable of keeping track of a single
storage server for a given share. This makes the repair process worse than
it was pre-MDMF at updating all of the shares of a particular file to the
newest version, and can also cause spurious UCWEs. This test simulates such
a layout and fails if an UCWE is thrown. We need to write another test to
ensure that all copies of a share are updated to the latest version (or
alter this test to do that), so that the test suite doesn't pass unless both
regressions are fixed.
We want the publisher to follow the existing share placement when uploading
a new version of a mutable file, and we don't want this test to pass unless
it does.
src/allmydata/mutable/publish.py:
Before this commit, the publisher only kept track of a single writer for
each share. This is insufficient to handle updates in which a single share
may live on multiple servers. In the best case, an update will only update
one of the existing shares instead of all of them. In some cases, the update
will encounter the existing shares when publishing some other share,
interpret it as a sign of an uncoordinated update, and fail. Keeping track
of all of the writers helps ensure that all existing shares are updated, and
helps avoid spurious uncoordinated write errors.
Sun Mar 18 00:01:35 GMT 2012 Brian Warner <warner@lothar.com>
* Fix mutable status (mapupdate/retrieve/publish) to use serverids, not tubids
This still leaves immutable-publish results incorrectly using tubids instead
of serverids. That will need some more work, since it might change the Helper
interface.
Sat Mar 31 19:39:02 BST 2012 Brian Warner <warner@lothar.com>
* Mutable repair: use new MODE_REPAIR to query all servers *and* get privkey
This fixes bug #1689. Repair was using MODE_READ to build the servermap,
which doesn't try hard enough to grab the privkey, and also doesn't guarantee
sending queries to all servers. This patch adds a new MODE_REPAIR which does
both, and does a separate, distinct mapupdate to start wth repair cycle,
instead of relying upon the (MODE_CHECK) mapupdate leftover from the
filecheck that triggered the repair.
Thu Mar 8 23:17:58 GMT 2012 david-sarah@jacaranda.org
* Make the link on the Welcome page to 'https://tahoe-lafs.org/', not 'http:'. Includes a test. fixes #1682
Fri Apr 6 00:57:23 BST 2012 david-sarah@jacaranda.org
* Change capitalization of WUI and introducer welcome page headings; add test for introducer welcome page. Also fix a typo in a CSS class name. fixes #1708
Wed Nov 16 22:42:25 GMT 2011 Brian Warner <warner@lothar.com>
* Remove duplicate tahoe_css links from manifest.xhtml and rename-form.xhtml
They were probably meant to be links to webform_css, but we aren't really
using Nevow's form-generation code anyways, so they can just be removed.
Thanks to 'marcusw' for the catch.
Thu May 17 00:55:09 BST 2012 Brian Warner <warner@lothar.com>
* immutable repairer: populate servers-responding properly
If a server did not respond to the pre-repair filecheck, but did respond
to the repair, that server was not correctly added to the
RepairResults.data["servers-responding"] list. (This resulted from a
buggy usage of DictOfSets.union() in filenode.py).
In addition, servers to which filecheck queries were sent, but did not
respond, were incorrectly added to the servers-responding list
anyawys. (This resulted from code in the checker.py not paying attention
to the 'responded' flag).
The first bug was neatly masked by the second: it's pretty rare to have
a server suddenly start responding in the one-second window between a
filecheck and a subsequent repair, and if the server was around for the
filecheck, you'd never notice the problem. I only spotted the smelly
code while I was changing it for IServer cleanup purposes.
I added coverage to test_repairer.py for this. Trying to get that test
to fail before fixing the first bug is what led me to discover the
second bug. I also had to update test_corrupt_file_verno, since it was
incorrectly asserting that 10 servers responded, when in fact one of
them throws an error (but the second bug was causing it to be reported
anyways).
Thu May 17 00:55:09 BST 2012 Brian Warner <warner@lothar.com>
* dictutil.DictOfSets: remove .union() method, it was misleading
Unlike set.union(), which returns a new set, DictOfSets.union() modified
the DictOfSets in-place. The name collision bit me when I changed some
code from using DictOfSets to a normal set, and expected that
set.union() would modify the set in-place. Since there was only one user
of DictOfSets.union, I figured it was safer to just get rid of it.
Tue May 22 23:39:49 BST 2012 Brian Warner <warner@lothar.com>
* test_web.py: fix memory leak when run with --until-failure
The Fake*Node classes in test/common.py were accumulating share data in
a class-level dictionary, which persisted from one test run to the next.
As a result, running test_web.py over and over (with trial's
--until-failure feature) made this dictionary grow without bound,
eventually running out of memory.
This fix moves that dictionary into the FakeClient built fresh for each
test, so it doesn't build up. It does the same thing for "file_types",
which was much smaller but still lived at the class level.
Wed Apr 4 20:11:03 BST 2012 Brian Warner <warner@lothar.com>
* test/common.py: remove ununsed 'is_bad' mechanism
This was a premature feature addition to the mock filenode, and gets in the
way of the IServer refactoring I'm trying to do. Best to remove it now and
re-introduce it in a better form later when it's actually needed.
Tue Nov 1 06:18:21 GMT 2011 Brian Warner <warner@lothar.com>
* Rewrite download-status-timeline visualizer ('viz') with d3.js
* use d3.js v2.4.6
* add a "toggle misc events" button, to get hash/bitmap-checking details
* only draw data that's on screen, for speed
* add fragment-arg to fetch timeline data.json from somewhere else
Thu May 31 23:00:00 BST 2012 david-sarah@jacaranda.org
* Change 'setup.py test' and 'setup.py trial' to pass --rterrors to trial by default. Suppress using --no-rterrors. Also pass --until-failure/-u to trial. fixes #1699
Tue Jun 12 02:16:02 BST 2012 Brian Warner <warner@lothar.com>
* offloaded.py: don't drop the Deferred
There was one corner case (where the client disconnects at just the
wrong time) that could have dropped a Deferred, leading to an Unhandled
Error. Clean up the control flow to avoid this case.
Thu Jun 14 20:18:35 BST 2012 Brian Warner <warner@lothar.com>
* test/common.py: fix race condition waiting for the helper connection
The wait_for_connections() method, which is used at the start of
test_system to make sure that all the clients are connected to all the
servers, did not also wait for clients to be connected to their Helpers.
Every once in a while, the helper connection would take a bit longer,
and then
test_system.SystemTest.test_filesystem._test_web._got_welcome_helper
would fail, because we'd check for a helper connection before it was
ready.
The fix is to modify wait_for_connections's polling predicate to look
for helper connections (if configured) as well as the regular
introducer- and server- connections.
Tested by temporarily adding a large (30s) delay to the connectTo() call
in Uploader.startService, simulating a long helper
connection-establishment delay. This makes the test fail consistently.
Then I fixed wait_for_connections(), and the test passed (slowly). Then
I removed the delay.
Thu Jun 14 22:23:08 BST 2012 david-sarah@jacaranda.org
* Suppress DeprecationWarning about twisted.internet.interfaces.IFinishableConsumer. This also unifies the handling of DeprecationWarnings that need to be suppressed globally. refs #1295
Thu Mar 8 23:17:19 GMT 2012 david-sarah@jacaranda.org
* Update various references to allmydata.org or http://tahoe-lafs.org in comments, to https://tahoe-lafs.org. refs #1682
Fri May 18 03:12:52 BST 2012 david-sarah@jacaranda.org
* misc/build_helpers/check-interfaces.py: avoid spurious warnings about ignored exceptions on shutdown. Also make the check function able to write errors to an arbitrary stream.
Thu Jun 14 22:33:15 BST 2012 david-sarah@jacaranda.org
* Since DeprecationWarning about twisted.internet.interfaces.IFinishableConsumer is suppressed globally, it doesn't need to be suppressed during import. refs #1295