Contact Us 1-800-596-4880

Troubleshooting Apache Kafka Connector 4.9 - Mule 4

To troubleshoot Anypoint Connector for Apache Kafka (Apache Kafka Connector), become familiar with the information about interpreting commonly thrown exception messages.

Enable SSL Logging

Enable SSL logs to investigate an issue related to TLS communications.

Set your SSL log level depending on your required level of detail:

  1. Enable only SSL log details:

    javax.net.debug=ssl

  2. Enable only handshaking details. (The handshake protocol is a series of messages exchanged over the record protocol.)

    javax.net.debug=ssl:handshake

  3. Enable handshaking details and SSL details at the same time:

    javax.net.debug=ssl, handshake

  4. Enable the dumping of all details and traffic data:

    javax.net.debug=all

    This option is very verbose and under normal circumstances is not necessary.
SSL logging results in a performance impact for HTTPS or other TLS connections. Enable SSL logging only to troubleshoot a specific issue and do not enable it for extended periods. SSL logging produces a significant amount of log messages and can inundate your log file if it is left enabled and unattended.

To enable SSL logs:

Set the debug parameter as an argument in the runtime configuration for the application.

  1. In Studio, right-click on the project and select Run > Run Configurations.

  2. Go to the Arguments tab and add -M-Djavax.net.debug=ssl in the VM arguments section.

Enable Verbose Exception Logging

Enable verbose exception logs to show a complete stack trace of the error instead of the default truncated output:

  1. In Studio, right-click on the project and select Run > Run Configurations.

  2. Go to the Arguments tab and append the arguments in the VM arguments section to add the mule.verbose.exceptions property. For example:

    -XX:PermSize=128M -XX:MaxPermSize=256M -Dmule.verbose.exceptions=true

Enable Verbose Logging

To get a better understanding of why an application’s interaction with Kafka Connector is failing, temporarily enable verbose logging for the connector.

Remember to always disable enhanced verbosity after troubleshooting, because it can affect your Mule application’s performance.

To enable verbose logging in the configuration file:

  1. Access Anypoint Studio and navigate to the Package Explorer view.

  2. Open your application’s project name.

  3. Open the src/main/resources folder.

  4. Open the log4j2.xml file inside the folder.

  5. Add an <AsyncLogger> tag inside the <Loggers> tag:

    			<Loggers>
    				...
    				<AsyncLogger name="com.mulesoft.connectors.kafka" level="DEBUG"/>
    				...
    			</Loggers>
  6. Save your application changes.

  7. Click the project name in Package Explorer and then click Run > Run As > Mule Application.

Troubleshoot Common Errors

Here is a list of the common Apache Kafka Connector errors and how to resolve them:

Failed to Load SSL Keystore

When the Kafka Connector configurations fail to load the required truststore files from the classpath, you receive the following error:

org.mule.runtime.api.connection.ConnectionException: Failed to load SSL keystore

The Kafka Connector configurations bundled with a dependency fail to establish connections even when the required truststore files are available in the classpath.

To resolve this error:

Add the required truststore files to the main application that uses the Kafka Connector configurations.

Troubleshooting clientDNSLookUp Property

Since Kafka Connector version 3.0.0, the default value for the DNS Lookup field was removed to keep the connector backwards compatible. Kafka Connector keeps the same values as the previous version, but now each value corresponds to the following properties:

Value Property

DEFAULT

use_all_dns_ips

USE_ALL_DNS_IPS

use_all_dns_ips

RESOLVE_CANONICAL_BOOTSTRAP_SERVERS_ONLY

resolve_canonical_bootstrap_servers_only

Troubleshooting Publishing Null Values

When the Publish operation receives null as input, the operation publishes an empty byte array.

To avoid this issue, the connector enables you to set the mule.kafka.publish.useNull boolean system property.

  • When set to true, the connector publishes a message with null as a value.

  • When set to false or not set at all, the connector publishes a message with an empty byte array value.

For further information on how to configure properties, refer to the Use system properties

Understand Commonly Thrown Exceptions

Here is a list of commonly thrown exception messages and how to interpret them:

  • KAFKA:ALREADY_COMMITTED

    A commit fails because the commit is already performed.
  • KAFKA:AUTHENTICATION_ERROR(SECURITY)

    An authentication error is thrown.
  • KAFKA:AUTHORIZATION_ERROR(CLIENT_SECURITY)

    An authorization error occurred due to the client configuration or permissions.
  • KAFKA:COMMIT_FAILED

    A commit fails with an unrecoverable error.
  • KAFKA:CONNECTIVITY

    Either a connection could not be established or there is a connectivity error.
  • KAFKA:ILLEGAL_STATE

    The consumer is not subscribed to any topics, and no manually assigned partitions are set to consume from.
  • KAFKA:INPUT_TOO_LARGE

    The input is too large for the broker.
  • KAFKA:INVALID_ACK_MODE

    An acknowledgement (ACK) or negative acknowledgement (NACK) operation is run over a consumer that is not in `MANUAL` mode.
  • KAFKA:INVALID_CONFIGURATION

    An invalid configuration value is set for the consumer or the producer.
  • KAFKA:INVALID_CONNECTION

    The referenced connection is invalid.
  • KAFKA:INVALID_INPUT

    The parameters set for the operation are incorrect.
  • KAFKA:INVALID_OFFSET

    The partition number set for the operation is less than `0`, is above the number of partitions, or is an invalid value.
  • KAFKA:INVALID_TOPIC

    The topic selected for the operation is invalid, and there is no automatic generation of said topic. This might also imply an invalid character in the topic name.
  • KAFKA:INVALID_TOPIC_PARTITION

    The topic partition combination selected for the operation is invalid, and there is no automatic generation of topics. This might also imply an invalid character in the topic name, or a non-existing partition.
  • KAFKA:NO_POLL_MADE

    No poll was made.
  • KAFKA:NOT_FOUND

    For consume operations, the poll does not bring any records for the configured timeouts.
  • KAFKA:OUT_OF_RANGE

    There is no reset policy defined, and the offsets for these partitions are either larger or smaller than the range of offsets the server has for the given partition.
  • KAFKA:PREVIOUS_ASSIGNATION

    subscribe() is called previously with topics or pattern without a subsequent call to unsubscribe().
  • KAFKA:PRODUCER_FENCED

    Another producer with the same `transactional.id` is active.
  • KAFKA:RETRY_EXHAUSTED

    The maximum number of retries for the operation is reached.
  • KAFKA:SESSION_NOT_FOUND

    No associated session is found when executing an operation.
  • KAFKA:TIMEOUT

    A specific request takes longer than the configuration timeout values.
View on GitHub