1. 07 Jan, 2019 1 commit
    • Jan Lindström's avatar
      MDEV-15740: InnoDB does not flush redo log when it shoul · 1d56d875
      Jan Lindström authored
      During database recovery, a transaction with wsrep XID is
      recovered from InnoDB in prepared state. However, when the
      transaction is looked up with trx_get_trx_by_xid() in
      innobase_commit_by_xid(), trx->xid gets cleared in
      trx_get_trx_by_xid_low() and commit time serialization history
      write does not update the wsrep XID in trx sys header for
      that recovered trx. As a result the transaction gets
      committed during recovery but the wsrep position does not
      get updated appropriately.
      
      As a fix, we preserve trx->xid for Galera over transaction
      commit in recovery phase.
      
      Fix authored by: Teemu Ollakka (GaleraCluster) and Marko Mäkelä.
      
      	modified:   mysql-test/suite/galera/disabled.def
      	modified:   mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result
      	modified:   mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result
      	modified:   mysql-test/suite/galera/t/galera_gcache_recover_full_gcache.test
      	modified:   mysql-test/suite/galera/t/galera_gcache_recover_manytrx.test
      	modified:   storage/innobase/trx/trx0trx.cc
      	modified:   storage/xtradb/trx/trx0trx.cc
      1d56d875
  2. 03 Jan, 2019 2 commits
    • Marko Mäkelä's avatar
      MDEV-18129 Backup fails for encrypted tables: mariabackup: Database page... · 7158edcb
      Marko Mäkelä authored
      MDEV-18129 Backup fails for encrypted tables: mariabackup: Database page corruption detected at page 1
      
      If an encrypted table is created during backup, then
      mariabackup --backup could wrongly fail.
      
      This caused a failure of the test mariabackup.huge_lsn once on buildbot.
      
      This is due to the way how InnoDB creates .ibd files. It would first
      write a dummy page 0 with no encryption information. Due to this,
      xb_fil_cur_open() could wrongly interpret that the table is not encrypted.
      Subsequently, page_is_corrupted() would compare the computed page
      checksum to the wrong checksum. (There are both "before" and "after"
      checksums for encrypted pages.)
      
      To work around this problem, we introduce a Boolean option
      --backup-encrypted that is enabled by default. With this option,
      Mariabackup will assume that a nonzero key_version implies that the
      page is encrypted. We need this option in order to be able to copy
      encrypted tables from MariaDB 10.1 or 10.2, because unencrypted pages
      that were originally created before MySQL 5.1.48 could contain nonzero
      garbage in the fields that were repurposed for encryption.
      
      Later, MDEV-18128 would clean up the way how .ibd files are created,
      to remove the need for this option.
      
      page_is_corrupted(): Add missing const qualifiers, and do not check
      space->crypt_data unless --skip-backup-encrypted has been specified.
      
      xb_fil_cur_read(): After a failed page read, output a page dump.
      7158edcb
    • Sergei Golubchik's avatar
      Merge branch '10.0' into 10.1 · 3ba3f81a
      Sergei Golubchik authored
      3ba3f81a
  3. 02 Jan, 2019 4 commits
  4. 29 Dec, 2018 5 commits
  5. 28 Dec, 2018 2 commits
    • Eugene Kosov's avatar
      MDEV-17470 Orphan temporary files after interrupted ALTER cause InnoDB:... · c5a5eaa9
      Eugene Kosov authored
      MDEV-17470 Orphan temporary files after interrupted ALTER cause InnoDB: Operating system error number 17 and eventual fatal error 71
      
      Orphan #sql* tables may remain after ALTER TABLE
      was interrupted by timeout or KILL or client disconnect.
      
      This is a regression caused by MDEV-16515.
      
      Similar to temporary tables (MDEV-16647), we had better ignore the
      KILL when dropping the original table in the final part of ALTER TABLE.
      
      Closes #1020
      c5a5eaa9
    • Marko Mäkelä's avatar
      row_drop_table_for_mysql(): Correct a parameter to innobase_format_name() · b74eb5a5
      Marko Mäkelä authored
      This fixes a regression that was introduced in MySQL 5.6.6
      in an error handling code path, in the following change:
      
      commit 024f363d6b5f09b20d1bba411af55be95c7398d3
      Author: kevin.lewis@oracle.com <>
      Date:   Fri Jun 15 09:01:42 2012 -0500
      
          Bug #14169459 INNODB; DROP TABLE DOES NOT DELETE THE IBD FILE
          FOR A TEMPORARY TABLE.
      b74eb5a5
  6. 22 Dec, 2018 1 commit
  7. 21 Dec, 2018 1 commit
    • Marko Mäkelä's avatar
      Relax a too tight suppression · 40a094e4
      Marko Mäkelä authored
      When using a wrong key, all encrypted pages will look corrupted,
      and occasionally the test may access other pages than
      the clustered index root page.
      40a094e4
  8. 20 Dec, 2018 4 commits
    • Vladislav Vaintroub's avatar
      Cleanup recent mariabackup validation patches. · 9f4a4cb4
      Vladislav Vaintroub authored
      
      - Refactor code to isolate page validation in page_is_corrupted() function.
      
      - Introduce --extended-validation parameter(default OFF) for mariabackup
      --backup to enable decryption of encrypted uncompressed pages during
      backup.
      
      - mariabackup would still always check checksum on encrypted data,
      it is needed to detect  partially written pages.
      9f4a4cb4
    • Marko Mäkelä's avatar
      MDEV-18025: Detect corrupted innodb_page_compression=zlib pages · ed36fc35
      Marko Mäkelä authored
      In MDEV-13103, I made a mistake in the error handling of
      page_compressed=1 decryption when the default
      innodb_compression_algorithm=zlib is used.
      Due to this mistake, with certain versions of zlib,
      MariaDB would fail to detect a corrupted page.
      
      The problem was uncovered by the following tests:
      mariabackup.unencrypted_page_compressed
      mariabackup.encrypted_page_compressed
      ed36fc35
    • Sergei Golubchik's avatar
      Merge branch '5.5' into 10.0 · 8634f7e5
      Sergei Golubchik authored
      8634f7e5
    • Sergei Golubchik's avatar
      MDEV-17975 Assertion `! is_set()' or `!is_set() || (m_status == DA_OK_BULK &&... · 8ede9b3a
      Sergei Golubchik authored
      MDEV-17975 Assertion `! is_set()' or `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed upon REVOKE under LOCK TABLE
      
      open_grant_tables() returns -1/0/1, where -1 is an error, while 1 is not.
      Don't store it's return value in bool
      8ede9b3a
  9. 19 Dec, 2018 4 commits
  10. 18 Dec, 2018 4 commits
  11. 17 Dec, 2018 6 commits
    • Sergei Golubchik's avatar
      Don't default to bundled zlib · 65525550
      Sergei Golubchik authored
      This reverts part of c5427172
      65525550
    • Marko Mäkelä's avatar
      Fix a compiler warning · 51a1fc73
      Marko Mäkelä authored
      fil_space_verify_crypt_checksum(): Add a dummy return statement
      in case memory is corrupted and innodb_checksum_algorithm has
      an invalid value.
      51a1fc73
    • Marko Mäkelä's avatar
      Follow-up to MDEV-12112: corruption in encrypted table may be overlooked · 8c43f963
      Marko Mäkelä authored
      The initial fix only covered a part of Mariabackup.
      This fix hardens InnoDB and XtraDB in a similar way, in order
      to reduce the probability of mistaking a corrupted encrypted page
      for a valid unencrypted one.
      
      This is based on work by Thirunarayanan Balathandayuthapani.
      
      fil_space_verify_crypt_checksum(): Assert that key_version!=0.
      Let the callers guarantee that. Now that we have this assertion,
      we also know that buf_page_is_zeroes() cannot hold.
      Also, remove all diagnostic output and related parameters,
      and let the relevant callers emit such messages.
      Last but not least, validate the post-encryption checksum
      according to the innodb_checksum_algorithm (only accepting
      one checksum for the strict variants), and no longer
      try to validate the page as if it was unencrypted.
      
      buf_page_is_zeroes(): Move to the compilation unit of the only callers,
      and declare static.
      
      xb_fil_cur_read(), buf_page_check_corrupt(): Add a condition before
      calling fil_space_verify_crypt_checksum(). This is a non-functional
      change.
      
      buf_dblwr_process(): Validate the page only as encrypted or unencrypted,
      but not both.
      8c43f963
    • Jan Lindström's avatar
      Merge pull request #1026 from codership/10.1-galera-defaults · 517c59c5
      Jan Lindström authored
      Remove provider defaults check from 'galera_defaults' MTR test
      517c59c5
    • Jan Lindström's avatar
      MDEV-18021: Galera test galera_sst_mariabackup_table_options fails if AES_CTR is not available · ee543bea
      Jan Lindström authored
      Problem is that if you use bundled yassl AES_CTR is not supported. There is a way to detect that but as we really want to keep this test enabled did not add
      skip for missing support. Changed method to AES_CBC as there is no need to
      use AES_CTR.
      ee543bea
    • Jan Lindström's avatar
      MDEV-17771: Add Galera ist and sst tests using mariabackup · 8a46b9fe
      Jan Lindström authored
      Add check that file key management plugin is found.
      8a46b9fe
  12. 16 Dec, 2018 1 commit
  13. 14 Dec, 2018 2 commits
    • Alexey Yurchenko's avatar
      Remove provider defaults check from 'galera_defaults' MTR test · 6b818831
      Alexey Yurchenko authored
      From time to time Galera adds new parameters or changes defaults to
      existing ones. Every time this happens galera_defaults test needs a
      fix (and a commit) because it insists on checking these defaults.
      This is making life hard because any Galera update may require a fix
      to MariaDB code even though it is totally unrelated and defeats the
      whole idea of a provider living its own life.
      This commit removes checking for provider defaults to avoid false
      positive failures on MariaDB side.
      6b818831
    • Marko Mäkelä's avatar
      MDEV-12112 corruption in encrypted table may be overlooked · fb252f70
      Marko Mäkelä authored
      After validating the post-encryption checksum on an encrypted page,
      Mariabackup should decrypt the page and validate the pre-encryption
      checksum as well. This should reduce the probability of accepting
      invalid pages as valid ones.
      
      This is a backport and refactoring of a patch that was
      originally written by Thirunarayanan Balathandayuthapani
      for the 10.2 branch.
      fb252f70
  14. 13 Dec, 2018 3 commits