public boolean needFrozenSent(String topicName, Throwable throwable) {
        if (throwable instanceof TubeClientException) {
            String message = throwable.getMessage();
            if (message != null && (message.contains("No available partition for topic")
                    || message.contains("The brokers of topic are all forbidden"))) {
                AtomicLong fbdTime = FROZEN_TOPIC_MAP.get(topicName);
                if (fbdTime == null) {
                    AtomicLong tmpFbdTime = new AtomicLong(0);
                    fbdTime = FROZEN_TOPIC_MAP.putIfAbsent(topicName, tmpFbdTime);
                    if (fbdTime == null) {
                        fbdTime = tmpFbdTime;
                    }
                }
                fbdTime.set(System.currentTimeMillis() + SEND_FAILURE_WAIT);
                return true;
            }
        }
        return false;
    }
Whether frozen production according to the exceptions returned by message sending

@param topicName  the topic name sent message
@param throwable  the exception information thrown when sending a message

@return  whether illegal topic
inlong-dataproxy/dataproxy-source/src/main/java/org/apache/inlong/dataproxy/sink/common/TubeProducerHolder.java