1. 02 Feb, 2024 3 commits
    • Vladislav Vaintroub's avatar
      MDEV-33374 main.mysql_connector_net fails on new Windows 11 · c79f19a5
      Vladislav Vaintroub authored
      Additionally pass `-ExecutionPolicy Bypass` to powershell.exe when
      executing script
      c79f19a5
    • Marko Mäkelä's avatar
      MDEV-33361 Excessive delays in SET GLOBAL innodb_log_file_size · 93189df4
      Marko Mäkelä authored
      innodb_log_file_size_update(): Wait for buf_pool.done_flush_list
      (that a flush batch has completed), not buf_pool.do_flush_list
      (that the buf_flush_page_cleaner was woken up).
      
      The condition variable buf_pool.done_flush_list is broadcast by the
      buf_flush_page_cleaner() at the end of each batch, which is when the
      log checkpoint can advance and where any log resizing may be completed.
      The purpose of the condition variable buf_pool.do_flush_list is to
      wake up the buf_flush_page_cleaner() thread because there is work to do.
      If no thread is signaling that condition variable, this loop could
      unnecessarily wait for up to 5 seconds too long for the log resizing
      to be completed. By consuming signals it could also prevent the
      buf_flush_page_cleaner() thread from waking up.
      
      Tested by: Matthias Leich
      93189df4
    • Daniel Black's avatar
      MDEV-33095 MariaDB-backup - no OS_DATA_FILE_NO_O_DIRECT on some platforms · ea9a6a14
      Daniel Black authored
      Postfix for a6290a5b, in 10.11
      where OS_DATA_FILE_NO_O_DIRECT gets used. Same #ifdef conditions
      as other uses of OS_DATA_FILE_NO_O_DIRECT.
      
      Noticed on aarch64-macos builder.
      ea9a6a14
  2. 30 Jan, 2024 1 commit
    • Dishon Merkhai's avatar
      MDEV-30839: Add new options to mini-benchmark and fixes · f5ca4077
      Dishon Merkhai authored
      Add new options to mini-benchmark.sh so it is more useful, such as
      `--log` to avoid output from `lscpu` and other commands being lost.
      
      Also fix following errors:
      
      - Fix if condition for the cycle count regression verdict. The condition
        checked if the cycle count was greater than 850 billion, but `$RESULT`
        is only 3 digits and represents the number of cycles in billions.
      
      - Fix flamegraph width. The original width caused the flamegraph to be
        cut-off on most screen sizes in the browser.
      
      - Fix ShellCheck warnings and suggestions.
      
      - Fix condition to check if perf has permission to run on the system.
      
      All new code of the whole pull request, including one or several files
      that are either new files or modified ones, are contributed under the
      BSD-new license. I am contributing on behalf of my employer Amazon Web
      Services, Inc.
      f5ca4077
  3. 23 Jan, 2024 1 commit
  4. 22 Jan, 2024 9 commits
  5. 19 Jan, 2024 8 commits
  6. 18 Jan, 2024 2 commits
  7. 17 Jan, 2024 6 commits
    • Sophist's avatar
    • Vladislav Vaintroub's avatar
      MDEV-32374 Improve lsn_lock. Also use futex-like on Windows · 03854a84
      Vladislav Vaintroub authored
      Upon further benchmarking, it turns out srw_mutex performs overall
      slightly better with WaitOnAddress than CRITICAL_SECTION.
      03854a84
    • Marko Mäkelä's avatar
      Merge 10.6 into 10.11 · ad13fb36
      Marko Mäkelä authored
      ad13fb36
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 3a96eba2
      Marko Mäkelä authored
      3a96eba2
    • Marko Mäkelä's avatar
      MDEV-30940: Try to fix the test · 6a514ef6
      Marko Mäkelä authored
      6a514ef6
    • Marko Mäkelä's avatar
      MDEV-33213 History list is not shrunk unless there is a pause in the workload · f8c88d90
      Marko Mäkelä authored
      The parameter innodb_undo_log_truncate=ON enables a multi-phased logic:
      1. Any "producers" (new starting transactions) are prohibited
      from using the rollback segments that reside in the undo tablespace.
      2. Any transactions that use any of the rollback segments must be
      committed or aborted.
      3. The purge of committed transaction history must process all the
      rollback segments.
      4. The undo tablespace is truncated and rebuilt.
      5. The rollback segments are re-enabled for new transactions.
      
      There was one flaw in this logic: The first step was not being invoked
      as often as it could be, and therefore innodb_undo_log_truncate=ON
      would have no chance to work during a heavy write workload.
      
      Independent of innodb_undo_log_truncate, even after
      commit 86767bcc
      we are missing some chances to free processed undo log pages.
      If we prohibited the creation of new transactions in one busy
      rollback segment at a time, we would be eventually guaranteed
      to be able to free such pages.
      
      purge_sys_t::skipped_rseg: The current candidate rollback segment
      for shrinking the history independent of innodb_undo_log_truncate.
      
      purge_sys_t::iterator::free_history_rseg(): Renamed from
      trx_purge_truncate_rseg_history(). Implement the logic
      around purge_sys.m_skipped_rseg.
      
      purge_sys_t::truncate_undo_space: Renamed from truncate.
      
      purge_sys.truncate_undo_space.last: Changed the type to integer
      to get rid of some pointer dereferencing and conditional branches.
      
      purge_sys_t::truncating_tablespace(), purge_sys_t::undo_truncate_try():
      Refactored from trx_purge_truncate_history().
      Set purge_sys.truncate_undo_space.current if applicable,
      or return an already set purge_sys.truncate_undo_space.current.
      
      purge_coordinator_state::do_purge(): Invoke
      purge_sys_t::truncating_tablespace() as part of the normal work loop,
      to implement innodb_undo_log_truncate=ON as often as possible.
      
      trx_purge_truncate_rseg_history(): Remove a redundant parameter.
      
      trx_undo_truncate_start(): Replace dead code with a debug assertion.
      
      Correctness tested by: Matthias Leich
      Performance tested by: Axel Schwenke
      Reviewed by: Debarun Banerjee
      f8c88d90
  8. 16 Jan, 2024 2 commits
  9. 15 Jan, 2024 1 commit
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-32968 InnoDB fails to restore tablespace first page from doublewrite... · caad34df
      Thirunarayanan Balathandayuthapani authored
      MDEV-32968  InnoDB fails to restore tablespace first page from doublewrite buffer when page is empty
      
      - InnoDB fails to find the space id from the page0 of
      the tablespace. In that case, InnoDB can use
      doublewrite buffer to recover the page0 and write
      into the file.
      
      - buf_dblwr_t::init_or_load_pages(): Loads only the pages
      which are valid.(page lsn >= checkpoint). To do that,
      InnoDB has to open the redo log before system
      tablespace, read the latest checkpoint information.
      
      recv_dblwr_t::find_first_page():
      1) Iterate the doublewrite buffer pages and find the 0th page
      2) Read the tablespace flags, space id from the 0th page.
      3) Read the 1st, 2nd and 3rd page from tablespace file and
      compare the space id with the space id which is stored
      in doublewrite buffer.
      4) If it matches then we can write into the file.
      5) Return space which matches the pages from the file.
      
      SysTablespace::read_lsn_and_check_flags(): Remove the
      retry logic for validating the first page. After
      restoring the first page from doublewrite buffer,
      assign tablespace flags by reading the first page.
      
      recv_recovery_read_max_checkpoint(): Reads the maximum
      checkpoint information from log file
      
      recv_recovery_from_checkpoint_start(): Avoid reading
      the checkpoint header information from log file
      
      Datafile::validate_first_page(): Throw error in case
      of first page validation fails.
      caad34df
  10. 14 Jan, 2024 1 commit
  11. 13 Jan, 2024 4 commits
  12. 12 Jan, 2024 2 commits