[tarantool-patches] Re: [PATCH] box: add a method to check if transaction is open

roman.habibov1 at yandex.ru roman.habibov1 at yandex.ru
Tue Sep 11 03:23:31 MSK 2018



10.09.2018, 09:21, "Kirill Shcherbatov" <kshcherbatov at tarantool.org>:
> Hi! Thank you for a patch.
>>  +bool
>>  +box_is_in_txn()
>>  +{
>>  + return box_txn();
>>  +}
>
> 1. Your function box_is_in_txn is a copy of box_txn routine. There is not reason to introduce it.
> Moreover, box_txn is already exported as public API.
Indeed. Removed.

>>  +- - true
>>  +...
>>  +-- close transaction
>>  +box.commit();
>
> 2. Check box.is_in_txn(); here please.
Redone.

>>  +-- gh-3518 no active transaction - false
>
> 3. Use tarantool codestyle for comments; at first, you need ticket description
> --
> -- gh-3518: Check if transaction opened.
> --
>>  +box.is_in_txn();
>>  +-- start transaction
Done.

> 4. With a capital letter and with a dot at the end, please. Same for other comments.
Sorry.

commit 14fa90d195dc84df21a41c3172d2f0a2e0ca68e2
Author: Roman Khabibov <roman.habibov1 at yandex.ru>
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..85e87ef 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..25bdae5 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()
diff --git a/test/engine/savepoint.result b/test/engine/savepoint.result
index a62a2e1..00d281b 100644
--- a/test/engine/savepoint.result
+++ b/test/engine/savepoint.result
@@ -14,7 +14,7 @@ s1 = box.savepoint()
 ...
 box.rollback_to_savepoint(s1)
 ---
-- error: 'builtin/box/schema.lua:340: Usage: box.rollback_to_savepoint(savepoint)'
+- error: 'builtin/box/schema.lua:346: Usage: box.rollback_to_savepoint(savepoint)'
 ...
 box.begin() s1 = box.savepoint()
 ---
@@ -323,27 +323,27 @@ test_run:cmd("setopt delimiter ''");
 ok1, errmsg1
 ---
 - false
-- 'builtin/box/schema.lua:340: Usage: box.rollback_to_savepoint(savepoint)'
+- 'builtin/box/schema.lua:346: Usage: box.rollback_to_savepoint(savepoint)'
 ...
 ok2, errmsg2
 ---
 - false
-- 'builtin/box/schema.lua:340: Usage: box.rollback_to_savepoint(savepoint)'
+- 'builtin/box/schema.lua:346: Usage: box.rollback_to_savepoint(savepoint)'
 ...
 ok3, errmsg3
 ---
 - false
-- 'builtin/box/schema.lua:340: Usage: box.rollback_to_savepoint(savepoint)'
+- 'builtin/box/schema.lua:346: Usage: box.rollback_to_savepoint(savepoint)'
 ...
 ok4, errmsg4
 ---
 - false
-- 'builtin/box/schema.lua:340: Usage: box.rollback_to_savepoint(savepoint)'
+- 'builtin/box/schema.lua:346: Usage: box.rollback_to_savepoint(savepoint)'
 ...
 ok5, errmsg5
 ---
 - false
-- 'builtin/box/schema.lua:340: Usage: box.rollback_to_savepoint(savepoint)'
+- 'builtin/box/schema.lua:346: Usage: box.rollback_to_savepoint(savepoint)'
 ...
 s:select{}
 ---




More information about the Tarantool-patches mailing list