This is an automated email from the ASF dual-hosted git repository.
lianetm pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push:
new 85b0e80272d KAFKA-20713: Lower level for client log on self-healing
session not found (#22617)
85b0e80272d is described below
commit 85b0e80272d1c594d01a37273d68e555c636765d
Author: Lianet Magrans <[email protected]>
AuthorDate: Fri Jun 19 09:14:44 2026 -0400
KAFKA-20713: Lower level for client log on self-healing session not found
(#22617)
Lower to DEBUG and update message for the fetch session not found
(evicted) scenario. The previous INFO log reported this as an error, but
on the client side it is self-healing and not actionable.
Fetch sessions are managed on the broker, which already exposes the
visibility needed (metrics and logs) to detect this situation and
correct it (broker configs for fetch session cache)
Reviewers: Andrew Schofield <[email protected]>
---
.../java/org/apache/kafka/clients/FetchSessionHandler.java | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git
a/clients/src/main/java/org/apache/kafka/clients/FetchSessionHandler.java
b/clients/src/main/java/org/apache/kafka/clients/FetchSessionHandler.java
index b5150b2d7f1..ab108ceab73 100644
--- a/clients/src/main/java/org/apache/kafka/clients/FetchSessionHandler.java
+++ b/clients/src/main/java/org/apache/kafka/clients/FetchSessionHandler.java
@@ -526,11 +526,19 @@ public class FetchSessionHandler {
*/
public boolean handleResponse(FetchResponse response, short version) {
if (response.error() != Errors.NONE) {
- log.info("Node {} was unable to process the fetch request with {}:
{}.",
- node, nextMetadata, response.error());
if (response.error() == Errors.FETCH_SESSION_ID_NOT_FOUND) {
+ // Session does not exist on the broker anymore. Recoverable
and self-healing, the client re-sends a full fetch request.
+ log.debug("Node {} returned a {} error; the fetch session {}
was likely evicted from the broker's " +
+ "fetch session cache. Re-sending a full fetch request to
establish a new session.",
+ node, response.error(), nextMetadata.sessionId());
nextMetadata = FetchMetadata.INITIAL;
} else {
+ // Other fetch-session errors (e.g.
INVALID_FETCH_SESSION_EPOCH, FETCH_SESSION_TOPIC_ID_ERROR) are
+ // also recoverable and self-healing: the existing session is
closed and a new one is re-established
+ // with a full fetch.
+ log.debug("Node {} was unable to process the fetch request
with {}: {}. " +
+ "Re-sending a full fetch request, which closes the
existing session on the broker and establishes a new one.",
+ node, nextMetadata, response.error());
nextMetadata = nextMetadata.nextCloseExistingAttemptNew();
}
return false;