Skip to content
  • Priyanka Sangam's avatar
    8e387cf0
    Bug#21277472 MYSQLD DOES NOT HANDLE NDBAPI TIMEOUTS CORRECTLY · 8e387cf0
    Priyanka Sangam authored
    Fixes to handle timeouts on signals sent by mysqld through
    ndbapi to DBDICT.
    
    ndbd error inserts and fixes:
    Fixed crash in ndbd on ndbapi timeout. Connection to mysqld
    times out, so schema transaction is released, resulting in
    invalidation of schema transaction key. Then DBDICT fails
    to set up client request due to ndbapi timeout. On failure,
    DBDICT sends REF to self. REF handler for DBDICT attempts to
    find callback function based on lookup on transaction key.
    Assert fails since schema transaction key invalid. Removed
    assert and modified REF handler to skip callback instead of
    asserting if schema transaction key invalid.
    
    mysqld fixes:
    1. Added and modified error checks so that timeout error
    detected and results in error return.
    2. Added error insert to reduce timeout for dictionary signals
    
    ndbapi error inserts:
    Added error inserts in ndbapi to reduce dictionary signal
    timeout from 7 days to 1 second.
    
    ndbapi fixes:
    1. Prevented timeout error code 4008 from being overwritten by
    'not found' errors.
    2. Mapped WST_WAIT_TIMEOUT state to timeout error 4008 for
    listing objects and forcing a GCP wait.
    
    ndbapi request IDs:
    Added unique request IDs to dictionary REQ signals as senderData.
    SenderData is copied to the REF or CONF in ndbd. So REF or
    CONF which is sent in reply to specific REQ should have same
    request ID in senderData. Added checks to verify that request ID
    in CONF/REF matches request ID sent in REQ. If not matching,
    CONF/REF discarded with warning.
    8e387cf0
    Bug#21277472 MYSQLD DOES NOT HANDLE NDBAPI TIMEOUTS CORRECTLY
    Priyanka Sangam authored
    Fixes to handle timeouts on signals sent by mysqld through
    ndbapi to DBDICT.
    
    ndbd error inserts and fixes:
    Fixed crash in ndbd on ndbapi timeout. Connection to mysqld
    times out, so schema transaction is released, resulting in
    invalidation of schema transaction key. Then DBDICT fails
    to set up client request due to ndbapi timeout. On failure,
    DBDICT sends REF to self. REF handler for DBDICT attempts to
    find callback function based on lookup on transaction key.
    Assert fails since schema transaction key invalid. Removed
    assert and modified REF handler to skip callback instead of
    asserting if schema transaction key invalid.
    
    mysqld fixes:
    1. Added and modified error checks so that timeout error
    detected and results in error return.
    2. Added error insert to reduce timeout for dictionary signals
    
    ndbapi error inserts:
    Added error inserts in ndbapi to reduce dictionary signal
    timeout from 7 days to 1 second.
    
    ndbapi fixes:
    1. Prevented timeout error code 4008 from being overwritten by
    'not found' errors.
    2. Mapped WST_WAIT_TIMEOUT state to timeout error 4008 for
    listing objects and forcing a GCP wait.
    
    ndbapi request IDs:
    Added unique request IDs to dictionary REQ signals as senderData.
    SenderData is copied to the REF or CONF in ndbd. So REF or
    CONF which is sent in reply to specific REQ should have same
    request ID in senderData. Added checks to verify that request ID
    in CONF/REF matches request ID sent in REQ. If not matching,
    CONF/REF discarded with warning.
Loading