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

TcpConnectionManager only ever has one connection

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Fix Version/s: 0.5
    • Component/s: None
    • Labels:
      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. cassandra-488-v1.patch
          15 kB
          Gary Dusbabek
        2. cassandra-488-v2.patch
          17 kB
          Gary Dusbabek
        3. 488-v3.patch
          18 kB
          Jonathan Ellis
        4. cassandra-488-v4.patch
          17 kB
          Gary Dusbabek
        5. 488-v5.patch
          17 kB
          Gary Dusbabek

          Activity

            People

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

              Dates

              • Created:
                Updated:
                Resolved: