@Override
        public ControllerResult<Void> generateRecordsAndResult() {
            try {
                return ActivationRecordsGenerator.generate(
                    log::warn,
                    logReplayTracker.empty(),
                    offsetControl.transactionStartOffset(),
                    zkMigrationEnabled,
                    bootstrapMetadata,
                    featureControl);
            } catch (Throwable t) {
                throw fatalFaultHandler.handleFault("exception while completing controller " +
                    "activation", t);
            }
        }
Append records to the Raft log. They will be written out asynchronously.

@param log                   The log4j logger.
@param result                The controller result we are writing out.
@param maxRecordsPerBatch    The maximum number of records to allow in a batch.
@param appender              The callback to invoke for each batch. The arguments are last
                             write offset, record list, and the return result is the new
                             last write offset.
@return                      The final offset that was returned from the Raft layer.
metadata/src/main/java/org/apache/kafka/controller/QuorumController.java