You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

Status

Current stateUnder Discussion

Discussion thread: here [Change the link from the KIP proposal email archive to your own email thread]

JIRA: KAFKA-7402 [Change the link from KAFKA-1 to your own ticket]

Motivation

Quoting John John Roesler:

"Various components in Streams have close methods but do not implement AutoCloseable. This means that they can't be used in try-with-resources blocks.

Remedying that would simplify our tests and make life easier for users as well.

KafkaStreams itself is a notable example of this, but we can take the opportunity to look for other components that make sense as AutoCloseable as well."


From AutoCloseable.java:

* An object that may hold resources (such as file or socket handles)
* until it is closed. The {@link #close()} method of an {@code AutoCloseable}
* object is called automatically when exiting a {@code
* try}-with-resources block for which the object has been declared in
* the resource specification header. This construction ensures prompt
* release, avoiding resource exhaustion exceptions and errors that
* may otherwise occur.

Public Interfaces

By going over the project, here is a list that I found which can implement AutoCloseable. Suggestions are welcome.

  1. org.apache.kafka.streams.KafkaStreams
  2. org.apache.kafka.streams.processor.internals.RecordCollectorImpl
  3. org.apache.kafka.connect.runtime.ConnectMetrics.MetricGroup
  4. org.apache.kafka.connect.transforms.TimestampRouter
  5. org.apache.kafka.tools.VerifiableProducer

Proposed Changes

Changes are similar to this:



public class KafkaStreams implements AutoCloseable{
...
public void close()
...
}

.

Compatibility, Deprecation, and Migration Plan

  • N/A
  • No labels