Review Board 1.7.22


QPID-3007: Unique management identifier for connections.

Review Request #366 - Created Jan. 28, 2011 and submitted

Alan Conway
Reviewers
astitcher, kgiusti, mick, tross
qpid
QPID-3007: Unique management identifier for connections.

Management was using remote socket address (host:port) to identify
connections, but this is not a unique identifier. Both the local and
remote addresses are needed to uniquely identify a connection - see
http://www.faqs.org/rfcs/rfc793.html.

This was causing management errors (multiple objects using same
identifier) and cluster failures (invalid-arg exception) due to
inconsistencies caused by the incorrect management map.

This commit uses "localhost:localport-remotehost:remoteport" as a unique identifier.

 
Review request changed
Updated (Feb. 1, 2011, 12:17 p.m.)
Ship it!
Posted (Feb. 1, 2011, 12:35 p.m.)
nice find.
Posted (Feb. 1, 2011, 12:38 p.m.)
Perhaps it would be better to remove the notion of full address from the protocol/transport code and just expose the remote/local addresses from the lower layers in such a way that the management code can construct an appropriate ID itself.

NB. I think that these IDs aren't guaranteed to be unique even now when considered across transports. For example an RDMA full address could be identical to a TCP/SSL full address if the TCP/SSL connection is IPoIB on the same IB link.

So I suggest it might be better for the management code to prefix the transport name to the ID in any case.
  1. Agreed with all of the above. Since none of this is a regression, I propose to put in the patch as it is right now, and address all your comments in a subsequent commit.
Ship it!
Posted (Feb. 1, 2011, 1:05 p.m.)
Originally you were saying that you wanted protocol to be part of the key -- if that's not necessary then cool, shippit.
Ship it!
Posted (Feb. 21, 2011, 6:38 a.m.)
Comitted r1066220