You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Mickael Maison (JIRA)" <ji...@apache.org> on 2019/06/19 09:07:00 UTC

[jira] [Created] (KAFKA-8564) NullPointerException when loading logs at startup

Mickael Maison created KAFKA-8564:
-------------------------------------

             Summary: NullPointerException when loading logs at startup
                 Key: KAFKA-8564
                 URL: https://issues.apache.org/jira/browse/KAFKA-8564
             Project: Kafka
          Issue Type: Bug
          Components: log
    Affects Versions: 2.2.1, 2.3.0
            Reporter: Mickael Maison


If brokers restart when topics are being deleted, it's possible to end up with a partition folder with the deleted suffix but without any log segments:

{{ls -la ./kafka-logs/3part3rep5-1.f2ce83b86df9416abe50d2e2299009c2-delete/
total 8
drwxr-xr-x@  4 mickael  staff   128  6 Jun 14:35 .
drwxr-xr-x@ 61 mickael  staff  1952  6 Jun 14:35 ..
-rw-r--r--@  1 mickael  staff    10  6 Jun 14:32 00000000000023261863.snapshot
-rw-r--r--@  1 mickael  staff     0  6 Jun 14:35 leader-epoch-checkpoint}}

From 2.2.1, brokers fail to start when loading such folders:

{{[2019-06-19 09:40:48,123] ERROR There was an error in one of the threads during logs loading: java.lang.NullPointerException (kafka.log.LogManager)
[2019-06-19 09:40:48,126] ERROR [KafkaServer id=1] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
java.lang.NullPointerException
	at kafka.log.Log.activeSegment(Log.scala:1896)
	at kafka.log.Log.<init>(Log.scala:295)
	at kafka.log.Log$.apply(Log.scala:2186)
	at kafka.log.LogManager.loadLog(LogManager.scala:275)
	at kafka.log.LogManager.$anonfun$loadLogs$12(LogManager.scala:345)
	at kafka.utils.CoreUtils$$anon$1.run(CoreUtils.scala:63)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)}}

With 2.2.0, upon loading such folders, brokers create a new empty log segment and load that successfully.

The change of behaviour was introduced in https://github.com/apache/kafka/commit/f000dab5442ce49c4852823c257b4fb0cdfe15aa




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)