[Tarantool-patches] [PATCH] Work-around WSL assert when SO_LINGER is set on unix sockets

Timur Safin tsafin at tarantool.org
Wed Mar 11 13:43:16 MSK 2020


: -----Original Message-----
: From: Vladislav Shpilevoy <v.shpilevoy at tarantool.org>
: Subject: Re: [PATCH] Work-around WSL assert when SO_LINGER is set on unix
: sockets
: 


: 
: 1. Please, add a subsystem prefix to the commit title. For
: examples see other commits in the repository.

Here I need a help, because evidence is not apparent. The last commit to 
evio.c was not marked with subsystem 

	tsafin at M1BOOK6319:~/tarantool$ git log --oneline src/lib/core/evio.c
	835d22aa0 (HEAD -> tsafin/gh-4659-wsl-no-linger-assert, master)
		Work-around WSL assert when SO_LINGER is set on unix sockets
	3f5f59bb5 Move 'core' and 'uuid' libs to src/lib

Should it be `core` or `coio`?

: > Branch: https://github.com/tarantool/tarantool/tree/tsafin/gh-4659-wsl-
: no-linger-assert
: 
: 2. Please, provide both branch and issue links.
: 4. The patch has nothing to do with gh-4659:
: https://github.com/tarantool/tarantool/issues/4659
: "sql: raise an error in case space features HASH index".

This is the question - what is the current practice for such 
simplistic patches? SOP says there is no need to open issue 
so I'm marking branch with github issue # of which this 
patch is byproduct. 

:: 3. I see, that on the branch your commit message is just empty.
: Seems like you didn't push the latest message.

Yup, I didn't fully realize that such single-patch patchsets 
should contain patch commit messages and not that separate messages 
which I'd put to the cover message of patchset. Will amend.
 
: 
: > ---
: 
: 5. Links should be below this marker '---'. Some people apply
: patches from emails, and when you write links above '---', you
: make them part of the commit message.

Yes, thanks for the correction, this is side-effect of an approach
used above.
 
: > -	/* Send all buffered messages on socket before take
: > -	 * control out from close(2) or shutdown(2). */
: > -	struct linger linger = { 0, 0 };
: > +	if (family != AF_UNIX) {
: 
: 6. Is there any proof that it is no-op on Linux for AF_UNIX?
:

Good question! Never had enough time and motivation to proof this assumption.
Now you've asked I'll look into linux kernel tcp implementation. Stay ktuned.
 
 
: I would rather call sio_setsockopt() always. And ignore an
: error, if it is EINVAL for AF_UNIX.

Probably it's less damaging approach. I'll probably use it - but first I need to
Look around in the kernel.


: 
: 7. It is worth adding a comment why SO_LINGER is workarounded
: somehow.

Indeed. Will do .

: 
: > +		/* Send all buffered messages on socket before
: > +		 * take control out from close(2) or shutdown(2). */
: > +		struct linger linger = { 0, 0 };
: > +
: > +		if (sio_setsockopt(fd, SOL_SOCKET, SO_LINGER,
: > +				&linger, sizeof(linger)))
: > +			return -1;
: > +	}


Timur



More information about the Tarantool-patches mailing list