You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Fedor Korotkiy (JIRA)" <ji...@apache.org> on 2014/04/10 21:50:14 UTC
[jira] [Created] (KAFKA-1387) Kafka getting stuck creating
ephemeral node it has already created when two zookeeper sessions are
established in a very short period of time
Fedor Korotkiy created KAFKA-1387:
-------------------------------------
Summary: Kafka getting stuck creating ephemeral node it has already created when two zookeeper sessions are established in a very short period of time
Key: KAFKA-1387
URL: https://issues.apache.org/jira/browse/KAFKA-1387
Project: Kafka
Issue Type: Bug
Reporter: Fedor Korotkiy
Kafka broker re-registers itself in zookeeper every time handleNewSession() callback is invoked.
https://github.com/apache/kafka/blob/0.8.1/core/src/main/scala/kafka/server/KafkaHealthcheck.scala
Now imagine the following sequence of events.
1) Zookeeper session reestablishes. handleNewSession() callback is queued by the zkClient, but not invoked yet.
2) Zookeeper session reestablishes again, queueing callback second time.
3) First callback is invoked, creating /broker/[id] ephemeral path.
4) Second callback is invoked and it tries to create /broker/[id] path using createEphemeralPathExpectConflictHandleZKBug() function. But the path is already exists, so createEphemeralPathExpectConflictHandleZKBug() is getting stuck in the infinite loop.
Seems like controller election code have the same issue.
I'am able to reproduce this issue on the 0.8.1 branch from github using the following configs.
# zookeeper
tickTime=10
dataDir=/tmp/zk/
clientPort=2101
maxClientCnxns=0
# kafka
broker.id=1
log.dir=/tmp/kafka
zookeeper.connect=localhost:2101
zookeeper.connection.timeout.ms=100
zookeeper.sessiontimeout.ms=100
Just start kafka and zookeeper and then pause zookeeper several times using Ctrl-Z.
--
This message was sent by Atlassian JIRA
(v6.2#6252)