[ https://issues.apache.org/jira/browse/KAFKA-1577?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14123543#comment-14123543 ]
Joel Koshy commented on KAFKA-1577: ----------------------------------- I think the main reason to allow the exception (as opposed to an existence check) is that it should never happen. If it does, then it is a bug and we need to know about it. We can either receive a runtime exception or do an existence check and log an error. There are a number of places elsewhere in the code where we expect keys to be present. If not it is a (potentially serious) bug - we would rather let an exception be thrown rather than do an existence check and log an error especially if it is a serious issue. In this case we traced the cause of this occurrence to a race condition that only happens during shutdown which is why swallowing at that point is reasonable since that is the only circumstance under which a missing key is possible (and okay). Going forward, if the exception shows up anytime other than shutdown then we will need to again debug why that is the case and fix it - e.g., if it is related to the same race condition then we should fix that race condition. > Exception in ConnectionQuotas while shutting down > ------------------------------------------------- > > Key: KAFKA-1577 > URL: https://issues.apache.org/jira/browse/KAFKA-1577 > Project: Kafka > Issue Type: Bug > Components: core > Reporter: Joel Koshy > Assignee: Sriharsha Chintalapani > Labels: newbie > Attachments: KAFKA-1577.patch, KAFKA-1577_2014-08-20_19:57:44.patch, > KAFKA-1577_2014-08-26_07:33:13.patch, > KAFKA-1577_check_counter_before_decrementing.patch > > > {code} > [2014-08-07 19:38:08,228] ERROR Uncaught exception in thread > 'kafka-network-thread-9092-0': (kafka.utils.Utils$) > java.util.NoSuchElementException: None.get > at scala.None$.get(Option.scala:185) > at scala.None$.get(Option.scala:183) > at kafka.network.ConnectionQuotas.dec(SocketServer.scala:471) > at kafka.network.AbstractServerThread.close(SocketServer.scala:158) > at kafka.network.AbstractServerThread.close(SocketServer.scala:150) > at kafka.network.AbstractServerThread.closeAll(SocketServer.scala:171) > at kafka.network.Processor.run(SocketServer.scala:338) > at java.lang.Thread.run(Thread.java:662) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)