Uploaded image for project: 'JBoss Enterprise Application Platform 4 and 5'
  1. JBoss Enterprise Application Platform 4 and 5
  2. JBPAPP-2128

JGroups ConnectionTable Can Have Spurious Connection Instances On Concurrent Connects

XMLWordPrintable

    • Icon: Support Patch Support Patch
    • Resolution: Done
    • Icon: Major Major
    • One Off Releases
    • 4.3.0.GA_CP04
    • Clustering
    • None
    • JGroups_2_4_5_GA_JGRP_549
    • Hide
      PATCH NAME:
              JBPAPP-2128
      PRODUCT NAME:
              JBoss Application Server/Platform
      VERSION:
              4.3 CP04
      SHORT DESCRIPTION:
              JGroups ConnectionTable Can Have Spurious Connection Instances On Concurrent Connects
      LONG DESCRIPTION:
              JGroups ConnectionTable can have spurious Connection instances on concurrent connects which can result in continuous QueueClosedExceptions as well as cause clusters to not heal after being split.
      MANUAL INSTALL INSTRUCTIONS:
              Rename %JBOSS_HOME%/server/all/lib/jgroups.jar to "jgroups.replacedBy.JBPAPP-2128.jar.old"
              Copy the new jgroups.jar to %JBOSS_HOME%/server/all/lib/jgroups.jar

              Rename %JBOSS_HOME%/server/production/lib/jgroups.jar to "jgroups.replacedBy.JBPAPP-2128.jar.old"
              Copy the new jgroups.jar to %JBOSS_HOME%/server/production/lib/jgroups.jar

              Follow this same procedure for any custom server configuration/profile that needs this patch.
      COMPATIBILITY:
              N/A
      DEPENDENCIES:
              N/A
      SUPERSEDES:
              N/A
      SUPERSEDED BY:
              JBoss EAP 4.3 CP06
      CREATOR:
              Dennis Reed
      DATE:
              2009/06/20
      Show
      PATCH NAME:          JBPAPP-2128 PRODUCT NAME:         JBoss Application Server/Platform VERSION:         4.3 CP04 SHORT DESCRIPTION:         JGroups ConnectionTable Can Have Spurious Connection Instances On Concurrent Connects LONG DESCRIPTION:         JGroups ConnectionTable can have spurious Connection instances on concurrent connects which can result in continuous QueueClosedExceptions as well as cause clusters to not heal after being split. MANUAL INSTALL INSTRUCTIONS:         Rename %JBOSS_HOME%/server/all/lib/jgroups.jar to "jgroups.replacedBy. JBPAPP-2128 .jar.old"         Copy the new jgroups.jar to %JBOSS_HOME%/server/all/lib/jgroups.jar         Rename %JBOSS_HOME%/server/production/lib/jgroups.jar to "jgroups.replacedBy. JBPAPP-2128 .jar.old"         Copy the new jgroups.jar to %JBOSS_HOME%/server/production/lib/jgroups.jar         Follow this same procedure for any custom server configuration/profile that needs this patch. COMPATIBILITY:         N/A DEPENDENCIES:         N/A SUPERSEDES:         N/A SUPERSEDED BY:         JBoss EAP 4.3 CP06 CREATOR:         Dennis Reed DATE:         2009/06/20
    • Low

      If we have members A and B, and they don't yet have connections to each other, and start sending messages to each other at the exact same time, then we run into the following scenario:

      • A attempts to connect to B (new Socket())
      • B attempts to connect to A
      • A accepts B's connection and adds an entry for B into its table
      • B adds an entry for A into its table
      • B gets the accept() from A, but doesn't add the new Connection into its table because there is already a Connection. This leads to a spurious Connection object, which will only be closed and garbage collected once A or B leaves the cluster
      • We used to close Connections which were already in the table, but this lead to ping-pong effects where concurrent initial senders always closed each others connections
      • Even worse: a new Socket() always creates a new Connection object and places it into the table, regardless of whether a Connection for a given destination already exists or not !

      GOAL:
      #1 Have only 1 TCP connection between any 2 members
      #2 Establish a handshaking mechanism, to avoid spurious connections

      SOLUTION:

      • When A establishes a connection to B, A needs to get agreement from B first (and vice versa)

              jbn-patch-team JBN Patch Team list
              rhn-support-jawilson Jimmy Wilson
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: