Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-4352

multi_source replication: conflict between rli->slave_patternload_file files of different connections

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.0.1
    • Fix Version/s: 10.0.2, 10.0.3
    • Component/s: None
    • Labels:

      Description

      When using multiple connections to different masters in a slave server, there
      is nothing done to guard against conflicts on the file name constructed in
      rli->slave_patternload_file.

      I found this from random failures in a test case where I start two slave
      connections at once:

      CHANGE MASTER 'slave1' TO master_port=$SERVER_MYPORT_1,
          master_host='127.0.0.1', master_user='root';
      CHANGE MASTER 'slave2' TO master_port=$SERVER_MYPORT_2,
           master_host='127.0.0.1', master_user='root';
      start all slaves;
      

      This results sometimes in this error:

      130329 21:18:13 [ERROR] Master 'slave1': Slave SQL: Unable to use slave's temporary directory /private/var/lib/buildslave/maria-slave/labrador/build/mysql-test/var/tmp/mysqld.3 - Can't create/write to file '/private/var/lib/buildslave/maria-slave/labrador/build/mysql-test/var/tmp/mysqld.3/SQL_LOAD-' (Errcode: 17 "File exists"), Error_code: 1
      

      This happens because both SQL threads call
      check_temp_dir(rli->slave_patternload_file) on the same file name created in
      init_relay_log_info().

      I think there are more problems with this. For example, it looks like
      cleanup_load_tmpdir() could easily wrongly remove files from a different
      connection. There seems nothing done to handle temporary files correctly
      between different connections to multiple masters.

      This seems like something that could easily cause silent (or not so silent)
      corruption of replication.

        Attachments

          Activity

            People

            • Assignee:
              monty Michael Widenius
              Reporter:
              knielsen Kristian Nielsen
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: