Skip to content
  • Frazer Clement's avatar
    d5f5366c
    Bug #28435082 SQL NODE CRASHES TRYING TO GET TABLE NAME WHILE HANDLING COMMIT ERROR · d5f5366c
    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
    d5f5366c
    Bug #28435082 SQL NODE CRASHES TRYING TO GET TABLE NAME WHILE HANDLING COMMIT ERROR
    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
Loading