public void cleanupDeletedTopics() {
        if (quorumController.isActive()) {
            quorumController.appendWriteEvent("cleanupDeletedTopic", OptionalLong.empty(), () -> {
                try {
                    return this.cleanupDeletedTopics0();
                } catch (Throwable ex) {
                    LOGGER.error("[CLEANUP_DELETED_TOPIC],[UNEXPECTED]", ex);
                    return ControllerResult.of(Collections.emptyList(), null);
                }
            });
        }
    }
Cleanup deleted topic workflow:
1. ReplicationControlManager#deleteTopic generate kv record with key "{@link TopicDeletion#TOPIC_DELETION_PREFIX}/{topicId}"
2. {@link TopicDeletionManager} replay the kv record and put the topicId to {@link TopicDeletionManager#waitingCleanupTopics}
3. {@link TopicDeletionManager} schedule scan the waiting cleanup topics and delete the streams related to topic
4. After the streams related to the topic are deleted, {@link TopicDeletionManager} generate RemoveKvRecord to remove the topicId from {@link TopicDeletionManager#waitingCleanupTopics}
metadata/src/main/java/org/apache/kafka/controller/stream/TopicDeletionManager.java