Hi All,

We recently implemented a health check for a Kafka Streams based application. 
The health check is simply checking the state of Kafka Streams by calling 
KafkaStreams.state(). It reports healthy if it’s not in PENDING_SHUTDOWN or 
NOT_RUNNING states. 

We truly appreciate having the possibility to easily check the state of Kafka 
Streams but to our surprise we noticed that KafkaStreams.state() returns 
RUNNING even though all StreamThreads has crashed and reached NOT_RUNNING 
state. Is this intended behaviour or is it a bug? Semantically it seems weird 
to me that KafkaStreams would say it’s RUNNING when it is in fact not consuming 
anything since all underlying working threads has crashed. 

If this is intended behaviour I would appreciate an explanation of why that is 
the case. Also in that case, how could I determine if the consumption from 
Kafka hasn’t crashed? 

If this is not intended behaviour, how fast could I expect it to be fixed? I 
wouldn’t mind fixing it myself but I’m not sure if this is considered trivial 
or big enough to require a JIRA. Also, if I would implement a fix I’d like your 
input on what would be a reasonable solution. By just inspecting to code I have 
an idea but I’m not sure I understand all the implication so I’d be happy to 
hear your thoughts first. 

Thanks in advance,
Andreas Gabrielsson

Reply via email to