Unhandled case in refreshNodeInfo on reconnect of Host that is tied to the control connection, prevents connections from being established for that host.

Description

Produced an interesting case where the control connection cannot reestablish a Host that is the same host used for the control connection. The reason why it cannot be established is because ControlConnection#fetchNodeInfo makes the following query if the passed in Host is the same host used for the control connection:

The problem is that ControlConnection#refreshNodeInfo null checks the 'rpc_address' column of the returned row to determine if the node is an availble peer. The system.local table does not return the RPC address so this throws an IllegalArgumentException (added some extra comments in to demonstrate rpc_address is missing and that the control connection used the given host):

I reproduced this by running a single node cassandra cluster running on a local interface. I executed a stress scenario and then used tcpkill to reset connections on port 9042 and then terminated tcpkill shortly after to allow connections to reestablish:

Environment

driver 2.0.8
single node local cassandra-2.0.11

Pull Requests

None

Activity

Show:
Olivier Michallat
December 6, 2014, 6:07 PM

This is a known issue, with a fix planned for 2.0.9.

Andy Tolbert
December 6, 2014, 7:20 PM

Woops, my mistake, good to see this is already addressed, thanks for closing

Duplicate

Assignee

Unassigned

Reporter

Andy Tolbert

Labels

None

PM Priority

None

Reproduced in

None

Affects versions

Fix versions

None

Pull Request

None

Doc Impact

None

Size

None

External issue ID

None

External issue ID

None

Components

Priority

Major
Configure