Skip to content
Snippets Groups Projects
  1. Jun 21, 2019
    • Mergen Imeev's avatar
      lua: internal function to parse space format · bb85acfd
      Mergen Imeev authored
      This patch defines a new function that parses space format and
      returns it to Lua as cdata. For this cdata destructor is included.
      
      Needed for #2978
      bb85acfd
    • Mergen Imeev's avatar
      netbox: store method_encoder args in request · 665fc3a1
      Mergen Imeev authored
      This patch changes the way arguments are passed to functions in
      the array method_encoder, and saves these arguments in REQUEST.
      This is necessary to establish a connection between netbox space
      objects and the tuples obtained through the netbox
      
      Needed for #2978
      665fc3a1
  2. Jun 20, 2019
  3. Jun 19, 2019
  4. Jun 18, 2019
    • Alexander Turenko's avatar
      lua: escape trigraphs in bundled lua sources · 177a1713
      Alexander Turenko authored
      Built-in modules are bundled into tarantool in the following way. A lua
      file from src/lua or src/box/lua is stored as a string literal in a C
      file, then built and linked into tarantool. During startup tarantool
      calls luaL_loadbuffer() on this string.
      
      When a Lua source is converted to a C literal, proper escaping is
      performed. However there is one case, which was not covered: trigraphs.
      The patch adds escaping of question mark symbols to avoid matching ??X
      sequences as trigraphs by C preprocessor.
      
      The most simple way to check that it works is to apply the following
      patch:
      
       | diff --git a/src/lua/string.lua b/src/lua/string.lua
       | index 6e12c59ae..2da2dbf4d 100644
       | --- a/src/lua/string.lua
       | +++ b/src/lua/string.lua
       | @@ -425,3 +425,6 @@ string.fromhex    = string_fromhex
       |  string.strip      = string_strip
       |  string.lstrip      = string_lstrip
       |  string.rstrip      = string_rstrip
       | +string.foo = function()
       | +    return '??('
       | +end
      
      And call the function like so:
      
       | ./src/tarantool -e 'print(string.foo()) os.exit()'
      
      If it printfs `??(`, then everything is okay. If it prints `[`, then
      `??(` was preprocessed as the trigraph.
      
      We hit this problem when tried to bundle luarocks-3: it contains
      "^(.-)(%??)$" regexp, where `??)` was interpreted as `]`. Debug build or
      a build with -DENABLE_WERROR reports an error in the case, but usual
      RelWithDebInfo build passes (with -Wtrigraphs warnings) and can show
      this unexpected behaviour.
      
      Fixes #4291.
      177a1713
    • Vladimir Davydov's avatar
      vinyl: fix assertion failure in vy_tx_handle_deferred_delete · 41219774
      Vladimir Davydov authored
      vy_tx_handle_deferred_delete() expects (righteously) that in case a
      deferred DELETE overwrites a statement in a secondary index write set
      and the overwritten statement wasn't skipped on commit (i.e. doesn't
      have txv->is_overwritten flag set), both the old and the new statement
      must be REPLACEs (see the comment to the corresponding assertions for
      more details).
      
      The problem is we don't set is_overwritten flag in case a statement
      doesn't have any effect (txv->is_nop is set), even if it was, in fact,
      overwritten in the primary index write set (see vy_tx_prepare). As
      a result, we get an assertion failure when we delete such statement
      in the same transaction, e.g.
      
        s = box.schema.space.create('test', {engine = 'vinyl'})
        s:create_index('pk', {parts = {1, 'unsigned'}})
        s:create_index('sk', {parts = {2, 'unsigned'}})
        s:replace{1, 1, 1}
        box.begin()
        s:update(1, {{'+', 3, 1}}) -- adds no-op REPLACE to sk write set
        s:delete(1)                -- produces deferred DELETE for sk
        box.commit()
      
      results in
      
        vy_tx_handle_deferred_delete: Assertion `vy_stmt_type(stmt) == IPROTO_REPLACE' failed.
      
      Fix this by making sure we set is_overwritten for all overwritten
      statements in a secondary index write set.
      
      Closes #4294
      41219774
  5. Jun 17, 2019
    • Serge Petrenko's avatar
      test: fix net.box occasional failure. · 07a84a97
      Serge Petrenko authored
      The test used to fail occasionally with a following error:
      
      ```
      [001] box/net.box.test.lua                                            [ fail ]
      [001]
      [001] Test failed! Result content mismatch:
      [001] —- box/net.box.result  Thu Jun 13 06:16:34 2019
      [001] +++ box/net.box.reject  Fri Jun 14 04:50:55 2019
      [001] @@ -3774,23 +3774,23 @@
      [001]  ...
      [001]  test_run:grep_log('default', 'Got a corrupted row.*')
      [001]  —-
      [001] — 'Got a corrupted row:'
      [001] +- null
      [001]  ...
      [001]  test_run:grep_log('default', '00000000:.*')
      [001]  —-
      [001] — '00000000: A3 02 D6 5A E4 D9 E7 68 A1 53 8D 53 60 5F 20 3F '
      [001] +- null
      [001]  ...
      [001]  test_run:grep_log('default', '00000010:.*')
      [001]  —-
      [001] — '00000010: D8 E2 D6 E2 A3 02 D6 5A E4 D9 E7 68 A1 53 8D 53 '
      [001] +- null
      [001]  ...
      [001]  test_run:grep_log('default', '00000020:.*')
      [001]  —-
      [001] — '00000020: 60 5F 20 3F D8 E2 D6 E2 A3 02 D6 5A E4 D9 E7 68 '
      [001] +- null
      [001]  ...
      [001]  test_run:grep_log('default', '00000030:.*')
      [001]  —-
      [001] — '00000030: A1 53 8D 53 60 5F 20 3F D8 E2 D6 E2 '
      [001] +- null
      [001]  ...
      [001]  test_run:grep_log('default', '00000040:.*')
      [001]  —-
      ```
      
      This happened because we used `grep_log` right after `socket:write`,
      which should cause the expected log messages. Change to `wait_log`.
      
      Follow-up #4273
      07a84a97
  6. Jun 16, 2019
    • Daniil Kotelnikov's avatar
      rocks: add new useful commands · d3b2bcb6
      Daniil Kotelnikov authored
      * Added a new command `test` that is new feature of luarocks 3.x.
      * Added a new command `make_manifest` that is command from
        luarocks-admin.
      * Added a new command `help` for getting help of internal luarocks
        commands.
      d3b2bcb6
Loading