protected void handleGtidEvent(Event event) {
        LOGGER.debug("GTID transaction: {}", event);
        GtidEventData gtidEvent = unwrapData(event);
        String gtid = gtidEvent.getGtid();
        gtidSet.add(gtid);
        offsetContext.startGtid(gtid, gtidSet.toString()); // rather than use the client's GTID set
        ignoreDmlEventByGtidSource = false;
        if (gtidDmlSourceFilter != null && gtid != null) {
            String uuid = gtid.trim().substring(0, gtid.indexOf(":"));
            if (!gtidDmlSourceFilter.test(uuid)) {
                ignoreDmlEventByGtidSource = true;
            }
        }
        metrics.onGtidChange(gtid);
    }
Handle the supplied event with a {@link GtidEventData} that signals the beginning of a GTID transaction.
We don't yet know whether this transaction contains any events we're interested in, but we have to record
it so that we know the position of this event and know we've processed the binlog to this point.
<p>
Note that this captures the current GTID and complete GTID set, regardless of whether the connector is
{@link MySqlTaskContext#gtidSourceFilter() filtering} the GTID set upon connection. We do this because
we actually want to capture all GTID set values found in the binlog, whether or not we process them.
However, only when we connect do we actually want to pass to MySQL only those GTID ranges that are applicable
per the configuration.

@param event the GTID event to be processed; may not be null
inlong-sort/sort-flink/sort-flink-v1.13/sort-connectors/mysql-cdc/src/main/java/io/debezium/connector/mysql/MySqlStreamingChangeEventSource.java