MySQL NDB Cluster 7.5 Release Notes
        The client receive thread was enabled only when under high load,
        where the criterion for determining “high load” was
        that the number of clients waiting in the poll queue (the
        receive queue) was greater than
        min_active_clients_recv_thread (default:
        8).
      
        This was a poor metric for determining high load, since a single
        client, such as the binary log injector thread handling incoming
        replication events, could experience high load on its own as
        well. The same was true of a pushed join query (in which very
        large batches of incoming TRANSID_AI signals
        are received).
      
We change the receive thread such that it now sleeps in the poll queue rather than being deactivated completely, so that it is now always available for handling incoming signals, even when the client is not under high load. (Bug #33752914)
Important Change: 
        The maximum value supported for the
        --ndb-batch-size server option
        has been increased from 31536000 to
        2147483648 (2 GB).
       (Bug #21040523)
Performance: 
        When inserting a great many rows into an empty or small table in
        the same transaction, the rate at which rows were inserted
        quickly declined to less than 50% of the initial rate;
        subsequently, it was found that roughly 50% of all CPU time was
        spent in Dbacc::getElement(), and the root
        cause identified to be the timing of resizing the structures
        used for storing elements by
        DBACC, growing with the
        insertion of more rows in the same transaction, and shrinking
        following a commit.
      
We fix this issue by checking for a need to resize immediately following the insertion or deletion of an element. This also handles the subsequent rejection of an insert. (Bug #33803487)
References: See also: Bug #33803541.
Performance: 
        The internal function computeXorChecksum()
        was implemented such that great care was taken to aid the
        compiler in generating optimal code, but it was found that it
        consumed excessive CPU resources, and did not perform as well as
        a simpler implementation. This function is now reimplemented
        with a loop summing up XOR results
        over an array, which appears to result in better optimization
        with both GCC and Clang compilers.
       (Bug #33757412)
        In some cases, NDB did not validate all node
        IDs of data nodes correctly.
       (Bug #33896409)
In some cases, array indexes were not handled correctly. (Bug #33896389, Bug #33896399, Bug #33916134)
        NdbEventBuffer hash key generation for
        non-character data reused the same 256 hash keys; in addition,
        strings of zero length were ignored when calculating hash keys.
       (Bug #33783274)
        The collection of NDB API statistics based on the
        EventBytesRecvdCount event counter incurred
        excessive overhead. Now this counter is updated using a value
        which is aggregated as the event buffer is filled, rather than
        traversing all of the event buffer data in a separate function
        call.
      
For more information, see NDB API Statistics Counters and Variables. (Bug #33778923)
        The deprecated -r option for
        ndbd has been removed. In addition, this
        change also removes extraneous text from the output of
        ndbd --help.
       (Bug #33362935)
References: See also: Bug #31565810.
When a node failure is detected, surviving nodes in the same nodegroup as this node attempt to resend any buffered change data to event subscribers. In cases in which there were no outstanding epoch deliveries, that is, the list of unacknowledged GCIs was empty, the surviving nodes made the incorrect assumption that this list would never be empty. (Bug #30509416)