[ https://issues.apache.org/jira/browse/KAFKA-3410?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16343209#comment-16343209 ]
Dmitriy Matveev commented on KAFKA-3410: ---------------------------------------- We have faced the same problem. it's happened like this, all action i did was in Cloudera Manager: - 3 days before(it was friday) i did shrink zookeeper cluster and removed two nodes. restarted whole cluster of zookeeper. - kafka stay in state, something like this, - "Outdate configuration need to restart" - today morning(monday) kafka run into trouble - two nodes lost connection to zookeeper, and some thing went wrong. Logs one of the nodes: {code:java} 2018-01-29 03:37:17,480 INFO org.apache.zookeeper.ClientCnxn: Client session timed out, have not heard from server in 22837ms for sessionid 0x3612d6a573501c1, closing socket connection and attempting reco n nect 2018-01-29 03:37:17,480 INFO org.apache.zookeeper.ClientCnxn: Client session timed out, have not heard from server in 27981ms for sessionid 0x7612d6a562101dc, closing socket connection and attempting reco n nect 2018-01-29 03:37:17,480 INFO org.apache.zookeeper.ClientCnxn: Client session timed out, have not heard from server in 22836ms for sessionid 0x3612d6a573501c2, closing socket connection and attempting reco n nect 2018-01-29 03:37:17,480 WARN kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-11-337], Error in fetch kafka.server.ReplicaFetcherThread$FetchRequest@1657a3a8. Possible cause: java.io.IOException: C onnection to 337 was disconnected before the response was read 2018-01-29 03:37:17,480 WARN kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-3-337], Error in fetch kafka.server.ReplicaFetcherThread$FetchRequest@34f57a6c. Possible cause: java.io.IOException: C o nnection to 337 was disconnected before the response was read ..................................... 2018-01-29 03:37:17,580 INFO org.I0Itec.zkclient.ZkClient: zookeeper state changed (Disconnected) 2018-01-29 03:37:17,580 INFO org.apache.curator.framework.state.ConnectionStateManager: State change: SUSPENDED 2018-01-29 03:37:17,580 INFO org.I0Itec.zkclient.ZkClient: zookeeper state changed (Disconnected) 2018-01-29 03:37:17,586 ERROR kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-15-337], Error for partition [tv20-long-retention-invalid-topic,23] to broker 337:org.apache.kafka.common.errors.NotLe aderForPartitionException: This server is not the leader for that topic-partition. 2018-01-29 03:37:17,587 ERROR kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-9-337], Error for partition [trckv20-ch-click,22] to broker 337:org.apache.kafka.common.errors.NotLeaderForPartitionEx ception: This server is not the leader for that topic-partition. ................................. 2018-01-29 03:37:17,931 INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server zookeeper-02.cpp.com/192.168.1.101:2181. Will not attempt to authenticate using SASL (unknown error) 2018-01-29 03:37:17,931 INFO org.apache.zookeeper.ClientCnxn: Socket connection established to zookeeper-02.cpp.com/192.168.1.101:2181, initiating session 2018-01-29 03:37:17,933 INFO org.apache.zookeeper.ClientCnxn: Session establishment complete on server zookeeper-02.cpp.com/192.168.1.101:2181, sessionid = 0x3612d6a573501c2, negotiated timeout = 30000 2018-01-29 03:37:17,934 INFO org.I0Itec.zkclient.ZkClient: zookeeper state changed (SyncConnected) 2018-01-29 03:37:18,063 INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server hb03.cpp.com/192.168.0.73:2181. Will not attempt to authenticate using SASL (unknown error) 2018-01-29 03:37:18,063 INFO org.apache.zookeeper.ClientCnxn: Socket connection established to hb03.cpp.com/192.168.0.73:2181, initiating session 2018-01-29 03:37:18,065 INFO org.apache.zookeeper.ClientCnxn: Unable to reconnect to ZooKeeper service, session 0x3612d6a573501c1 has expired, closing socket connection 2018-01-29 03:37:18,065 INFO org.I0Itec.zkclient.ZkClient: zookeeper state changed (Expired) 2018-01-29 03:37:18,065 INFO org.apache.zookeeper.ZooKeeper: Initiating client connection, connectString=hb03.cpp.com:2181,zookeeper-01.cpp.com:2181,zookeeper-02.cpp.com:2181,zookeeper-03.cpp.com:2181,zookeeper-04.cpp.com:2181 sessionTimeout=10000 watcher=org.I0Itec.zkclient.ZkClient@1364a89 2018-01-29 03:37:18,066 INFO kafka.controller.KafkaController$SessionExpirationListener: [SessionExpirationListener on 338], ZK expired; shut down all controller components and try to re-elect 2018-01-29 03:37:18,066 INFO org.apache.zookeeper.ClientCnxn: EventThread shut down 2018-01-29 03:37:18,066 INFO kafka.controller.PartitionStateMachine: [Partition state machine on Controller 338]: Stopped partition state machine 2018-01-29 03:37:18,067 INFO kafka.controller.ReplicaStateMachine: [Replica state machine on controller 338]: Stopped replica state machine 2018-01-29 03:37:18,067 INFO kafka.controller.KafkaController: [Controller 338]: Broker 338 resigned as the controller 2018-01-29 03:37:18,067 INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server hb03.cpp.com/192.168.0.73:2181. Will not attempt to authenticate using SASL (unknown error) 2018-01-29 03:37:18,090 INFO org.apache.zookeeper.ClientCnxn: Socket connection established to hb03.cpp.com/192.168.0.73:2181, initiating session 2018-01-29 03:37:18,152 INFO org.apache.zookeeper.ClientCnxn: Session establishment complete on server hb03.cpp.com/192.168.0.73:2181, sessionid = 0x7612d6a562113a6, negotiated timeout = 10000 2018-01-29 03:37:18,152 INFO org.I0Itec.zkclient.ZkClient: zookeeper state changed (SyncConnected) 2018-01-29 03:37:18,153 INFO kafka.server.KafkaHealthcheck: re-registering broker info in ZK for broker 338 2018-01-29 03:37:18,153 INFO kafka.utils.ZKCheckedEphemeral: Creating /brokers/ids/338 (is it secure? false) 2018-01-29 03:37:18,162 INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server zookeeper-01.cpp.com/192.168.1.100:2181. Will not attempt to authenticate using SASL (unknown error) 2018-01-29 03:37:18,222 ERROR kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-6-337], Error for partition [tv20-long-retention-topic,18] to broker 337:org.apache.kafka.common.errors.NotLeaderForP artitionException: This server is not the leader for that topic-partition. .......................... 2018-01-29 03:37:18,260 INFO kafka.utils.ZKCheckedEphemeral: Result of znode creation is: OK 2018-01-29 03:37:18,260 INFO kafka.utils.ZkUtils: Registered broker 338 at path /brokers/ids/338 with addresses: PLAINTEXT -> EndPoint(historical03.cpp.com,9092,PLAINTEXT) 2018-01-29 03:37:18,260 INFO kafka.server.KafkaHealthcheck: done re-registering broker 2018-01-29 03:37:18,260 INFO kafka.server.KafkaHealthcheck: Subscribing to /brokers/topics path to watch for new topics 2018-01-29 03:37:18,260 ERROR kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-0-337], Error for partition [trckv20-lead-processing,53] to broker 337:org.apache.kafka.common.errors.NotLeaderForPar t itionException: This server is not the leader for that topic-partition. .............and it's ends with ...... 2018-01-29 03:38:13,597 INFO kafka.server.ReplicaFetcherManager: [ReplicaFetcherManager on broker 338] Removed fetcher for partitions 2018-01-29 03:38:13,661 INFO kafka.server.ReplicaFetcherManager: [ReplicaFetcherManager on broker 338] Added fetcher for partitions List() 2018-01-29 03:38:17,254 FATAL kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-8-339], Halting because log truncation is not allowed for topic trckv20-ch-click, Current leader 339's latest offset 4494396139 is less than replica 338's latest offset 4494403425 2018-01-29 03:38:17,254 FATAL kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-12-339], Halting because log truncation is not allowed for topic trckv20-ch-click, Current leader 339's latest offset 4494474772 is less than replica 338's latest offset 4494481669 2018-01-29 03:38:17,254 FATAL kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-10-339], Halting because log truncation is not allowed for topic trckv20-ch-click, Current leader 339's latest offset 4494433300 is less than replica 338's latest offset 4494439854 2018-01-29 03:38:17,254 FATAL kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-2-339], Halting because log truncation is not allowed for topic trckv20-ch-click, Current leader 339's latest offset 4494387381 is less than replica 338's latest offset 4494394866 2018-01-29 03:38:17,254 FATAL kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-6-339], Halting because log truncation is not allowed for topic trckv20-ch-click, Current leader 339's latest offset 4494466871 is less than replica 338's latest offset 4494472899 2018-01-29 03:38:17,254 FATAL kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-4-339], Halting because log truncation is not allowed for topic trckv20-ch-click, Current leader 339's latest offset 4494407851 is less than replica 338's latest offset 4494413095 2018-01-29 03:38:17,254 FATAL kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-14-339], Halting because log truncation is not allowed for topic __consumer_offsets, Current leader 339's latest offs et 168707094 is less than replica 338's latest offset 168707288 2018-01-29 03:38:17,254 FATAL kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-5-339], Halting because log truncation is not allowed for topic tv20-long-retention-topic, Current leader 339's lates t offset 18615 is less than replica 338's latest offset 18616 2018-01-29 03:38:17,254 FATAL kafka.server.ReplicaFetcherThread: [ReplicaFetcherThread-0-339], Halting because log truncation is not allowed for topic trckv20-ch-click, Current leader 339's latest offset 4494445097 is less than replica 338's latest offset 4494450915{code} - only one node kept working - consumers sucked with this message {code:java} msg="Error: kafka server: Request was for a consumer group that is not coordinated by this broker our consumer wrote on golang, and we use sarama-cluster goclient{code} Return kafka to normal state helped `unclean.leader.election.enable=true`, but i had make 3 restaring of kafka cluster - set `unclean.leader.election.enable=true` and restart, wait until kafka goes normal, check logs and dashboard in cloudera. - set `unclean.leader.election.enable=false` and restart, wait untill kafka goes normal, restarted consumers. but something went wrong with consumers. They was could not obtain consumer group. And one of the nodes of kafka, i think, stucked - 2 two nodes writing to log, but this one was silent, and this one was an "Active controller" the same massage in log of consumer: {code:java} "msg="Error: kafka server: Request was for a consumer group that is not coordinated by this broker" {code} - I have restarted "silent" node, and after this all was back to normal state, another node become a "Active controller" Sorry if this a big amount of logs. > Unclean leader election and "Halting because log truncation is not allowed" > --------------------------------------------------------------------------- > > Key: KAFKA-3410 > URL: https://issues.apache.org/jira/browse/KAFKA-3410 > Project: Kafka > Issue Type: Bug > Reporter: James Cheng > Priority: Major > Labels: reliability > > I ran into a scenario where one of my brokers would continually shutdown, > with the error message: > [2016-02-25 00:29:39,236] FATAL [ReplicaFetcherThread-0-1], Halting because > log truncation is not allowed for topic test, Current leader 1's latest > offset 0 is less than replica 2's latest offset 151 > (kafka.server.ReplicaFetcherThread) > I managed to reproduce it with the following scenario: > 1. Start broker1, with unclean.leader.election.enable=false > 2. Start broker2, with unclean.leader.election.enable=false > 3. Create topic, single partition, with replication-factor 2. > 4. Write data to the topic. > 5. At this point, both brokers are in the ISR. Broker1 is the partition > leader. > 6. Ctrl-Z on broker2. (Simulates a GC pause or a slow network) Broker2 gets > dropped out of ISR. Broker1 is still the leader. I can still write data to > the partition. > 7. Shutdown Broker1. Hard or controlled, doesn't matter. > 8. rm -rf the log directory of broker1. (This simulates a disk replacement or > full hardware replacement) > 9. Resume broker2. It attempts to connect to broker1, but doesn't succeed > because broker1 is down. At this point, the partition is offline. Can't write > to it. > 10. Resume broker1. Broker1 resumes leadership of the topic. Broker2 attempts > to join ISR, and immediately halts with the error message: > [2016-02-25 00:29:39,236] FATAL [ReplicaFetcherThread-0-1], Halting because > log truncation is not allowed for topic test, Current leader 1's latest > offset 0 is less than replica 2's latest offset 151 > (kafka.server.ReplicaFetcherThread) > I am able to recover by setting unclean.leader.election.enable=true on my > brokers. > I'm trying to understand a couple things: > * In step 10, why is broker1 allowed to resume leadership even though it has > no data? > * In step 10, why is it necessary to stop the entire broker due to one > partition that is in this state? Wouldn't it be possible for the broker to > continue to serve traffic for all the other topics, and just mark this one as > unavailable? > * Would it make sense to allow an operator to manually specify which broker > they want to become the new master? This would give me more control over how > much data loss I am willing to handle. In this case, I would want broker2 to > become the new master. Or, is that possible and I just don't know how to do > it? -- This message was sent by Atlassian JIRA (v7.6.3#76005)