There's some code in StorageService.onChange that looks like this: // if there is no token data in the endpointstate /* * If we are here and if this node is UP and already has an entry * in the token map. It means that the node was behind a network partition. */ if ( epState.isAlive() && tokenMetadata_.isKnownEndPoint(endpoint) ) { logger_.debug("EndPoint " + ep + " just recovered from a partition. Sending hinted data."); // send hinted handoffs }
I don't see how you could actually have null token data. Since token (NODE_ID) is the first thing a node gossips, and is required for an entry to be added to tokenMetadata, I don't see how that could disappear from EndPointState. My understanding is that Gossiper never actually discards data from EndPointState, only updates it with more-current information (see applyApplicationStateLocally). Am I missing something, or can this part of onChange be safely removed? -Jonathan