From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp10.mail.ru (smtp10.mail.ru [94.100.181.92]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 9D9F346970E for ; Fri, 17 Jan 2020 00:54:25 +0300 (MSK) From: Vladislav Shpilevoy Date: Thu, 16 Jan 2020 22:54:20 +0100 Message-Id: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH v2 0/3] Fiber storage leak List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tarantool-patches@dev.tarantool.org, kostja.osipov@gmail.com The patchset makes fiber.storage be always deleted. Regardless of where was it created - in a fiber born in the Lua land, or in a fiber serving IProto requests and accessing Lua. That removes - a leak occurred each time when fiber storage was created for an IProto request; - a possibility to see previous request's artifacts left in fiber.storage; And makes possible to use fiber.storage as request-local data. Branch: http://github.com/tarantool/tarantool/tree/gerold103/gh-4662-fiber-storage-leak Issue: https://github.com/tarantool/tarantool/issues/4662 Changes in v2: - Renamed back fiber.on_cleanup -> fiber.on_stop; - Removed dead code from box_process_call/eval(), which is now handled by iproto. Vladislav Shpilevoy (3): fiber: unref fiber.storage via global Lua state fiber: destroy fiber.storage created by iproto box: remove dead code from box_process_call/eval() src/box/call.c | 28 +------ src/box/iproto.cc | 44 ++++++++-- src/box/txn.c | 1 + src/lib/core/fiber.c | 18 +++- src/lib/core/fiber.h | 14 +++- src/lua/fiber.c | 35 ++++++-- test/app/gh-4662-fiber-storage-leak.result | 88 ++++++++++++++++++++ test/app/gh-4662-fiber-storage-leak.test.lua | 43 ++++++++++ 8 files changed, 230 insertions(+), 41 deletions(-) create mode 100644 test/app/gh-4662-fiber-storage-leak.result create mode 100644 test/app/gh-4662-fiber-storage-leak.test.lua -- 2.21.1 (Apple Git-122.3)