Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Add INVALID_REPLICA_ASSIGNMENT, to match implementation

Table of Contents

Status

Current state: Under DiscussionAccepted

Discussion thread: here

JIRA: KAFKA-5856

...

Anchor
CreatePartitionsRequest
CreatePartitionsRequest
The CreatePartitionsRequest is used to increase the partition count for a batch of topics, and is the basis for the  AdminClient.createPartitions() method.

The request can must be sent to any brokerthe controller.

The request will require the ALTER operation on the Topic resource.

The request is subject to the CreateTopicPolicy of the broker as configured by the broker's create.topic.policy.class.name config property. This is to ensure that the policy applies to topics modified after creation.

After validating the request the broker calls AdminUtils.addPartitions() which ultimately updates the topic partition assignment znode (/brokers/topics/${topic}).

The controller then waits for the change to the number of partitions to be reflected in its metadata cache before sending the CreatePartitionsResponse.

No Format
CreatePartitionsRequest => [topic_partition_count] timeout
  topic_partition_count => topic partition_count
    topic => STRING
    partition_count => count [assignment]
      count => INT32
      assignment => [INT32]
  timeout => INT32

...

FieldDescription
topicthe name of a topic
countthe new partition count
assignment

a list of assigned brokers (one list for each new partition)

timeout

The maximum time to await a response in ms.

Note: When a NewPartitions is constructed without a newAssignments array it results in a null assignment array in the CreatePartitionsRequest.

Anchor
CreatePartitionsResponse
CreatePartitionsResponse
The response provides an error code and message for each of the topics present in the request.

...

  • TOPIC_AUTHORIZATION_FAILED (29) The user lacked Alter on the topic
  • POLICY_VIOLATION(44) The request violated the configured policy

  •  INVALID_TOPIC_EXCEPTION (17) If the topic doesn't exist

  • INVALID_PARTITIONS (37) If the partition count was <= the current partition count for the topic.
  • INVALID_REPLICA_ASSIGNMENT (39)  if the size of any of the lists contained in the partitions list was not equal to the topic replication factor.
  • INVALID_REQUEST (42) If duplicate topics appeared in the request, or the size of the partitions list did not equal the number of new partitions, or if the size of any of the lists contained in the  partitions list was not equal to the topic replication factor
  • REASSIGNMENT_IN_PROGRESS (new) If a partition reassignment is in progress. It is necessary to prevent increasing partitions at the same time so that we can be sure the partition has a meaningful replication factor.
  • NONE (0) The topic partition count was changed successfully.

...