huxihx created KAFKA-7765: ----------------------------- Summary: IdleExpiryManager should not passively close socket used by controller Key: KAFKA-7765 URL: https://issues.apache.org/jira/browse/KAFKA-7765 Project: Kafka Issue Type: Bug Components: network Affects Versions: 2.1.0 Reporter: huxihx
Currently, controller creates sockets for every living brokers without idle timeout. However, other brokers' processor threads still could close these sockets if no requests flow through them within `connections.max.idle.ms`. Lots of CLOSE_WAITs were left when those sockets were closed by remote peer since controller's RequestSendThread will not check if they are closed by peer. I think we need to figure out a way to record which channels should be maintained and have them excluded by IdleExpiryManager. A naive method is to augment KafkaChannel, making it have a field indicating whether this channel should be kept alive. Does it make any sense? -- This message was sent by Atlassian JIRA (v7.6.3#76005)