Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Admin and KafkaAdminClient

default DescribeTopicsResult describeTopicsDescribeTopicsWithIdsResult describeTopicsWithIds(Collection<Uuid> topicIds)

DescribeTopicsResult describeTopicsDescribeTopicsWithIdsResult describeTopicsWithIds(Collection<Uuid> topicIds, DescribeTopicsOptions options)

MetadataRequest must also be modified. Topic name will be left in to allow requests to be made either by topic name or topic ID. Requests should only use one or the other.


public class DescribeTopicsWithIdsResult {
/**
* Return a map from topic IDs to futures which can be used to check the status of
* individual topics.
*/
public Map<Uuid, KafkaFuture<TopicDescription>> values()

/**
* Return a future which succeeds only if all the topic descriptions succeed.
*/
public KafkaFuture<Map<Uuid, TopicDescription>> all()
}


MetadataRequest must also be modified. Topic name will be left in to allow requests to be made either by topic name or topic ID. Requests should only use one or the other.

ID will be checked first, but if the value is the default zero UUID, topic name will be used instead.  If an ID is specified and the ID does not ID will be checked first, but if the value is the default zero UUID, topic name will be used instead.  If an ID is specified and the ID does not exist, the request will fail regardless of allow_auto_topic_creation. 
If the topic ID is not found, the request will return an UNKNOWN_TOPIC_ID error for the topic indicating the topic ID did not exist. The check for the topic ID will occur before checking authorization on the topic. Thus, topic IDs are not considered sensitive information.

...

Metadata Request (Version: 10) => [topics] allow_auto_topic_creation include_cluster_authorized_operations include_topic_authorized_operations
    topics => name topic_id*
      name => STRING (nullable)*
      topic_id* => UUID
    allow_auto_topic_creation => BOOL
    include_cluster_authorized_operations => BOOL
    include_topic_authorized_operations => BOOL

DeleteTopics

It will be useful for the AdminClient to be able to specify a list of topic Ids to delete to ensure the correct topics are being deleted. New methods will need to be added to the Admin interface and KafkaAdminClient

Admin and KafkaAdminClient

default DeleteTopicsResult deleteTopics(Collection<Uuid> topics)

...

_topic_authorized_operations
    topics => name topic_id*
      name => STRING (nullable)*
      topic_id* => UUID
    allow_auto_topic_creation => BOOL
    include_cluster_authorized_operations => BOOL
    include_topic_authorized_operations => BOOL

DeleteTopics

It will be useful for the AdminClient to be able to specify a list of topic Ids to delete to ensure the correct topics are being deleted. New methods will need to be added to the Admin interface and KafkaAdminClient

Admin and KafkaAdminClient

default DeleteTopicsWithIdsResult deleteTopicsWithIds(Collection<Uuid> topics)

DeleteTopicsWithIdsResult deleteTopicsWithIds(Collection<Uuid> topics, DeleteTopicsOptions options);


public class DeleteTopicsWithIdsResult {
final Map<Uuid, KafkaFuture<Void>> futures;

DeleteTopicsWithIdsResult(Map<Uuid, KafkaFuture<Void>> futures)

/**
* Return a map from topic IDs to futures which can be used to check the status of
* individual deletions.
*/
public Map<Uuid, KafkaFuture<Void>> values()

/**
* Return a future which succeeds only if all the topic deletions succeed.
*/
public KafkaFuture<Void> all()
}


DeleteTopics Request and Response should be modified.

...