Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-488

TcpConnectionManager only ever has one connection

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Low
    • Resolution: Fixed
    • 0.5
    • None
    • None

    Description

      from irc:

      jbellis: am i missing something? it looks like TcpConnectionManager.allConnections_ will only ever contain a single TcpConnection, since before adding any connection it checks contains() first, which relies on TcpConn.equals, which reports that any TcpConns w/ same local & remote endpoints are equal

      junrao: yes, TcpConnectionManager.allConnections_ can have no more than 1 element.

      jbellis: that might explain why it's so easy to swamp things and start getting timeouts – if all your connections are full of command data, "success" replies will have to wait for those to drain out first before being sent

      IMO the Right Design is one connection for commands, one connection for acks/replies, rather than a single pool of connections for everything. that way a connection from A -> B "full" of outgoing commands can't block replies from A -> B acking commands that came the other way.

      Attachments

        1. 488-v3.patch
          18 kB
          Jonathan Ellis
        2. 488-v5.patch
          17 kB
          Gary Dusbabek
        3. cassandra-488-v1.patch
          15 kB
          Gary Dusbabek
        4. cassandra-488-v2.patch
          17 kB
          Gary Dusbabek
        5. cassandra-488-v4.patch
          17 kB
          Gary Dusbabek

        Activity

          People

            gdusbabek Gary Dusbabek
            jbellis Jonathan Ellis
            Gary Dusbabek
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: