Source:
Set<MessageInfo> getMissingStoreMessages(ReplicaMetadataResponseInfo replicaMetadataResponseInfo, DataNodeId remoteNode, RemoteReplicaInfo remoteReplicaInfo) throws StoreException { long startTime = SystemTime.getInstance().milliseconds(); List<MessageInfo> messageInfoList = replicaMetadataResponseInfo.getMessageInfoList(); Map<MessageInfo, StoreKey> remoteMessageToConvertedKeyNonNull = new HashMap<>(); for (MessageInfo messageInfo : messageInfoList) { StoreKey storeKey = messageInfo.getStoreKey(); logger.trace("Remote node: Thread name: Remote replica: Key from remote: {}", remoteNode, threadName, remoteReplicaInfo.getReplicaId(), storeKey); StoreKey convertedKey = storeKeyConverter.getConverted(storeKey); logger.trace("SkipPredicate: {}", skipPredicate); if (convertedKey != null && (!replicationConfig.replicationContainerDeletionEnabled || skipPredicate == null || !skipPredicate.test(messageInfo))) { remoteMessageToConvertedKeyNonNull.put(messageInfo, convertedKey); } } Set<StoreKey> convertedMissingStoreKeys = remoteReplicaInfo.getLocalStore().findMissingKeys(new ArrayList<>(remoteMessageToConvertedKeyNonNull.values())); Set<MessageInfo> missingRemoteMessages = new HashSet<>(); remoteMessageToConvertedKeyNonNull.forEach((messageInfo, convertedKey) -> { if (convertedMissingStoreKeys.contains(convertedKey)) { logger.trace( "Remote node: Thread name: Remote replica: Key missing id (converted): Key missing id (remote): {}", remoteNode, threadName, remoteReplicaInfo.getReplicaId(), convertedKey, messageInfo.getStoreKey()); missingRemoteMessages.add(messageInfo); } }); if (messageInfoList.size() != 0 && missingRemoteMessages.size() == 0) { replicationMetrics.allResponsedKeysExist.inc(); } replicationMetrics.updateCheckMissingKeysTime(SystemTime.getInstance().milliseconds() - startTime, replicatingFromRemoteColo, datacenterName); return missingRemoteMessages; }

Target:
Set<MessageInfo> getMissingStoreMessages(ReplicaMetadataResponseInfo replicaMetadataResponseInfo, DataNodeId remoteNode, RemoteReplicaInfo remoteReplicaInfo) throws StoreException { long startTime = SystemTime.getInstance().milliseconds(); List<MessageInfo> messageInfoList = replicaMetadataResponseInfo.getMessageInfoList(); Map<MessageInfo, StoreKey> remoteMessageToConvertedKeyNonNull = new HashMap<>(); for (MessageInfo messageInfo : messageInfoList) { StoreKey storeKey = messageInfo.getStoreKey(); logger.trace("Remote node: Thread name: Remote replica: Key from remote: {}", remoteNode, threadName, remoteReplicaInfo.getReplicaId(), storeKey); StoreKey convertedKey = storeKeyConverter.getConverted(storeKey); if (skipPredicate == null) { logger.debug("SkipPredicate is null"); } if (convertedKey != null && (!replicationConfig.replicationContainerDeletionEnabled || skipPredicate == null || !skipPredicate.test(messageInfo))) { remoteMessageToConvertedKeyNonNull.put(messageInfo, convertedKey); } } Set<StoreKey> convertedMissingStoreKeys = remoteReplicaInfo.getLocalStore().findMissingKeys(new ArrayList<>(remoteMessageToConvertedKeyNonNull.values())); Set<MessageInfo> missingRemoteMessages = new HashSet<>(); remoteMessageToConvertedKeyNonNull.forEach((messageInfo, convertedKey) -> { if (convertedMissingStoreKeys.contains(convertedKey)) { logger.trace( "Remote node: Thread name: Remote replica: Key missing id (converted): Key missing id (remote): {}", remoteNode, threadName, remoteReplicaInfo.getReplicaId(), convertedKey, messageInfo.getStoreKey()); missingRemoteMessages.add(messageInfo); } }); if (messageInfoList.size() != 0 && missingRemoteMessages.size() == 0) { replicationMetrics.allResponsedKeysExist.inc(); } replicationMetrics.updateCheckMissingKeysTime(SystemTime.getInstance().milliseconds() - startTime, replicatingFromRemoteColo, datacenterName); return missingRemoteMessages; }