EndpointState: log and ignore not supported states
During upgrade or version inconsistency. The API can return an un supported state. Instead of throwing an expcetion the state will be ignore and a warning will be written to the log. An example (state where modified in the API) $ nodetool gossipinfo /127.0.0.1 generation:1460450456 heartbeat:32 The log shows: Apr 12, 2016 3:40:20 PM org.apache.cassandra.gms.EndpointState addApplicationState WARNING: Unknown application state with id:25 Fixes scylladb/scylla#1164. Signed-off-by: Amnon Heiman <amnon@scylladb.com> Message-Id: <1460465073-3567-1-git-send-email-amnon@scylladb.com>
This commit is contained in:
parent
a2ec7f2f60
commit
5903271c4d
@ -40,7 +40,8 @@ public class EndpointState {
|
||||
private volatile long updateTimestamp;
|
||||
private volatile boolean isAlive;
|
||||
ApplicationState[] applicationValues;
|
||||
|
||||
private static final java.util.logging.Logger logger = java.util.logging.Logger
|
||||
.getLogger(EndpointState.class.getName());
|
||||
EndpointState(HeartBeatState initialHbState) {
|
||||
applicationValues = ApplicationState.values();
|
||||
hbState = initialHbState;
|
||||
@ -73,6 +74,10 @@ public class EndpointState {
|
||||
}
|
||||
|
||||
void addApplicationState(int key, String value) {
|
||||
if (key >= applicationValues.length) {
|
||||
logger.warning("Unknown application state with id:" + key);
|
||||
return;
|
||||
}
|
||||
addApplicationState(applicationValues[key], value);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user