From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 2C2041FFC9 for ; Thu, 20 Sep 2018 20:54:41 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1oWbmg8r2QG6 for ; Thu, 20 Sep 2018 20:54:41 -0400 (EDT) Received: from forward4j.cmail.yandex.net (forward4j.cmail.yandex.net [5.255.227.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 79AC91FF89 for ; Thu, 20 Sep 2018 20:54:40 -0400 (EDT) From: roman.habibov1@yandex.ru In-Reply-To: <20180919133830.bvtnqh3ftbdukobh@tkn_work_nb> References: <1536282019-17978-1-git-send-email-roman.habibov1@yandex.ru> <41907181536625411@iva8-8d7a47df0521.qloud-c.yandex.net> <41826271536625517@iva7-bd007c44f58e.qloud-c.yandex.net> <20180919133830.bvtnqh3ftbdukobh@tkn_work_nb> Subject: [tarantool-patches] Re: [PATCH 1/1] box: add a method to check if transaction is open MIME-Version: 1.0 Date: Fri, 21 Sep 2018 03:54:37 +0300 Message-Id: <5119501537491277@myt3-12f13c3c6b95.qloud-c.yandex.net> Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="utf-8" Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: Alexander Turenko Cc: "tarantool-patches@freelists.org" , Kirill Shcherbatov Hi! Thanks for review. > Why do you return a table with boolean, but not boolean? Fixed. > It is better to use output filtering feature of test-run to avoid such > redundant diffs. > > Consider test/app/socket.test.lua: > > ``` >  12 env = require('test_run') >  13 test_run = env.new() >  14 test_run:cmd("push filter '(error: .builtin/.*[.]lua):[0-9]+' to '\\1'") > ``` > > It is not a blocker for that patch, but if you intend to include it, do > it in the separate commit before 'add a method to check if txn is open'. I added a separate commit. commit e613be2ef5f12e43ae4a346c4b30e87940ade661 Author: Roman Khabibov Date: Fri Sep 7 02:54:28 2018 +0300 box: add a method to check if txn is open Closes: #3518. diff --git a/src/box/lua/schema.lua b/src/box/lua/schema.lua index 74b7064..e2a5635 100644 --- a/src/box/lua/schema.lua +++ b/src/box/lua/schema.lua @@ -64,6 +64,8 @@ ffi.cdef[[ const char *key, const char *key_end); /** \endcond public */ /** \cond public */ + bool + box_txn(); int64_t box_txn_id(); int @@ -321,6 +323,10 @@ box.begin = function() end end +box.is_in_txn = function() + return builtin.box_txn() +end + box.savepoint = function() local csavepoint = builtin.box_txn_savepoint() if csavepoint == nil then diff --git a/test/box/misc.result b/test/box/misc.result index d9f8d4e..325af3b 100644 --- a/test/box/misc.result +++ b/test/box/misc.result @@ -67,6 +67,7 @@ t - index - info - internal + - is_in_txn - on_commit - on_rollback - once diff --git a/test/box/transaction.result b/test/box/transaction.result index e024084..8a4d11d 100644 --- a/test/box/transaction.result +++ b/test/box/transaction.result @@ -43,6 +43,30 @@ box.begin() box.rollback(); box.commit(); --- ... +-- +-- gh-3518: Add is_in_txn(). +-- +-- no active transaction - false +box.is_in_txn(); +--- +- false +... +-- active transaction - true +box.begin(); +--- +... +box.is_in_txn(); +--- +- true +... +-- no active transaction - false +box.commit(); +--- +... +box.is_in_txn(); +--- +- false +... fiber = require('fiber'); --- ... diff --git a/test/box/transaction.test.lua b/test/box/transaction.test.lua index e1d258e..8f7dfed 100644 --- a/test/box/transaction.test.lua +++ b/test/box/transaction.test.lua @@ -19,6 +19,19 @@ box.begin() box.rollback() box.rollback(); box.begin() box.rollback(); -- no current transaction - implicit begin box.commit(); + +-- +-- gh-3518: Add is_in_txn(). +-- +-- no active transaction - false +box.is_in_txn(); +-- active transaction - true +box.begin(); +box.is_in_txn(); +-- no active transaction - false +box.commit(); +box.is_in_txn(); + fiber = require('fiber'); function sloppy() box.begin()