[ 
https://issues.apache.org/jira/browse/KAFKA-600?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jay Kreps resolved KAFKA-600.
-----------------------------

    Resolution: Fixed

Since there don't seem to be any objections I am closing out this issue.
                
> kafka should respond gracefully rather than crash when unable to write due to 
> ENOSPC
> ------------------------------------------------------------------------------------
>
>                 Key: KAFKA-600
>                 URL: https://issues.apache.org/jira/browse/KAFKA-600
>             Project: Kafka
>          Issue Type: Bug
>          Components: core
>            Reporter: Tim Stilwell
>
> problem:
> user starts kafka with log.dir value set to a small partition and begins 
> writing data to the mq.  when the disk partition is full, kafka crashes.  
> given that this product is used for both reading and writing operations, 
> crashing seems rather drastic even if the error message is helpful.   
> something more robust would be appreciated.  perhaps, logging an error and 
> rejecting additional write requests while accepting additional read requests? 
>  perhaps, sending an email alert to Operations?  at least shutdown gracefully 
> so the user is aware that received messages were saved with a helpful message 
> providing some details of the last message received.  when tens or hundreds 
> of thousands of messages can be processed in a second, it isn't helpful to 
> merely log a timestamp and crash.
> steps to reproduce:
> 1) download and install kafka
> 2) modify server.properties
>     # vi /opt/kafka-0.7.2-incubating-src/config/server.properties
>     set log.dir="/var/log/kafka"
> 3) modify log4j
>     # vi /opt/kafka-0.7.2-incubating-src/config/log4j.properties
>     set fileAppender.File=/var/log/kafka/kafka-request.log
> 4) start kafka service
>     $ sudo bash
>     # ulimit -c unlimited
>     # /opt/kafka-0.7.2-incubating-src/bin/kafka-server-start.sh 
> /opt/kafka-0.7.2-incubating-src/config/server.properties &
> 6) begin writing data to hostname:9092
> 7) review /var/log/kafka-request.log
> results:
> $ grep log.dir /opt/kafka-0.7.2-incubating-src/config/server.properties
> log.dir=/var/log/kafka
> $ df -h /var/log/kafka
> Filesystem      Size  Used Avail Use% Mounted on
> /dev/sda1       4.0G  4.0G     0 100% /
> $ tail /var/log/kafka/kafka-request.log
> 17627442 [ZkClient-EventThread-14-10.0.20.242:2181] INFO  
> kafka.server.KafkaZooKeeper  - Begin registering broker topic 
> /brokers/topics/raw/0 with 1 partitions
> 17627444 [ZkClient-EventThread-14-10.0.20.242:2181] INFO  
> kafka.server.KafkaZooKeeper  - End registering broker topic 
> /brokers/topics/raw/0
> 17627445 [ZkClient-EventThread-14-10.0.20.242:2181] INFO  
> kafka.server.KafkaZooKeeper  - done re-registering broker
> 18337676 [kafka-processor-3] ERROR kafka.network.Processor  - Closing socket 
> for /10.0.20.138 because of error
> java.io.IOException: Connection reset by peer
>         at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
>         at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
>         at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:218)
>         at sun.nio.ch.IOUtil.read(IOUtil.java:191)
>         at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:359)
>         at kafka.utils.Utils$.read(Utils.scala:538)
>         at 
> kafka.network.BoundedByteBufferReceive.readFrom(BoundedByteBufferReceive.scala:54)
>         at kafka.network.Processor.read(SocketServer.scala:311)
>         at kafka.network.Processor.run(SocketServer.scala:214)
>         at java.lang.Thread.run(Thread.java:722)
> 18391974 [kafka-processor-4] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.138.
> 18422004 [kafka-processor-5] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.138.
> 18434563 [kafka-processor-6] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.138.
> 18485005 [kafka-processor-7] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.138.
> 18497083 [kafka-processor-0] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.138.
> 18525720 [kafka-processor-1] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.138.
> 18543843 [kafka-processor-2] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.138.
> 18563230 [kafka-processor-4] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.138.
> 18575613 [kafka-processor-5] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.138.
> 18677568 [kafka-processor-6] ERROR kafka.network.Processor  - Closing socket 
> for /10.0.20.138 because of error
> java.io.IOException: Connection reset by peer
>         at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
>         at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
>         at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:218)
>         at sun.nio.ch.IOUtil.read(IOUtil.java:191)
>         at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:359)
>         at kafka.utils.Utils$.read(Utils.scala:538)
>         at 
> kafka.network.BoundedByteBufferReceive.readFrom(BoundedByteBufferReceive.scala:54)
>         at kafka.network.Processor.read(SocketServer.scala:311)
>         at kafka.network.Processor.run(SocketServer.scala:214)
>         at java.lang.Thread.run(Thread.java:722)
> 18828016 [kafka-processor-7] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.248.
> 18844274 [kafka-processor-0] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.248.
> 18849691 [kafka-processor-1] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.248.
> 18896883 [kafka-processor-2] INFO  kafka.network.Processor  - Closing socket 
> connection to /10.0.20.248.
> 22383195 [kafka-processor-2] FATAL kafka.log.Log  - Halting due to 
> unrecoverable I/O error while handling producer request
> java.io.IOException: No space left on device
>         at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
>         at sun.nio.ch.FileDispatcherImpl.write(FileDispatcherImpl.java:59)
>         at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:89)
>         at sun.nio.ch.IOUtil.write(IOUtil.java:60)
>         at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:195)
>         at 
> kafka.message.ByteBufferMessageSet.writeTo(ByteBufferMessageSet.scala:76)
>         at kafka.message.FileMessageSet.append(FileMessageSet.scala:159)
>         at kafka.log.LogSegment.append(Log.scala:105)
>         at kafka.log.Log.liftedTree1$1(Log.scala:246)
>         at kafka.log.Log.append(Log.scala:242)
>         at 
> kafka.server.KafkaRequestHandlers.kafka$server$KafkaRequestHandlers$$handleProducerRequest(KafkaRequestHandlers.scala:69)
>         at 
> kafka.server.KafkaRequestHandlers.handleProducerRequest(KafkaRequestHandlers.scala:53)
>         at 
> kafka.server.KafkaRequestHandlers$$anonfun$handlerFor$1.apply(KafkaRequestHandlers.scala:38)
>         at 
> kafka.server.KafkaRequestHandlers$$anonfun$handlerFor$1.apply(KafkaRequestHandlers.scala:38)
>         at kafka.network.Processor.handle(SocketServer.scala:296)
>         at kafka.network.Processor.read(SocketServer.scala:319)
>         at kafka.network.Processor.run(SocketServer.scala:214)
>         at java.lang.Thread.run(Thread.java:722)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to