[Tarantool-patches] [PATCH v2 2/2] lua: return getaddrinfo() errors

sergos at tarantool.org sergos at tarantool.org
Mon Jul 13 12:51:45 MSK 2020


Hi!

Sorry for dropping out. 

My initial concern was that we put a bunch of errors, such as EAI_NONAME and 
another bunch of messages, which can appear differently depending on OS or 
network conditions, into one bowl and mix them up.

I believe there should be a better approach, such as for each error a particular 
set of messages can appear. 

Now I tend to understand your statement as ‘an messages can appear for each
error’. Is it right? 

Regards,
Sergos


> On 26 Apr 2020, at 19:26, Roman Khabibov <roman.habibov at tarantool.org> wrote:
> 
> 
> 
>> On Apr 26, 2020, at 18:46, Alexander Turenko <alexander.turenko at tarantool.org> wrote:
>> 
>> On Sun, Apr 26, 2020 at 06:16:29AM +0300, Roman Khabibov wrote:
>>> 
>>> 
>>>> On Apr 24, 2020, at 20:18, Sergey Ostanevich <sergos at tarantool.org> wrote:
>>>> 
>>>> On 24 апр 14:42, Roman Khabibov wrote:
>>>>> Hi! Thanks for the review.
>>>>> 
>>>>>> On Apr 16, 2020, at 13:27, Sergey Ostanevich <sergos at tarantool.org> wrote:
>>>>>> 
>>>>>> On 06 апр 05:08, Roman Khabibov wrote:
>>>>>>>>> +test_run:cmd("setopt delimiter ';'")
>>>>>>>>> +function check_err(err)
>>>>>>>>> +    if err == 'getaddrinfo: nodename nor servname provided, or not known' or
>>>>>>>>> +       err == 'getaddrinfo: Servname not supported for ai_socktype' or
>>>>>>>>> +       err == 'getaddrinfo: Name or service not known' or
>>>>>>>>> +       err == 'getaddrinfo: hostname nor servname provided, or not known' or
>>>>>>>>> +       err == 'getaddrinfo: Temporary failure in name resolution' or
>>>>>>>>> +       err == 'getaddrinfo: Name could not be resolved at this time' then
>>>>>>>>> +        return true
>>>>>>>>> +    end
>>>>>>>>> +    return false
>>>>>>>>> +end;
>>>>>>>> I really doubt that different error messages from the set above will appear 
>>>>>>>> for the same error on different platforms. Could you please check for particular 
>>>>>>>> output for each case you trigger below?
>>>>>>> Look at that:
>>>>>>> https://travis-ci.org/github/tarantool/tarantool/jobs/546115892#L3581 - Linux failed
>>>>>>> https://travis-ci.org/github/tarantool/tarantool/jobs/546115893#L3100 - macOS isn’t
>>>>>>> 
>>>>>> 
>>>>>> Exactly, this means for the error EAI_NONAME those OSes have differnet
>>>>>> messages. But you've put different errors in one bunch - I meant it
>>>>>> should never return 'Temporary failure in name resolution' as a result
>>>>>> for EAI_SERVICE, right? 
>>>>>> 
>>>>>> Are you testing for correct error returned for a particular case?
>>>>> Don’t understand the question. I just check error messages that appeared
>>>>> after travis/gitlab testing.
>>>>> 
>>>> Different errors makes different messages. 
>>>> Same error can make different messages on different platforms. 
>>>> 
>>>> You put both into one: you don't care about what exact error came to
>>>> you, right? 
>>> Right. The most important thing here is that the error is from getaddrinfo.
>> 
>> Here I disagree. We want to verify that an error from a specific set of
>> errors occurs. AFAIR, three errors are possible when trying to resolve a
>> non-existent hostname: EAI_NONAME, EAI_AGAIN (and, as I see from the
>> messages, EAI_SERVICE; maybe it is when ipv6 is semi-configured like on
>> travis-ci).
>> 
>> Actual EAI_* error for the test depends on network conditions and host
>> configuration, messages are platform dependent.
>> 
>> See also:
>> https://lists.tarantool.org/pipermail/tarantool-patches/2019-August/003399.html
>> 
>> Roman, I suggest to clarify things that Sergos asked in the comments
>> near to the check: if it is not clear for a reviewer, then a future
>> reader may hang with it too.
> Ok, Sergos, can you just show me what is wrong in this code. Sorry, but I
> can’t figure out. There is the set of error messages, and there is the
> corresponding constants. If several error messages correspond to the same
> constant, then these messages are for different OS.
> 
> +-- gh-4138 Check getaddrinfo() error from socket:connect() only.
> +-- Error code and error message returned by getaddrinfo() depends
> +-- on system's gai_strerror().
> +test_run:cmd("setopt delimiter ';'")
> +function check_err(err)
> +-- EAI_NONAME
> +    if err == 'getaddrinfo: nodename nor servname provided, or not known' or
> +-- EAI_SERVICE
> +       err == 'getaddrinfo: Servname not supported for ai_socktype' or
> +-- EAI_NONAME
> +       err == 'getaddrinfo: Name or service not known' or
> +-- EAI_NONAME
> +       err == 'getaddrinfo: hostname nor servname provided, or not known' or
> +-- EAI_AGAIN
> +       err == 'getaddrinfo: Temporary failure in name resolution' or
> +-- EAI_AGAIN
> +       err == 'getaddrinfo: Name could not be resolved at this time' then
> +        return true
> +    end
> +    return false
> +end;
> 
>> And, please (AFAIR I already asked), comment which message is for which
>> EAI_* constant.
>> 
>> WBR, Alexander Turenko.



More information about the Tarantool-patches mailing list