[erlang-bugs] Incorrect or misleading inets/http_server error message
Edwin Fine
erlang-questions_efine@REDACTED
Wed Jul 30 16:24:07 CEST 2008
Hi Ingela, I think that what you suggest is very clear. Thank you.
On Wed, Jul 30, 2008 at 2:35 AM, Ingela Anderton Andin <
ingela@REDACTED> wrote:
> Hi Edwin,
>
> well I suppose it is a little too much of a question of how you define
> type, and maybe your reasoning is more the common way to reason than mine. I
> think of "type" in a quite abstract way. But I do not want to argue on what
> is more right or wrong, I think it is fair to choose another wording that
> will be more clear to
> all. I suggest {invalid_option, {non_existing,
> {document_root,"/tmp/htdocs"}}}. How do you feel about that?
>
> Regards - Ingela Erlang/OTP, Ericsson
>
> Edwin Fine wrote:
>
>> Thanks, Ingela, your solution looks good, but I find it still a little bit
>> misleading. You see, what was provided was actually a directory (in string
>> format). The fact that the directory does not exist has nothing to do with
>> its type, really. What it has to do with is validation. Maybe wrong_type
>> would read better as validation_failed? That covers both type checks and
>> existence checks and any other kind of checks of this sort that may come up
>> in future.
>>
>> Regards,
>> Edwin
>>
>> On Tue, Jul 29, 2008 at 5:15 AM, Ingela Anderton Andin <
>> ingela@REDACTED <mailto:ingela@REDACTED>> wrote:
>>
>> Hi Edwin!
>>
>> Well yes in this particular case it becomes a bit confusing I
>> agree. It is a type check that has fail but this is obviously
>> a special case of failure so I changed it so it will become
>> *{wrong_type, {non_existing, document_root,"/tmp/htdocs"}}.
>> The type check acctualy checks if "/tmp/htdocs" is a directory
>> and not only that it is a string on the correct format. So the
>> type here is "directory"
>> and not "string". But yes I can see that people might get
>> confused. I think this will be the best solution removing the
>> wrong_type in this case
>> will make the code cluttered of special cases in more than one
>> place, now I just handle the special case where it appeares and
>> the higer level code does not need to care about such details, and
>> also it is logical type error, the given parameter was not a valid
>> directory.
>>
>> Regards - Ingela Erlang/OTP, Ericsson
>>
>>
>> *Edwin Fine wrote:
>>
>> Taking the example out of the document at
>> http://www.erlang.org/doc/apps/inets/http_server.html:
>>
>> 2> {ok, Pid} = inets:start(httpd, [{port, 0},
>> 2> {server_name,"httpd_test"}, {server_root,"/tmp"},
>> 2> {document_root,"/tmp/htdocs"}, {bind_address,
>> "localhost"}]).
>>
>> =ERROR REPORT==== 30-Jun-2008::17:47:18 ===
>> Failed initiating web server:
>> undefined
>> *{wrong_type,{document_root,"/tmp/htdocs"}}*
>>
>> ** exception error: no match of right hand side value
>> {error,{shutdown,{child,undefined,
>>
>> {httpd_instance_sup,{0,0,0,0,0,0,0,1},59104},
>>
>> {httpd_instance_sup,start_link,
>>
>> [[{port,59104},
>>
>>
>> {bind_address,{0,0,0,0,0,0,0,1}},
>>
>> {server_name,"httpd_test"},
>>
>> {server_root,"/tmp"},
>>
>> {document_root,"/tmp/htdocs"}],
>>
>> 15000,
>>
>> {<0.50.0>,#Port<0.126>},
>>
>> []]},
>>
>> permanent,infinity,supervisor,
>>
>> [httpd_instance_sup]}}}
>>
>> The actual problem was that the "/tmp/htdocs" directory did
>> not exist. I find having an error message of undefined
>> *{wrong_type,{document_root,"/tmp/htdocs"}} *to be very
>> misleading. I read it as "the value corresponding to
>> document_root [i.e. "/tmp/htdocs", of type string] is of the
>> wrong type". If not a string, what should it be, I wondered?
>>
>> When I created the directory and tried again, the message went
>> away. I would have expected to see something like
>> {does_not_exist,{document_root,"/tmp/htdocs"}}.
>>
>> 3> {ok, Pid} = inets:start(httpd, [{port, 0},
>> 3> {server_name,"httpd_test"}, {server_root,"/tmp"},
>> 3> {document_root,"/tmp/htdocs"}, {bind_address,
>> "localhost"}]).
>> {ok,<0.58.0>}
>> 4>
>>
>> Regards,
>> Edwin Fine
>> -- The great enemy of the truth is very often not the lie --
>> deliberate, contrived and dishonest, but the myth, persistent,
>> persuasive, and unrealistic. Belief in myths allows the
>> comfort of opinion without the discomfort of thought.
>> John F. Kennedy 35th president of US 1961-1963 (1917 - 1963)
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> erlang-bugs mailing list
>> erlang-bugs@REDACTED <mailto:erlang-bugs@REDACTED>
>> http://www.erlang.org/mailman/listinfo/erlang-bugs
>>
>>
>>
>>
>>
>>
>> --
>> For every expert there is an equal and opposite expert - Arthur C. Clarke
>>
>
>
>
--
For every expert there is an equal and opposite expert - Arthur C. Clarke
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-bugs/attachments/20080730/70f4bb9c/attachment.htm>
More information about the erlang-bugs
mailing list