Tarantool development patches archive
 help / color / mirror / Atom feed
From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: tarantool-patches@freelists.org,
	Konstantin Osipov <kostja@tarantool.org>
Cc: vdavydov.dev@gmail.com
Subject: Re: [tarantool-patches] Re: [PATCH 3/4] session: introduce 'dead' type
Date: Fri, 7 Dec 2018 23:40:29 +0300	[thread overview]
Message-ID: <f4c6de92-2572-ba5e-f3ce-2ef0b3bf8703@tarantool.org> (raw)
In-Reply-To: <20181207173856.GE840@chai>



On 07/12/2018 20:38, Konstantin Osipov wrote:
> * Vladislav Shpilevoy <v.shpilevoy@tarantool.org> [18/12/07 18:48]:
>> If an iproto connection is closed, there are no way
>> how to determine if this happened. Except setting an
>> on_disconnect trigger which sets a global flag or
>> something.
>>
>> To deal with such orphan requests a new session type
>> is introduced that can be checked inside a request.
> 
> Please don't reset session type when it becomes dead.
> What's the problem with storing an explicit vtab pointer in the
> session and resetting it?

I've explained to you what is a problem. To store vtab in struct
session we should reset its type never, since vtab now depends
both on type and on session state. But we can not do it because of
repl and console session types which are reset in src/lua/init.c and
src/lua/console.lua. Moreover, we can not set a session type repl
at start of the lua script runner, since it is in src/ but session
is in box/.

Also, I can turn background session type into console one via
require('console').start(), and this case it impossible to
determine at start of a fiber.

So the simplest ways to solve #3859 are 1) introduce 'dead' session
as we discussed with Vova, 2) just add an explicit check into
iproto session push implementation that a session is still connected.

Also we can move struct session into src/ but it is a long and complex
way that should be discussed.

>>
>> Needed for #3859
>> ---
>>   src/box/session.cc |  2 ++
>>   src/box/session.h  | 14 ++++++++++++++
>>   2 files changed, 16 insertions(+)
>>
> 

  reply	other threads:[~2018-12-07 20:40 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-07 15:46 [PATCH 0/4] Outdate disconnected session Vladislav Shpilevoy
2018-12-07 15:46 ` [PATCH 1/4] iproto: rename disconnect cmsg to destroy Vladislav Shpilevoy
2018-12-07 17:36   ` [tarantool-patches] " Konstantin Osipov
2018-12-11 12:54     ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-07 15:46 ` [PATCH 2/4] iproto: fire on_disconnect right after disconnect Vladislav Shpilevoy
2018-12-07 17:37   ` [tarantool-patches] " Konstantin Osipov
2018-12-11 12:55     ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-07 15:46 ` [PATCH 3/4] session: introduce 'dead' type Vladislav Shpilevoy
2018-12-07 17:38   ` [tarantool-patches] " Konstantin Osipov
2018-12-07 20:40     ` Vladislav Shpilevoy [this message]
2018-12-07 22:21       ` [tarantool-patches] " Konstantin Osipov
2018-12-07 22:42         ` Vladislav Shpilevoy
2018-12-07 15:46 ` [PATCH 4/4] session: kill a session of a closed connection Vladislav Shpilevoy
2018-12-07 17:35 ` [tarantool-patches] [PATCH 0/4] Outdate disconnected session Konstantin Osipov
2018-12-11 16:12   ` [tarantool-patches] " Vladislav Shpilevoy
2018-12-07 17:41 ` [tarantool-patches] " Konstantin Osipov
2018-12-11 16:13   ` [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=f4c6de92-2572-ba5e-f3ce-2ef0b3bf8703@tarantool.org \
    --to=v.shpilevoy@tarantool.org \
    --cc=kostja@tarantool.org \
    --cc=tarantool-patches@freelists.org \
    --cc=vdavydov.dev@gmail.com \
    --subject='Re: [tarantool-patches] Re: [PATCH 3/4] session: introduce '\''dead'\'' type' \
    /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