You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bo...@apache.org on 2017/03/10 18:40:13 UTC
geode git commit: GEODE-2638: GatewaySenders now start even if
configured with locators on unknown hosts
Repository: geode
Updated Branches:
refs/heads/develop 12318c5c4 -> e3c05b724
GEODE-2638: GatewaySenders now start even if configured with locators on unknown hosts
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/e3c05b72
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/e3c05b72
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/e3c05b72
Branch: refs/heads/develop
Commit: e3c05b72476b19ac477e54378edf25d823c89a1e
Parents: 12318c5
Author: Barry Oglesby <bo...@pivotal.io>
Authored: Thu Mar 9 09:28:39 2017 -0800
Committer: Barry Oglesby <bo...@pivotal.io>
Committed: Fri Mar 10 10:08:38 2017 -0800
----------------------------------------------------------------------
.../geode/internal/i18n/LocalizedStrings.java | 5 ++
.../cache/wan/AbstractRemoteGatewaySender.java | 15 ++++-
.../geode/internal/cache/wan/WANTestBase.java | 23 +++++++
.../wan/misc/WanAutoDiscoveryDUnitTest.java | 63 ++++++++++++++++++++
4 files changed, 103 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/e3c05b72/geode-core/src/main/java/org/apache/geode/internal/i18n/LocalizedStrings.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/i18n/LocalizedStrings.java b/geode-core/src/main/java/org/apache/geode/internal/i18n/LocalizedStrings.java
index 47ae0c5..1d288ec 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/i18n/LocalizedStrings.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/i18n/LocalizedStrings.java
@@ -7672,6 +7672,11 @@ public class LocalizedStrings {
new StringId(6651, "Lucene index {0} was not found in region {1}.");
public static final StringId LuceneService_DESTROYED_INDEX_0_FROM_REGION_1 =
new StringId(6652, "Destroyed Lucene index {0} from region {1}.");
+
+ public static final StringId PoolFactoryImpl_CAUGHT_EXCEPTION_ATTEMPTING_TO_ADD_REMOTE_LOCATOR_0 =
+ new StringId(6653,
+ "Caught the following exception attempting to add remote locator {0}. The locator will be ignored.");
+
/** Testing strings, messageId 90000-99999 **/
/**
http://git-wip-us.apache.org/repos/asf/geode/blob/e3c05b72/geode-wan/src/main/java/org/apache/geode/internal/cache/wan/AbstractRemoteGatewaySender.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/main/java/org/apache/geode/internal/cache/wan/AbstractRemoteGatewaySender.java b/geode-wan/src/main/java/org/apache/geode/internal/cache/wan/AbstractRemoteGatewaySender.java
index 918c723..68eb56c 100644
--- a/geode-wan/src/main/java/org/apache/geode/internal/cache/wan/AbstractRemoteGatewaySender.java
+++ b/geode-wan/src/main/java/org/apache/geode/internal/cache/wan/AbstractRemoteGatewaySender.java
@@ -99,9 +99,18 @@ public abstract class AbstractRemoteGatewaySender extends AbstractGatewaySender
StringBuffer strBuffer = new StringBuffer();
Iterator<String> itr = response.getLocators().iterator();
while (itr.hasNext()) {
- DistributionLocatorId locatorId = new DistributionLocatorId(itr.next());
- pf.addLocator(locatorId.getHost().getHostName(), locatorId.getPort());
- locatorCount++;
+ String remoteLocator = itr.next();
+ try {
+ DistributionLocatorId locatorId = new DistributionLocatorId(remoteLocator);
+ pf.addLocator(locatorId.getHost().getHostName(), locatorId.getPort());
+ locatorCount++;
+ } catch (Exception e) {
+ if (logProxyFailure()) {
+ logger.warn(LocalizedMessage.create(
+ LocalizedStrings.PoolFactoryImpl_CAUGHT_EXCEPTION_ATTEMPTING_TO_ADD_REMOTE_LOCATOR_0,
+ new Object[] {remoteLocator}), e);
+ }
+ }
}
break;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/e3c05b72/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java
index c8de7dc..0656dd8 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/WANTestBase.java
@@ -67,6 +67,7 @@ import org.apache.geode.cache.asyncqueue.internal.AsyncEventQueueImpl;
import org.apache.geode.cache.client.Pool;
import org.apache.geode.cache.client.PoolManager;
import org.apache.geode.cache.client.internal.LocatorDiscoveryCallbackAdapter;
+import org.apache.geode.cache.client.internal.PoolImpl;
import org.apache.geode.cache.client.internal.locator.wan.LocatorMembershipListener;
import org.apache.geode.cache.persistence.PartitionOfflineException;
import org.apache.geode.cache.server.CacheServer;
@@ -3032,6 +3033,16 @@ public class WANTestBase extends JUnit4DistributedTestCase {
return System.currentTimeMillis();
}
+ public static void putRemoteSiteLocators(int remoteDsId, Set<String> remoteLocators) {
+ List<Locator> locatorsConfigured = Locator.getLocators();
+ Locator locator = locatorsConfigured.get(0);
+ if (remoteLocators != null) {
+ // Add fake remote locators to the locators map
+ ((InternalLocator) locator).getlocatorMembershipListener().getAllServerLocatorsInfo()
+ .put(remoteDsId, remoteLocators);
+ }
+ }
+
public static void checkLocatorsinSender(String senderId, InetSocketAddress locatorToWaitFor)
throws InterruptedException {
@@ -3426,6 +3437,18 @@ public class WANTestBase extends JUnit4DistributedTestCase {
assertTrue(sender.isRunning());
}
+ public static void verifyPool(String senderId, boolean poolShouldExist,
+ int expectedPoolLocatorsSize) {
+ AbstractGatewaySender sender = (AbstractGatewaySender) cache.getGatewaySender(senderId);
+ PoolImpl pool = sender.getProxy();
+ if (poolShouldExist) {
+ assertNotNull(pool);
+ assertEquals(expectedPoolLocatorsSize, pool.getLocators().size());
+ } else {
+ assertNull(pool);
+ }
+ }
+
public static void removeSenderFromTheRegion(String senderId, String regionName) {
Region region = cache.getRegion(regionName);
assertNotNull(region);
http://git-wip-us.apache.org/repos/asf/geode/blob/e3c05b72/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WanAutoDiscoveryDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WanAutoDiscoveryDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WanAutoDiscoveryDUnitTest.java
index 388760e..3e94697 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WanAutoDiscoveryDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WanAutoDiscoveryDUnitTest.java
@@ -14,6 +14,7 @@
*/
package org.apache.geode.internal.cache.wan.misc;
+import org.apache.geode.test.dunit.IgnoredException;
import org.junit.Ignore;
import org.junit.experimental.categories.Category;
import org.junit.Test;
@@ -581,4 +582,66 @@ public class WanAutoDiscoveryDUnitTest extends WANTestBase {
fail(builder.toString());
}
}
+
+ @Test
+ public void testNoRemoteLocators() {
+ IgnoredException ie = IgnoredException
+ .addIgnoredException("could not get remote locator information for remote site");
+ try {
+ testRemoteLocators(null, false, 0);
+ } finally {
+ ie.remove();
+ }
+ }
+
+ @Test
+ public void testValidHostRemoteLocators() {
+ Set<String> remoteLocators = new HashSet();
+ remoteLocators.add("localhost[12345]");
+ testRemoteLocators(remoteLocators, true, 1);
+ }
+
+ @Test
+ public void testInvalidHostRemoteLocators() {
+ IgnoredException ie = IgnoredException
+ .addIgnoredException("could not get remote locator information for remote site");
+ try {
+ Set<String> remoteLocators = new HashSet();
+ remoteLocators.add("unknown[12345]");
+ testRemoteLocators(remoteLocators, false, 0);
+ } finally {
+ ie.remove();
+ }
+ }
+
+ @Test
+ public void testValidAndInvalidHostRemoteLocators() {
+ Set<String> remoteLocators = new HashSet();
+ remoteLocators.add("localhost[12345]");
+ remoteLocators.add("unknown[12345]");
+ testRemoteLocators(remoteLocators, true, 1);
+ }
+
+ private void testRemoteLocators(Set<String> remoteLocators, boolean poolShouldExist,
+ int expectedPoolLocatorsSize) {
+ // Start locator
+ Integer lnLocPort = (Integer) vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId(1));
+
+ // Add remote locators
+ int remoteDsId = 2;
+ vm0.invoke(() -> WANTestBase.putRemoteSiteLocators(remoteDsId, remoteLocators));
+
+ // Create cache
+ vm2.invoke(() -> WANTestBase.createCache(lnLocPort));
+
+ // Create sender
+ vm2.invoke(() -> WANTestBase.createSender("ln", remoteDsId, false, 100, 10, false, false, null,
+ false));
+
+ // Verify sender is running
+ vm2.invoke(() -> WANTestBase.verifySenderRunningState("ln"));
+
+ // Verify pool exists or not
+ vm2.invoke(() -> WANTestBase.verifyPool("ln", poolShouldExist, expectedPoolLocatorsSize));
+ }
}