Skip to content
Snippets Groups Projects
  1. Oct 26, 2023
  2. Oct 24, 2023
    • Vladimir Davydov's avatar
      log: make log.cfg{modules=...} work as box.cfg{log_modules=...} · 9c0dcd7d
      Vladimir Davydov authored
      Configuring log modules work differently with log.cfg and box.cfg:
      box.cfg{log_modules=...} overwrites the current config completely while
      log.cfg{modules=...} overwrites the currently config only for the
      specified modules. Let's fix this inconsistency by making log.cfg behave
      exactly as box.cfg.
      
      Closes #7962
      
      NO_DOC=bug fix
      
      (cherry picked from commit c13e59a5)
      9c0dcd7d
  3. Oct 20, 2023
    • Vladimir Davydov's avatar
      fiber: use alternative signal stack · a4efd470
      Vladimir Davydov authored
      We install a signal handler that prints the stack trace on SIGSEGV,
      SIGBUS, SIGILL, SIGFPE. The signal handler uses the current stack.
      This works fine for most issues, but not for stack overflow, because
      the latter makes the current stack unusable, leading to a crash in
      the signal handler. Let's install an alternative signal stack in each
      thread so that we can print the stack trace on stack overflow.
      
      Note that we skip this for ASAN because it installs its own signal
      stack. (Installing a custom stack would result in a crash.)
      
      Closes #9222
      
      NO_DOC=bug fix
      
      (cherry picked from commit cb8e903b)
      a4efd470
  4. Oct 17, 2023
    • Nikolay Shirokovskiy's avatar
      app: start init script event loop explicitly · e72eaa8a
      Nikolay Shirokovskiy authored
      The motivation is to reduce time slip on Tarantool startup before
      running init scripts. Internal ev time is set in fiber_init/ev_default_loop
      and is not get updated until starting event loop. This causes
      timeouts slip up to 0.3 in debug ASAN build in init script (see #9261).
      
      Let's run event loop right at the beginning of the run_script_f before
      executing any script. This way besides updating internal ev time we make
      an explicit place of starting script event loop. Currently it is started
      lazily when config script yields.
      
      This will fix CI for PR https://github.com/tarantool/tarantool-ee/pull/572
      for debug ASAN workflow.
      
      We can also remove start_loop condition. It does not make sense now. It
      was added in the commit 3a851430 ("Fix tarantool -e "os.exit()"
      hang") but since then we start to stop event loop after handling
      os.exit().
      
      Also this fixes #9266. The issue is we don't have an event loop to run
      on shutdown triggers if -e command line expression add such a trigger
      and then call os.exit().
      
      Follow-up #7327
      Closes #9266
      
      NO_DOC=bugfix
      
      (cherry picked from commit 1fcfb8c2)
      e72eaa8a
    • Pavel Balaev's avatar
      tarantoolctl: fix luarocks warnings issue · dc5edaa4
      Pavel Balaev authored
      This patch fixes issue:
      
      $ tarantoolctl rocks --version 1>/dev/null
      Warning: failed to load command module luarocks.cmd.help
      
      NO_DOC=bugfix
      NO_CHANGELOG=not released yet
      
      (cherry picked from commit d6ae403e)
      dc5edaa4
  5. Oct 16, 2023
    • Vladimir Davydov's avatar
      console: forward original URI to net.box when connecting over IPROTO · 6bb09cec
      Vladimir Davydov authored
      Tarantool supports two console protocols: text and binary. The binary
      protocol is implemented with IPROTO EVAL request so the console module
      reuses the net.box module to establish and maintain a binary connection.
      Currently, instead of passing the original URI specified by the user to
      net.box.connect as is, the console module parses the URI and passes the
      host and port. As a result, extra information that may be specified in
      URI parameters is lost. This prevents the user from connecting to the
      binary console using the SSL transport because to use the SSL transport
      the user must specify transport=ssl URI parameter.
      
      Needed for tarantool/tarantool-ee#567
      
      NO_DOC=no visible changes in CE
      NO_TEST=no visible changes in CE
      NO_CHANGELOG=no visible changes in CE
      
      (cherry picked from commit 33e72567)
      6bb09cec
  6. Oct 13, 2023
    • Ilya Verbin's avatar
      box: fix space:bsize() handling on space alter · 1babcf1e
      Ilya Verbin authored
      During building an index in background, some transaction can perform a dml
      request that affects space size (e.g. a replace), but the size will remain
      the same, because bsize is moved from the old space to the new space in
      memtx_space_prepare_alter() prior to space_execute_dml(). Fix this issue by
      calling space_finish_alter() in alter_space_do().
      In fact, this patch partially reverts commit 9ec3b1a4 ("alter: zap
      space_vtab::commit_alter").
      
      NO_DOC=bugfix
      
      Closes #9247
      
      (cherry picked from commit 54a42186)
      1babcf1e
  7. Oct 12, 2023
    • Oleg Chaplashkin's avatar
      test: update gh_8083, gh_8445 and gh_7434 tests · 5e147360
      Oleg Chaplashkin authored
      These tests fail after the commit [1] has been added to the Luatest:
      
      - app-luatest/gh_8083_fatal_signal_handler_test.lua
      - app-luatest/gh_8445_crash_during_crash_report_test.lua
      - box-luatest/gh_7434_yield_in_on_shutdown_trigger_test.lua
      
      The issue is due to lack of necessary directories:
      
          sh: 1: cd: can't cd to /tmp/t/001_app-luatest/server-XXX
      
      Just update tests on the simple `fio` module instead `luatest.server`.
      
      [1] tarantool/luatest@7d1358c
      
      NO_CHANGELOG=internal
      NO_DOC=internal
      
      (cherry picked from commit 23b61351)
      5e147360
    • Oleg Chaplashkin's avatar
      test: bump test-run to new version · d6f47f7d
      Oleg Chaplashkin authored
      Bump test-run to new version with the following improvements:
      
      - luatest: bump luatest to 0.5.7-48-g18859f6 [1]
      - Adapt use luatest with new --no-clean option [2]
      - luatest: bump luatest to 0.5.7-49-g9c7710e [3]
      
      [1] tarantool/test-run@aa3b34d
      [2] tarantool/test-run@8ebb3aa
      [3] tarantool/test-run@82542d3
      
      NO_DOC=test
      NO_TEST=test
      NO_CHANGELOG=test
      
      (cherry picked from commit f4bc53e8)
      d6f47f7d
  8. Oct 11, 2023
    • Nikolay Shirokovskiy's avatar
      unit: fix undefined behaviour in prbuf test · 31716bbd
      Nikolay Shirokovskiy authored
      The test start to fail in CI on osx_debug (x86_64) workflow
      
      ```
      [033]  	*** test_buffer_foreach_copy_number ***
      [033] -ok 13 - prbuf(size=256, payload=16, iterations=16) has been validated
      [033] -ok 14 - prbuf(size=256, payload=16, iterations=32) has been validated
      [033] -ok 15 - prbuf(size=256, payload=16, iterations=64) has been validated
      [033] +ok 13 - prbuf(size=256, payload=4294967312, iterations=16) has been validated
      [033] +ok 14 - prbuf(size=256, payload=4294967312, iterations=32) has been validated
      [033] +ok 15 - prbuf(size=256, payload=4294967312, iterations=64) has been validated
      [033]  	*** test_buffer_foreach_copy_number: done ***
      ```
      
      NO_CHANGELOG=test fix
      NO_DOC=test fix
      
      (cherry picked from commit 4a868563)
      31716bbd
  9. Oct 10, 2023
    • Mergen Imeev's avatar
      sql: assign collation to indexes in CREATE TABLE · b215f125
      Mergen Imeev authored
      Before this patch, if an index was created due to a column's UNIQUE
      constraint or a column's PRIMARY KEY constraint before adding a
      collation, and if the column's fieldno was not equal to the index's
      position in space->index, the collation would not be assigned to the
      index.
      
      Also, this patch fixes an assertion in debug build for the case when an
      index with more that one field was created before a collation was added.
      
      Closes #9229
      
      NO_DOC=bugfix
      
      (cherry picked from commit 65608d87)
      b215f125
    • Nikolay Shirokovskiy's avatar
      ci: add debug_asan_clang workflow · 7b67f9be
      Nikolay Shirokovskiy authored
      Similarly to release_asan_clang but to test debug build. It is also run
      only under `asan-ci` and `full-ci` labels.
      
      Fiber stack size is 2 times bigger than in the release workflow for luajit
      tests to pass. Note that this factor is a wild guess.
      
      Part of #7327
      
      NO_TEST=ci
      NO_CHANGELOG=ci
      NO_DOC=ci
      
      (cherry picked from commit 980ad3f4)
      7b67f9be
    • Vladimir Davydov's avatar
      vinyl: purge cache at exit for ASAN · 0426cc7b
      Vladimir Davydov authored
      Required to suppress the ASAN leak detector.
      
      Closes #9158
      
      NO_DOC=ASAN
      NO_TEST=ASAN
      NO_CHANGELOG=ASAN
      
      (cherry picked from commit bf62170f)
      0426cc7b
    • Nikolay Shirokovskiy's avatar
      test: fix flaky gh-2717-no-quit-sigint · 23dd75fa
      Nikolay Shirokovskiy authored
      This test is quite a flaky in debug ASAN build. Let's fix it before
      turning debug ASAN on in CI.
      
      The issue is due to heavy load popen.read may return nil with 'TimedOut:
      timed out' error. Just read again as in the other cases of this test.
      
      Part of #7327
      
      NO_CHANGELOG=internal
      NO_DOC=internal
      
      (cherry picked from commit 6f48b8d7)
      23dd75fa
    • Nikolay Shirokovskiy's avatar
      asan: temporary suppress leak reports relatead to luajit · 679e568f
      Nikolay Shirokovskiy authored
      This blocks us from turning debug ASAN CI currently. The ticket for the
      leakage is #9213.
      
      Part of #7327
      
      NO_TEST=internal
      NO_CHANGELOG=internal
      NO_DOC=internal
      
      (cherry picked from commit 37d0fdbf)
      679e568f
  10. Oct 09, 2023
    • Serge Petrenko's avatar
      box: fix force recovery for transactions with local rows · 4643a26a
      Serge Petrenko authored
      Force recovery first tries to collect all rows of a transaction into a
      single list, and only then applies those rows.
      
      The problem was that it collected rows based on the row replica_id. For
      local rows replica_id is set to 0, but actually such rows can be part
      of a transaction coming from any instance.
      
      Fix recovery of such rows
      
      Follow-up #8746
      Follow-up #7932
      
      NO_DOC=bugfix
      NO_CHANGELOG=the broken behaviour couldn't be seen due to bug #8746
      
      (cherry picked from commit 85df1c96)
      4643a26a
    • Serge Petrenko's avatar
      box: get rid of dummy NOPs after transactions ending with local rows · 9bde48a8
      Serge Petrenko authored
      In order to preserve transaction boundaries over replication, Tarantool
      writes a global NOP row after the last transaction row, if this row
      happens to be local. This is done to make sure that the is_commit flag,
      which is set only in the last transaction row, reaches the replica. This
      wouldn't happen if the last row was local.
      
      This workaround works fine for transactions completely authored by one
      instance: when both global and local rows come from operations of a
      single master.
      
      However, it's possible to append local rows to a remote master's
      transaction on a replica. For example, one can use on_replace triggers
      to write to replica's local space on each new transaction coming from
      master.
      
      In this case essentially a global NOP entry is added at the end of a
      remote master's transaction. This leads to several problems.
      
      First of all, this bumps replica's LSN, which is counter-intuitive,
      given that the replica might even be read-only. Besides, in a star
      topology this leads to master being unable to connect to the replica
      later on due to their vclocks becoming incompatible.
      
      Secondly, even if replication channel between master and replica is
      bidirectional, it creates a new row which should be replicated from
      replica to master, but at the same time is the last row of the master's
      transaction. Once master receives this row, it breaks its connection to
      replica due to transaction boundary violation (the last row of the
      transaction is received without its beginning).
      
      Adding a NOP row became extraneous since the previous commit, which made
      relay find transaction boundaries by itself.
      
      Closes #8958
      
      NO_DOC=bugfix
      
      (cherry picked from commit f5e52b2c)
      9bde48a8
    • Serge Petrenko's avatar
      relay: send rows transactionally · 8f2e2be9
      Serge Petrenko authored
      Some time ago we started writing transaction boundaries to WAL and
      respecting them in the replication stream: replicas wait for a full
      transaction receipt before applying it.
      
      However, during all these changes relay remained transaction-agnostic:
      it simply read single rows from WAL and sent them over to the receiver.
      
      This lead to a handful of ugly crutches: for example, tsn is not always
      equal to the lsn of the first global row of the transaction: if the
      first row is local, tsn is deduced from the first global row of the
      transaction.
      
      Also a dummy NOP was appended to the end of a transaction ending by a
      local row, so that is_commit flag wasn't lost by the replication.
      
      Let's make relay read a full transaction, filter out all the unnecessary
      rows, set the transaction boundaries accordingly and then send the
      transaction at once.
      
      Since in relay a single fiber sends data to the remote peer, there is no
      chance for a heartbeat to get in between rows of a single transaction:
      they're all sent at once. Hence the deletion of a corresponding guard
      `relay->is_sending_tx`.
      
      Prerequisite #8958
      
      NO_DOC=internal change
      NO_CHANGELOG=internal change
      NO_TEST=covered by existing tests
      
      (cherry picked from commit f96782b5)
      8f2e2be9
    • Serge Petrenko's avatar
      wal: fix transaction boundaries for replicated transactions · c8594fbd
      Serge Petrenko authored
      Transaction boundaries were not updated correctly for transactions in
      which local space writes were made from a replication trigger. Existing
      transaction boundaries and row flags from the master were written as is
      on the replica. Actually, the replica should recalculate transaction
      boundaries and even WAIT_SYNC/WAIT_ACK flags.
      
      Transaction boundaries should be recalculated when a replica appends a
      local write at the end of the master's transaction, and
      WAIT_SYNC/WAIT_ACK should be overwritten when nopifying synchronous
      transactions coming from an old term.
      
      The latter fix has uncovered the bug in skipping outdated synchronous
      transactions: if one replica replaces a transaction from an old term
      with NOPs and then passes that transaction to the other replica, the
      other replica raises a split brain error. It believes the NOPs are an
      async transaction form an old term. This worked before the fix, because
      the rows were written with the original WAIT_ACK = true bit. Now this
      is fixed properly: we allow fully NOP async tranasctions from the old
      term.
      
      Closes #8746
      
      NO_DOC=bugfix
      NO_CHANGELOG=covered by the next commit
      
      (cherry picked from commit 099cb2da)
      c8594fbd
  11. Oct 05, 2023
  12. Oct 03, 2023
    • Nikolay Shirokovskiy's avatar
      ci: run asan workflow on 'asan-ci' label · 17b3ecd5
      Nikolay Shirokovskiy authored
      It is convenient to have a label to run ASAN CI without running full CI.
      
      NO_DOC=ci
      NO_TEST=ci
      NO_CHANGELOG=ci
      
      (cherry picked from commit c0025ffb)
      17b3ecd5
    • Sergey Bronnikov's avatar
      ci: run performance tests · 29211065
      Sergey Bronnikov authored
      Performance tests added to perf directory are not automated and
      currently we run these tests manually from time to time. From other side
      source code that used rarely could lead to software rot [1].
      
      The patch adds CMake target "test-perf" and GitHub workflow, that runs
      these tests in CI. Workflow is based on workflow release.yml, it builds
      performance tests and runs them.
      
      1. https://en.wikipedia.org/wiki/Software_rot
      
      NO_CHANGELOG=testing
      NO_DOC=testing
      NO_TEST=testing
      
      (cherry picked from commit 5edcb712)
      29211065
    • Sergey Bronnikov's avatar
      cmake: build performance tests only with release build · 4ff80886
      Sergey Bronnikov authored
      Note that targets for running performance tests are generated only when
      CMAKE_BUILD_TYPE is equal to Release or RelWithDebug. Additionally, C++
      performance tests require Google Benchmark library. Using non-debug
      build and having installed Google Benchmark library is rare case, so I
      suppose we don't need to introduce CMake option for performance testing.
      
      NO_CHANGELOG=testing
      NO_DOC=testing
      NO_TEST=testing infrastructure
      
      (cherry picked from commit a63d291b)
      4ff80886
    • Sergey Bronnikov's avatar
      perf: add targets for running C performance tests · 4771c1b8
      Sergey Bronnikov authored
      The patch adds a targets for each C performance test in a directory
      perf/ and a separate target "test-c-perf" that runs all C performance
      tests at once.
      
      NO_CHANGELOG=testing
      NO_DOC=testing
      NO_TEST=test infrastructure
      
      (cherry picked from commit 68623381)
      4771c1b8
    • Sergey Bronnikov's avatar
      perf: add targets for running Lua performance tests · 81b624fb
      Sergey Bronnikov authored
      The patch adds a targets for each Lua performance test in a directory
      perf/lua/ (1mops_write_perftest, box_select_perftest,
      uri_escape_unescape_perftest) and a separate target "test-lua-perf" that
      runs all Lua performance tests at once.
      
      NO_CHANGELOG=testing
      NO_DOC=testing
      NO_TEST=test infrastructure
      
      (cherry picked from commit 49d9a874)
      81b624fb
    • Sergey Ostanevich's avatar
      perf: initial version of 1M operations test · 77bd900b
      Sergey Ostanevich authored
      The test can be used for regression testing. It is advisable to tune
      the machine: check the NUMA configuration, fix the pstate or similar
      CPU autotune. Although, running dozen times gives more-less stable
      result for the peak performance, that should be enough for regression
      identification.
      
      NO_DOC=adding an internal test
      NO_CHANGELOG=ditto
      NO_TEST=ditto
      
      (cherry picked from commit 10870343)
      77bd900b
    • Vladimir Davydov's avatar
      perf: add test for box select · 520d6049
      Vladimir Davydov authored
      The test runs get, select, pairs space methods with various arguments in
      a loop and prints the average method run time in nanoseconds (lower is
      better).
      
      Usage:
      
        tarantool box_select.lua
      
      Output format:
      
        <test-case> <run-time>
      
      Example:
      
        $ tarantool box_select.lua --pattern 'get|select_%d$'
        get_0 155
        get_1 240
        select_0 223
        select_1 335
        select_5 2321
      
      Options:
      
        --pattern <string>  run only tests matching the pattern; use '|'
                            to specify more than one pattern, for example,
                            'get|select'
        --read_view         use a read view (EE only)
      
      Apart from the test, this patch also adds a script that compares test
      results:
      
        $ tarantool box_select.lua --pattern get > base
        $ tarantool box_select.lua --pattern get > patched1
        $ tarantool box_select.lua --pattern get > patched2
        $ tarantool compare.lua base patched1 patched2
               base          patched1          patched2
        get_0   149       303 (+103%)       147 (-  1%)
        get_1   239       418 (+ 74%)       238 (-  0%)
      
      NO_DOC=perf test
      NO_TEST=perf test
      NO_CHANGELOG=perf test
      
      (cherry picked from commit 114d09f5)
      520d6049
    • Nikolay Shirokovskiy's avatar
      downgrade: fix test to downgrade on available version · 100527e8
      Nikolay Shirokovskiy authored
      It is not convenient that test_downgrade_from_more_recent_version breaks
      if we create tag for new version and do not add next version to the
      downgrade versions list. If the version is released we should add it to
      the list anyway but it is not matter of this test.
      
      Follow up #9182
      
      NO_DOC=internal
      NO_CHANGELOG=internal
      
      (cherry picked from commit 25b7411d)
      100527e8
  13. Oct 02, 2023
    • Nikolay Shirokovskiy's avatar
      downgrade: fail if schema version is more recent than application · ba3f81a3
      Nikolay Shirokovskiy authored
      In this case we don't have knowledge how to downgrade correctly.
      
      Close #9182
      
      NO_DOC=bugfix
      
      (cherry picked from commit cbe6a4da)
      ba3f81a3
    • Yaroslav Lobankov's avatar
      ci/cd: add Fedora 38 · c9be74ce
      Yaroslav Lobankov authored
      Add the fedora_38.yml and fedora_38_aarch64.yml workflow files to build
      Tarantool packages for x86_64 and aarch64 platforms.
      
      Closes tarantool/tarantool#9203
      
      NO_DOC=ci/cd
      NO_TEST=ci/cd
      NO_CHANGELOG=ci/cd
      c9be74ce
    • Yaroslav Lobankov's avatar
      ci/cd: add Fedora 37 · 90733a31
      Yaroslav Lobankov authored
      Add the fedora_37.yml and fedora_37_aarch64.yml workflow files to build
      Tarantool packages for x86_64 and aarch64 platforms.
      
      Closes tarantool/tarantool#9204
      
      NO_DOC=ci/cd
      NO_TEST=ci/cd
      NO_CHANGELOG=ci/cd
      90733a31
    • Yaroslav Lobankov's avatar
      ci/cd: add Debian 12 · 07b4cff2
      Yaroslav Lobankov authored
      Add the debian_12.yml and debian_12_aarch64.yml workflow files to build
      Tarantool packages for x86_64 and aarch64 platforms.
      
      Closes tarantool/tarantool#9205
      
      NO_DOC=ci/cd
      NO_TEST=ci/cd
      NO_CHANGELOG=ci/cd
      07b4cff2
  14. Sep 29, 2023
    • Serge Petrenko's avatar
      core: fix a wrong assertion on decimal comparison with double · 2800cbca
      Serge Petrenko authored
      mp_compare_decimal_any_number erroneously assumed that any float or
      double from which a decimal can't be created is either infinite or NaN.
      This is not true. Any float greater than 1e38 can't fit into our decimal
      representation. When such a float got compared to a decimal, an
      assertion fired, which was wrong. Luckily, on release build the
      comparison was correct. Only the assertion is wrong. Fix it.
      
      Closes #8472
      
      NO_DOC=bugfix
      
      (cherry picked from commit f1b23896)
      2800cbca
    • Serge Petrenko's avatar
      box: disable split-brain detection until schema is upgraded · 582d9efb
      Serge Petrenko authored
      Our split-brain detection machinery relies among other things on all
      nodes tracking the synchro queue confirmed lsn. This tracking was only
      added together with the split-brain detection. Only the synchro queue
      owner tracked the confirmed lsn before.
      
      This means that after an upgrade all the replicas remember the latest
      confirmed lsn as 0, and any PROMOTE/DEMOTE request from the queue owner
      is treated as a split brain.
      
      Let's fix this and only enable split-brain detection on the replica set
      once the schema version is updated. Thanks to the synchro queue freeze
      on restart, this can only happen after a new PROMOTE or DEMOTE entry is
      written by one of the nodes, and thus the correct confirmed lsn
      is propagated with this PROMOTE/DEMOTE to all the cluster members.
      
      Closes #8996
      
      NO_DOC=bugfix
      
      (cherry picked from commit a844bd37)
      582d9efb
  15. Sep 28, 2023
    • Sergey Kaplun's avatar
      box: introduce c_func_iproto_multireturn in compat · fa38d017
      Sergey Kaplun authored
      With this option enabled (new), the multiresults returned by a stored C
      function via iproto aren't wrapped in the additional msgpack array (old).
      
      Due to new behaviour some renames are performed:
      * `port_c_dump_msgpack()` -> `port_c_dump_msgpack_wrapped()`, since this
        is dump format with additional msgpack array encoded.
      * `port_c_dump_msgpack16()` -> `port_c_dump_msgpack()`, since this
        format is now the default new format of a msgpack dump.
      
      The behaviour of the C port msgpack dumping depends on the
      `c_func_iproto_multireturn` option:
      * uses `port_c_dump_msgpack()` if set to true (new),
      * uses `port_c_dump_msgpack_wrapped()` otherwise (old).
      
      Needed for #4799
      
      @TarantoolBot document
      Title: Document `c_func_iproto_multireturn` compat option
      
      Please create a documentation page for the new compat option:
      https://tarantool.io/compat/c_func_iproto_multireturn
      
      In the new behaviour, the multiresults returned by a stored C function
      via iproto aren't wrapped in the additional msgpack array (old).
      
      ```
      tarantool> compat.c_func_iproto_multireturn = 'old'
      ---
      ...
      
      tarantool> net_box.connect(box.cfg.listen):call('myclib.cfunc')
      ---
      - [true, -1]
      ...
      
      tarantool> compat.c_func_iproto_multireturn = 'new'
      ---
      ...
      
      tarantool> net_box.connect(box.cfg.listen):call('myclib.cfunc')
      ---
      - true
      - -1
      ...
      
      ```
      
      The new behaviour is consistent with the local call of the function
      via `box.func`:
      
      ```
      tarantool> box.func['myclib.cfunc']:call()
      ---
      - true
      - -1
      ...
      
      ```
      
      Assume you have a stored C function that returns values like the
      following:
      
      ```c
      char *position = mp_encode_bool(buffer, true);
      box_return_mp(ctx, buffer, position);
      /* ... */
      position = mp_encode_int(buffer, -1);
      box_return_mp(ctx, buffer, position);
      ```
      
      If you want to preserve the format of the returned array for your C
      functions, when the `c_func_iproto_multireturn` option is set to "new",
      you should add the additional wrapping, like the following:
      
      ```c
      char *position = mp_encode_array(buffer_with_results, n_results);
      position = mp_encode_bool(position, true);
      /* ... */
      position = mp_encode_int(position, -1);
      box_return_mp(ctx, buffer_with_results, position);
      ```
      
      The amount of `box_return_mp()` calls indicates the number of values to
      be returned.
      
      Also, you should update its usage via `box.func` if there is any.
      
      (cherry picked from commit 96ee6d9b)
      fa38d017
    • Pavel Balaev's avatar
      tarantoolctl: update luarocks to 3.9.2 · a5adaffa
      Pavel Balaev authored
      luarocks version updated to version 3.9.2
      
      Closes #6597
      
      NO_DOC=The engine has been updated, the functionality has not changed
      NO_TEST=see NO_DOC
      
      (cherry picked from commit 1dc8cd81)
      a5adaffa
    • Oleg Babin's avatar
      box: fix crashes if some box.info functions called before box.cfg · 6bcabe27
      Oleg Babin authored
      Before this patch if one called `vinyl`, `sql`, `gc` and `memory`
      functions from box.info() instance crashed. It's interesting that
      `replication_anon` functions worked ok.
      This patch fixes that crashes.
      
      Closes #9173
      
      NO_DOC=bugfix
      
      (cherry picked from commit d85556c9)
      6bcabe27
  16. Sep 27, 2023
    • Igor Munkin's avatar
      luajit: bump new version · 2757a847
      Igor Munkin authored
      * test: fix fix-mips64-spare-side-exit-patching
      * test: fix `fillmcode()` generator helper
      * MIPS: Fix "bad FP FLOAD" assertion.
      * Handle table unsinking in the presence of IRFL_TAB_NOMM.
      * Fix handling of instable types in TNEW/TDUP load forwarding.
      * Fix predict_next() in parser (again).
      * Always exit after machine code page protection change fails.
      
      Part of #8825
      
      NO_DOC=LuaJIT submodule bump
      NO_TEST=LuaJIT submodule bump
      2757a847
  17. Sep 22, 2023
  18. Sep 21, 2023
    • Vladimir Davydov's avatar
      test: fix flaky replication/gh_9049_schema_downgrade test · d72a50bc
      Vladimir Davydov authored
      When a replica is restarted, it doesn't immediately switch to the
      'follow' state. First it needs to sync. Let's wait for the 'follow'
      state a bit to fix the following failure:
      
      NO_WRAP
      [039] replication-luatest/gh_9049_schema_downgrade_t>                 [ fail ]
      [039] Test failed! Output from reject file /tmp/t/rejects/replication-luatest/gh_9049_schema_downgrade.reject:
      [039] Tarantool version is 3.0.0-alpha3-18-g6892907bad9d
      [039] TAP version 13
      [039] 1..1
      [039] # Started on Thu Sep 21 13:55:09 2023
      [039] # Starting group: replication-luatest.gh_9049_schema_downgrade
      [039] not ok 1  replication-luatest.gh_9049_schema_downgrade.test_schema_downgrade
      [039] #   ...st/replication-luatest/gh_9049_schema_downgrade_test.lua:33: expected: "follow"
      [039] #   actual: "sync"
      [039] #   stack traceback:
      [039] #         ...st/replication-luatest/gh_9049_schema_downgrade_test.lua:31: in function 'replication-luatest.gh_9049_schema_downgrade.test_schema_downgrade'
      [039] #         ...
      [039] #         [C]: in function 'xpcall'
      [039] #   artifacts:
      [039] #   replica -> /tmp/t/039_replication-luatest/artifacts/replica-AgoXGWUXxvnc
      [039] #   master -> /tmp/t/039_replication-luatest/artifacts/master-ZUTtyXyAX9YF
      [039] # Ran 1 tests in 1.768 seconds, 0 succeeded, 1 failed
      NO_WRAP
      
      Fixes commit 71de4b2c ("box: fix schema downgrade replication").
      
      NO_DOC=test fix
      NO_CHANGELOG=test fix
      
      (cherry picked from commit c903b61b)
      d72a50bc
Loading