Skip to content
Snippets Groups Projects
  1. Jan 12, 2023
    • Vladimir Davydov's avatar
      txn: drop TXN_CONFLICTED transaction status · 815455c7
      Vladimir Davydov authored
      The status isn't used anywhere - to set the proper error when an aborted
      transaction is attempted to be used, we check out transaction flags
      (TXN_IS_CONFLICTED, TXN_IS_ABORTED_BY_YIELD, TXN_IS_ABORTED_BY_TIMEOUT).
      Let's use TXN_ABORTED instead.
      
      While we are at it, also set the transaction status to TXN_ABORTED when
      a transaction is aborted by yield or timeout and use it instead of
      checking flags where appropriate, since it's more convenient.
      
      Follow-up #8123
      
      NO_DOC=code cleanup
      NO_TEST=code cleanup
      NO_CHANGELOG=code cleanup
      
      (cherry picked from commit 16f8969f)
      815455c7
    • Vladimir Davydov's avatar
      txn: fail ro stmt if transaction is aborted · 23f4e6f6
      Vladimir Davydov authored
      We fail write statements if the current transaction was aborted by yield
      or timeout. We should fail read-only statements in this case, as well.
      Note, we already fail read-only statements if the current transaction
      was aborted by conflict.
      
      Closes #8123
      
      NO_DOC=bug fix
      
      (cherry picked from commit 5f1500f4)
      23f4e6f6
    • Alexander Turenko's avatar
      build: fix build fail on clang 15 · 26721cbb
      Alexander Turenko authored
      Fixed pthread-related CMake checks. The checks code is built with
      `-pedantic-errors` and it leads to errors of the following kind on
      clang 15:
      
      ```
      <...>/CMakeFiles/CMakeScratch/TryCompile-78KaOK/src.c:4:17: error: a
          function declaration without a prototype is deprecated in all
          versions of C [-Werror,-Wstrict-prototypes]
              int main() { pthread_setname_np(pthread_self(), ""); }
                      ^
                       void
      ```
      
      Fixed a warning in the SQL code (it's an error in Debug build):
      
      ```
      <...>/src/box/sql/vdbeaux.c:170:13: error: variable 'n' set but not used
          [-Werror,-Wunused-but-set-variable]
              static int n = 0;
      ```
      
      Fixed several warnings from lemon.c of the following kind:
      
      ```
      <...>/extra/lemon.c:173:6: warning: a function declaration without a
          prototype is deprecated in all versions of C and is treated as a
          zero-parameter prototype in C2x, conflicting with a subsequent
          definition [-Wdeprecated-non-prototype]
      void FindRulePrecedences();
           ^
      <...>/extra/lemon.c:766:6: note: conflicting prototype is here
      void FindRulePrecedences(struct lemon *xp)
      ```
      
      See also https://github.com/tarantool/small/issues/57
      
      Fixes #8110
      
      NO_DOC=build fix
      NO_TEST=build fix
      
      (cherry picked from commit 1c6b6f85)
      Unverified
      26721cbb
    • Alexander Turenko's avatar
      small: eliminate unused variable warn on clang 15 · 17a5df4b
      Alexander Turenko authored
      Bump the small submodule with the following commit:
      
      * https://github.com/tarantool/small/commit/02d3c23fd0d1e1743618850dc11378566b3804b1
        - It eliminates a CMake warning.
      * https://github.com/tarantool/small/commit/c1ac3eef79a7394fb52442a77b958b66d82b8f0b
        - It adds on alloc/on truncate callbacks and poisoning of freed data.
          Tarantool 2.10 doesn't set the callbacks, so no behavior should
          change.
      * https://github.com/tarantool/small/commit/5c3a0880ae4659cb662085563ff0b9eee40565fe
        - It eliminates the warning on clang 15.
      
      See https://github.com/tarantool/small/issues/57
      Part of #8110
      
      It is a backport of PR #8142 for 2.10.
      
      NO_DOC=build fix
      NO_TEST=build fix
      NO_CHANGELOG=to be added in a commit that fixes #8110
      17a5df4b
  2. Jan 11, 2023
    • Igor Munkin's avatar
      luajit: bump new version · 8e58452f
      Igor Munkin authored
      * cmake: introduce CheckUnwindTables helper
      * x64/LJ_GC64: Fix type-check-only variant of SLOAD.
      * LJ_GC64: Fix ir_khash for non-string GCobj.
      * gdb: support full-range 64-bit lightuserdata
      
      Relates to #6481
      Part of #7230
      
      NO_DOC=LuaJIT submodule bump
      NO_TEST=LuaJIT submodule bump
      8e58452f
  3. Jan 10, 2023
  4. Dec 29, 2022
    • Yaroslav Lobankov's avatar
      ci: fix pull_request trigger for coverage workflow · 630c79a0
      Yaroslav Lobankov authored
      The coverage workflow is a part of the default testing, so there is no
      sense to run this workflow when the 'full-ci' label is set. Moreover, it
      cancelled the run of the default testing and started the run of the full
      testing due to workflow `concurrency`.
      
      By default, a workflow only runs when a `pull_request` event's activity
      type is `opened`, `synchronize`, or `reopened`. That's why there is no
      sense in the following construction:
      
        pull_request:
          types: [ opened, reopened, synchronize ]
      
      So just removed the line related to event's activity type.
      
      NO_DOC=ci
      NO_TEST=ci
      NO_CHANGELOG=ci
      
      (cherry picked from commit 182034dc)
      Unverified
      630c79a0
    • viacheslav.kirichenko's avatar
      ci: add integration testing for ddl and crud · da461cd3
      viacheslav.kirichenko authored
      Add workflow for integration testing of ddl
      and crud modules.
      
      Resolves tarantool/tarantool#6619
      Resolves tarantool/tarantool#6620
      
      NO_DOC=ci
      NO_TEST=ci
      NO_CHANGELOG=ci
      
      (cherry picked from commit 53f41130)
      da461cd3
  5. Dec 25, 2022
    • Alexander Turenko's avatar
      test: stabilize jit.dump() smoke test · d4f6e796
      Alexander Turenko authored
      
      A jiggle in tarantool's initialization code can lead to trace numbers
      above 9. We can either:
      
      * accept trace numbers above 9 in the test
      * or drop traces from the initialization code in the test and assume
        that the new trace will have number 1.
      
      Igor Munkin suggested to stick with the second approach to avoid
      dependency on the initialization code.
      
      NO_DOC=test fixup, no user visible changes
      NO_CHANGELOG=see NO_DOC
      
      Co-authored-by: default avatarIgor Munkin <imun@tarantool.org>
      (cherry picked from commit 92794ddc)
      Unverified
      d4f6e796
  6. Dec 23, 2022
    • Ilya Verbin's avatar
      core: unblock fatal (crashing) signals in all threads · 1c176245
      Ilya Verbin authored
      Currently all non-main threads have all the signals blocked, however
      according to `man pthread_sigmask':
      
      > If SIGBUS, SIGFPE, SIGILL, or SIGSEGV are generated while they
      > are blocked, the result is undefined, unless the signal was
      > generated by kill(2), sigqueue(3), or raise(3).
      
      On macOS they are actually blocked, causing the faulting instruction
      to loop indefinitely. While on Linux they are not blocked, however the
      signal handler registered by sigaction is not executed. Don't block them.
      
      Closes #8023
      Closes #8083
      
      NO_DOC=bugfix
      
      (cherry picked from commit 706bfea4)
      1c176245
    • Ilya Verbin's avatar
      crash: handle all unblockable signals · 6290b041
      Ilya Verbin authored
      There are 4 fatal signals that cannot be blocked by sigmask if they
      are caused by the CPU exception (rather than kill, sigqueue or raise):
      SIGILL, SIGBUS, SIGFPE, SIGSEGV. Currently the crash module handles
      only SIGSEGV and SIGFPE. This patch adds handlers for SIGBUS and SIGILL.
      SIGBUS is usually raised by macOS on access to the unmapped memory, and
      SIGILL is possible, for example, while running AVX version of memcpy on
      a CPU without AVX support.
      
      Faulting address siginfo->si_addr is valid for all these signals, so
      print it unconditionally.
      
      Part of #8023
      Part of #8083
      
      NO_DOC=See next commit
      NO_CHANGELOG=See next commit
      
      (cherry picked from commit 6c3ce7a6)
      6290b041
    • Andrey Saranchin's avatar
      core: drop constraints in two phases · 535decdf
      Andrey Saranchin authored
      Currently, core constraints are dropped on commit. That is why
      it is impossible to drop constraint and drop objects it references to
      at the same transaction. Let's drop constraints in two steps - detach
      them when DDL occurs, then reattach on rollback or delete on commit.
      
      Closes #7339
      
      NO_DOC=bugfix
      
      (cherry picked from commit f72efbc2)
      535decdf
  7. Dec 21, 2022
    • Ilya Verbin's avatar
      box: do not close xlog file descriptors in the atfork handler · ea4c2567
      Ilya Verbin authored
      Use O_CLOEXEC flag instead.
      
      If Tarantool is forked before executing box.cfg{}, e.g. using io.popen(),
      the child process could start with stdin linked to /dev/urandom.
      This happens because wal_writer_singleton and vy_log_writer are not yet
      initialized, i.e. `fd' fields are 0, then atfork child handler wal_atfork()
      is called. It checks that xlog is opened (the check succeeded as 0 != -1)
      and closes its fd 0, in fact closing stdin (twice). Next, Tarantool opens
      the file /dev/urandom during initialization, and it receives the lowest
      unused file descriptor, which is 0. Then luaL_loadfile() loads stdin as a
      Lua chunk, in effect reading random numbers.
      
      This happens on glibc 2.28 and older, as newer versions do not invoke
      atfork handlers during io.popen():
      https://sourceware.org/bugzilla/show_bug.cgi?id=17490
      
      Closes #7886
      
      NO_DOC=bugfix
      NO_TEST=Tested by test/app-luatest/gh_5747_crash_multiple_args_test.lua
      
      (cherry picked from commit ec1af129)
      ea4c2567
    • Mergen Imeev's avatar
      sql: correctly calculate argument types · 3f229cff
      Mergen Imeev authored
      This patch fixes an issue where collation could change the computed
      type of a built-in function argument when choosing a function
      implementation.
      
      Closes #7992
      
      NO_DOC=bugfix
      
      (cherry picked from commit 1c80ce2d)
      3f229cff
    • Nick Volynkin's avatar
      ci: test stable branches with SDK · d714033a
      Nick Volynkin authored
      Workflow submodule_update now brings latest commits in stable branches
      further to tarantool/sdk, where integration tests can run with other
      enterprise products and modules.
      
      In tarantool/tarantool-ee a pull request is still opened, so the
      maintainers can merge it at any time.
      
      In tarantool/sdk the test branches are named in the following pattern:
      `TarantoolBot/test-ce-master`
      `TarantoolBot/test-ce-2.10`
      and so on. This pattern can be easily distinguished by workflows,
      which run integration tests and alert developers on failures.
      It is also consistent with branches with the same purpose of integration
      testing, that are created by the sdk_test workflow:
      `TarantoolBot/test-ce-{feature_branch_name}`
      
      NO_DOC=CI
      NO_TEST=CI
      NO_CHANGELOG=CI
      
      Resolves tarantool/sdk#355
      
      (cherry picked from commit 60a2ee11)
      d714033a
  8. Dec 20, 2022
    • Ilya Verbin's avatar
      test: do jit.flush() after jit.off() on arm64 · 9a97707b
      Ilya Verbin authored
      JIT has been disabled for these 3 tests on arm64 to avoid weird fails, but
      they are still flaky in CI. Perhaps the JIT traces from other tests affect
      them. Let's try to do jit.flush() together with jit.off().
      
      Also disable JIT for pagination_netbox_test.lua, which suffers from the
      same problem as pagination_test.lua.
      
      Part of #6599
      Part of #7739
      Part of #8011
      
      NO_DOC=testing stuff
      NO_CHANGELOG=testing stuff
      
      (cherry picked from commit 2695f66a)
      9a97707b
  9. Dec 16, 2022
    • Yaroslav Lobankov's avatar
      test: use luatest modules instead of internal ones · 926acb84
      Yaroslav Lobankov authored
      Some internal modules have been recently copied to luatest repo [1] and
      now they can be safely removed, and the corresponding functionality from
      luatest can be used instead.
      
      Affected modules:
      
      - test/luatest_helpers/cluster.lua
      
      [1] tarantool/luatest#271
      
      Closes tarantool/luatest#237
      Closes tarantool/luatest#269
      
      NO_DOC=testing stuff
      NO_TEST=testing stuff
      NO_CHANGELOG=testing stuff
      
      (cherry picked from commit 62ffc72c)
      926acb84
    • Yaroslav Lobankov's avatar
      test: bump test-run to version w/ updated luatest · b4cda6bd
      Yaroslav Lobankov authored
      Bump test-run to new version with the following improvements:
      
      - Bump luatest to 0.5.7-20-g48c406a [1]
      
      [1] tarantool/test-run#366
      
      Part of tarantool/luatest#237
      
      NO_DOC=testing stuff
      NO_TEST=testing stuff
      NO_CHANGELOG=testing stuff
      
      (cherry picked from commit 903211df)
      b4cda6bd
    • Maxim Kokryashkin's avatar
      lua: use cur_L in cord_on_yield · 9f4d315c
      Maxim Kokryashkin authored
      Before the patch, fiber->storage.lua.stack is used for
      `panic` calls. However, some fibers don't have any Lua
      state saved in their storage (for example, space
      triggers).
      
      After the patch, the Lua state pointed by `cur_L` is
      used to make those calls, as it is always present.
      
      Closes #6647
      NO_DOC=bugfix
      
      (cherry picked from commit dfe79b9a)
      Unverified
      9f4d315c
  10. Dec 14, 2022
    • Vladimir Davydov's avatar
      vinyl: fix potential null-ptr dereference in vy_read_view_merge · 2a4f3e80
      Vladimir Davydov authored
      The 'copy' ptr is checked for NULL after dereferencing. Found by PVS.
      
      https://jira.vk.team/browse/TNT-698
      
      It can hardly result in a null-ptr dereference, because vy_stmt_dup()
      uses malloc(), which doesn't normally fail (instead, the OOM killer just
      kills the process if there's a severe shortage of memory, see #3534).
      Still, PVS rightfully complains about it so let's fix it.
      
      Fixes commit 902d212b ("vinyl: zap vy_write_iterator->format")
      
      NO_DOC=bug fix
      NO_TEST=unreproducible
      NO_CHANGELOG=unreproducible
      
      (cherry picked from commit de175b97)
      2a4f3e80
  11. Dec 13, 2022
    • Nick Volynkin's avatar
      ci: use actions/checkout@v3.1.0 with FreeBSD · 2631be0e
      Nick Volynkin authored
      ChristopherHX/github-act-runner@0.4.1, which we use on FreeBSD,
      is incompatible with newest actions/checkout@v3.2.0, aliased to @v3.
      Until this is resolved, FreeBSD workflows will use fixed version
      actions/checkout@v3.1.0.
      
      actions/checkout@v3.2.0 fails with an unclear error:
      
      > :star:  Run actions/checkout@v3
      >   :cloud:  git clone 'https://github.com/actions/checkout' # ref=v3
      > Error: Unable to resolve v3: unsupported object type
      > Error: Unable to resolve v3: unsupported object type
      > Error:   :x:  Failure - actions/checkout@v3
      > Error: unsupported object type
      
      NO_DOC=CI
      NO_TEST=CI
      NO_CHANGELOG=CI
      
      (cherry picked from commit a79d32b1)
      2631be0e
  12. Dec 12, 2022
  13. Dec 08, 2022
  14. Dec 07, 2022
    • Vladimir Davydov's avatar
      box: don't stop parsing authentication request if user doesn't exist · 995d2a00
      Vladimir Davydov authored
      Currently, we stop without checking the authentication request body if
      the specified user doesn't exist. As a result, one can check if a user
      exists by sending a malformed authentication request: for an existing
      user, the server will reply with ER_INVALID_MSGPACK error while if the
      user doesn't exist, the error will be set to ER_CREDS_MISMATCH. To fix
      this, let's parse the authentication request body even if the user
      doesn't exist.
      
      Closes https://github.com/tarantool/security/issues/21
      
      NO_DOC=bug fix
      
      (cherry picked from commit 42badb87)
      995d2a00
    • Vladimir Davydov's avatar
      box: run box.session.on_auth triggers if the user doesn't exist · e1a79d79
      Vladimir Davydov authored
      The triggers are supposed to run on any authentication attempt,
      successful or not. Without it, the admin may not notice a malefactor
      enumerating user names.
      
      Closes #8017
      
      NO_DOC=bug fix
      
      (cherry picked from commit 8a2f1653)
      e1a79d79
    • Vladimir Davydov's avatar
      box: drop redundant guest password checks from authenticate · 586b1ffb
      Vladimir Davydov authored
      The guest can't have a non-empty password - it's explicitly prevented by
      the _user trigger callback:
      
      https://github.com/tarantool/tarantool/blob/2ed06651c317f2d46631b0d55e4b88f2c8a6c0a0/src/box/alter.cc#L2930-L2936
      
      So there's no need to check the guest user password in authenticate.
      
      NO_DOC=code cleanup
      NO_TEST=code cleanup
      NO_CHANGELOG=code cleanup
      
      (cherry picked from commit 26f69561)
      586b1ffb
    • Ilya Verbin's avatar
      log: improve logging of tables · 9e986ee9
      Ilya Verbin authored
      1. Fixed modification of a variable passed to the logging function
         (both log formats)
      
         tarantool> a = {foo = 'bar', file = 'c://autorun.bat'}
         tarantool> log.info(a)
         [...]
         tarantool> a
         (before) - foo: bar
          (after) - foo: bar
                    file: c://autorun.bat
      
      2. Fixed the drop of fields with reserved internal names (plain log format)
      
         tarantool> log.info({foo = 'bar', pid = 666})
         (before) {"foo":"bar"}
          (after) {"foo":"bar","pid":666}
      
      3. Now if 'message' field is absent, it is set to the first field of the
         table (JSON log format)
      
         tarantool> log.info({'Hello, world', key = 'value'})
         (before) {[...], "1":"Hello, world", "key":"value", [...]}
          (after) {[...], "message":"Hello, world", "key":"value", [...]}
      
      4. Fixed assertion on a table without string keys (JSON log format)
      
         If a Lua table, passed to say(), contains only integer indexes,
         json.encode() will encode it as an array rather than a map, thereafter
         say_format_json() will produce improperly formatted JSON string, or get
         assertion failure. Fix it by encoding all kinds of tables as maps.
      
      Closes #3853
      Closes #7955
      
      NO_DOC=Mostly bug fixes, the format of the JSON log is not documented.
      
      (cherry picked from commit 85ef1118)
      9e986ee9
    • Ilya Verbin's avatar
      test: fix flaky gh_6539_log_user_space_empty_or_nil_select_test · 81c021c3
      Ilya Verbin authored
      Turn LuaJIT off for this test on AArch64 in the scope of the issue [1].
      
      Also increase grep_log_bytes. Currently the message is 235 byte long,
      which is pretty close to 256. If one more item is added to the traceback,
      the test will fail.
      
      ```
      C> Potentially long select from space 'test_memtx' (512)
       stack traceback:
              builtin/box/schema.lua:2528: in function 'check_select_safety'
              builtin/box/schema.lua:2545: in function 'select'
              eval:1: in main chunk
              [C]: at 0x556e8ffd5c
      ```
      
      [1] Related to #8011
      Closes tarantool/tarantool-qa#264
      
      NO_DOC=test fix
      NO_CHANGELOG=test fix
      
      (cherry picked from commit 84306671)
      81c021c3
    • Igor Munkin's avatar
      luajit: bump new version · 38717877
      Igor Munkin authored
      * Fix narrowing of unary minus.
      * Don't compile math.modf() anymore.
      * OSX/ARM64: Fix external unwinding.
      * Fix build with busybox grep.
      * BSD: Fix build with BSD grep.
      * OSX/ARM64: Disable unwind info.
      * ARM64: Reorder interpreter stack frame and fix unwinding.
      * OSX/ARM64: Disable external unwinding for now.
      * OSX: Fix build by hardcoding external frame unwinding.
      * Cleanup and enable external unwinding for more platforms.
      * test: remove TAP side effects in getmetrics tests
      * test: relax JIT setup in misc.getmetrics test
      * test: relax JIT setup in lj-430-maxirconst test
      * GC64: enable sysprof support
      
      Closes #6096
      Closes #6976
      Closes #7919
      Relates to #781
      Relates to #7762
      Part of #7230
      
      NO_DOC=LuaJIT submodule bump
      NO_TEST=LuaJIT submodule bump
      38717877
  15. Dec 06, 2022
  16. Dec 05, 2022
    • Yaroslav Lobankov's avatar
      test: use luatest modules instead of internal ones · c7b4118f
      Yaroslav Lobankov authored
      Some internal modules have been recently copied to luatest repo [1,2]
      and now they can be safely removed, and the corresponding functionality
      from luatest can be used instead.
      
      Affected modules:
      
      - test/luatest_helpers/server.lua
      
      [1] tarantool/luatest#258
      [2] tarantool/luatest#266
      
      Closes tarantool/luatest#239
      
      NO_DOC=testing stuff
      NO_TEST=testing stuff
      NO_CHANGELOG=testing stuff
      
      (cherry picked from commit 21fc0770)
      c7b4118f
    • Yaroslav Lobankov's avatar
      test: bump test-run to version w/ updated luatest · 52b8e01a
      Yaroslav Lobankov authored
      Bump test-run to new version with the following improvements:
      
      - Bump luatest to 0.5.7-17-g1387aa8 [1]
      
      [1] tarantool/test-run#360
      
      Part of tarantool/luatest#239
      
      NO_DOC=testing stuff
      NO_TEST=testing stuff
      NO_CHANGELOG=testing stuff
      
      (cherry picked from commit 9687656f)
      52b8e01a
    • Vladislav Shpilevoy's avatar
      test: factor wal play until "synchro busy" out · eb672b4a
      Vladislav Shpilevoy authored
      The function play_wal_until_synchro_queue_is_busy() was used in a
      few tests copy-pasted since it was considered to be too specific
      for a few rare tests. But apparently it is going to be used again
      in a new test in a future commit.
      
      The patch makes this function a method of server object to reuse
      it properly.
      
      Needed for #7253
      
      NO_DOC=refactoring
      NO_CHANGELOG=refactoring
      
      (cherry picked from commit 135fd0ff)
      eb672b4a
    • Ilya Verbin's avatar
      cmake: fix wrong CPU architecture reported on M1/M2 Macs · 106b856a
      Ilya Verbin authored
      This patch removes an old CMake kludge, which sets CMAKE_SYSTEM_PROCESSOR
      to "x86_64" on all 64-bit architectures, even on ARM (on Darwin).
      
      Closes #7495
      
      NO_DOC=bugfix
      
      (cherry picked from commit d76be7ef)
      106b856a
  17. Dec 02, 2022
    • Ilya Verbin's avatar
      backtrace: update sp before saving registers to a stack frame · ee1a94e3
      Ilya Verbin authored
      backtrace_collect() is suffering from the same issue as coro_transfer(),
      see commit 215630e6 ("coro: update sp before saving registers to a
      stack frame").
      
      It stores x19-x30 and d8-d15 registers to the stack, but only after that
      it updates the stack pointer. If a SIGALRM signal is delivered during
      the execution of backtrace_collect, the signal handler will use the
      stack starting from current sp, thus corrupting the saved registers.
      
      Fix this by updating the stack pointer at the beginning of
      backtrace_collect. The constraint of the input operand `bt` is changed
      from "m" to "r" to force `bt` always be passed to the inline assembly
      via the register. Passing on stack will not work after this fix.
      
      Closes #7985
      
      NO_DOC=bugfix
      NO_TEST=Hard to create a stable reproducer
      
      (cherry picked from commit 9adc4aa7)
      ee1a94e3
Loading