Tarantool development patches archive
 help / color / mirror / Atom feed
From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: tarantool-patches@freelists.org
Subject: Re: [tarantool-patches] Re: [PATCH 02/11] sio: remove unused functions, restyle code
Date: Wed, 5 Dec 2018 00:29:07 +0300	[thread overview]
Message-ID: <5861cffa-534b-fcb7-e000-c8a7b326cfd2@tarantool.org> (raw)
In-Reply-To: <20181203122819.uvooq6w7auzgjrj3@esperanza>

Hi! Thanks for the review.

On 03/12/2018 15:28, Vladimir Davydov wrote:
> On Fri, Nov 30, 2018 at 06:39:34PM +0300, Vladislav Shpilevoy wrote:
>> -/** Read up to 'count' bytes from a socket. */
>>   ssize_t
>>   sio_read(int fd, void *buf, size_t count)
>>   {
>>   	ssize_t n = read(fd, buf, count);
>> -	if (n < 0) {
>> -		if (errno == EWOULDBLOCK)
>> -			errno = EINTR;
>> -		switch (errno) {
>> -		case EAGAIN:
>> -		case EINTR:
>> -			break;
>> -		/*
>> -		 * Happens typically when the client closes
>> -		 * socket on timeout without reading the previous
>> -		 * query's response completely. Treat the same as
>> -		 * EOF.
>> -		 */
>> -		case ECONNRESET:
>> -			errno = 0;
>> -			n = 0;
>> -			break;
>> -		default:
>> -			tnt_raise(SocketError, sio_socketname(fd),
>> -				  "read(%zd)", count);
>> -		}
>> +	if (n >= 0)
>> +		return n;
>> +	if (errno == EWOULDBLOCK)
>> +		errno = EINTR;
>> +	switch (errno) {
>> +	case EAGAIN:
>> +	case EINTR:
>> +		break;
>> +	/*
>> +	 * Happens typically when the client closes socket on
>> +	 * timeout without reading the previous query's response
>> +	 * completely. Treat the same as EOF.
>> +	 */
>> +	case ECONNRESET:
>> +		errno = 0;
>> +		n = 0;
>> +		break;
>> +	default:
>> +		tnt_raise(SocketError, sio_socketname(fd), "read(%zd)", count);
> 
> If I had to write this function myself, I'd probably write it the same
> way as you intend to patch it, however it isn't worth polluting the
> history now. Please revert this change and all other changes that exist
> solely to make the code conform to your taste. The only thing that's
> worth doing now is removing unused functions, because otherwise you'd
> have to remove exceptions from them, too. I wouldn't even touch the
> comments - they look fine to me, as a matter of fact.
> 
>> -int sio_setfl(int fd, int flag, int on);
>> +/**
>> + * Set a file descriptor flag. A wrapper for
>> + * fcntl(F_SETFL, flag | fcntl(F_GETFL)), but sets diagnostics on
>> + * error.
>> + */
>> +int
>> +sio_setfl(int fd, int flag);
> 
> This makes the API kinda lopsided - you can set a flag, but you can't
> clear it. Please leave it as is.

It is always 1 everywhere. Makes no sense to provide an ability
to unset and I can not imagine when we could need such 'feature'.

But as you wish. Done. See v2 in a new thread. Too many changes to
paste them here.

  reply	other threads:[~2018-12-04 21:29 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-30 15:39 [PATCH 00/11] SWIM preparation Vladislav Shpilevoy
2018-11-30 15:39 ` [PATCH 01/11] box: move info_handler interface into src/info Vladislav Shpilevoy
2018-12-03 11:05   ` Vladimir Davydov
2018-12-03 21:48     ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-03 20:41   ` [tarantool-patches] " Konstantin Osipov
2018-12-03 21:48     ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-04  8:52       ` Vladimir Davydov
2018-11-30 15:39 ` [PATCH 10/11] evio: remove exceptions Vladislav Shpilevoy
2018-11-30 15:39 ` [PATCH 11/11] evio: turn into C Vladislav Shpilevoy
2018-11-30 15:39 ` [PATCH 02/11] sio: remove unused functions, restyle code Vladislav Shpilevoy
2018-12-03 12:28   ` Vladimir Davydov
2018-12-04 21:29     ` Vladislav Shpilevoy [this message]
2018-12-05  8:41       ` [tarantool-patches] " Vladimir Davydov
2018-11-30 15:39 ` [PATCH 03/11] sio: remove exceptions Vladislav Shpilevoy
2018-12-03 12:36   ` Vladimir Davydov
2018-12-04 21:29     ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-05  8:42       ` Vladimir Davydov
2018-11-30 15:39 ` [PATCH 04/11] sio: fix passing negative size_t to sio_add_to_iov Vladislav Shpilevoy
2018-12-03 13:50   ` Vladimir Davydov
2018-12-04 21:29     ` Vladislav Shpilevoy
2018-12-05  8:48       ` Vladimir Davydov
2018-11-30 15:39 ` [PATCH 05/11] sio: turn into C Vladislav Shpilevoy
2018-11-30 15:39 ` [PATCH 06/11] evio: make on_accept be nothrow Vladislav Shpilevoy
2018-12-03 14:58   ` Vladimir Davydov
2018-12-04 21:29     ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-05  8:52       ` Vladimir Davydov
2018-11-30 15:39 ` [PATCH 07/11] coio: fix file descriptor leak on accept Vladislav Shpilevoy
2018-12-03 16:16   ` Vladimir Davydov
2018-12-04 21:29     ` [tarantool-patches] " Vladislav Shpilevoy
2018-11-30 15:39 ` [PATCH 08/11] coio: fix double close of a file descriptor Vladislav Shpilevoy
2018-12-03 16:19   ` Vladimir Davydov
2018-12-04 21:29     ` [tarantool-patches] " Vladislav Shpilevoy
2018-11-30 15:39 ` [PATCH 09/11] evio: refactoring Vladislav Shpilevoy
2018-12-03 16:37   ` Vladimir Davydov
2018-12-04 21:29     ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-03  9:47 ` [PATCH 00/11] SWIM preparation Vladimir Davydov
2018-12-03 10:27   ` [tarantool-patches] " Vladislav Shpilevoy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5861cffa-534b-fcb7-e000-c8a7b326cfd2@tarantool.org \
    --to=v.shpilevoy@tarantool.org \
    --cc=tarantool-patches@freelists.org \
    --cc=vdavydov.dev@gmail.com \
    --subject='Re: [tarantool-patches] Re: [PATCH 02/11] sio: remove unused functions, restyle code' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox