Skip to content
  • Venkatesh Duggirala's avatar
    ecd158ec
    Bug#24285104 RELAY LOG CORRUPTION NOT HANDLED CORRECTLY WITH MULTI-SOURCE · ecd158ec
    Venkatesh Duggirala authored
    REPLICATION
    
    Problem: Corruption of one channel's relay logs + server restart is
             making few channels (good channels) to disappear.
    
    Analysis: In create_slave_info_objects(), after reading the all the
              available channels from the repository tables, server create
              and initialize each and every channel. The logic was written
              in such a way that if there is an error while initializing
              one channel, server will skip creating other channels than
              the default one. Also when the skip-slave-start=false, server
              should start the slave threads for all the channels. But the logic
              is written in a way that if there is an error during initialization
              of a channel, it will skip starting slave threads for those
              channels which are in good condition as well.
    
    Fix: Both problems that are explained above in the analysis section are
         fixed now. Now irrespective of errors on other channels, server will try
         to create/initialize channels that are in good condition and also
         it will start slave threads for the good channels if skip-slave-start
         is disabled. Also as part of this fix, we have restructured
         create_slave_info_objects function to increase the code readability
         START SLAVE and STOP SLAVE, which are supposed to operate on all the
         channels, are also modified such that they will continue
         executing on all good channels even if they find one bad channel
         in between.
    ecd158ec
    Bug#24285104 RELAY LOG CORRUPTION NOT HANDLED CORRECTLY WITH MULTI-SOURCE
    Venkatesh Duggirala authored
    REPLICATION
    
    Problem: Corruption of one channel's relay logs + server restart is
             making few channels (good channels) to disappear.
    
    Analysis: In create_slave_info_objects(), after reading the all the
              available channels from the repository tables, server create
              and initialize each and every channel. The logic was written
              in such a way that if there is an error while initializing
              one channel, server will skip creating other channels than
              the default one. Also when the skip-slave-start=false, server
              should start the slave threads for all the channels. But the logic
              is written in a way that if there is an error during initialization
              of a channel, it will skip starting slave threads for those
              channels which are in good condition as well.
    
    Fix: Both problems that are explained above in the analysis section are
         fixed now. Now irrespective of errors on other channels, server will try
         to create/initialize channels that are in good condition and also
         it will start slave threads for the good channels if skip-slave-start
         is disabled. Also as part of this fix, we have restructured
         create_slave_info_objects function to increase the code readability
         START SLAVE and STOP SLAVE, which are supposed to operate on all the
         channels, are also modified such that they will continue
         executing on all good channels even if they find one bad channel
         in between.
Loading