-
Frazer Clement authored
The NdbTransaction::getNdbErrorOperation() method returns a pointer to the NdbOperation object which has most recently had an error condition, if any. MySQLD uses the internal NdbTransaction::releaseCompletedOperations() method to release NdbApi side operation objects after a batch is executed. In cases where NdbTransaction::getNdbErrorOperation() is called after the operation with an error has been released by NdbTransaction::releaseCompletedOperations(), it is possible for invalid data to be read. This problem is corrected by invalidating the NdbTransaction's error operation pointer when releasing completed operations. Tested by : - Adding debug-only extra invalidation of operation members when operations are released - Using Insert Ignore and TransacionInactiveTimeout to : - Cause an operation error without aborting the transaction - Hit a non-operation related error on transaction COMMIT
Frazer Clement authoredThe NdbTransaction::getNdbErrorOperation() method returns a pointer to the NdbOperation object which has most recently had an error condition, if any. MySQLD uses the internal NdbTransaction::releaseCompletedOperations() method to release NdbApi side operation objects after a batch is executed. In cases where NdbTransaction::getNdbErrorOperation() is called after the operation with an error has been released by NdbTransaction::releaseCompletedOperations(), it is possible for invalid data to be read. This problem is corrected by invalidating the NdbTransaction's error operation pointer when releasing completed operations. Tested by : - Adding debug-only extra invalidation of operation members when operations are released - Using Insert Ignore and TransacionInactiveTimeout to : - Cause an operation error without aborting the transaction - Hit a non-operation related error on transaction COMMIT
Loading