1. 05 Jun, 2017 1 commit
    • Sachin Setiya's avatar
      MDEV-9544 FLUSH [RELAY] LOGS does not rotate logs for a named slave · da61107f
      Sachin Setiya authored
      Problem:- In the case of multisource replication/named slave
      when we run "FLUSH LOGS" , it does not flush logs.
      
      Solution:- A new function Master_info_index->flush_all_relay_logs()
      is created which will rotate relay logs for all named slave.
      This will be called in reload_acl_and_cache function when
      connection_name.length == 0
      da61107f
  2. 01 Jun, 2017 3 commits
    • Jan Lindström's avatar
      MDEV-12600: crash during install_db with innodb_page_size=32K and ibdata1=3M; · 112b21da
      Jan Lindström authored
      Problem was that all doublewrite buffer pages must fit to first
      system datafile.
      
      Ported commit 27a34df7882b1f8ed283f22bf83e8bfc523cbfde
      Author: Shaohua Wang <shaohua.wang@oracle.com>
      Date:   Wed Aug 12 15:55:19 2015 +0800
      
          BUG#21551464 - SEGFAULT WHILE INITIALIZING DATABASE WHEN
          INNODB_DATA_FILE SIZE IS SMALL
      
      To 10.1 (with extended error printout).
      
      btr_create(): If ibuf header page allocation fails report error and
      return FIL_NULL. Similarly if root page allocation fails return a error.
      
      dict_build_table_def_step: If fsp_header_init fails return
      error code.
      
      fsp_header_init: returns true if header initialization succeeds
      and false if not.
      
      fseg_create_general: report error if segment or page allocation fails.
      
      innobase_init: If first datafile is smaller than 3M and could not
      contain all doublewrite buffer pages report error and fail to
      initialize InnoDB plugin.
      
      row_truncate_table_for_mysql: report error if fsp header init
      fails.
      
      srv_init_abort: New function to report database initialization errors.
      
      srv_undo_tablespaces_init, innobase_start_or_create_for_mysql: If
      database initialization fails report error and abort.
      
      trx_rseg_create: If segment header creation fails return.
      112b21da
    • Jan Lindström's avatar
      MDEV-12114: install_db shows corruption for rest encryption and... · 6b698715
      Jan Lindström authored
      MDEV-12114: install_db shows corruption for rest encryption and innodb_checksum_algorithm=strict_none
      
      Problem was that checksum check resulted false positives that page is
      both not encrypted and encryted when checksum_algorithm was
      strict_none.
      
      Encrypton checksum will use only crc32 regardless of setting.
      
      buf_zip_decompress: If compression fails report a error message
      containing the space name if available (not available during import).
      And note if space could be encrypted.
      
      buf_page_get_gen: Do not assert if decompression fails,
      instead unfix the page and return NULL to upper layer.
      
      fil_crypt_calculate_checksum: Use only crc32 method.
      
      fil_space_verify_crypt_checksum: Here we need to check
      crc32, innodb and none method for old datafiles.
      
      fil_space_release_for_io: Allow null space.
      
      encryption.innodb-compressed-blob is now run with crc32 and none
      combinations.
      
      Note that with none and strict_none method there is not really
      a way to detect page corruptions and page corruptions after
      decrypting the page with incorrect key.
      
      New test innodb-checksum-algorithm to test different checksum
      algorithms with encrypted, row compressed and page compressed
      tables.
      6b698715
    • Jan Lindström's avatar
      MDEV-12113: install_db shows corruption for rest encryption with innodb_data_file_path=ibdata1:3M; · 1af8bf39
      Jan Lindström authored
      Problem was that FIL_PAGE_FLUSH_LSN_OR_KEY_VERSION field that for
      encrypted pages even in system datafiles should contain key_version
      except very first page (0:0) is after encryption overwritten with
      flush lsn.
      
      Ported WL#7990 Repurpose FIL_PAGE_FLUSH_LSN to 10.1
      The field FIL_PAGE_FLUSH_LSN_OR_KEY_VERSION is consulted during
      InnoDB startup.
      
      At startup, InnoDB reads the FIL_PAGE_FLUSH_LSN_OR_KEY_VERSION
      from the first page of each file in the InnoDB system tablespace.
      If there are multiple files, the minimum and maximum LSN can differ.
      These numbers are passed to InnoDB startup.
      
      Having the number in other files than the first file of the InnoDB
      system tablespace is not providing much additional value. It is
      conflicting with other use of the field, such as on InnoDB R-tree
      index pages and encryption key_version.
      
      This worklog will stop writing FIL_PAGE_FLUSH_LSN_OR_KEY_VERSION to
      other files than the first file of the InnoDB system tablespace
      (page number 0:0) when system tablespace is encrypted. If tablespace
      is not encrypted we continue writing FIL_PAGE_FLUSH_LSN_OR_KEY_VERSION
      to all first pages of system tablespace to avoid unnecessary
      warnings on downgrade.
      
      open_or_create_data_files(): pass only one flushed_lsn parameter
      
      xb_load_tablespaces(): pass only one flushed_lsn parameter.
      
      buf_page_create(): Improve comment about where
      FIL_PAGE_FIL_FLUSH_LSN_OR_KEY_VERSION is set.
      
      fil_write_flushed_lsn(): A new function, merged from
      fil_write_lsn_and_arch_no_to_file() and
      fil_write_flushed_lsn_to_data_files().
      Only write to the first page of the system tablespace (page 0:0)
      if tablespace is encrypted, or write all first pages of system
      tablespace and invoke fil_flush_file_spaces(FIL_TYPE_TABLESPACE)
      afterwards.
      
      fil_read_first_page(): read flush_lsn and crypt_data only from
      first datafile.
      
      fil_open_single_table_tablespace(): Remove output of LSN, because it
      was only valid for the system tablespace and the undo tablespaces, not
      user tablespaces.
      
      fil_validate_single_table_tablespace(): Remove output of LSN.
      
      checkpoint_now_set(): Use fil_write_flushed_lsn and output
      a error if operation fails.
      
      Remove lsn variable from fsp_open_info.
      
      recv_recovery_from_checkpoint_start(): Remove unnecessary second
      flush_lsn parameter.
      
      log_empty_and_mark_files_at_shutdown(): Use fil_writte_flushed_lsn
      and output error if it fails.
      
      open_or_create_data_files(): Pass only one flushed_lsn variable.
      1af8bf39
  3. 31 May, 2017 1 commit
  4. 29 May, 2017 3 commits
  5. 27 May, 2017 1 commit
  6. 26 May, 2017 7 commits
    • Sergei Golubchik's avatar
      Merge branch '10.0-galera' into 10.1 · f42e08f9
      Sergei Golubchik authored
      f42e08f9
    • Elena Stepanova's avatar
    • Elena Stepanova's avatar
      On a build without performance schema the test failed · 994a5f29
      Elena Stepanova authored
      performance-schema options in option files should be loose. The tests
      will be skipped after have_perfschema.inc check, but if options aren't
      loose, the failure happens on server startup, before the check
      994a5f29
    • Marko Mäkelä's avatar
      MDEV-12926 encryption.innodb_onlinealter_encryption,... · 808f18c7
      Marko Mäkelä authored
      MDEV-12926 encryption.innodb_onlinealter_encryption, encryption.innodb-bad-key-change failed in buildbot with valgrind
      
      row_merge_write(): Pass the correct (possibly encrypted) buffer
      to os_file_write_int_fd().
      
      This bug was introduced in commit 65e1399e
      which included a commit to merge changes from MySQL 5.6.36 to
      MariaDB Server 10.0.
      808f18c7
    • Marko Mäkelä's avatar
      10.1 additions for MDEV-12052 Shutdown crash presumably due to master thread activity · 2f29fc3c
      Marko Mäkelä authored
      btr_defragment_thread(): Create the thread in the same place as other
      threads. Do not invoke btr_defragment_shutdown(), because
      row_drop_tables_for_mysql_in_background() in the master thread can still
      keep invoking btr_defragment_remove_table().
      
      logs_empty_and_mark_files_at_shutdown(): Wait for btr_defragment_thread()
      to exit.
      
      innobase_start_or_create_for_mysql(), innobase_shutdown_for_mysql():
      Skip encryption and scrubbing in innodb_read_only_mode.
      
      srv_export_innodb_status(): Do not export encryption or scrubbing
      statistics in innodb_read_only mode, because the threads will not
      be running.
      2f29fc3c
    • Marko Mäkelä's avatar
      Merge 10.0 to 10.1 · 4abc2dd0
      Marko Mäkelä authored
      4abc2dd0
    • Marko Mäkelä's avatar
      MDEV-12052 Shutdown crash presumably due to master thread activity · 449a88e1
      Marko Mäkelä authored
      InnoDB shutdown assumes that once the server has entered
      SRV_SHUTDOWN_FLUSH_PHASE, no change to persistent data is allowed.
      It was possible for the master thread to wake up while shutdown
      is executing in SRV_SHUTDOWN_FLUSH_PHASE or
      even in SRV_SHUTDOWN_LAST_PHASE.
      
      We do not yet know if further crashes at shutdown are possible.
      Also, we do not know if all the observed crashes could be explained
      by the race conditions that we are now fixing.
      
      srv_shutdown_print_master_pending(): Remove a redundant ut_time() call.
      
      srv_shutdown(): Renamed from srv_master_do_shutdown_tasks().
      
      srv_master_thread(): Do not resume after shutdown has been initiated.
      449a88e1
  7. 24 May, 2017 10 commits
  8. 23 May, 2017 5 commits
  9. 22 May, 2017 2 commits
  10. 21 May, 2017 1 commit
  11. 20 May, 2017 6 commits
    • Jan Lindström's avatar
      MDEV-12615: InnoDB page compression method snappy mostly does not compress pages · 90c52e52
      Jan Lindström authored
      Snappy compression method require that output buffer
      used for compression is bigger than input buffer.
      Similarly lzo require additional work memory buffer.
      Increase the allocated buffer accordingly.
      
      buf_tmp_buffer_t: removed unnecessary lzo_mem, crypt_buf_free and
      comp_buf_free.
      
      buf_pool_reserve_tmp_slot: use alligned_alloc and if snappy
      available allocate size based on snappy_max_compressed_length and
      if lzo is available increase buffer by LZO1X_1_15_MEM_COMPRESS.
      
      fil_compress_page: Remove unneeded lzo mem (we use same buffer)
      and if output buffer is not yet allocated allocate based similarly
      as above.
      
      Decompression does not require additional work area.
      
          Modify test to use same test as other compression method tests.
      90c52e52
    • Marko Mäkelä's avatar
      f8802009
    • Marko Mäkelä's avatar
      fe291c68
    • Marko Mäkelä's avatar
      Clean up a test · 45fe62b8
      Marko Mäkelä authored
      Changed global parameters will be reset by server restart.
      There is no need to save and restore the original values.
      45fe62b8
    • Marko Mäkelä's avatar
      After-merge fix for MDEV-11638 · a4d4a5fe
      Marko Mäkelä authored
      In commit 360a4a03
      some debug assertions were introduced to the page flushing code
      in XtraDB. Add these assertions to InnoDB as well, and adjust
      the InnoDB shutdown so that these assertions will not fail.
      
      logs_empty_and_mark_files_at_shutdown(): Advance
      srv_shutdown_state from the first phase SRV_SHUTDOWN_CLEANUP
      only after no page-dirtying activity is possible
      (well, except by srv_master_do_shutdown_tasks(), which will be
      fixed separately in MDEV-12052).
      
      rotate_thread_t::should_shutdown(): Already exit the key rotation
      threads at the first phase of shutdown (SRV_SHUTDOWN_CLEANUP).
      
      page_cleaner_sleep_if_needed(): Do not sleep during shutdown.
      This change is originally from XtraDB.
      a4d4a5fe
    • Marko Mäkelä's avatar
      Merge 10.0 into 10.1 · 65e1399e
      Marko Mäkelä authored
      Significantly reduce the amount of InnoDB, XtraDB and Mariabackup
      code changes by defining pfs_os_file_t as something that is
      transparently compatible with os_file_t.
      65e1399e