tahoe-lafs/tahoe-lafs.git
16 years agowindows installer - changed to reflect the new StartAllmydata.exe executable that...
Peter Secor [Tue, 18 Mar 2008 17:44:43 +0000 (10:44 -0700)]
windows installer - changed to reflect the new StartAllmydata.exe executable that is used to launch the various pieces of the native client. Also verified that the SMB service was stopped when uninstalling.

16 years agonative client - added StartAllmydata.exe so that we can start/stop processes in Vista
Peter Secor [Tue, 18 Mar 2008 17:18:47 +0000 (10:18 -0700)]
native client - added StartAllmydata.exe so that we can start/stop processes in Vista

16 years agoadd a mkdir-p POST handler
robk-tahoe [Tue, 18 Mar 2008 01:13:01 +0000 (18:13 -0700)]
add a mkdir-p POST handler

this adds a t=mkdir-p call to directories (accessed by their uri as
/uri/<URI>?t=mkdir=p&path=/some/path) which returns the uri for a
directory at a specified path before the given uri, regardless of
whether the directory exists or whether intermediate directories
need to be created to satisfy the request.

this is used by the migration code in MV to optimise the work of
path traversal which was other wise done on every file PUT

16 years agonative client - fixes for drive size (now 1TB), running service as adminstrator to...
Peter Secor [Mon, 17 Mar 2008 21:22:03 +0000 (14:22 -0700)]
native client - fixes for drive size (now 1TB), running service as adminstrator to allow client stopping and starting in Vista, large number of files fix

16 years agoweb/status.py: guard against file_size=None, closes #354
Brian Warner [Mon, 17 Mar 2008 20:31:10 +0000 (13:31 -0700)]
web/status.py: guard against file_size=None, closes #354

16 years agorefactor one of the dispatch routines in webish.py
Zooko O'Whielacronx [Thu, 20 Mar 2008 19:11:09 +0000 (12:11 -0700)]
refactor one of the dispatch routines in webish.py
The behavior is intended to be unchanged by this refactoring.  Unit tests show no change in behavior.

16 years agodocs: link from install.html to the (imminent) location of allmydata-tahoe-0.9.0...
Zooko O'Whielacronx [Thu, 13 Mar 2008 20:02:37 +0000 (13:02 -0700)]
docs: link from install.html to the (imminent) location of allmydata-tahoe-0.9.0.tar.gz

16 years agoTAG allmydata-tahoe-0.9.0 allmydata-tahoe-0.9.0
Zooko O'Whielacronx [Thu, 13 Mar 2008 19:09:58 +0000 (12:09 -0700)]
TAG allmydata-tahoe-0.9.0

16 years agonative client - fixed icon for system tray, improved link batching
Peter Secor [Thu, 13 Mar 2008 18:22:54 +0000 (11:22 -0700)]
native client - fixed icon for system tray, improved link batching

16 years agodocs: small edit to relnotes.txt
Zooko O'Whielacronx [Thu, 13 Mar 2008 19:13:26 +0000 (12:13 -0700)]
docs: small edit to relnotes.txt

16 years agodocs: link to the current CREDITS file from relnotes.txt
Zooko O'Whielacronx [Thu, 13 Mar 2008 19:04:20 +0000 (12:04 -0700)]
docs: link to the current CREDITS file from relnotes.txt

16 years agodocs: fix typo in relnotes.txt
Zooko O'Whielacronx [Thu, 13 Mar 2008 19:01:47 +0000 (12:01 -0700)]
docs: fix typo in relnotes.txt

16 years agodocs: small edit to relnotes.txt
Zooko O'Whielacronx [Thu, 13 Mar 2008 18:56:55 +0000 (11:56 -0700)]
docs: small edit to relnotes.txt

16 years agodocs: update relnotes.txt for allmydata.org "Tahoe" v0.9.0 !
Zooko O'Whielacronx [Thu, 13 Mar 2008 18:43:26 +0000 (11:43 -0700)]
docs: update relnotes.txt for allmydata.org "Tahoe" v0.9.0 !
Whee!

16 years agomutable.py: split replace() into update() and overwrite(). Addresses #328.
Brian Warner [Thu, 13 Mar 2008 01:00:43 +0000 (18:00 -0700)]
mutable.py: split replace() into update() and overwrite(). Addresses #328.

16 years agostorage servers announce that they will support clients as old as v0.8.0
Zooko O'Whielacronx [Thu, 13 Mar 2008 16:10:11 +0000 (09:10 -0700)]
storage servers announce that they will support clients as old as v0.8.0
Not that anyone pays attention to what storage servers claim about what versions they will support.

16 years agoCREDITS
Zooko O'Whielacronx [Thu, 13 Mar 2008 16:04:44 +0000 (09:04 -0700)]
CREDITS

16 years agointroducer: record a timestamp with each announcement, and display it on the introduc...
Brian Warner [Wed, 12 Mar 2008 02:33:19 +0000 (19:33 -0700)]
introducer: record a timestamp with each announcement, and display it on the introducer's web page

16 years agointroducer: record a timestamp with each subscriber, and display it on the introducer...
Brian Warner [Wed, 12 Mar 2008 02:28:37 +0000 (19:28 -0700)]
introducer: record a timestamp with each subscriber, and display it on the introducer's web page

16 years agointroweb: combine announcement and subscriber information to show version+nickname...
Brian Warner [Wed, 12 Mar 2008 02:21:29 +0000 (19:21 -0700)]
introweb: combine announcement and subscriber information to show version+nickname for each client

16 years agoclient: publish a 'stub client' announcement to the introducer, to provide version...
Brian Warner [Wed, 12 Mar 2008 02:20:10 +0000 (19:20 -0700)]
client: publish a 'stub client' announcement to the introducer, to provide version/nickname information for each client

16 years agowebish: put a trailing slash in the node.url file, since our unit tests use it, and...
Brian Warner [Wed, 12 Mar 2008 02:01:18 +0000 (19:01 -0700)]
webish: put a trailing slash in the node.url file, since our unit tests use it, and some versions of twisted or nevow don't automatically add one

16 years agointroweb.py: tolerate non-setLocationed client tubs
Brian Warner [Wed, 12 Mar 2008 01:09:13 +0000 (18:09 -0700)]
introweb.py: tolerate non-setLocationed client tubs

16 years agooops, add introducer.xhtml
Brian Warner [Wed, 12 Mar 2008 00:41:03 +0000 (17:41 -0700)]
oops, add introducer.xhtml

16 years agoadd a webserver for the Introducer, showing service announcements and subscriber...
Brian Warner [Wed, 12 Mar 2008 00:36:25 +0000 (17:36 -0700)]
add a webserver for the Introducer, showing service announcements and subscriber lists

16 years agonative client - updated executables and dll's to have green icon, preference for...
Peter Secor [Tue, 11 Mar 2008 20:31:26 +0000 (13:31 -0700)]
native client - updated executables and dll's to have green icon, preference for log levels, and force a link every 100 files when uploading large amounts of files

16 years agomakefile - unreverted Zooko's change to setup.py, this originally was to see if it...
Peter Secor [Tue, 11 Mar 2008 18:10:38 +0000 (11:10 -0700)]
makefile - unreverted Zooko's change to setup.py, this originally was to see if it was causing the build to create a non-running installer on windows, but it wasn't the problem.

16 years agoincrease remote-interface size limits to 16EiB by not casually using 'int' as a const...
Brian Warner [Tue, 11 Mar 2008 17:50:31 +0000 (10:50 -0700)]
increase remote-interface size limits to 16EiB by not casually using 'int' as a constraint

16 years agomutable: tolerate multiple encodings, using whichever version is recoverable first...
Brian Warner [Tue, 11 Mar 2008 07:26:00 +0000 (00:26 -0700)]
mutable: tolerate multiple encodings, using whichever version is recoverable first. Closes #312

16 years agotest_mutable: improve multiple-encodings test coverage
Brian Warner [Tue, 11 Mar 2008 06:47:35 +0000 (23:47 -0700)]
test_mutable: improve multiple-encodings test coverage

16 years agotest_mutable: make test-multiple-encodings work
Brian Warner [Tue, 11 Mar 2008 06:16:28 +0000 (23:16 -0700)]
test_mutable: make test-multiple-encodings work

16 years agotest_mutable: more test coverage, building up a framework to cause reads to occur...
Brian Warner [Tue, 11 Mar 2008 05:15:43 +0000 (22:15 -0700)]
test_mutable: more test coverage, building up a framework to cause reads to occur in a specific order

16 years agonative client - updated .exe's and .dll's with better caching, using new multi-child...
Peter Secor [Tue, 11 Mar 2008 05:10:50 +0000 (22:10 -0700)]
native client - updated .exe's and .dll's with better caching, using new multi-child upload call, preferences dialog

16 years agomakefile: clean up pyutil.egg too
Brian Warner [Tue, 11 Mar 2008 03:40:39 +0000 (20:40 -0700)]
makefile: clean up pyutil.egg too

16 years agomutable: increase max segsize to 3.5MB, to allow dirnodes with about 10k entries
Brian Warner [Tue, 11 Mar 2008 03:39:55 +0000 (20:39 -0700)]
mutable: increase max segsize to 3.5MB, to allow dirnodes with about 10k entries

16 years ago.darcs-boringfile: add pyutil, since it is in setup_requires now
Brian Warner [Tue, 11 Mar 2008 03:32:14 +0000 (20:32 -0700)]
.darcs-boringfile: add pyutil, since it is in setup_requires now

16 years agomake the nodeurl start with '127.0.0.1' instead of with 'localhost'
Zooko O'Whielacronx [Tue, 11 Mar 2008 13:18:03 +0000 (06:18 -0700)]
make the nodeurl start with '127.0.0.1' instead of with 'localhost'
This is because there exist in the wild computers that are misconfigured so that 'localhost' doesn't resolve to 127.0.0.1.  On those computers, using 'localhost' for the nodeurl is a security problem, because the user commonly sends valuable caps to the nodeurl.

16 years agosetup: use "-rNN" with NN the "revision number" instead of "-NN" with NN the "build...
Zooko O'Whielacronx [Tue, 11 Mar 2008 03:15:04 +0000 (20:15 -0700)]
setup: use "-rNN" with NN the "revision number" instead of "-NN" with NN the "build number" in the Windows builds

16 years agosetup_require pyutil >= 1.3.16, as the Windows installer builder's misc/sub-ver.py...
Zooko O'Whielacronx [Tue, 11 Mar 2008 03:13:21 +0000 (20:13 -0700)]
setup_require pyutil >= 1.3.16, as the Windows installer builder's misc/sub-ver.py relies on it

16 years agosetup: remove old bundled pyutil-1.3.12
Zooko O'Whielacronx [Tue, 11 Mar 2008 02:59:30 +0000 (19:59 -0700)]
setup: remove old bundled pyutil-1.3.12

16 years agosetup: remove old bundled darcsver-1.1.1
Zooko O'Whielacronx [Tue, 11 Mar 2008 02:59:20 +0000 (19:59 -0700)]
setup: remove old bundled darcsver-1.1.1

16 years agosetup: bundle pyutil-1.3.16.tar
Zooko O'Whielacronx [Tue, 11 Mar 2008 02:58:18 +0000 (19:58 -0700)]
setup: bundle pyutil-1.3.16.tar

16 years agosetup: setup_require darcsver >= 1.1.2
Zooko O'Whielacronx [Tue, 11 Mar 2008 02:57:07 +0000 (19:57 -0700)]
setup: setup_require darcsver >= 1.1.2

16 years agosetup: bundle darcsver-1.1.2.tar
Zooko O'Whielacronx [Tue, 11 Mar 2008 02:56:47 +0000 (19:56 -0700)]
setup: bundle darcsver-1.1.2.tar

16 years agosetup: generate a unique revision number for each build
Zooko O'Whielacronx [Tue, 11 Mar 2008 02:26:02 +0000 (19:26 -0700)]
setup: generate a unique revision number for each build

16 years agosetup: remove old bundled darcsver-1.0.1.tar
Zooko O'Whielacronx [Tue, 11 Mar 2008 02:23:34 +0000 (19:23 -0700)]
setup: remove old bundled darcsver-1.0.1.tar

16 years agosetup: bundle darcsver-1.1.1.tar
Zooko O'Whielacronx [Tue, 11 Mar 2008 02:21:16 +0000 (19:21 -0700)]
setup: bundle darcsver-1.1.1.tar
I forgot that we're doing uncompressed misc/deps at the moment.  We don't think this is a long-term good approach...

16 years agoappease some unspecified audience by naming our GNU-extension-using makefile 'GNUmake...
Brian Warner [Tue, 11 Mar 2008 01:53:36 +0000 (18:53 -0700)]
appease some unspecified audience by naming our GNU-extension-using makefile 'GNUmakefile'. Closes #214

16 years agotest_mutable: exercise short reads too
Brian Warner [Tue, 11 Mar 2008 01:08:23 +0000 (18:08 -0700)]
test_mutable: exercise short reads too

16 years agoconfwiz: write accountname to a file
robk-tahoe [Tue, 11 Mar 2008 00:50:44 +0000 (17:50 -0700)]
confwiz: write accountname to a file

motivated simply by a desire to be able to identify 'noderoot' directories for
debugging and testing, the confwiz now writes an 'accountname' files based on
what account was used when the node was configured.  this is not currently read
by or used by any code in the system, but helps identify directories from testing.

16 years agotest_mutable: test all hash-failure cases except a corrupted encrypted private key
Brian Warner [Tue, 11 Mar 2008 00:46:52 +0000 (17:46 -0700)]
test_mutable: test all hash-failure cases except a corrupted encrypted private key

16 years agotest_mutable: add Roundtrip test, suitable for new share-mangling tests
Brian Warner [Mon, 10 Mar 2008 23:14:08 +0000 (16:14 -0700)]
test_mutable: add Roundtrip test, suitable for new share-mangling tests

16 years agomutable: cosmetic changes
Brian Warner [Mon, 10 Mar 2008 22:44:05 +0000 (15:44 -0700)]
mutable: cosmetic changes

16 years agomutable: minor refactoring of _do_read, to make other tests easier
Brian Warner [Mon, 10 Mar 2008 22:42:56 +0000 (15:42 -0700)]
mutable: minor refactoring of _do_read, to make other tests easier

16 years agofix pyflakes warning
Zooko O'Whielacronx [Mon, 10 Mar 2008 23:14:03 +0000 (16:14 -0700)]
fix pyflakes warning

16 years agoarchitecture.txt: make it clear that accounting/leases are not yet implemented
Brian Warner [Mon, 10 Mar 2008 19:25:19 +0000 (12:25 -0700)]
architecture.txt: make it clear that accounting/leases are not yet implemented

16 years agoreverting a change zooko made (2258) to see if it clears up problems in the windows...
Peter Secor [Mon, 10 Mar 2008 18:37:49 +0000 (11:37 -0700)]
reverting a change zooko made (2258) to see if it clears up problems in the windows build

16 years agolower max_segsize for immutable files to 128KiB, to make download-progress smoother...
Brian Warner [Sat, 8 Mar 2008 02:24:51 +0000 (19:24 -0700)]
lower max_segsize for immutable files to 128KiB, to make download-progress smoother and improve alacrity. Closes #252. Note that mutable files continue to use 1MiB segments.

16 years agomacapp: new mac icon
robk-tahoe [Sat, 8 Mar 2008 01:48:28 +0000 (18:48 -0700)]
macapp: new mac icon

this provides a new icon for the .app bundle
also removes the setting of the dock icon from within wx
(which previously used a different icon)

16 years agowebish: show storage sizelimit, abbreviate current usage
Brian Warner [Fri, 7 Mar 2008 04:16:38 +0000 (21:16 -0700)]
webish: show storage sizelimit, abbreviate current usage

16 years agodocs: trivial edit
Zooko O'Whielacronx [Fri, 7 Mar 2008 01:32:30 +0000 (18:32 -0700)]
docs: trivial edit

16 years agosetup: don't install, just "develop" in setup.py in build target
Zooko O'Whielacronx [Fri, 7 Mar 2008 01:28:20 +0000 (18:28 -0700)]
setup: don't install, just "develop" in setup.py in build target

16 years agosetup: don't echo the echo of EGGSPATH
Zooko O'Whielacronx [Fri, 7 Mar 2008 01:18:56 +0000 (18:18 -0700)]
setup: don't echo the echo of EGGSPATH

16 years agomacfuse: fix unicode handling
robk-tahoe [Fri, 7 Mar 2008 00:43:25 +0000 (17:43 -0700)]
macfuse: fix unicode handling

at one point I'd thrown in a 'str' since fuse api bits required a str instance
but tahoe returns unicode objects from its json parsing.  that, naturally
enough should really be a utf8 encoded str of the unicode object...

16 years agomacapp: simplify node startup failure reporting
robk-tahoe [Thu, 6 Mar 2008 22:09:04 +0000 (15:09 -0700)]
macapp: simplify node startup failure reporting

1. changed the node's exit-on-error behaviour. rather than logging debug and
then delegating to self for _abort_process() instead simply delegate to self
_service_startup_failed(failure) to report failures in the startup deferred
chain. subclasses then have complete control of handling and reporting any
failures in node startup.

2. replace the convoluted wx.PostEvent() glue for posting an event into the
gui thread with the simpler expedient of wx.CallAfter() which is much like
foolscap's eventually() but also thread safe for inducing a call back on the
gui thread.

16 years agomacapp: report failure of node startup to the user
robk-tahoe [Thu, 6 Mar 2008 20:53:21 +0000 (13:53 -0700)]
macapp: report failure of node startup to the user

in certain cases (e.g. the node.pem changed but old .furls are in private/)
the node will abort upon startup. previously it used os.abort() which in these
cases caused the mac gui app to crash on startup with no explanation.

this changes that behaviour from calling os.abort() to calling
node._abort_process(failure) which by default calls os.abort().  this allows
that method to be overridden in subclasses.

the mac app now provides and uses such a subclass of Client, so that failures
are reported to the user in a message dialog before the process exits.
this uses wx.PostEvent() with a custom event type to signal from the reactor
thread into the gui thread.

16 years agodoc: tiny change about status of mutable.txt
Zooko O'Whielacronx [Thu, 6 Mar 2008 22:02:15 +0000 (15:02 -0700)]
doc: tiny change about status of mutable.txt

16 years agowebish: add more share information to upload status, including assisted uploads
Brian Warner [Thu, 6 Mar 2008 02:51:51 +0000 (19:51 -0700)]
webish: add more share information to upload status, including assisted uploads

16 years agowebish: add publish status
Brian Warner [Thu, 6 Mar 2008 01:41:10 +0000 (18:41 -0700)]
webish: add publish status

16 years agoconfwiz: add nickname determination
robk-tahoe [Wed, 5 Mar 2008 23:34:18 +0000 (16:34 -0700)]
confwiz: add nickname determination

the confwiz now uses socket.gethostname() if a 'nickname' file doesn't already
exist, and passes that nickname into the 'record_install' method on the backend,
so that the moniker can be recorded in the system table.

16 years agodocs/mutable: describe deep-verify-cap scheme, update picture
Brian Warner [Wed, 5 Mar 2008 23:54:26 +0000 (16:54 -0700)]
docs/mutable: describe deep-verify-cap scheme, update picture

16 years agowebish: split out 'unlinked' operations
Brian Warner [Wed, 5 Mar 2008 22:12:42 +0000 (15:12 -0700)]
webish: split out 'unlinked' operations

16 years agowebish: this file is too big, start breaking it into pieces, beginning with status
Brian Warner [Wed, 5 Mar 2008 21:59:56 +0000 (14:59 -0700)]
webish: this file is too big, start breaking it into pieces, beginning with status

16 years agomutable-retrieve: only record server response times for queries that we don't ignore
Brian Warner [Wed, 5 Mar 2008 04:10:52 +0000 (21:10 -0700)]
mutable-retrieve: only record server response times for queries that we don't ignore

16 years agomutable: when retrieving, don't try to grab the encprivkey, to save a roundtrip
Brian Warner [Wed, 5 Mar 2008 04:08:24 +0000 (21:08 -0700)]
mutable: when retrieving, don't try to grab the encprivkey, to save a roundtrip

16 years agowebish: add more mutable-retrieve timing status
Brian Warner [Wed, 5 Mar 2008 04:04:36 +0000 (21:04 -0700)]
webish: add more mutable-retrieve timing status

16 years agoweb: status: add 'started' timestamps to all operations
Brian Warner [Wed, 5 Mar 2008 01:50:44 +0000 (18:50 -0700)]
web: status: add 'started' timestamps to all operations

16 years agoapply dreid's patch from #335 to fix the provisioning page in zipped distributions
Zooko O'Whielacronx [Sun, 9 Mar 2008 15:50:46 +0000 (08:50 -0700)]
apply dreid's patch from #335 to fix the provisioning page in zipped distributions

16 years agomutable: oops, .download *is* in use, by the speedtest. Restore it and add a test.
Brian Warner [Tue, 4 Mar 2008 22:11:40 +0000 (15:11 -0700)]
mutable: oops, .download *is* in use, by the speedtest. Restore it and add a test.

16 years agotest_util.py: get 100% test coverage for hashutil.py
Brian Warner [Tue, 4 Mar 2008 21:42:25 +0000 (14:42 -0700)]
test_util.py: get 100% test coverage for hashutil.py

16 years agouri.py: get 100% test coverage, fix a few bugs in the process
Brian Warner [Tue, 4 Mar 2008 21:27:45 +0000 (14:27 -0700)]
uri.py: get 100% test coverage, fix a few bugs in the process

16 years agomutable.py: remove unused 'download' method (we only have download_to_data for now)
Brian Warner [Tue, 4 Mar 2008 21:01:55 +0000 (14:01 -0700)]
mutable.py: remove unused 'download' method (we only have download_to_data for now)

16 years agotest_filenode.py : improve coverage of mutable filenode, fix a bug in __hash__
Brian Warner [Tue, 4 Mar 2008 21:01:28 +0000 (14:01 -0700)]
test_filenode.py : improve coverage of mutable filenode, fix a bug in __hash__

16 years agotest_system: improve test coverage of publish/retrieve status
Brian Warner [Tue, 4 Mar 2008 08:24:35 +0000 (01:24 -0700)]
test_system: improve test coverage of publish/retrieve status

16 years agowebish: add primitive publish/retrieve status pages
Brian Warner [Tue, 4 Mar 2008 08:07:44 +0000 (01:07 -0700)]
webish: add primitive publish/retrieve status pages

16 years agostats: make StatsGatherer happy about sharing a process with other services, add...
Brian Warner [Tue, 4 Mar 2008 06:55:58 +0000 (23:55 -0700)]
stats: make StatsGatherer happy about sharing a process with other services, add one during system test to get some test coverage

16 years agotest_web: improve upload/download status coverage
Brian Warner [Tue, 4 Mar 2008 04:56:23 +0000 (21:56 -0700)]
test_web: improve upload/download status coverage

16 years agotest_system: add test coverage for download-status and upload-status
Brian Warner [Tue, 4 Mar 2008 04:37:17 +0000 (21:37 -0700)]
test_system: add test coverage for download-status and upload-status

16 years agowebish: download-results: add per-server response times
Brian Warner [Tue, 4 Mar 2008 03:53:45 +0000 (20:53 -0700)]
webish: download-results: add per-server response times

16 years agowebish: download-results: add server_problems
Brian Warner [Tue, 4 Mar 2008 03:30:35 +0000 (20:30 -0700)]
webish: download-results: add server_problems

16 years agowebish download results: add servermap, decrypt time
Brian Warner [Tue, 4 Mar 2008 03:09:32 +0000 (20:09 -0700)]
webish download results: add servermap, decrypt time

16 years agowebish: add 'download results', with some basic timing information
Brian Warner [Tue, 4 Mar 2008 02:19:21 +0000 (19:19 -0700)]
webish: add 'download results', with some basic timing information

16 years agowebish: make upload timings visible on the recent uploads/downloads status page
Brian Warner [Mon, 3 Mar 2008 21:48:52 +0000 (14:48 -0700)]
webish: make upload timings visible on the recent uploads/downloads status page

16 years agowebish: add per-file upload/download status pages
Brian Warner [Sat, 1 Mar 2008 06:03:00 +0000 (23:03 -0700)]
webish: add per-file upload/download status pages

16 years agoretain 10 most recent upload/download status objects, show them in /status . Prep...
Brian Warner [Sat, 1 Mar 2008 05:19:03 +0000 (22:19 -0700)]
retain 10 most recent upload/download status objects, show them in /status . Prep for showing individual status objects

16 years agomacfuse: increase default timeout in ui launched mounts
robk-tahoe [Sat, 1 Mar 2008 03:18:15 +0000 (20:18 -0700)]
macfuse: increase default timeout in ui launched mounts

when an operation takes 'too long', on 10.4 the user gets a dialog about
the problem with a 'force eject / keep trying' choice. on 10.5 the fuse
system seems to summarily unmount the drive.

this showed up in 10.5 testing because the time to open() a file depended
upon the size of the file, and an 8Mb test file took long enough for the
node to download that the open() call didn't respond within 60s and fuse
spontaneously ejected the drive, quitting the plugin (and cancelling the
download).

this changes the fuse options passed to the plugin by the ui when the
'mount filesystem' window is used.  command line users should check out
the '-odaemon_timeout=...' option.  this changes the default timeout from
60s to 300s (5min) for ui launched plugins.

this will be addressed in a deeper manner at a later date, with a more
advanced fuse subsystem which can interleave open()/read() with the
actual download of the file, only blocking when data is not downloaded
yet.

16 years agomacfuse: slew of updates
robk-tahoe [Sat, 1 Mar 2008 03:12:41 +0000 (20:12 -0700)]
macfuse: slew of updates

various updates to improve the functionality of the mac fuse plugin

1. caching

previously, the experimental tahoefuse plugin pre-loaded the whole
structure of the specified mount into memory at launch time. changes
which were made through that fuse plugin would be remembered, but any
changes made through other tahoe clients would not be reflected.

now directory contents are only loaded when needed, and the data is
cached for a limited time.  any use of Directory objects should first
call maybe_refresh() which will check the time since the cache was last
loaded, and if the data is older than some validity period (currently
26s) then the directory's contents will be refetched and reloaded.
this replaces the 'load_dir()' method of TFS

whenever a local change is made to a Directory object, or when the
aforementioned cache reloading notices a change in directory data, the
mtime of the directory is automatically updated.

2. stat / metadata

the retrieval of 'stat' information for getattr(), and the way that
metadata is handled, has been refactored to better reflect the fact that
metadata in tahoe is only represented by 'edges' (i.e entries in
directories) not on 'nodes' (files or directories themselves) hence a
stat lookup should be a query to the parent directory (specifically the
parent specified by the path being queried in the case that a node has
multiple parents) for details known by that directory for the given
child, rather than a query to the child itself.

the TStat utility class for returning stat information to the python-
fuse layer has been extended to accept a 'metadata' argument in its
constructor.  any fields found in the metadata dict which match the
names of the stat attributes are loaded into the TStat object.  the
'ctime' and 'mtime' attributes are translated to st_ctime and st_mtime
to mesh with the existing timestamp handling code. any fields specified
by kwargs to the constructor override things that might be loaded from
the metadata dict.

Directory objects now track their children as a dict mapping name to
(child_obj, metadata) tuples. This is because the metadata in tahoe
will be stored exclusively on the edges of the graph. each Directory
maintains its own mtime however, and get_stat() calls will report the
mtime of a directory based on the last modification of the Directory
object, not based on any mtime records from the parent directory's
metadata for that child.  This addresses the fact that since directories
may be shared, a given parent may or may not reflect the latest changes,
however one of the Finder's behaviours is to examine the stat of a
directory, and not to bother doing a readdir() if the stat is unchanged.
i.e. unless directories report their changes in their stat info, the
Finder will not show changes within that directory.

3. refactoring

reporting of many error codes has been refactored to raise IOError
subclasses with the appropriate errno.  this exploits python-fuse's
built-in mechanism for catching IOError and reporting the errno
embedded within it automatically, while simplifying the code within
the plugin.

the add_child() method on TFS was removed in favour of simply having an
add_child() method on Directory objects. this provides a more OO
approach in that Directory is responsible for maintaining its own in
memory state and also writing changes back to the node.  similarly for
remove_child()

these changes, along with the new tfs.compose_url() method,
significantly simplify and improve readability of mkdir, rename methods
along with the newer link and unlink.  these also get improved error
reporting.

various operations (chmod, chown, truncate, utime) are now ignored.
previously they would report an unsupported operation (EOPNOTSUPP)
but now are simply logged and ignored.  this surpresses errors caused
by some client programs which try to use these operations, but at the
moment those operations are meaningless to the tahoe filesystem anyway.

4. link / unlink / rmdir

link, symlink calls are now supported, though with semantics differing
from posix, both equivalent.  unlink, rmdir calls are now supported,
also equivalent.

link or symlink calls duplicate the uri of the named source and adds it
as a child of another directory according to the destination path.  for
directories, this creates a 'hard' link, i.e. the same directory will
appear in multiple locations within the filesystem, and changes in
any place will be reflected everywhere.  for files, by contrast, since
the uri being duplicated is an immutable CHK uri, link/symlink for files
is equivalent to a copy - though significantly cheaper. (a file copy
with the fuse plugin is likely to cause a new file to be written and
uploaded, the link command simply adds an entry referring to an
existing uri)

in testing, the 'ln' command is unable to make hard links (i.e. call
link()) for directories, though symlink ('ln -s') is supported.
either forms works equivalently for files.

unlink and rmdir both remove the specified entry from its parent
directory.

5. logging

the 'tfuse.log' file now only reports launches of the fuse plugin. once
the plugin has parsed the options, it reopens the log file with the
name of the mount, e.g. tfuse.root_dir.log, so that multiple instances
running concurrently will not interfere with each others' logging.

6. bug fixes

the tmp_file in the cache dir backing files opened for write was
intermittently failing to open the file.  added O_CREAT to the os.open
call so that files will be created if missing, not throw errors.

a failure to correctly parse arguments if no mount (dir_cap) name was
given but also no fuse options were given has been fixed. now the
command 'tahoe fuse mountpoint' will correctly default to root_dir
also when running from source, arguments to tahoefuse were not handled
to correctly match the 'tahoe fuse ...' behaviour.

16 years agoclient.py: remove confusing no-longer-used code from get_encoding_parameters
Brian Warner [Sat, 1 Mar 2008 03:01:54 +0000 (20:01 -0700)]
client.py: remove confusing no-longer-used code from get_encoding_parameters

16 years agoupload: fix up some log messages
Brian Warner [Sat, 1 Mar 2008 03:00:45 +0000 (20:00 -0700)]
upload: fix up some log messages

16 years agowui/wapi/webish: HTML form checkboxes send the value "on", so let's interpret that...
Zooko O'Whielacronx [Sat, 1 Mar 2008 03:29:42 +0000 (20:29 -0700)]
wui/wapi/webish: HTML form checkboxes send the value "on", so let's interpret that as boolean true