[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