In mysql 5.7.2 onwards,variable rpl_semi_sync_master_wait_point is used to control when the transactions in the master waits for the response from one of slaves for semi sync replication.
if we set the variable as after_sync,according to the document:
Upon receiving acknowledgment, the master commits the transaction to the storage engine and returns a result to the client, which then can proceed.
that means if the master can't receive response from one of its slaves and the master crashes before timeout happens which is defined by rpl_semi_sync_master_timeout,the transaction should fail.
but my test shows that it is not true.
I set rpl_semi_sync_master_timeout to a bigger value such as 10000,stopped all slave io threads and launched a transaction,then the transaction waited for the response from one of slaves,then I crashed the master by killing the mysqld process.after I restarted mysqld process,it showed that the transaction succeeded,which should fail as decribed in the doc.
why?
thanks