Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Code
-
Low
-
Normal
-
Code Inspection
-
All
-
None
-
Description
CASSANDRA-7544 introduced changes to allow the storage port number to be configured per-node. As part of that work it introduces new MBeans for MessagingService, FailureDetector providing new 'WithPort' versions that include the new port information, however there are some mistakes and inconsistencies.
3.11.6 trunk trunk w/Port Notes AllEndpointStates /127.0.0.1\n... /127.0.0.3\n... 127.0.0.3:7000\n (trunk /w port different) SimpleStates /127.0.0.2=UP /127.0.0.2=UP 127.0.0.3:7000=UP (trunk /w port different) LargeMessagePendingTasks /127.0.0.1=0 /127.0.0.1=0 127.0.0.3:7000=0 (trunk /w port different) TimeoutsPerHost 127.0.0.1=0 /127.0.0.1=0 127.0.0.3:7000=0 3.0/3.11.6 & trunk differ. BackPressurePerHost 127.0.0.1=Infinity /127.0.0.2=Infinity /127.0.0.2=Infinity 3.11 & trunk differ, missing port number for BackPressurePerHostWithPort SchemaVersions {...=[127.0.0.1,...]} {...=[127.0.0.1,...]} {...=[127.0.0.1:7000,...] TokenToEndpointMap {-92...8=127.0.0.1, -92...8=127.0.0.1 -92..8=127.0.0.1:7000 HostIdMap 127.0.0.1=1ee..6f0af 127.0.0.1=e06...7e MISSING Deprecated for EndpointToHostId EndpointToHostId 127.0.0.1=1ee..6f0a 127.0.0.1=e06...7e 127.0.0.1:7000=e0..7e HostIdToEndpoint 1ee..6f0a=127.0.0.1 e06..7e=127.0.0.1 e06..7e=127.0.0.1:7000 LoadMap 127.0.0.1=185.01 KiB 127.0.0.1:7000=106.08 KiB 127.0.0.1=106.08 Ki LoadMap and LoadMapWithPort are flipped. LiveNodes 127.0.0.1 127.0.0.1 127.0.0.1:7000 Ownership /127.0.0.1=0.333333 /127.0.0.1=0.333333 127.0.0.1:7000=0.333333 Scores /127.0.0.1=0.0 /127.0.0.1=0.0 127.0.0.1:7000=0.0
Proposed changes
1) AllEndpointStats, SimpleStates, Connection message tracking, TimeoutsPerHost - include the host/ip:port in the WithPort version
2) Add port number to BackPressurePerHostWithPort
3) Correct LoadMap to omit port / LoadMapWithPort to include port
4) Ownership - update with port to host/ip:port version
5) Scores - update with port to host/ip:port version
Additionally while dumping out all of the JMX info with `sjk mxdump`
6) DynamicEndpointSnitch.getScoresWithPort now returns an InetAddressAndPort which should just be a String
7) ClientMetrics.clientsByProtocolVersion returns a Guava Immutable map
8) StorageService.getIdealConsistencyLevel fails if none set (as we try and call ConsistencyLevel.toString on a null pointer).