mivanac commented on a change in pull request #6013:
URL: https://github.com/apache/geode/pull/6013#discussion_r577791897
##########
File path:
geode-wan/src/main/java/org/apache/geode/cache/client/internal/locator/wan/LocatorHelper.java
##########
@@ -46,13 +47,42 @@ public static boolean addLocator(int distributedSystemId,
DistributionLocatorId
Set<DistributionLocatorId> existingValue =
allLocatorsInfo.putIfAbsent(distributedSystemId, locatorsSet);
if (existingValue != null) {
- if (!existingValue.contains(locator)) {
+ if (!locator.getMemberName().equals(DistributionConfig.DEFAULT_NAME)) {
+ DistributionLocatorId existingLocator =
+ getLocatorWithSameMemberName(existingValue, locator);
+
+ if (existingLocator != null) {
+ // if locator with same name exist, check did all parameters are same
+ if (!locator.detailCompare(existingLocator)) {
+ // some parameters had changed for existing locator
+ // replace it
+ existingValue.remove(existingLocator);
+ ConcurrentHashMap<Integer, Set<String>> allServerLocatorsInfo =
+ (ConcurrentHashMap<Integer, Set<String>>) locatorListener
+ .getAllServerLocatorsInfo();
+ Set<String> alllocators =
allServerLocatorsInfo.get(distributedSystemId);
+ alllocators.remove(existingLocator.toString());
+ existingValue.add(locator);
+ addServerLocator(distributedSystemId, locatorListener, locator);
+ locatorListener.locatorJoined(distributedSystemId, locator,
sourceLocator);
+ return true;
+ }
+ return false;
+ }
existingValue.add(locator);
Review comment:
I think that test case is not realistic. Is it realistic that locator at
restart will change its name. But if this is the case, and also if we are now
storing member name, then in that case we should store new member name. I can
change this, so test case passes, but this will be inconsistent behavior.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]