alibaba/canal · error · CanalClientException

Failed to fetch the data after: {timeout}

Error message

Failed to fetch the data after: {timeout}

What it means

Error "Failed to fetch the data after: {timeout}" thrown in alibaba/canal.

Source

Thrown at client/src/main/java/com/alibaba/otter/canal/client/rabbitmq/RabbitMQCanalConnector.java:206

        }
        return messages;
    }

    @Override
    public List<Message> getListWithoutAck(Long timeout, TimeUnit unit) throws CanalClientException {
        try {
            if (this.lastGetBatchMessage != null) {
                throw new CanalClientException("mq get/ack not support concurrent & async ack");
            }

            ConsumerBatchMessage batchMessage = messageBlockingQueue.poll(timeout, unit);
            if (batchMessage != null) {
                this.lastGetBatchMessage = batchMessage;
                return batchMessage.getData();
            }
        } catch (InterruptedException ex) {
            logger.warn("Get message timeout", ex);
            throw new CanalClientException("Failed to fetch the data after: " + timeout);
        }
        return Lists.newArrayList();
    }

    @Override
    public List<FlatMessage> getFlatList(Long timeout, TimeUnit unit) throws CanalClientException {
        List<FlatMessage> messages = getFlatListWithoutAck(timeout, unit);
        if (messages != null && !messages.isEmpty()) {
            ack();
        }
        return messages;
    }

    @Override
    public List<FlatMessage> getFlatListWithoutAck(Long timeout, TimeUnit unit) throws CanalClientException {
        try {
            if (this.lastGetBatchMessage != null) {
                throw new CanalClientException("mq get/ack not support concurrent & async ack");

View on GitHub (pinned to 87be50e876)

Solutions

  1. Increase the fetch timeout if messages arrive infrequently, or treat the timeout as an empty batch and retry.
  2. Verify the queue has messages and the consumer is bound to the correct queue.
  3. Check RabbitMQ broker health and network latency between connector and broker.

When it happens

Trigger: Thrown at client/src/main/java/com/alibaba/otter/canal/client/rabbitmq/RabbitMQCanalConnector.java:206 when the library encounters an invalid state.

Common situations: Fetch timed out. Make the timeout configurable, retry with backoff, and on repeated timeout check queue depth and consumer lag before raising.

Understand the failure class


AI-assisted analysis of alibaba/canal@87be50e876 (2026-08-14). Data as JSON: /api/errors/84c3c036b63ea99b. Report an issue: GitHub.