1. 12 May, 2021 1 commit
  2. 11 May, 2021 4 commits
  3. 10 May, 2021 8 commits
  4. 09 May, 2021 6 commits
  5. 08 May, 2021 5 commits
  6. 07 May, 2021 10 commits
  7. 06 May, 2021 3 commits
    • Marko Mäkelä's avatar
      MDEV-25506 (2 of 3): Kill during DDL leaves orphan .ibd file · 2ceadb39
      Marko Mäkelä authored
      dict_drop_index_tree(): Even if SYS_INDEXES.PAGE contains the
      special value FIL_NULL, the tablespace identified by SYS_INDEXES.SPACE
      may exist and may need to be dropped. This would definitely be the case
      if the server had been killed right after a FILE_CREATE record was
      persistently written during CREATE TABLE, but before the transaction
      was committed.
      
      btr_free_if_exists(): Simplify the interface, to avoid repeated
      tablespace lookup.
      
      One more scenario is known to be broken: If the server is killed
      during DROP TABLE (or table-rebuilding ALTER TABLE) right after a
      FILE_DELETE record has been persistently written but before the
      file was deleted, then we could end up recovering no tablespace
      at all, and failing to delete the file, in either of fil_name_process()
      or dict_drop_index_tree().
      
      Thanks to Elena Stepanova for providing "rr replay" and data directories
      of these scenarios.
      2ceadb39
    • Marko Mäkelä's avatar
      MDEV-18518 follow-up fixes · cc2ddde4
      Marko Mäkelä authored
      Make DDL operations that involve FULLTEXT INDEX atomic.
      In particular, we must drop the internal FTS_ tables in the same
      DDL transaction with ALTER TABLE.
      
      Remove all references to fts_drop_orphaned_tables().
      
      row_merge_drop_temp_indexes(): Drop also the internal FTS_ tables
      that are associated with index stubs that were created in
      prepare_inplace_alter_table_dict() for
      CREATE FULLTEXT INDEX before the server was killed.
      
      fts_clear_all(): Remove the fts_drop_tables() call. It has to be
      executed before the transaction is committed!
      
      dict_load_indexes(): Do not load any metadata for index stubs
      that had been created by prepare_inplace_alter_table_dict()
      
      fts_create_one_common_table(), fts_create_common_tables(),
      fts_create_one_index_table(), fts_create_index_tables():
      Remove redundant error handling. The tables will be dropped
      just fine by dict_drop_index_tree().
      
      commit_try_norebuild(): Also drop the FTS_ tables when dropping
      FULLTEXT INDEX.
      
      The changes to the test case innodb_fts.crash_recovery has been
      extensively tested. The non-debug server will be killed while
      the 3 ALTER TABLE are in any phase of execution. With the debug
      server, DEBUG_SYNC should make the test deterministic.
      cc2ddde4
    • Alexey Yurchenko's avatar
      MDEV-25418: Improve mariabackup SST script compliance with native MariaDB SSL practices · 54d7ba96
      Alexey Yurchenko authored
      and configuration.
      
      1. Pass joiner's authentication information to donor together with address
         in State Transfer Request. This allows joiner to authenticate donor on
         connection. Previously joiner would accept data from anywhere.
      
      2. Deprecate custom SSL configuration variables tca, tcert and tkey in favor
         of more familiar ssl-ca, ssl-cert and ssl-key. For backward compatibility
         tca, tcert and tkey are still supported.
      
      3. Allow falling back to server-wide SSL configuration in [mysqld] if no SSL
         configuration is found in [sst] section of the config file.
      
      4. Introduce ssl-mode variable in [sst] section that takes standard values
         and has following effects:
          - old-style SSL configuration present in [sst]: no effect
            otherwise:
          - ssl-mode=DISABLED or absent: retains old, backward compatible behavior
            and ignores any other SSL configuration
          - ssl-mode=VERIFY*: verify joiner's certificate and CN on donor,
                              verify donor's secret on joiner
                              (passed to donor via State Transfer Request)
                              BACKWARD INCOMPATIBLE BEHAVIOR
          - anything else enables new SSL configuration convetions but does not
            require verification
      
          ssl-mode should be set to VERIFY only in a fully upgraded cluster.
      
          Examples:
      
          [mysqld]
          ssl-cert=/path/to/cert
          ssl-key=/path/to/key
          ssl-ca=/path/to/ca
      
          [sst]
      
           -- server-wide SSL configuration is ignored, SST does not use SSL
      
          [mysqld]
          ssl-cert=/path/to/cert
          ssl-key=/path/to/key
          ssl-ca=/path/to/ca
      
          [sst]
          ssl-mode=REQUIRED
      
           -- use server-wide SSL configuration for SST but don't attempt to
              verify the peer identity
      
          [sst]
          ssl-cert=/path/to/cert
          ssl-key=/path/to/key
          ssl-ca=/path/to/ca
          ssl-mode=VERIFY_CA
      
           -- use SST-specific SSL configuration for SST and require verification
              on both sides
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      54d7ba96
  8. 05 May, 2021 3 commits
    • Alexey Yurchenko's avatar
      MDEV-25418 rsync SST does not work with stunnel encryption · cf67ca48
      Alexey Yurchenko authored
      1. Fix eval command line to correctly pass stunnel option to rsync on donor.
      2. Deprecate `tkey`, `tcert` and `tca` options in [sst] section in favor of
         conventional `ssl-key`, `ssl-cert` and `ssl-ca`, but keep their precedence
         for backward compatibility.
      3. Default to require SSL encryption if at least SSL key and cert files are
         specified in configuration, either in [sst] or [mysqld] sections.
      4. Enable `verify*` option for stunnel on donor only if
         a. CA file is specified somewhere in the configuration
         b. it is explicitly requested in [sst] section by either specifying
         ssl-mode or CA file there. In this case if ssl-mode is not explicitly
         given, it defaults to VERIFY_CA.
      
         ssl-mode maps to stunnel options as follows:
         VERIFY_CA       -> verifyChain = yes
         VERIFY_IDENTITY -> verifyPeer = yes
      
         Example to require donor to verify joiner identity:
      ```
      [mysqld]
      ssl-cert=/path/to/cert
      ssl-key=/path/to/key
      ssl-ca=/path/to/ca
      
      [sst]
      ssl-mode=VERIFY_IDENTITY
      ```
      5. If SSL verification is requested, joiner verifies donor by checking the
         secret passed to donor via SST request.
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      cf67ca48
    • Julius Goryavsky's avatar
    • Julius Goryavsky's avatar