Skip to content
Snippets Groups Projects
  1. Feb 28, 2021
  2. Feb 26, 2021
    • Serge Petrenko's avatar
      wal: change WAL_ROWS_PER_YIELD to a power of 2 · 4842c090
      Serge Petrenko authored
      row_count % WAL_ROWS_PER_YIELD == 0 is tested by both local recovery and relay
      on each recovered row, so it makes sense to have this constant a power of two,
      so that the compiler could replace '%' with bitwise and.
      
      WAL_ROWS_PER_YIELD used to be 32000, so change it to the closest power
      of two: 32768 == 2 ^ 15.
      
      Follow-up #5762
      4842c090
    • Serge Petrenko's avatar
      relay: yield explicitly every N sent rows · 30ad4a55
      Serge Petrenko authored
      While sending a WAL, relay only yields in `coio_write_xrow`, once it
      sees the socket isn't ready for writes.
      It may happen that the socket is always ready for a long period of time,
      and relay doesn't yield at all while recovering a whole .xlog file. This
      may take well more than a minute.
      During this period of time, relay doesn't read replica's ACKs due to
      relay reader fiber not being scheduled, and once the reader is finally
      live it times out immediately, causing the replica to reconnect.
      
      The problem mostly occurs when replica is syncing with master, so there
      are always some WALs to read, and is amplified by the fact that replica
      waits for replication_timeout to pass prior to reconnecting, which lets
      master pile up even more ready WALs, and effectively making it impossible
      for the replica to sync.
      
      To fix the problem let's yield explicitly in relay_send_row every
      WAL_ROWS_PER_YIELD rows. The same is already done in local recovery, and
      serves the same purpose: to not block the event loop for too long.
      
      Closes #5762
      30ad4a55
  3. Feb 24, 2021
  4. Feb 19, 2021
  5. Feb 18, 2021
    • Sergey Bronnikov's avatar
      http_parser: fix UB triggered by using negative array index · bf36a103
      Sergey Bronnikov authored
      http_parser() function resolves symbol to lower case using array, where
      an char code maps to an appropriate symbol. Some symbols may have
      negative ASCII code, but array index cannot be negative, it is an
      undefined behaviour.
      
      I read parts relevant to message headers in "Hypertext Transfer Protocol
      (HTTP/1.1): Message Syntax and Routing" [1] and "Hypertext Transfer
      Protocol -- HTTP/1.1" [2] and found that only ASCII symbols only allowed
      in message headers. It means that symbols with negative ASCII code are
      not allowed. Patch adds a check for each processed symbol to have
      positive ASCII code, otherwise function returns HTTP_PARSE_INVALID.
      
      1. RFC 7230 - 3.2 Header Fields, https://tools.ietf.org/html/rfc7230#section-3.2
      2. RFC 2616 - Message Headers, https://www.ietf.org/rfc/rfc2616.txt
      
      Bug found using LibFuzzer
      
      Closes https://github.com/tarantool/security/issues/6
      Needed for: https://github.com/google/oss-fuzz/pull/4723
      bf36a103
    • Alexander V. Tikhonov's avatar
      tests: add checksums for flaky tests · 376532c2
      Alexander V. Tikhonov authored
      Found more flaky tests running testings with real parallel even for
      tests in fragile lists.
      376532c2
    • Alexander V. Tikhonov's avatar
      github-ci: port perf jobs from gitlab-ci · c53c650e
      Alexander V. Tikhonov authored
      Added Github local Action 'perf' to be used for perf docker images
      preparations and benchmarks runs. Ported jobs from gitlab-ci:
      
        perf_cbench
        perf_linkbench_ssd
        perf_nosqlbench_hash
        perf_nosqlbench_tree
        perf_sysbench
        perf_tpcc
        perf_tpch
        perf_ycsb_hash
        perf_ycsb_tree
      
      Closes #5663
      c53c650e
    • Alexander V. Tikhonov's avatar
      github-ci: avoid failure on packages installation in Telegram action · 58c34bd3
      Alexander V. Tikhonov authored
      Pip and jq installation may fail if the host is real, in this way it
      should be manually pre-installed.
      58c34bd3
    • Alexander V. Tikhonov's avatar
      github-ci: add jepsen* test jobs · 5c68884a
      Alexander V. Tikhonov authored
      Moved from gitlab-ci to github-ci 'jepsen*' jobs for
      testing Tarantool with long Jepsen tests:
      
        jepsen-single-* jobs run by cron each 3 hours
        jepsen-cluster-* jobs run manualy or with API backend request.
      
      Closes tarantool/tarantool-qa#79
      5c68884a
    • Alexander V. Tikhonov's avatar
      jepsen: correct jepsen setup/run script · f2cdc3bc
      Alexander V. Tikhonov authored
      Found issues and resolved:
      
      - Added '$PROJECT_BINARY_DIR/build/' path creation before use.
      
      - Set always ssh-agent restart before add new SSH key, because
        found that in some situations it may fail to add w/o it.
      
      - Found mistake in TF_VAR_id variable setup, inverted ${CI_JOB_ID}
        variable check for it.
      
      Also made improvements in script:
      
      - Added all needed checks for all externally set mandatory variables.
      
      - Added usage message with the list of mandatory and optional variables.
      
      - Added comments to all script steps.
      
      - Added step with checking nodes that they are reachable by SSH.
      f2cdc3bc
    • Alexander V. Tikhonov's avatar
      jepsen: correct jepsen build preparation target · 5c253e66
      Alexander V. Tikhonov authored
      Found issue:
      
        root@hpalx:/source# make run-jepsen
        [  0%] Performing update step for 'jepsen-tests'
      
        *** Please tell me who you are.
      
        Run
      
          git config --global user.email "you@example.com"
          git config --global user.name "Your Name"
      
        to set your account's default identity.
        Omit --global to set the identity only in this repository.
      
        fatal: unable to auto-detect email address (got 'root@hpalx.(none)')
        Cannot save the current index state
        CMake Error at /source/jepsen-tests-prefix/tmp/jepsen-tests-gitupdate.cmake:83 (message):
          Failed to stash changes
      
        CMakeFiles/jepsen-tests.dir/build.make:95: recipe for target 'jepsen-tests-prefix/src/jepsen-tests-stamp/jepsen-tests-update' failed
      
      added 'Nobody' User setup to git configuration if needed.
      5c253e66
  6. Feb 17, 2021
  7. Feb 15, 2021
  8. Feb 12, 2021
  9. Feb 09, 2021
  10. Feb 08, 2021
  11. Feb 04, 2021
  12. Feb 02, 2021
  13. Feb 01, 2021
  14. Jan 29, 2021
Loading