From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Subject: Re: [tarantool-patches] Re: [PATCH 3/4] session: introduce 'dead' type References: <20181207173856.GE840@chai> <20181207222157.GA2217@chai> From: Vladislav Shpilevoy Message-ID: Date: Sat, 8 Dec 2018 01:42:49 +0300 MIME-Version: 1.0 In-Reply-To: <20181207222157.GA2217@chai> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Language: en-US Content-Transfer-Encoding: 8bit To: Konstantin Osipov Cc: tarantool-patches@freelists.org, vdavydov.dev@gmail.com List-ID: On 08/12/2018 01:21, Konstantin Osipov wrote: > * Vladislav Shpilevoy [18/12/08 01:20]: >> On 07/12/2018 20:38, Konstantin Osipov wrote: >>> * Vladislav Shpilevoy [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/. > > What's wrong with adding a method session_set_type() which would > reset both type and vtab? > I will try to implement it. But as I remember you were against it yesterday: Константин Осипов, [6 дек. 2018 г., 23:24:43]: мне кажется проблема в другом в том что я разрешаю ресетить type эту проблему можно порешать, да я согласен что переустановка типа сессии после её создания ломает инкапсуляцию. Vladislav Shpilevoy, [6 дек. 2018 г., 23:25:23]: я ее порешал, удалив repl. Теперь lbox_session_create всегда создает консоль Константин Осипов, [6 дек. 2018 г., 23:25:23]: это говнокод какой-то Vladislav Shpilevoy, [6 дек. 2018 г., 23:26:03]: если не удалять репл, то придется херачить что-то вроде session_set_type, причем надо будет запрещать конвертации несовместимых сессий Константин Осипов, [6 дек. 2018 г., 23:26:12]: воу воу нахер вообще нужен lbox_session_create? Nonetheless, as you wish.