Details
-
Bug
-
Status: Resolved
-
Low
-
Resolution: Fixed
-
None
-
None
-
Low
Description
the code
{{{
if (endPointThatLeft.equals(FBUtilities.getLocalAddress()))
{ logger_.info("Received removeToken gossip about myself. Is this node a replacement for a removed one?"); return; } if (logger_.isDebugEnabled())
logger_.debug("Token " + token + " removed manually (endpoint was " + ((endPointThatLeft == null) ? "unknown" : endPointThatLeft) + ")");
if (endPointThatLeft != null)
}}}
appears wrong: if it is possible for the leaving endpoint to be unknown then the first "if" has a possible null dereference, which can be eliminated by swapping the arguments or reordering the code.
As a side note, I believe FBUtilities.getLocalAddress should probably be synchronized (or localInetAddress made volatile) per the usual "the java MM does not guarantee any change will ever be visible" mantra which may or may not be considered relevant