[
https://issues.apache.org/jira/browse/KAFKA-20958?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18105573#comment-18105573
]
Chia-Ping Tsai edited comment on KAFKA-20958 at 8/18/26 11:15 AM:
------------------------------------------------------------------
{code:java}
@InterfaceAudience.Public
public final class Metrics implements Closeable {
// ...
/**
* @deprecated Since x.x.x. This constructor leaks the internal Time
object.
* Please use the public constructors that do not accept a Time
object.
* Internal Kafka components should use {@link
MetricsInternalFactory#create(Time)}.
* This constructor will be reduced to package-private
visibility in version 5.0.
*/
@Deprecated
@SuppressKafkaInternalApiUsage("KIP-1311: Deprecated and will be hidden in
5.0")
public Metrics(Time time) {
this(new MetricConfig(), new ArrayList<>(0), time);
}
{code}
was (Author: chia7712):
{code:java}
@InterfaceAudience.Public
public final class Metrics implements Closeable {
// ...
/**
* @deprecated Since x.x.x. This constructor leaks the internal Time
object.
* Please use the public constructors that do not accept a Time
object.
* Internal Kafka components should use {@link
MetricsInternalFactory#create(Time)}.
* This constructor will be reduced to package-private
visibility in version 5.0.
*/
@Deprecated
@SuppressKafkaInternalApiUsage("KIP-1311: Deprecated and will be hidden in
5.0")
public Metrics(Time time) {
this(new MetricConfig(), new ArrayList<>(0), time);
}
{code}
{code:java}
// Some comments here
public String getFoo()
{
return foo;
}
{code}
> Introduce internal accessor pattern to encapsulate cross-package APIs
> ---------------------------------------------------------------------
>
> Key: KAFKA-20958
> URL: https://issues.apache.org/jira/browse/KAFKA-20958
> Project: Kafka
> Issue Type: Improvement
> Reporter: Chia-Ping Tsai
> Assignee: Chia-Ping Tsai
> Priority: Critical
> Labels: need-kip
>
> Currently, to allow cross-package instantiation or state access for internal
> Kafka components, we either:
> # Leak internal classes (like Time) in public constructors.
> # Expose properties as protected.
> We should introduce the Internal Accessor / Factory Pattern (using
> package-private scopes and `@InterfaceAudience.Private` helper classes) to
> cleanly encapsulate these.
> Subsequently, we will deprecate the leaked public constructors/methods to
> ensure we can remove them in 5.0.
> related discussion:
> https://lists.apache.org/thread/1kmyqody36dhnzj5ph858zsfpl4qhm7l
> https://github.com/apache/kafka/pull/21337#discussion_r3574009798
--
This message was sent by Atlassian Jira
(v8.20.10#820010)