wangliucheng created KAFKA-15506:
------------------------------------
Summary: follower receive KafkaStorageException before leader
raise disk error
Key: KAFKA-15506
URL: https://issues.apache.org/jira/browse/KAFKA-15506
Project: Kafka
Issue Type: Bug
Components: core
Affects Versions: 3.3.2
Environment: Kafka Version: 3.3.2
Jdk Version: jdk1.8.0_301
Deployment mode: kraft
Reporter: wangliucheng
In my kafka environment, topic has 2 replicas, leader and follower unavailable
when disk error of leader
The follower detects disk error before the leader
Here is the logs:
*follower recive KafkaStorageException:*
{code:java}
[2023-08-17 08:40:15,516] ERROR [ReplicaFetcher replicaId=4, leaderId=1,
fetcherId=10] Error for partition __consumer_offsets-37 at offset 305860652
(kafka.server.ReplicaFetcherThread)
org.apache.kafka.common.errors.KafkaStorageException: Disk error when trying to
access log file on the disk.
{code}
*isr shrink 4,1 to 1:*
{code:java}
[2023-08-17 08:41:49,953] INFO [Partition __consumer_offsets-37 broker=1]
Shrinking ISR from 4,1 to 1. Leader: (highWatermark: 305860652, endOffset:
305860653). Out of sync replicas: (brokerId: 4, endOffset: 305860652).
(kafka.cluster.Partition)
{code}
*broker marking dir to offline:*
{code:java}
[2023-08-17 08:41:50,188] ERROR Error while appending records to
eb_raw_legendsec_flow_2-33 in dir /data09/kafka/log
(kafka.server.LogDirFailureChannel)
java.io.IOException: Read-only file system
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.FileDispatcherImpl.write(FileDispatcherImpl.java:60)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:211)
at
org.apache.kafka.common.record.MemoryRecords.writeFullyTo(MemoryRecords.java:92)
at
org.apache.kafka.common.record.FileRecords.append(FileRecords.java:188)
at kafka.log.LogSegment.append(LogSegment.scala:158)
at kafka.log.LocalLog.append(LocalLog.scala:436)
at kafka.log.UnifiedLog.append(UnifiedLog.scala:949)
at kafka.log.UnifiedLog.appendAsFollower(UnifiedLog.scala:778)
at
kafka.cluster.Partition.doAppendRecordsToFollowerOrFutureReplica(Partition.scala:1121)
at
kafka.cluster.Partition.appendRecordsToFollowerOrFutureReplica(Partition.scala:1128)
at
kafka.server.ReplicaFetcherThread.processPartitionData(ReplicaFetcherThread.scala:121)
at
kafka.server.AbstractFetcherThread.$anonfun$processFetchRequest$7(AbstractFetcherThread.scala:336)
at scala.Option.foreach(Option.scala:437)
at
kafka.server.AbstractFetcherThread.$anonfun$processFetchRequest$6(AbstractFetcherThread.scala:325)
at
kafka.server.AbstractFetcherThread.$anonfun$processFetchRequest$6$adapted(AbstractFetcherThread.scala:324)
at
kafka.utils.Implicits$MapExtensionMethods$.$anonfun$forKeyValue$1(Implicits.scala:62)
at
scala.collection.convert.JavaCollectionWrappers$JMapWrapperLike.foreachEntry(JavaCollectionWrappers.scala:359)
at
scala.collection.convert.JavaCollectionWrappers$JMapWrapperLike.foreachEntry$(JavaCollectionWrappers.scala:355)
at
scala.collection.convert.JavaCollectionWrappers$AbstractJMapWrapper.foreachEntry(JavaCollectionWrappers.scala:309)
at
kafka.server.AbstractFetcherThread.processFetchRequest(AbstractFetcherThread.scala:324)
at
kafka.server.AbstractFetcherThread.$anonfun$maybeFetch$3(AbstractFetcherThread.scala:124)
at
kafka.server.AbstractFetcherThread.$anonfun$maybeFetch$3$adapted(AbstractFetcherThread.scala:123)
at scala.Option.foreach(Option.scala:437)
at
kafka.server.AbstractFetcherThread.maybeFetch(AbstractFetcherThread.scala:123)
at
kafka.server.AbstractFetcherThread.doWork(AbstractFetcherThread.scala:106)
at
kafka.server.ReplicaFetcherThread.doWork(ReplicaFetcherThread.scala:97)
at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:96)
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)