public void start() {
            if (fencingFuture != null) {
                throw new IllegalStateException("Cannot invoke start() multiple times");
            }
            String stageDescription = "initiating a round of zombie fencing for connector " + connName;
            try (TickThreadStage stage = new TickThreadStage(stageDescription)) {
                fencingFuture = worker.fenceZombies(connName, tasksToFence, configState.connectorConfig(connName)).thenApply(ignored -> {
                    // This callback will be called on the same thread that invokes KafkaFuture::thenApply if
                    // the future is already completed. Since that thread is the herder tick thread, we don't need
                    // to perform follow-up logic through an additional herder request (and if we tried, it would lead
                    // to deadlock)
                    runOnTickThread(
                            this::onZombieFencingSuccess,
                            fencingFollowup
                    );
                    awaitFollowup();
                    return null;
                });
            }
            // Immediately after the fencing and necessary followup work (i.e., writing the task count record to the config topic)
            // is complete, remove this from the list of active fencings
            addCallback((ignored, error) -> {
                synchronized (DistributedHerder.this) {
                    activeZombieFencings.remove(connName);
                }
            });

        }
Start sending requests to the Kafka cluster to fence zombies. In rare cases, may cause blocking calls to
take place before returning, so care should be taken to ensure that this method is not invoked while holding
any important locks (e.g., while synchronized on the surrounding DistributedHerder instance).
This method must be invoked before any {@link #addCallback(Callback) callbacks can be added},
and may only be invoked once.
@throws IllegalStateException if invoked multiple times
connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/DistributedHerder.java