Please sign in to comment.
BUG#20938915 2PC SUCCEEDS EVEN THOUGH BINLOG FLUSH/SYNC FAILS
Problem: When flushing cache to binary log fails, the error is not getting caught by group commit logic. Analysis: Leader of a group in group commit logic tries to flush cache to binary log file. If it fails (which is very rarely happens due to some low level errors like disk failure or disk full), error is thrown to the higher level. This error is not checked properly and the transaction is getting committed in storage engine as the error is not checked and not propagated to the higher level. No error to client and no information in binary logs is making users to get confused when they see inconsistencies between Master and Slave data. Fix: Using binlog_error_action variable, Server will decide the action to do if this situation happens. If binlog_error_action == ABORT_SERVER, then it will abort the server after informing the client with 'ER_BINLOGGING_IMPOSSIBLE' error. If binlog_error_action == 'IGNORE_ERROR', then it will ignore the error and disable the binlogging further until server is restarted again. The same will be mentioned in the error log file.
- Loading branch information...
Showing with 85 additions and 3 deletions.