Opened at 2011-03-11T17:05:05Z
Last modified at 2014-01-21T20:50:26Z
#1376 new defect
make user-oriented error message for absence of node.url
Reported by: | zooko | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | soon |
Component: | code-frontend-cli | Version: | 1.8.2 |
Keywords: | cli usability tahoe-* doc error | Cc: | |
Launchpad Bug: |
Description (last modified by daira)
I created a basedir with tahoe create-client ${BASEDIR}, then started the client with tahoe start ${BASEDIR, then ran tahoe mkdir -d ${BASEDIR}, and it did this:
$ tahoe mkdir -d . Traceback (most recent call last): File "/Users/zooko/playground/tahoe-lafs/dw/support/bin/tahoe", line 9, in <module> load_entry_point('allmydata-tahoe==1.8.2-r5006', 'console_scripts', 'tahoe')() File "/Users/zooko/playground/tahoe-lafs/dw/src/allmydata/scripts/runner.py", line 113, in run rc = runner(sys.argv[1:], install_node_control=install_node_control) File "/Users/zooko/playground/tahoe-lafs/dw/src/allmydata/scripts/runner.py", line 67, in runner config.parseOptions(argv) File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/twisted/python/usage.py", line 231, in parseOptions self.subOptions.parseOptions(rest) File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/twisted/python/usage.py", line 241, in parseOptions self.postOptions() File "/Users/zooko/playground/tahoe-lafs/dw/src/allmydata/scripts/cli.py", line 42, in postOptions self['node-url'] = open(node_url_file, "r").read().strip() IOError: [Errno 2] No such file or directory: u'/Users/zooko/tmp/d/tmp_create/node.url'
There is no node.url file present. The usage information from tahoe mkdir --help makes it sound like the node.url file is not necessary if the actual Tahoe-LAFS gateway is there:
-d, --node-directory= Specify which Tahoe node directory should be used. The directory should either contain a full Tahoe node, or a file named node.url that points to some other Tahoe node. It should also contain a file named 'private/aliases' which contains the mapping from alias name to root dirnode URI. [default: '/Users/zooko/.tahoe']
Change History (6)
comment:1 Changed at 2011-03-11T20:57:49Z by davidsarah
comment:2 Changed at 2011-03-11T21:05:15Z by davidsarah
comment:3 Changed at 2011-03-11T21:34:23Z by zooko
- Keywords doc added
- Summary changed from CLI errors out due to absence of node.url to make user-oriented error message for absence of node.url
So the underlying cause was that the node didn't start due to port number conflict and it emitted output which made it look like it had started (#1377).
A secondary problem is that the --help text confused me about whether it should be able to run without node.url. After all, the node.url is only for finding the node, right? And the node directory is right there, right? And the help text said "either contain a full Tahoe node, or a file named node.url", and I thought that I had the first half of that disjunction. This theory doesn't hold up if you think about it (because even though the node's persistent state is right there, the client still needs the node's URL in order to communicate with it. (I was in a hurry and distracted because I was trying to set up a demo of LAFS-on-S3 during PyCon so it was hard to think carefully.) (See also #1310 -- in my opinion it would be nice to separate the notions, names, and documentation of the directory that holds the gateway's persistent state from that which holds the client's persistent state.)
A tertiary problem is that the error message was a Python backtrace instead of a user-oriented error message, which (depending on its content) could have clued me in faster as to what was the actual problem.
So let's make this ticket to improve the --help text and replace the backtrace with a user-oriented error message.
comment:4 Changed at 2011-03-12T01:08:07Z by davidsarah
- Keywords error added
- Milestone changed from undecided to 1.9.0
comment:5 Changed at 2011-10-13T19:54:06Z by davidsarah
- Milestone changed from 1.9.0 to 1.10.0
comment:6 Changed at 2014-01-21T20:50:26Z by daira
- Description modified (diff)
#2089 was a duplicate.
Isn't tahoe start ${BASEDIR} supposed to create node.url? Is the WUI working for that gateway?