Prasanna Kumar P.V. created KAFKA-4886:
------------------------------------------

             Summary: In a topic with partitions with replication factor of 1, 
when a partition is added AFTER a new broker is added, Kafka does not always 
assign new partition to the new broker.
                 Key: KAFKA-4886
                 URL: https://issues.apache.org/jira/browse/KAFKA-4886
             Project: Kafka
          Issue Type: Bug
          Components: admin
    Affects Versions: 0.10.1.0
         Environment: A kafka cluster of 3 KVM VM nodes with RHEL 7.2. 
            Reporter: Prasanna Kumar P.V.


Bring up kafka cluster of two brokers (say ids 0 and 1). Create a topic 'X' 
with two partitions and replication factor 1. Now add a third broker (id 2). 
Alter the topic X to have one more partition. Issue is, the newly added 
partition (i.e partition 2) does not go to the newly added broker if partition 
0 has been allotted to broker id 1 and partition 1 is allotted to broker id 0. 
However, if partition 0 leader has been set to broker id 0 and partition 1 to 
broker id 1 when creating topic 'X', partition 2 would always go to broker id 2 
(a uniform distribution). Due to this, we have to always check and follow up 
with partition reassignment when a new partition is created to spread 
processing load uniformly in cluster. (During createTopic in AdminUtils.scala, 
we let fixedStartIndex become -1, in assignReplicasToBrokersRackAware() we have 
val startIndex = if (fixedStartIndex >= 0) fixedStartIndex else 
rand.nextInt(arrangedBrokerList.size). So startIndex could be 0 or 1. 
When startIndex is 1, during alter topic, we end up in 
assignReplicasToBrokersRackAware() which then does: val firstReplicaIndex = 
(currentPartitionId + startIndex) % arrangedBrokerList.size. the 
firstReplicaIndex  becomes either 0 or 2. When it becomes 0, we eventually have 
the new partition ending up on broker that already is hosting a partition 
instead of getting assigned to broker id 2.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to