mjsax commented on code in PR #19546:
URL: https://github.com/apache/kafka/pull/19546#discussion_r2059527767
##########
clients/src/main/java/org/apache/kafka/clients/consumer/KafkaConsumer.java:
##########
@@ -1797,31 +1801,48 @@ public void close() {
* @throws InterruptException If the thread is interrupted before or while
this function is called
* @throws org.apache.kafka.common.KafkaException for any other error
during close
*/
+ @Deprecated
@Override
- @SuppressWarnings("deprecation")
public void close(Duration timeout) {
delegate.close(timeout);
}
/**
- * Wakeup the consumer. This method is thread-safe and is useful in
particular to abort a long poll.
- * The thread which is blocking in an operation will throw {@link
org.apache.kafka.common.errors.WakeupException}.
- * If no thread is blocking in a method which can throw {@link
org.apache.kafka.common.errors.WakeupException}, the next call to such a method
will raise it instead.
+ * Close the consumer cleanly. {@link CloseOptions} allows to specify a
timeout and a
+ * {@link CloseOptions.GroupMembershipOperation membership operation}.
+ * If no timeout is specified, the default timeout of 30 seconds is uses.
+ * If no membership operation is specified, the {@link
CloseOptions.GroupMembershipOperation#DEFAULT default
+ * membership operation} is used.
+ * <p>
+ * This method waits up to the timeout for the consumer to complete
pending commits and may leave the group,
+ * depending on the specified membership operation.
+ * If auto-commit is enabled, this will commit the current offsets if
possible within the
+ * timeout. If the consumer is unable to complete offset commits and
gracefully leave the group (if applicable)
+ * before the timeout expires, the consumer is force closed. Note that
{@link #wakeup()} cannot be
+ * used to interrupt close.
+ * <p>
+ * The actual maximum wait time is bounded by the {@link
ConsumerConfig#REQUEST_TIMEOUT_MS_CONFIG} setting, which
+ * only applies to operations performed with the broker
(coordinator-related requests and
+ * fetch sessions). Even if a larger timeout is specified, the consumer
will not wait longer than
+ * {@link ConsumerConfig#REQUEST_TIMEOUT_MS_CONFIG} for these requests to
complete during the close operation.
+ * Note that the execution time of callbacks (such as {@link
OffsetCommitCallback} and
+ * {@link ConsumerRebalanceListener}) does not consume time from the close
timeout.
+ *
+ * @param option see {@link CloseOptions}; cannot be {@code null}
Review Comment:
I think it's ok if users get NPE -- we say "cannot be `null`" so NPE should
be expected?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]