-
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.
Venkatesh Duggirala authoredREPLICATION 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