That's a good question. Off the top of my head I don't remember any
fundamentally good reason why we don't allow it - apart from:
- broker registration paths are ephemeral so topic creation cannot
succeed when there are insufficient brokers available
- it may be confusing to some users to successfully create a topic and
allow its partition replicas to be assigned to brokers that are
unavailable

One can possibly argue that topic creation should not be permitted
with _any_ unavailable brokers since extended unavailability could
result in imbalanced partition distribution (when the unavailable
brokers are restored).

Anyway, unless I'm missing something obvious I think your point is
worth discussing further in a jira.

Joel

On Tue, Oct 15, 2013 at 1:47 PM, Jason Rosenberg <j...@squareup.com> wrote:
> Is there a fundamental reason for not allowing creation of new topics while
> in an under-replicated state?  For systems that use automatic topic
> creation, it seems like losing a node in this case is akin to the cluster
> being unavailable, if one of the nodes goes down, etc.
>
>
> On Tue, Oct 15, 2013 at 1:25 PM, Joel Koshy <jjkosh...@gmail.com> wrote:
>
>> Steve - that's right. I think Monika wanted clarification on what
>> would happen if replication factor is two and only one broker is
>> available. In that case, you won't be able to create new topics with
>> replication factor two (you should see an AdministrationException
>> saying the replication factor is larger than available brokers).
>>
>> However, you can send messages to available partitions of topics that
>> have already been created - because the ISR would shrink to only one
>> replica for those topics - although the cluster would be in an
>> under-replicated state. This is covered in the documentation
>> (http://kafka.apache.org/documentation.html#replication) under the
>> discussion about ISR.
>>
>> Thanks,
>>
>> Joel
>>
>> On Tue, Oct 15, 2013 at 10:19 AM, Steve Morin <st...@stevemorin.com>
>> wrote:
>> > If you have a double broker failure with replication factor of 2 and only
>> > have 2 brokers in the cluster.  Wouldn't every partition be not
>> available?
>> >
>> >
>> > On Tue, Oct 15, 2013 at 8:48 AM, Jun Rao <jun...@gmail.com> wrote:
>> >
>> >> If you have double broker failures with a replication factor of 2, some
>> >> partitions will not be available. When one of the brokers comes back,
>> the
>> >> partition is made available again (there is potential data loss), but
>> in an
>> >> under replicated mode. After the second broker comes back, it will
>> catch up
>> >> from the other replica and the partition will eventually be fully
>> >> replicated. There is no need to change the replication factor during
>> this
>> >> process.
>> >>
>> >> As for ZK, you can always use the full connection string. ZK will pick
>> live
>> >> servers to establish connections.
>> >>
>> >> Thanks,
>> >>
>> >> Jun
>> >>
>> >>
>> >> On Tue, Oct 15, 2013 at 3:46 AM, Monika Garg <gargmon...@gmail.com>
>> wrote:
>> >>
>> >> > I have 2 nodes kafka cluster with default.replication.factor=2,is set
>> in
>> >> > server.properties file.
>> >> >
>> >> > I removed one node-in removing that node,I killed Kafka
>> process,removed
>> >> all
>> >> > the kafka-logs and bundle from that node.
>> >> >
>> >> > Then I stopped my remaining running node in the cluster and started
>> >> > again(default.replication.factor is still set to 2 in this node
>> >> > server.properties file).
>> >> > I was expecting some error/exception as now I don't have two nodes in
>> my
>> >> > cluster.But I didn't get any error/exception and my node successfully
>> >> > started and I am able to create topics on it.
>> >> >
>> >> > So should the "default.replication.factor" be updated from
>> >> > "default.replication.factor=2" to "default.replication.factor=1" , in
>> the
>> >> > remaining running node?
>> >> >
>> >> > Similarly if there are two external zookeeper
>> >> > nodes(zookeeper.connect=host1:port1,host2:port1) in my cluster and
>> now I
>> >> > have removed one zookeeper node(host1:port1) from the cluster,So
>> should
>> >> the
>> >> > property "zookeeper.connect" be updated from
>> >> > (zookeeper.connect=host1:port1,host2:port1) to
>> >> > (zookeeper.connect=host2:port1)?
>> >> >
>> >> > --
>> >> > *Moniii*
>> >> >
>> >>
>>

Reply via email to