[JBoss JIRA] Created: (JGRP-549) ConnectionTable: spurious Connection instances on concurrent connects
by Bela Ban (JIRA)
ConnectionTable: spurious Connection instances on concurrent connects
---------------------------------------------------------------------
Key: JGRP-549
URL: http://jira.jboss.com/jira/browse/JGRP-549
Project: JGroups
Issue Type: Bug
Reporter: Bela Ban
Assigned To: Bela Ban
Fix For: 2.6
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)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 6 months
[JBoss JIRA] Created: (JBAS-4558) Connection Timeout Immediately After ACKing A Request
by Mike Millson (JIRA)
Connection Timeout Immediately After ACKing A Request
-----------------------------------------------------
Key: JBAS-4558
URL: http://jira.jboss.com/jira/browse/JBAS-4558
Project: JBoss Application Server
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Web Services
Affects Versions: JBossAS-4.0.2 Final
Reporter: Mike Millson
Assigned To: Thomas Diesler
The customer has an application that periodically sends Web service requests to JBoss AS every 20 secs in sets of 4, to check wether the Web Service is up. They find that JBoss AS occasionally drops the request packets when the HTTP connector timeout is set to 20 seconds. When this happens, the packet sequence is very strange. Attached is an example packet sequence viewable using ethereal/WireShark.
#275: Client sends request >20 seconds after #274 acknowledgment
#276: Server sends ACK for #275
#277: Server sends connection timeout FIN/ACK
#278 Client sends combined ACK for #277 and FIN/ACK
#279 Server sends ACK for #278
Packet #275 was more than 20 seconds after the last packet was sent; however, it was received before the server initiated the connection timeout sequence in packets #277-279. It seems to be unaware of the ACK in #276. Almost as if the timeout sequence started, then before the FIN/ACK could be sent, another packet was received and acknowledged. Some sort of timing issue when a request is sent at the same time a connection times out.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 6 months