Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-7765

IdleExpiryManager should not passively close socket used by controller

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 2.1.0
    • Fix Version/s: None
    • Component/s: network
    • Labels:
      None

      Description

      Currently, controller creates sockets for every living brokers without idle timeout. However, processor threads from other brokers 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?

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              huxi_2b huxihx
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: