You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ab...@apache.org on 2015/12/02 18:28:33 UTC
[1/9] incubator-geode git commit: GEODE-578: Add test category to
unit test
Repository: incubator-geode
Updated Branches:
refs/heads/feature/GEODE-608 4f20abab0 -> 2def1128e
GEODE-578: Add test category to unit test
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/2803a105
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/2803a105
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/2803a105
Branch: refs/heads/feature/GEODE-608
Commit: 2803a105e02b03da534abe643fdaec66e236e33c
Parents: b8fb18a
Author: Anthony Baker <ab...@pivotal.io>
Authored: Sat Nov 28 08:17:46 2015 -0800
Committer: Anthony Baker <ab...@pivotal.io>
Committed: Sat Nov 28 08:17:46 2015 -0800
----------------------------------------------------------------------
.../cache/xmlcache/CacheCreationJUnitTest.java | 28 +++++++++++---------
1 file changed, 15 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2803a105/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheCreationJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheCreationJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheCreationJUnitTest.java
index 2cdf80c..f159b3b 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheCreationJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheCreationJUnitTest.java
@@ -16,27 +16,29 @@
*/
package com.gemstone.gemfire.internal.cache.xmlcache;
-import com.gemstone.gemfire.cache.server.CacheServer;
-import com.gemstone.gemfire.internal.cache.CacheServerImpl;
-import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
-
-
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import static org.mockito.Mockito.*;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import com.gemstone.gemfire.cache.server.CacheServer;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
-/**
- * Created by pivotal on 11/19/15.
- */
+@Category(UnitTest.class)
public class CacheCreationJUnitTest {
@Mock
[6/9] incubator-geode git commit: GEODE-611: Change findbugs
annotations to use ASL library
Posted by ab...@apache.org.
GEODE-611: Change findbugs annotations to use ASL library
Swtich the findbugs annotation dependency to use an ASL version
from https://github.com/stephenc/findbugs-annotations. This
library only supports the SuppressWarning annotation, not
SuppressFBWarning so some source files were updated.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/4d6df30a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/4d6df30a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/4d6df30a
Branch: refs/heads/feature/GEODE-608
Commit: 4d6df30af1d4d6be997eb4b46fb57790c197c6de
Parents: 5a9fdb8
Author: Anthony Baker <ab...@pivotal.io>
Authored: Sun Nov 29 08:17:42 2015 -0800
Committer: Anthony Baker <ab...@pivotal.io>
Committed: Tue Dec 1 11:38:16 2015 -0800
----------------------------------------------------------------------
build.gradle | 1 +
gemfire-core/build.gradle | 1 -
.../com/gemstone/gemfire/SystemFailure.java | 4 +--
.../gemfire/admin/jmx/internal/AgentImpl.java | 15 +++++------
.../internal/GemFireHealthConfigJmxImpl.java | 14 +++++-----
.../cache/query/internal/CompiledOperation.java | 4 +--
.../gemfire/internal/StatArchiveWriter.java | 28 +++++++++-----------
.../internal/cache/AbstractUpdateOperation.java | 4 +--
.../internal/cache/TXStateProxyImpl.java | 4 +--
.../cache/tier/sockets/AcceptorImpl.java | 4 +--
.../cache/tier/sockets/BaseCommand.java | 18 +------------
.../tier/sockets/ClientProxyMembershipID.java | 5 +---
.../cache/versions/RegionVersionVector.java | 6 ++---
.../internal/datasource/AbstractPoolCache.java | 4 +--
.../internal/memcached/commands/GetCommand.java | 7 +----
.../internal/statistics/SampleCollector.java | 4 +--
.../gemfire/internal/util/DebuggerSupport.java | 4 +--
.../gemfire/internal/util/SingletonValue.java | 6 ++---
.../CustomEntryConcurrentHashMap.java | 8 ++----
gradle/dependency-versions.properties | 1 +
20 files changed, 46 insertions(+), 96 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/build.gradle
----------------------------------------------------------------------
diff --git a/build.gradle b/build.gradle
index 991488b..b5465b8 100755
--- a/build.gradle
+++ b/build.gradle
@@ -304,6 +304,7 @@ subprojects {
compile 'org.springframework:spring-expression:' + project.'springframework.version'
compile 'org.springframework:spring-web:' + project.'springframework.version'
compile 'org.springframework:spring-webmvc:' + project.'springframework.version'
+ compile 'com.github.stephenc.findbugs:findbugs-annotations:' + project.'stephenc-findbugs.version'
testCompile 'com.jayway.awaitility:awaitility:' + project.'awaitility.version'
testCompile 'com.github.stefanbirkner:system-rules:' + project.'system-rules.version'
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/build.gradle
----------------------------------------------------------------------
diff --git a/gemfire-core/build.gradle b/gemfire-core/build.gradle
index 8e45a97..dd3b765 100755
--- a/gemfire-core/build.gradle
+++ b/gemfire-core/build.gradle
@@ -19,7 +19,6 @@ dependencies {
compile 'com.fasterxml.jackson.core:jackson-annotations:' + project.'jackson.version'
compile 'com.fasterxml.jackson.core:jackson-core:' + project.'jackson.version'
compile 'com.fasterxml.jackson.core:jackson-databind:' + project.'jackson.version'
- compile 'com.google.code.findbugs:annotations:' + project.'annotations.version'
provided 'com.google.guava:guava:' + project.'guava.version'
compile 'commons-io:commons-io:' + project.'commons-io.version'
compile 'commons-lang:commons-lang:' + project.'commons-lang.version'
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/SystemFailure.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/SystemFailure.java b/gemfire-core/src/main/java/com/gemstone/gemfire/SystemFailure.java
index b37f257..494f5f7 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/SystemFailure.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/SystemFailure.java
@@ -24,8 +24,6 @@ import com.gemstone.gemfire.internal.admin.remote.RemoteGfManagerAgent;
import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* Catches and responds to JVM failure
* <p>
@@ -190,7 +188,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
* @author jpenney
* @since 5.1
*/
-@SuppressFBWarnings(value="DM_GC", justification="This class performs System.gc as last ditch effort during out-of-memory condition.")
+@edu.umd.cs.findbugs.annotations.SuppressWarnings(value="DM_GC", justification="This class performs System.gc as last ditch effort during out-of-memory condition.")
public final class SystemFailure {
/**
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/admin/jmx/internal/AgentImpl.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/admin/jmx/internal/AgentImpl.java b/gemfire-core/src/main/java/com/gemstone/gemfire/admin/jmx/internal/AgentImpl.java
index 2acea99..4d1ad41 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/admin/jmx/internal/AgentImpl.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/admin/jmx/internal/AgentImpl.java
@@ -44,6 +44,8 @@ import javax.management.remote.JMXServiceURL;
import javax.management.remote.rmi.RMIConnectorServer;
import javax.rmi.ssl.SslRMIClientSocketFactory;
+import mx4j.tools.adaptor.http.HttpAdaptor;
+
import org.apache.logging.log4j.Logger;
import com.gemstone.gemfire.GemFireException;
@@ -56,6 +58,7 @@ import com.gemstone.gemfire.admin.jmx.Agent;
import com.gemstone.gemfire.admin.jmx.AgentConfig;
import com.gemstone.gemfire.admin.jmx.AgentFactory;
import com.gemstone.gemfire.distributed.internal.DistributionManager;
+import com.gemstone.gemfire.i18n.StringId;
import com.gemstone.gemfire.internal.Banner;
import com.gemstone.gemfire.internal.GemFireVersion;
import com.gemstone.gemfire.internal.admin.remote.TailLogResponse;
@@ -70,10 +73,6 @@ import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
import com.gemstone.gemfire.internal.logging.log4j.LogWriterAppender;
import com.gemstone.gemfire.internal.logging.log4j.LogWriterAppenders;
-import com.gemstone.gemfire.i18n.StringId;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import mx4j.tools.adaptor.http.HttpAdaptor;
/**
* The GemFire JMX Agent provides the ability to administrate one GemFire
@@ -406,7 +405,7 @@ implements com.gemstone.gemfire.admin.jmx.Agent,
*
* @return the object name of the system that the Agent is now connected to
*/
- @SuppressFBWarnings(value="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification="This is only a style warning.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification="This is only a style warning.")
public ObjectName connectToSystem()
throws AdminException, MalformedObjectNameException {
synchronized(CONN_SYNC) {
@@ -454,7 +453,7 @@ implements com.gemstone.gemfire.admin.jmx.Agent,
/**
* Disconnects from the current DistributedSystem (if connected to one).
*/
- @SuppressFBWarnings(value="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification="This is only a style warning.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification="This is only a style warning.")
public void disconnectFromSystem() {
synchronized(CONN_SYNC) {
try {
@@ -878,7 +877,7 @@ implements com.gemstone.gemfire.admin.jmx.Agent,
/**
* Creates a LogWriterI18n for this Agent to use in logging.
*/
- @SuppressFBWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE", justification="Return value for file delete is not important here.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE", justification="Return value for file delete is not important here.")
private void initLogWriter() throws com.gemstone.gemfire.admin.AdminException {
final LogConfig logConfig = this.agentConfig.createLogConfig();
@@ -1570,7 +1569,7 @@ class ConnectionNotificationAdapter implements NotificationListener {
* the listener. The MBean object should not use or modify the
* object. (NOTE: copied from javax.management.NotificationListener)
*/
- @SuppressFBWarnings(value="BC_UNCONFIRMED_CAST", justification="Only JMXConnectionNotification instances are used.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BC_UNCONFIRMED_CAST", justification="Only JMXConnectionNotification instances are used.")
public void handleNotification(Notification notification, Object handback) {
if (handback instanceof AgentImpl) {
AgentImpl agent = (AgentImpl) handback;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/admin/jmx/internal/GemFireHealthConfigJmxImpl.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/admin/jmx/internal/GemFireHealthConfigJmxImpl.java b/gemfire-core/src/main/java/com/gemstone/gemfire/admin/jmx/internal/GemFireHealthConfigJmxImpl.java
index a55a616..c05d4b8 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/admin/jmx/internal/GemFireHealthConfigJmxImpl.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/admin/jmx/internal/GemFireHealthConfigJmxImpl.java
@@ -16,13 +16,13 @@
*/
package com.gemstone.gemfire.admin.jmx.internal;
-import com.gemstone.gemfire.admin.*;
-import com.gemstone.gemfire.admin.internal.*;
+import javax.management.ObjectName;
+import javax.management.modelmbean.ModelMBean;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
-import javax.management.*;
-import javax.management.modelmbean.*;
+import com.gemstone.gemfire.admin.AdminException;
+import com.gemstone.gemfire.admin.GemFireHealth;
+import com.gemstone.gemfire.admin.GemFireHealthConfig;
+import com.gemstone.gemfire.admin.internal.GemFireHealthConfigImpl;
/**
* The JMX "managed resource" that represents the configuration for
@@ -46,7 +46,7 @@ import javax.management.modelmbean.*;
*
* @since 3.5
*/
-@SuppressFBWarnings(justification="This class is deprecated. Also, any further changes so close to the release is inadvisable.")
+@edu.umd.cs.findbugs.annotations.SuppressWarnings(justification="This class is deprecated. Also, any further changes so close to the release is inadvisable.")
public class GemFireHealthConfigJmxImpl
implements GemFireHealthConfig, ManagedResource, java.io.Serializable {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/cache/query/internal/CompiledOperation.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/cache/query/internal/CompiledOperation.java b/gemfire-core/src/main/java/com/gemstone/gemfire/cache/query/internal/CompiledOperation.java
index 957f0fe..d9f0d6c 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/cache/query/internal/CompiledOperation.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/cache/query/internal/CompiledOperation.java
@@ -41,8 +41,6 @@ import com.gemstone.gemfire.pdx.PdxSerializationException;
import com.gemstone.gemfire.pdx.internal.PdxInstanceImpl;
import com.gemstone.gemfire.pdx.internal.PdxString;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* Class Description
*
@@ -223,7 +221,7 @@ public class CompiledOperation extends AbstractCompiledValue {
return context.addDependencies(this, rcvr.computeDependencies(context));
}
- @SuppressFBWarnings(value="RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED", justification="Does not matter if the methodDispatch that isn't stored in the map is used")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED", justification="Does not matter if the methodDispatch that isn't stored in the map is used")
private Object eval0(Object receiver, Class resolutionType, ExecutionContext context)
throws TypeMismatchException, FunctionDomainException, NameResolutionException,
QueryInvocationTargetException {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/StatArchiveWriter.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/StatArchiveWriter.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/StatArchiveWriter.java
index c2bf3bd..562cce3 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/StatArchiveWriter.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/StatArchiveWriter.java
@@ -16,19 +16,6 @@
*/
package com.gemstone.gemfire.internal;
-import com.gemstone.gemfire.GemFireIOException;
-import com.gemstone.gemfire.InternalGemFireException;
-import com.gemstone.gemfire.StatisticDescriptor;
-import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
-import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
-import com.gemstone.gemfire.internal.statistics.ResourceInstance;
-import com.gemstone.gemfire.internal.statistics.ResourceType;
-import com.gemstone.gemfire.internal.statistics.SampleHandler;
-import com.gemstone.gemfire.internal.statistics.StatArchiveDescriptor;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
import java.io.BufferedOutputStream;
import java.io.DataInput;
import java.io.DataOutput;
@@ -49,6 +36,17 @@ import java.util.zip.GZIPOutputStream;
import org.apache.logging.log4j.Logger;
+import com.gemstone.gemfire.GemFireIOException;
+import com.gemstone.gemfire.InternalGemFireException;
+import com.gemstone.gemfire.StatisticDescriptor;
+import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
+import com.gemstone.gemfire.internal.logging.LogService;
+import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
+import com.gemstone.gemfire.internal.statistics.ResourceInstance;
+import com.gemstone.gemfire.internal.statistics.ResourceType;
+import com.gemstone.gemfire.internal.statistics.SampleHandler;
+import com.gemstone.gemfire.internal.statistics.StatArchiveDescriptor;
+
/**
* StatArchiveWriter provides APIs to write statistic snapshots to an archive
* file.
@@ -168,7 +166,7 @@ public class StatArchiveWriter implements StatArchiveFormat, SampleHandler {
}
}
- @SuppressFBWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE", justification="Best effort attempt to delete a GFS file without any samples.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE", justification="Best effort attempt to delete a GFS file without any samples.")
private static void deleteFileIfPossible(File file) {
file.delete();
}
@@ -288,7 +286,7 @@ public class StatArchiveWriter implements StatArchiveFormat, SampleHandler {
}
}
- @SuppressFBWarnings(value="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification="This is only for debugging and there is never more than one instance being traced because there is only one stat sampler.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification="This is only for debugging and there is never more than one instance being traced because there is only one stat sampler.")
public void allocatedResourceInstance(ResourceInstance statResource) {
if (logger.isTraceEnabled(LogMarker.STATISTICS)) {
logger.trace(LogMarker.STATISTICS, "StatArchiveWriter#allocatedResourceInstance statResource={}", statResource);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractUpdateOperation.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractUpdateOperation.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractUpdateOperation.java
index b94ce8b..3ac006b 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractUpdateOperation.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractUpdateOperation.java
@@ -45,8 +45,6 @@ import com.gemstone.gemfire.internal.logging.LogService;
import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
import com.gemstone.gemfire.internal.util.DelayedAction;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* Common code for both UpdateOperation and DistributedPutAllOperation.
*
@@ -57,7 +55,7 @@ public abstract class AbstractUpdateOperation extends DistributedCacheOperation
public static volatile boolean test_InvalidVersion;
- @SuppressFBWarnings(value="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD",
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD",
justification="test hook that is unset normally")
public static volatile DelayedAction test_InvalidVersionAction;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXStateProxyImpl.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXStateProxyImpl.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXStateProxyImpl.java
index 533a1f0..fda1a3a 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXStateProxyImpl.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXStateProxyImpl.java
@@ -50,8 +50,6 @@ import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
import com.gemstone.gemfire.internal.logging.LogService;
import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* @author mthomas
*
@@ -570,7 +568,7 @@ public class TXStateProxyImpl implements TXStateProxy {
/* (non-Javadoc)
* @see com.gemstone.gemfire.internal.cache.InternalDataView#entryCount(com.gemstone.gemfire.internal.cache.LocalRegion)
*/
- @SuppressFBWarnings(value="UL_UNRELEASED_LOCK", justification="This method unlocks and then conditionally undoes the unlock in the finally-block. Review again at later time.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UL_UNRELEASED_LOCK", justification="This method unlocks and then conditionally undoes the unlock in the finally-block. Review again at later time.")
public int entryCount(LocalRegion localRegion) {
// if size is the first operation in the transaction, then reset the txState
boolean resetTXState = this.realDeal == null;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
index c30102f..89c073f 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
@@ -92,8 +92,6 @@ import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
import com.gemstone.gemfire.internal.tcp.ConnectionTable;
import com.gemstone.gemfire.internal.util.ArrayUtils;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* Implements the acceptor thread on the bridge server. Accepts connections from
* the edge and starts up threads to process requests from these.
@@ -1610,7 +1608,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
}
@Override
- @SuppressFBWarnings(value="REC_CATCH_EXCEPTION", justification="Allow this thread to die")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="REC_CATCH_EXCEPTION", justification="Allow this thread to die")
public void close() {
if (!isRunning()) {
return;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommand.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommand.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommand.java
index 1e6b8d8..52ea6f5 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommand.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommand.java
@@ -47,25 +47,12 @@ import com.gemstone.gemfire.cache.CacheWriterException;
import com.gemstone.gemfire.cache.InterestResultPolicy;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.RegionDestroyedException;
-import com.gemstone.gemfire.cache.TransactionDataNodeHasDepartedException;
-import com.gemstone.gemfire.cache.TransactionDataRebalancedException;
import com.gemstone.gemfire.cache.TransactionException;
-import com.gemstone.gemfire.cache.operations.QueryOperationContext;
import com.gemstone.gemfire.cache.persistence.PartitionOfflineException;
-import com.gemstone.gemfire.cache.query.Query;
-import com.gemstone.gemfire.cache.query.QueryException;
-import com.gemstone.gemfire.cache.query.QueryInvalidException;
-import com.gemstone.gemfire.cache.query.SelectResults;
-import com.gemstone.gemfire.cache.query.Struct;
-import com.gemstone.gemfire.cache.query.internal.CqEntry;
-import com.gemstone.gemfire.cache.query.internal.DefaultQuery;
-import com.gemstone.gemfire.cache.query.internal.types.CollectionTypeImpl;
-import com.gemstone.gemfire.cache.query.internal.types.StructTypeImpl;
import com.gemstone.gemfire.cache.query.types.CollectionType;
import com.gemstone.gemfire.distributed.DistributedSystemDisconnectedException;
import com.gemstone.gemfire.distributed.internal.DistributionStats;
import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
-import com.gemstone.gemfire.i18n.LogWriterI18n;
import com.gemstone.gemfire.internal.Assert;
import com.gemstone.gemfire.internal.Version;
import com.gemstone.gemfire.internal.cache.CachedDeserializable;
@@ -92,12 +79,9 @@ import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
import com.gemstone.gemfire.internal.logging.LogService;
import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
import com.gemstone.gemfire.internal.offheap.OffHeapHelper;
-import com.gemstone.gemfire.internal.security.AuthorizeRequestPP;
import com.gemstone.gemfire.internal.sequencelog.EntryLogger;
import com.gemstone.gemfire.security.GemFireSecurityException;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* @author ashahid
*
@@ -1162,7 +1146,7 @@ public abstract class BaseCommand implements Command {
* Handles both RR and PR cases
*/
@SuppressWarnings("rawtypes")
- @SuppressFBWarnings(value="NP_NULL_PARAM_DEREF", justification="Null value handled in sendNewRegisterInterestResponseChunk()")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NP_NULL_PARAM_DEREF", justification="Null value handled in sendNewRegisterInterestResponseChunk()")
private static void handleKVSingleton(LocalRegion region, Object entryKey,
boolean serializeValues, ServerConnection servConn)
throws IOException {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientProxyMembershipID.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientProxyMembershipID.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientProxyMembershipID.java
index 4e7a179..daa07f4 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientProxyMembershipID.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientProxyMembershipID.java
@@ -39,15 +39,12 @@ import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedM
import com.gemstone.gemfire.internal.Assert;
import com.gemstone.gemfire.internal.DataSerializableFixedID;
import com.gemstone.gemfire.internal.HeapDataOutputStream;
-import com.gemstone.gemfire.internal.InternalDataSerializer;
import com.gemstone.gemfire.internal.Version;
import com.gemstone.gemfire.internal.VersionedDataInputStream;
import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
import com.gemstone.gemfire.internal.logging.LogService;
import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* This class represents a ConnectionProxy of the CacheClient
*
@@ -484,7 +481,7 @@ public final class ClientProxyMembershipID
/**
* call this when the distributed system ID has been modified
*/
- @SuppressFBWarnings(value = "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification = "Only applicable in client DS and in that case too multiple instances do not modify it at the same time.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification = "Only applicable in client DS and in that case too multiple instances do not modify it at the same time.")
public void updateID(DistributedMember idm) {
// this.transientPort = ((InternalDistributedMember)this.memberId).getPort();
// if (this.transientPort == 0) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/versions/RegionVersionVector.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/versions/RegionVersionVector.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/versions/RegionVersionVector.java
index 1416b62..61423d1 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/versions/RegionVersionVector.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/versions/RegionVersionVector.java
@@ -52,8 +52,6 @@ import com.gemstone.gemfire.internal.logging.LogService;
import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* RegionVersionVector tracks the highest region-level version number of
* operations applied to a region for each member that has the region.<p>
@@ -296,7 +294,7 @@ public abstract class RegionVersionVector<T extends VersionSource<?>> implements
// this could block for a while if a limit has been set on the waiting-thread-pool
dm.getWaitingThreadPool().execute(
new Runnable() {
- @SuppressFBWarnings(value={"UL_UNRELEASED_LOCK","IMSE_DONT_CATCH_IMSE"})
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value={"UL_UNRELEASED_LOCK","IMSE_DONT_CATCH_IMSE"})
public void run() {
boolean haveLock = false;
synchronized(clearLockSync) {
@@ -667,7 +665,7 @@ public abstract class RegionVersionVector<T extends VersionSource<?>> implements
* each oplog we recover.
* @param latestOplog
*/
- @SuppressFBWarnings(value="ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD",
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD",
justification="sync on localExceptions guards concurrent modification but this is a replacement")
public void initRecoveredVersion(T member, RegionVersionHolder<T> v, boolean latestOplog) {
RegionVersionHolder<T> recovered = v.clone();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/datasource/AbstractPoolCache.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/datasource/AbstractPoolCache.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/datasource/AbstractPoolCache.java
index a42cd6f..b615327 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/datasource/AbstractPoolCache.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/datasource/AbstractPoolCache.java
@@ -36,8 +36,6 @@ import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
import com.gemstone.gemfire.internal.logging.LogService;
import com.gemstone.gemfire.internal.logging.LoggingThreadGroup;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* AbstractPoolCache implements the ConnectionPoolCache interface. This is base
* class for the all connection pools. The class also implements the
@@ -88,7 +86,7 @@ public abstract class AbstractPoolCache implements ConnectionPoolCache,
* configuration for the pool.
* @throws PoolException
*/
- @SuppressFBWarnings(value="SC_START_IN_CTOR",
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="SC_START_IN_CTOR",
justification="the thread started is a cleanup thread and is not active until there is a timeout tx")
public AbstractPoolCache(EventListener eventListner,
ConfiguredDataSourceProperties configs) throws PoolException {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/memcached/commands/GetCommand.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/memcached/commands/GetCommand.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/memcached/commands/GetCommand.java
index da1ef53..8fd0847 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/memcached/commands/GetCommand.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/memcached/commands/GetCommand.java
@@ -18,8 +18,6 @@ package com.gemstone.gemfire.internal.memcached.commands;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
-import java.nio.charset.CharacterCodingException;
-import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
@@ -28,7 +26,6 @@ import java.util.Set;
import com.gemstone.gemfire.cache.Cache;
import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.internal.memcached.Command;
import com.gemstone.gemfire.internal.memcached.KeyWrapper;
import com.gemstone.gemfire.internal.memcached.Reply;
import com.gemstone.gemfire.internal.memcached.RequestReader;
@@ -36,8 +33,6 @@ import com.gemstone.gemfire.internal.memcached.ResponseStatus;
import com.gemstone.gemfire.internal.memcached.ValueWrapper;
import com.gemstone.gemfire.memcached.GemFireMemcachedServer.Protocol;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
*
* The retrieval commands "get" and "gets" operates like this:<br/>
@@ -167,7 +162,7 @@ public class GetCommand extends AbstractCommand {
return composeReply(results, isGets);
}
- @SuppressFBWarnings(value = "NP_NULL_PARAM_DEREF",
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "NP_NULL_PARAM_DEREF",
justification = "findbugs complains that v is null while putting into buffer, but it is not")
private ByteBuffer composeReply(Map<Object, ValueWrapper> results, boolean isGets) {
Iterator<Entry<Object, ValueWrapper>> it = results.entrySet().iterator();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/statistics/SampleCollector.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/statistics/SampleCollector.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/statistics/SampleCollector.java
index ee00ff2..9b40e95 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/statistics/SampleCollector.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/statistics/SampleCollector.java
@@ -37,8 +37,6 @@ import com.gemstone.gemfire.internal.logging.LogService;
import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* Captures sample of statistics. The SampleCollector contains maps of
* StatisticsTypes to ResourceTypes and Statistics instances to
@@ -148,7 +146,7 @@ public class SampleCollector {
* @param config defines the configuration for the StatArchiveHandler
* @param nanosTimeStamp the nanos time stamp to initialize stat archiver with
*/
- @SuppressFBWarnings(value="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification="There is never more than one SampleCollector instance.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification="There is never more than one SampleCollector instance.")
public void initialize(StatArchiveHandlerConfig config, long nanosTimeStamp) {
synchronized (SampleCollector.class) {
instance = this;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/DebuggerSupport.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/DebuggerSupport.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/DebuggerSupport.java
index a5f8343..49ce32e 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/DebuggerSupport.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/DebuggerSupport.java
@@ -20,8 +20,6 @@ package com.gemstone.gemfire.internal.util;
import com.gemstone.gemfire.i18n.LogWriterI18n;
import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
*
* @author Eric Zoerner
@@ -38,7 +36,7 @@ public abstract class DebuggerSupport {
waitForJavaDebugger(logger, null);
}
- @SuppressFBWarnings(value="IL_INFINITE_LOOP", justification="Endless loop is for debugging purposes.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="IL_INFINITE_LOOP", justification="Endless loop is for debugging purposes.")
public static void waitForJavaDebugger(LogWriterI18n logger, String extraLogMsg) {
boolean cont = false;
String msg = ":";
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/SingletonValue.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/SingletonValue.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/SingletonValue.java
index c04e467..5f902b6 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/SingletonValue.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/SingletonValue.java
@@ -22,8 +22,6 @@ import java.io.InterruptedIOException;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* A builder that caches the singleton value.
*
@@ -205,7 +203,7 @@ public class SingletonValue<T extends Closeable> {
}
}
- @SuppressFBWarnings(
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(
value="UL_UNRELEASED_LOCK",
justification="findbugs is wrong and Darrel agrees")
public T get() throws IOException {
@@ -263,7 +261,7 @@ public class SingletonValue<T extends Closeable> {
}
}
- @SuppressFBWarnings(
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(
value="UL_UNRELEASED_LOCK",
justification="findbugs is wrong and Darrel agrees")
private T acquireValue() throws IOException {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/concurrent/CustomEntryConcurrentHashMap.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/concurrent/CustomEntryConcurrentHashMap.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/concurrent/CustomEntryConcurrentHashMap.java
index ad38724..75dc330 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/concurrent/CustomEntryConcurrentHashMap.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/concurrent/CustomEntryConcurrentHashMap.java
@@ -51,7 +51,6 @@ package com.gemstone.gemfire.internal.util.concurrent;
import java.io.IOException;
import java.io.Serializable;
-import java.lang.reflect.Array;
import java.util.AbstractCollection;
import java.util.AbstractMap;
import java.util.AbstractSet;
@@ -59,7 +58,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Enumeration;
-import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.Map;
@@ -78,8 +76,6 @@ import com.gemstone.gemfire.internal.offheap.OffHeapRegionEntryHelper;
import com.gemstone.gemfire.internal.size.SingleObjectSizer;
import com.gemstone.gemfire.internal.util.ArrayUtils;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
/**
* A hash table supporting full concurrency of retrievals and adjustable
* expected concurrency for updates. This class obeys the same functional
@@ -1436,7 +1432,7 @@ RETRYLOOP:
* @return the number of key-value mappings in this map
*/
@Override
- @SuppressFBWarnings(value="UL_UNRELEASED_LOCK", justification="The lock() calls are followed by unlock() calls without finally-block. Leaving this as is because it's lifted from JDK code and we want to minimize changes.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UL_UNRELEASED_LOCK", justification="The lock() calls are followed by unlock() calls without finally-block. Leaving this as is because it's lifted from JDK code and we want to minimize changes.")
public final int size() {
final Segment<K, V>[] segments = this.segments;
long sum = 0;
@@ -1536,7 +1532,7 @@ RETRYLOOP:
* if the specified value is null
*/
@Override
- @SuppressFBWarnings(value="UL_UNRELEASED_LOCK", justification="Leaving this as is because it's lifted from JDK code and we want to minimize changes.")
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UL_UNRELEASED_LOCK", justification="Leaving this as is because it's lifted from JDK code and we want to minimize changes.")
public final boolean containsValue(final Object value) {
if (value == null) {
throw new NullPointerException();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4d6df30a/gradle/dependency-versions.properties
----------------------------------------------------------------------
diff --git a/gradle/dependency-versions.properties b/gradle/dependency-versions.properties
index 4c3c16e..3e6b6a5 100644
--- a/gradle/dependency-versions.properties
+++ b/gradle/dependency-versions.properties
@@ -58,6 +58,7 @@ spring-data-gemfire.version = 1.5.1.RELEASE
spring-hateos.version = 0.16.0.RELEASE
spring-shell.version = 1.0.0.RELEASE
springframework.version = 3.2.12.RELEASE
+stephenc-findbugs.version = 1.3.9-1
spymemcached.version = 2.9.0
swagger.version = 1.3.2
swagger-springmvc.version = 0.8.2
[7/9] incubator-geode git commit: GEODE-611: Clean up distribution
directives
Posted by ab...@apache.org.
GEODE-611: Clean up distribution directives
Removes the exclude for the findbugs annotation jar which is
no longer a dependency.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/bff59d15
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/bff59d15
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/bff59d15
Branch: refs/heads/feature/GEODE-608
Commit: bff59d1548d71dae61897b72a01ece02a3f3a2b1
Parents: 4d6df30
Author: Anthony Baker <ab...@pivotal.io>
Authored: Tue Dec 1 07:50:40 2015 -0800
Committer: Anthony Baker <ab...@pivotal.io>
Committed: Tue Dec 1 11:38:16 2015 -0800
----------------------------------------------------------------------
gemfire-assembly/build.gradle | 2 --
1 file changed, 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/bff59d15/gemfire-assembly/build.gradle
----------------------------------------------------------------------
diff --git a/gemfire-assembly/build.gradle b/gemfire-assembly/build.gradle
index e097b65..8de6d4e 100755
--- a/gemfire-assembly/build.gradle
+++ b/gemfire-assembly/build.gradle
@@ -173,8 +173,6 @@ distributions {
}
into ('lib') {
- exclude 'annotation*.jar'
-
from project(":gemfire-common").configurations.runtime
from project(":gemfire-common").configurations.archives.allArtifacts.files
[3/9] incubator-geode git commit: corrections for GMSHealthMonitor
from an impromptu code review
Posted by ab...@apache.org.
corrections for GMSHealthMonitor from an impromptu code review
Engineers working on the GEODE-77 effort reviewed some of the final-check
code in GMSHealthMonitor and came up with these corrections.
This commit also includes some test clean-up that I hope will help with
GEODE-589.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/253549d5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/253549d5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/253549d5
Branch: refs/heads/feature/GEODE-608
Commit: 253549d555abc5cb8bb12595a9c4ac09052ad94d
Parents: e4448ad
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Tue Dec 1 08:35:15 2015 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Tue Dec 1 08:35:15 2015 -0800
----------------------------------------------------------------------
.../membership/gms/fd/GMSHealthMonitor.java | 13 ++-----------
.../gms/messenger/JGroupsMessenger.java | 8 +++++++-
.../internal/cache/xmlcache/CacheCreation.java | 7 ++++++-
.../cache30/ClientMembershipDUnitTest.java | 12 +++++++++---
.../gemfire/cache30/ClientServerCCEDUnitTest.java | 2 +-
...istributedAckPersistentRegionCCEDUnitTest.java | 18 +++++++++++++++---
.../cache30/DistributedAckRegionDUnitTest.java | 2 +-
.../DistributedNoAckRegionCCEDUnitTest.java | 11 +++++++++--
.../gemfire/cache30/MultiVMRegionTestCase.java | 4 ++--
.../gemfire/cache30/TXDistributedDUnitTest.java | 2 +-
.../cache/locks/TXLockServiceDUnitTest.java | 2 +-
.../src/test/java/dunit/DistributedTestCase.java | 9 +++++++++
.../java/dunit/standalone/ProcessManager.java | 8 --------
13 files changed, 63 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
index 1c005cc..bd60236 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
@@ -441,13 +441,9 @@ public class GMSHealthMonitor implements HealthMonitor, MessageHandler {
}
TimeStamp ts = memberTimeStamps.get(member);
if (pingResp.getResponseMsg() == null) {
- // double check the activity map
if (isStopping) {
return true;
}
- if (checkRecentActivity(member)) {
- return true;
- }
logger.trace("no heartbeat response received from {} and no recent activity", member);
return false;
} else {
@@ -486,10 +482,6 @@ public class GMSHealthMonitor implements HealthMonitor, MessageHandler {
*/
private boolean doTCPCheckMember(InternalDistributedMember suspectMember, int port) {
Socket clientSocket = null;
- // first check for a recent timestamp
- if (checkRecentActivity(suspectMember)) {
- return true;
- }
try {
logger.debug("Checking member {} with TCP socket connection {}:{}.", suspectMember, suspectMember.getInetAddress(), port);
clientSocket = SocketCreator.getDefaultInstance().connect(suspectMember.getInetAddress(), port,
@@ -516,10 +508,10 @@ public class GMSHealthMonitor implements HealthMonitor, MessageHandler {
return true;
} else {
//received ERROR
- return checkRecentActivity(suspectMember);
+ return false;
}
} else {// cannot establish TCP connection with suspect member
- return checkRecentActivity(suspectMember);
+ return false;
}
} catch (SocketTimeoutException e) {
logger.debug("tcp/ip connection timed out");
@@ -1192,7 +1184,6 @@ public class GMSHealthMonitor implements HealthMonitor, MessageHandler {
}
if (!failed) {
logger.info("Final check passed");
- contactedBy(mbr);
}
// whether it's alive or not, at this point we allow it to
// be watched again
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
index b37c930..91c32ae 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
@@ -551,7 +551,13 @@ public class JGroupsMessenger implements Messenger {
}
filterOutgoingMessage(msg);
-
+
+ // JGroupsMessenger does not support direct-replies, so register
+ // the message's processor if necessary
+ if ((msg instanceof DirectReplyMessage) && msg.isDirectAck() && msg.getProcessorId() <= 0) {
+ ((DirectReplyMessage)msg).registerProcessor();
+ }
+
InternalDistributedMember[] destinations = msg.getRecipients();
boolean allDestinations = msg.forAll();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheCreation.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheCreation.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheCreation.java
index ed67ca4..f7063bc 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheCreation.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/xmlcache/CacheCreation.java
@@ -226,6 +226,11 @@ public class CacheCreation implements InternalCache {
public CacheCreation() {
this(false);
}
+
+ /** clear thread locals that may have been set by previous uses of CacheCreation */
+ public static void clearThreadLocals() {
+ createInProgress = new ThreadLocal<>();
+ }
/**
* @param forParsing if true then this creation is used for parsing xml;
@@ -357,7 +362,7 @@ public class CacheCreation implements InternalCache {
* Used from PoolManager to defer to CacheCreation as a manager of pools.
* @since 5.7
*/
- private static final ThreadLocal createInProgress = new ThreadLocal();
+ private static ThreadLocal createInProgress = new ThreadLocal();
/**
* Returns null if the current thread is not doing a CacheCreation create.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
index d9e9f4c..76b5b75 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
@@ -1328,12 +1328,16 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
Properties config = new Properties();
config.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
config.setProperty(DistributionConfig.LOCATORS_NAME, "");
+ // 11/30/2015 this test is periodically failing during distributedTest runs
+ // so we are setting the log-level to fine to figure out what's going on
+ config.setProperty(DistributionConfig.LOG_LEVEL_NAME, "fine");
getSystem(config);
AttributesFactory factory = new AttributesFactory();
factory.setScope(Scope.LOCAL);
- ClientServerTestCase.configureConnectionPool(factory, getServerHostName(host), ports, true, -1, -1, null);
+ Pool p = ClientServerTestCase.configureConnectionPool(factory, getServerHostName(host), ports, true, -1, -1, null);
createRegion(name, factory.create());
assertNotNull(getRootRegion().getSubregion(name));
+ assertTrue(p.getServers().size() > 0);
}
};
@@ -1376,8 +1380,10 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
String connectedClient = (String)iter.next();
getLogWriter().info("[testGetConnectedClients] checking for client " + connectedClient);
assertTrue(clientMemberIds.contains(connectedClient));
- getLogWriter().info("[testGetConnectedClients] count for connectedClient: " +
- connectedClients.get(connectedClient));
+ Object[] result = (Object[])connectedClients.get(connectedClient);
+ getLogWriter().info("[testGetConnectedClients] result: " +
+ (result==null? "none"
+ : String.valueOf(result[0])+"; connections="+result[1]));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerCCEDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerCCEDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerCCEDUnitTest.java
index 9847d7b..784d0c8 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerCCEDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerCCEDUnitTest.java
@@ -613,7 +613,7 @@ public class ClientServerCCEDUnitTest extends CacheTestCase {
// bug #50683 - secondary durable queue retains all GC messages
cf.set("durable-client-id", ""+vm.getPid());
cf.set("durable-client-timeout", "" + 200);
- cf.set("log-level", "fine");
+ cf.set("log-level", getDUnitLogLevel());
ClientCache cache = getClientCache(cf);
ClientRegionFactory crf = cache.createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY);
crf.setConcurrencyChecksEnabled(ccEnabled);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckPersistentRegionCCEDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckPersistentRegionCCEDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckPersistentRegionCCEDUnitTest.java
index 3994b49..b17c3c3 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckPersistentRegionCCEDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckPersistentRegionCCEDUnitTest.java
@@ -36,17 +36,17 @@ import com.gemstone.gemfire.internal.cache.LocalRegion;
import com.gemstone.gemfire.internal.cache.tier.sockets.Part;
import com.gemstone.gemfire.internal.cache.versions.VersionTag;
import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
-
+
import dunit.AsyncInvocation;
import dunit.Host;
import dunit.SerializableCallable;
import dunit.SerializableRunnable;
import dunit.VM;
import dunit.DistributedTestCase.WaitCriterion;
-
+
import java.io.IOException;
import java.util.Map;
-
+
import junit.framework.Assert;
/**
@@ -73,6 +73,18 @@ public class DistributedAckPersistentRegionCCEDUnitTest extends DistributedAckRe
return factory.create();
}
+// public void testClearWithConcurrentEventsAsync() throws Exception {
+// int end = 100;
+// for (int i=0; i<end; i++) {
+// System.out.println("Starting run #" + i);
+// super.testClearWithConcurrentEventsAsync();
+// if (i<(end-1)) {
+// tearDown();
+// setUp();
+// }
+// }
+// }
+
public void testClearOnNonReplicateWithConcurrentEvents() {}
public void testConcurrentEventsOnNonReplicatedRegion() {}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionDUnitTest.java
index d3ef4ac..cf258b4 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionDUnitTest.java
@@ -74,7 +74,7 @@ public class DistributedAckRegionDUnitTest extends MultiVMRegionTestCase {
public Properties getDistributedSystemProperties() {
Properties p = new Properties();
p.put(DistributionConfig.STATISTIC_SAMPLING_ENABLED_NAME, "true");
- p.put(DistributionConfig.LOG_LEVEL_NAME, "config");
+ p.put(DistributionConfig.LOG_LEVEL_NAME, getDUnitLogLevel());
return p;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionCCEDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionCCEDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionCCEDUnitTest.java
index 791341e..4c77562 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionCCEDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionCCEDUnitTest.java
@@ -266,8 +266,15 @@ public class DistributedNoAckRegionCCEDUnitTest extends
}
- public void testTombstones() {
- versionTestTombstones();
+ public void testTombstones() throws Exception {
+// for (int i=0; i<1000; i++) {
+// System.out.println("starting run #"+i);
+ versionTestTombstones();
+// if (i < 999) {
+// tearDown();
+// setUp();
+// }
+// }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
index b67b1f9..b995494 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
@@ -8229,12 +8229,12 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
return !o1.equals(o2);
}
- protected AsyncInvocation performOps4ClearWithConcurrentEvents(VM vm, final int opNum) {
+ protected AsyncInvocation performOps4ClearWithConcurrentEvents(VM vm, final int msToRun) {
SerializableRunnable performOps = new SerializableRunnable("perform concurrent ops") {
public void run() {
try {
boolean includeClear = true;
- doOpsLoop(opNum, includeClear);
+ doOpsLoop(msToRun, includeClear);
} catch (CacheException e) {
fail("while performing concurrent operations", e);
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
index b318841..c0034cd 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
@@ -522,7 +522,7 @@ public class TXDistributedDUnitTest extends CacheTestCase {
@Override
public Properties getDistributedSystemProperties() {
Properties p = super.getDistributedSystemProperties();
- p.put("log-level", "fine");
+ p.put("log-level", getDUnitLogLevel());
return p;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/locks/TXLockServiceDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/locks/TXLockServiceDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/locks/TXLockServiceDUnitTest.java
index 002854e..bc6fad1 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/locks/TXLockServiceDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/locks/TXLockServiceDUnitTest.java
@@ -661,7 +661,7 @@ public class TXLockServiceDUnitTest extends DistributedTestCase {
public Properties getDistributedSystemProperties() {
Properties props = super.getDistributedSystemProperties();
- props.setProperty("log-level", "fine");
+ props.setProperty("log-level", getDUnitLogLevel());
return props;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/test/java/dunit/DistributedTestCase.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/dunit/DistributedTestCase.java b/gemfire-core/src/test/java/dunit/DistributedTestCase.java
index 7db4033..a3d4785 100755
--- a/gemfire-core/src/test/java/dunit/DistributedTestCase.java
+++ b/gemfire-core/src/test/java/dunit/DistributedTestCase.java
@@ -49,6 +49,7 @@ import com.gemstone.gemfire.cache.hdfs.internal.HDFSStoreImpl;
import com.gemstone.gemfire.cache.hdfs.internal.hoplog.HoplogConfig;
import com.gemstone.gemfire.cache.query.QueryTestUtils;
import com.gemstone.gemfire.cache.query.internal.QueryObserverHolder;
+import com.gemstone.gemfire.cache30.ClientServerTestCase;
import com.gemstone.gemfire.cache30.GlobalLockingDUnitTest;
import com.gemstone.gemfire.cache30.MultiVMRegionTestCase;
import com.gemstone.gemfire.cache30.RegionTestCase;
@@ -76,6 +77,7 @@ import com.gemstone.gemfire.internal.cache.tier.InternalClientMembership;
import com.gemstone.gemfire.internal.cache.tier.sockets.CacheServerTestUtil;
import com.gemstone.gemfire.internal.cache.tier.sockets.ClientProxyMembershipID;
import com.gemstone.gemfire.internal.cache.tier.sockets.DataSerializerPropogationDUnitTest;
+import com.gemstone.gemfire.internal.cache.xmlcache.CacheCreation;
import com.gemstone.gemfire.internal.logging.InternalLogWriter;
import com.gemstone.gemfire.internal.logging.LocalLogWriter;
import com.gemstone.gemfire.internal.logging.LogService;
@@ -756,6 +758,9 @@ public abstract class DistributedTestCase extends TestCase implements java.io.Se
closeCache();
SocketCreator.resolve_dns = true;
+ CacheCreation.clearThreadLocals();
+ System.getProperties().remove("gemfire.log-level");
+ System.getProperties().remove("jgroups.resolve_dns");
InitialImageOperation.slowImageProcessing = 0;
DistributionMessageObserver.setInstance(null);
QueryTestUtils.setCache(null);
@@ -767,10 +772,14 @@ public abstract class DistributedTestCase extends TestCase implements java.io.Se
MultiVMRegionTestCase.CCRegion = null;
InternalClientMembership.unregisterAllListeners();
ClientStatsManager.cleanupForTests();
+ ClientServerTestCase.AUTO_LOAD_BALANCE = false;
unregisterInstantiatorsInThisVM();
DistributionMessageObserver.setInstance(null);
QueryObserverHolder.reset();
DiskStoreObserver.setInstance(null);
+ System.getProperties().remove("gemfire.log-level");
+ System.getProperties().remove("jgroups.resolve_dns");
+
if (InternalDistributedSystem.systemAttemptingReconnect != null) {
InternalDistributedSystem.systemAttemptingReconnect.stopReconnecting();
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/253549d5/gemfire-core/src/test/java/dunit/standalone/ProcessManager.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/dunit/standalone/ProcessManager.java b/gemfire-core/src/test/java/dunit/standalone/ProcessManager.java
index b6a4493..60ac04d 100644
--- a/gemfire-core/src/test/java/dunit/standalone/ProcessManager.java
+++ b/gemfire-core/src/test/java/dunit/standalone/ProcessManager.java
@@ -34,11 +34,8 @@ import java.util.Map;
import org.apache.commons.io.FileUtils;
-import com.gemstone.gemfire.distributed.internal.DistributionConfig;
import com.gemstone.gemfire.internal.FileUtil;
import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.internal.sequencelog.EntryLogger;
-import com.gemstone.gemfire.internal.sequencelog.SequenceLoggerImpl;
import dunit.RemoteDUnitVMIF;
@@ -47,8 +44,6 @@ import dunit.RemoteDUnitVMIF;
*
*/
public class ProcessManager {
- public static final boolean IS_WINDOWS = System.getProperty("os.name").contains("Windows");
-
private int namingPort;
private Map<Integer, ProcessHolder> processes = new HashMap<Integer, ProcessHolder>();
private File log4jConfig;
@@ -179,9 +174,6 @@ public class ProcessManager {
"-Dgemfire.DEFAULT_MAX_OPLOG_SIZE=10",
"-Dgemfire.disallowMcastDefaults=true",
"-ea",
- // use IPv4 on Windows
- // see https://github.com/belaban/JGroups/wiki/FAQ
-// (IS_WINDOWS?"-Djava.net.preferIPv4Stack=true":""),
agent,
"dunit.standalone.ChildVM"
};
[5/9] incubator-geode git commit: GEODE-606: Add some logging to war
file detection
Posted by ab...@apache.org.
GEODE-606: Add some logging to war file detection
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/5a9fdb8a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/5a9fdb8a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/5a9fdb8a
Branch: refs/heads/feature/GEODE-608
Commit: 5a9fdb8ac6dfde9d1822a429ce94f6af05353a86
Parents: 38dd3ed
Author: Jens Deppe <jd...@pivotal.io>
Authored: Wed Nov 25 14:53:08 2015 -0800
Committer: Jens Deppe <jd...@pivotal.io>
Committed: Tue Dec 1 09:54:09 2015 -0800
----------------------------------------------------------------------
.../gemfire/management/internal/AgentUtil.java | 56 ++++++++++----------
1 file changed, 29 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5a9fdb8a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/AgentUtil.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/AgentUtil.java b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/AgentUtil.java
index e5b88ad..bb160ea 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/AgentUtil.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/management/internal/AgentUtil.java
@@ -38,8 +38,6 @@ public class AgentUtil {
private static final String LIB_WEB_API_WAR = "/lib/gemfire-web-api-";
private static final String TOOLS_WEB_WAR = "/tools/Extensions/gemfire-web-";
private static final String LIB_WEB_WAR = "/lib/gemfire-web-";
- private static final String TOOLS_API_WAR = "/tools/Extensions/gemfire-api-";
- private static final String LIB_API_WAR = "/lib/gemfire-api-";
private static final String TOOLS_PULSE_WAR = "/tools/Pulse/pulse.war";
private static final String LIB_PULSE_WAR = "/lib/pulse.war";
public static final String ERROR_VARIABLE_NOT_SET = "The GEMFIRE environment variable must be set!";
@@ -53,13 +51,18 @@ public class AgentUtil {
public String getGemFireWebApiWarLocation() {
String gemfireHome = getGemFireHome();
assert !StringUtils.isBlank(gemfireHome) : ERROR_VARIABLE_NOT_SET;
- logger.warn(gemfireHome + TOOLS_WEB_API_WAR + gemfireVersion + ".war");
- if (new File(gemfireHome + TOOLS_WEB_API_WAR + gemfireVersion + ".war").isFile()) {
- return gemfireHome + TOOLS_WEB_API_WAR + gemfireVersion + ".war";
- } else if (new File(gemfireHome + LIB_WEB_API_WAR + gemfireVersion + ".war").isFile()) {
- return gemfireHome + LIB_WEB_API_WAR + gemfireVersion + ".war";
+ String toolsWebApiWar = gemfireHome + TOOLS_WEB_API_WAR + gemfireVersion + ".war";
+ String libWebApiWar = gemfireHome + LIB_WEB_API_WAR + gemfireVersion + ".war";
+
+ if (new File(toolsWebApiWar).isFile()) {
+ logger.info("GemFire Dev REST API war: {}", toolsWebApiWar);
+ return toolsWebApiWar;
+ } else if (new File(libWebApiWar).isFile()) {
+ logger.info("GemFire Dev REST API war: {}", libWebApiWar);
+ return libWebApiWar;
} else {
+ logger.warn("GemFire Dev REST API war not found - neither {} or {} exist", toolsWebApiWar, libWebApiWar);
return null;
}
}
@@ -74,24 +77,17 @@ public class AgentUtil {
String gemfireHome = getGemFireHome();
assert !StringUtils.isBlank(gemfireHome) : ERROR_VARIABLE_NOT_SET;
- if (new File(gemfireHome + TOOLS_WEB_WAR + gemfireVersion + ".war").isFile()) {
- return gemfireHome + TOOLS_WEB_WAR + gemfireVersion + ".war";
- } else if (new File(gemfireHome + LIB_WEB_WAR + gemfireVersion + ".war").isFile()) {
- return gemfireHome + LIB_WEB_WAR + gemfireVersion + ".war";
- } else {
- return null;
- }
- }
-
- public String getGemfireApiWarLocation() {
- String gemfireHome = getGemFireHome();
- assert !StringUtils.isBlank(gemfireHome) :ERROR_VARIABLE_NOT_SET;
+ String toolsWebWar = gemfireHome + TOOLS_WEB_WAR + gemfireVersion + ".war";
+ String libWebWar = gemfireHome + LIB_WEB_WAR + gemfireVersion + ".war";
- if (new File(gemfireHome + TOOLS_API_WAR + gemfireVersion + ".war").isFile()) {
- return gemfireHome + TOOLS_API_WAR + gemfireVersion + ".war";
- } else if (new File(gemfireHome + LIB_API_WAR + gemfireVersion + ".war").isFile()) {
- return gemfireHome + LIB_API_WAR + gemfireVersion + ".war";
+ if (new File(toolsWebWar).isFile()) {
+ logger.info("GemFire Admin REST war: {}", toolsWebWar);
+ return toolsWebWar;
+ } else if (new File(libWebWar).isFile()) {
+ logger.info("GemFire Admin REST war: {}", libWebWar);
+ return libWebWar;
} else {
+ logger.warn("GemFire Admin REST war not found - neither {} or {} exist", toolsWebWar, libWebWar);
return null;
}
}
@@ -104,11 +100,17 @@ public class AgentUtil {
String gemfireHome = getGemFireHome();
assert !StringUtils.isBlank(gemfireHome) : ERROR_VARIABLE_NOT_SET;
- if (new File(gemfireHome + TOOLS_PULSE_WAR).isFile()) {
- return gemfireHome + TOOLS_PULSE_WAR;
- } else if (new File(gemfireHome + LIB_PULSE_WAR).isFile()) {
- return gemfireHome + LIB_PULSE_WAR;
+ String toolsPulseWar = gemfireHome + TOOLS_PULSE_WAR;
+ String libPulseWar = gemfireHome + LIB_PULSE_WAR;
+
+ if (new File(toolsPulseWar).isFile()) {
+ logger.info("GemFire Pulse war: {}", toolsPulseWar);
+ return toolsPulseWar;
+ } else if (new File(libPulseWar).isFile()) {
+ logger.info("GemFire Pulse war: {}", libPulseWar);
+ return libPulseWar;
} else {
+ logger.warn("GemFire Pulse war not found - neither {} or {} exist", toolsPulseWar, libPulseWar);
return null;
}
}
[9/9] incubator-geode git commit: GEODE-608: Add rat task as a
depedency for the check task
Posted by ab...@apache.org.
GEODE-608: Add rat task as a depedency for the check task
The rat constraints will now be applied whenever the check task
is performed (typically via `gradle build`).
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/2def1128
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/2def1128
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/2def1128
Branch: refs/heads/feature/GEODE-608
Commit: 2def1128e0d966f72f958c9bbb6335763671249d
Parents: adcfb64
Author: Anthony Baker <ab...@pivotal.io>
Authored: Wed Dec 2 08:45:11 2015 -0800
Committer: Anthony Baker <ab...@pivotal.io>
Committed: Wed Dec 2 08:45:11 2015 -0800
----------------------------------------------------------------------
build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2def1128/build.gradle
----------------------------------------------------------------------
diff --git a/build.gradle b/build.gradle
index 55e1baa..0048c27 100755
--- a/build.gradle
+++ b/build.gradle
@@ -551,7 +551,7 @@ subprojects {
description 'Run this task before checking in code to validate changes. This task combines the following tasks: build, integrationTest, and distributedTest'
}
- check.dependsOn checkMissedTests
+ check.dependsOn checkMissedTests, rat
combineReports.mustRunAfter check, test, integrationTest, distributedTest, checkMissedTests
build.finalizedBy combineReports
check.finalizedBy combineReports
[8/9] incubator-geode git commit: Merge branch 'develop' into
feature/GEODE-608
Posted by ab...@apache.org.
Merge branch 'develop' into feature/GEODE-608
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/adcfb646
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/adcfb646
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/adcfb646
Branch: refs/heads/feature/GEODE-608
Commit: adcfb6465273916f62844533f11f3ab73e468b4d
Parents: 4f20aba bff59d1
Author: Anthony Baker <ab...@pivotal.io>
Authored: Wed Dec 2 08:38:25 2015 -0800
Committer: Anthony Baker <ab...@pivotal.io>
Committed: Wed Dec 2 08:38:25 2015 -0800
----------------------------------------------------------------------
build.gradle | 1 +
gemfire-assembly/build.gradle | 2 -
gemfire-core/build.gradle | 1 -
.../com/gemstone/gemfire/SystemFailure.java | 4 +-
.../gemfire/admin/jmx/internal/AgentImpl.java | 15 +-
.../internal/GemFireHealthConfigJmxImpl.java | 14 +-
.../cache/query/internal/CompiledOperation.java | 4 +-
.../internal/DistributionChannel.java | 2 +-
.../internal/DistributionManager.java | 29 +-
.../internal/HighPriorityAckedMessage.java | 4 +-
.../distributed/internal/StartupMessage.java | 19 -
.../distributed/internal/StartupOperation.java | 1 -
.../internal/direct/DirectChannel.java | 16 +-
.../internal/direct/DirectChannelListener.java | 22 ++
.../DistributedMembershipListener.java | 13 +-
.../internal/membership/MemberFactory.java | 8 -
.../internal/membership/MemberServices.java | 6 -
.../internal/membership/MembershipManager.java | 13 -
.../internal/membership/NetView.java | 46 ++-
.../internal/membership/gms/GMSMember.java | 22 --
.../membership/gms/GMSMemberFactory.java | 12 +-
.../internal/membership/gms/GMSUtil.java | 19 +
.../membership/gms/fd/GMSHealthMonitor.java | 15 +-
.../membership/gms/membership/GMSJoinLeave.java | 25 +-
.../gms/messenger/JGroupsMessenger.java | 17 +-
.../gms/mgr/GMSMembershipManager.java | 342 +++--------------
.../gemfire/internal/StatArchiveWriter.java | 28 +-
.../internal/cache/AbstractUpdateOperation.java | 4 +-
.../internal/cache/TXStateProxyImpl.java | 4 +-
.../cache/tier/sockets/AcceptorImpl.java | 4 +-
.../cache/tier/sockets/BaseCommand.java | 18 +-
.../tier/sockets/ClientProxyMembershipID.java | 5 +-
.../cache/versions/RegionVersionVector.java | 6 +-
.../internal/cache/xmlcache/CacheCreation.java | 7 +-
.../internal/datasource/AbstractPoolCache.java | 4 +-
.../internal/logging/log4j/LogMarker.java | 1 -
.../internal/memcached/commands/GetCommand.java | 7 +-
.../internal/statistics/SampleCollector.java | 4 +-
.../gemfire/internal/tcp/Connection.java | 7 +
.../gemfire/internal/tcp/TCPConduit.java | 6 +-
.../gemfire/internal/util/DebuggerSupport.java | 4 +-
.../gemfire/internal/util/SingletonValue.java | 6 +-
.../CustomEntryConcurrentHashMap.java | 8 +-
.../gemfire/management/internal/AgentUtil.java | 56 +--
.../cache30/ClientMembershipDUnitTest.java | 12 +-
.../cache30/ClientServerCCEDUnitTest.java | 2 +-
...tributedAckPersistentRegionCCEDUnitTest.java | 18 +-
.../cache30/DistributedAckRegionDUnitTest.java | 2 +-
.../DistributedNoAckRegionCCEDUnitTest.java | 11 +-
.../gemfire/cache30/MultiVMRegionTestCase.java | 4 +-
.../gemfire/cache30/TXDistributedDUnitTest.java | 2 +-
.../membership/MembershipJUnitTest.java | 29 +-
.../internal/membership/NetViewJUnitTest.java | 194 ++++++++++
.../locator/GMSLocatorRecoveryJUnitTest.java | 4 +-
.../gms/mgr/GMSMembershipManagerJUnitTest.java | 370 +++++++++++++++++++
.../cache/locks/TXLockServiceDUnitTest.java | 2 +-
.../cache/xmlcache/CacheCreationJUnitTest.java | 28 +-
.../test/java/dunit/DistributedTestCase.java | 9 +
.../java/dunit/standalone/ProcessManager.java | 8 -
gradle/dependency-versions.properties | 1 +
60 files changed, 914 insertions(+), 633 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/adcfb646/build.gradle
----------------------------------------------------------------------
[4/9] incubator-geode git commit: Adding code-coverage testing for
GMSMembershipManager and removing unused code.
Posted by ab...@apache.org.
Adding code-coverage testing for GMSMembershipManager and removing unused code.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/38dd3ed8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/38dd3ed8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/38dd3ed8
Branch: refs/heads/feature/GEODE-608
Commit: 38dd3ed892be2acd1609c0b72ee5f4d4cfe85175
Parents: 253549d
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Fri Nov 20 13:33:21 2015 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Tue Dec 1 08:47:51 2015 -0800
----------------------------------------------------------------------
.../internal/DistributionChannel.java | 2 +-
.../internal/DistributionManager.java | 29 +-
.../internal/HighPriorityAckedMessage.java | 4 +-
.../distributed/internal/StartupMessage.java | 19 -
.../distributed/internal/StartupOperation.java | 1 -
.../internal/direct/DirectChannel.java | 16 +-
.../internal/direct/DirectChannelListener.java | 22 ++
.../DistributedMembershipListener.java | 13 +-
.../internal/membership/MemberFactory.java | 8 -
.../internal/membership/MemberServices.java | 6 -
.../internal/membership/MembershipManager.java | 13 -
.../internal/membership/gms/GMSMember.java | 22 --
.../membership/gms/GMSMemberFactory.java | 12 +-
.../internal/membership/gms/GMSUtil.java | 19 +
.../membership/gms/fd/GMSHealthMonitor.java | 2 +-
.../gms/messenger/JGroupsMessenger.java | 9 +-
.../gms/mgr/GMSMembershipManager.java | 342 +++--------------
.../internal/logging/log4j/LogMarker.java | 1 -
.../gemfire/internal/tcp/Connection.java | 7 +
.../gemfire/internal/tcp/TCPConduit.java | 6 +-
.../membership/MembershipJUnitTest.java | 29 +-
.../locator/GMSLocatorRecoveryJUnitTest.java | 4 +-
.../gms/mgr/GMSMembershipManagerJUnitTest.java | 370 +++++++++++++++++++
23 files changed, 520 insertions(+), 436 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionChannel.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionChannel.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionChannel.java
index daccc9c..a31c92f 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionChannel.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionChannel.java
@@ -132,7 +132,7 @@ public class DistributionChannel {
public long getId() {
MembershipManager mgr = this.membershipManager;
if (mgr == null) {
- throw new DistributedSystemDisconnectedException(LocalizedStrings.DistributionChannel_I_NO_LONGER_HAVE_A_MEMBERSHIP_ID.toLocalizedString(), membershipManager.getShutdownCause());
+ throw new DistributedSystemDisconnectedException(LocalizedStrings.DistributionChannel_I_NO_LONGER_HAVE_A_MEMBERSHIP_ID.toLocalizedString());
}
InternalDistributedMember moi = mgr.getLocalMember();
if (moi == null) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionManager.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionManager.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionManager.java
index 837194c..5d3bdce 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionManager.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionManager.java
@@ -593,7 +593,7 @@ public class DistributionManager
}
}
}
- dm.addNewMember(id, null); // add ourselves
+ dm.addNewMember(id); // add ourselves
dm.selectElder(); // ShutdownException could be thrown here
}
@@ -1440,7 +1440,7 @@ public class DistributionManager
// Add them all to our view
Iterator<InternalDistributedMember> it = v.getMembers().iterator();
while (it.hasNext()) {
- addNewMember(it.next(), null);
+ addNewMember(it.next());
}
// Figure out who the elder is...
@@ -1610,15 +1610,6 @@ public class DistributionManager
}
/**
- * Returns a remote reference to the channel used for point-to-point
- * communications, or null if the normal channel is being used for
- * this.
- */
- protected Stub getDirectChannel() {
- return membershipManager.getDirectChannel();
- }
-
- /**
* Returns an unmodifiable set containing the identities of all of
* the known (non-admin-only) distribution managers.
*/
@@ -1820,16 +1811,16 @@ public class DistributionManager
}
}
- public void addNewMember(InternalDistributedMember member, Stub stub) {
+ public void addNewMember(InternalDistributedMember member) {
// This is the place to cleanup the zombieMembers
int vmType = member.getVmKind();
switch (vmType) {
case ADMIN_ONLY_DM_TYPE:
- handleConsoleStartup(member, stub);
+ handleConsoleStartup(member);
break;
case LOCATOR_DM_TYPE:
case NORMAL_DM_TYPE:
- handleManagerStartup(member, stub);
+ handleManagerStartup(member);
break;
default:
throw new InternalGemFireError(LocalizedStrings.DistributionManager_UNKNOWN_MEMBER_TYPE_0.toLocalizedString(Integer.valueOf(vmType)));
@@ -2795,7 +2786,7 @@ public class DistributionManager
if (unresponsiveElder) {
logger.warn(LocalizedMessage.create(
LocalizedStrings.DistributionManager_FORCING_AN_ELDER_JOIN_EVENT_SINCE_A_STARTUP_RESPONSE_WAS_NOT_RECEIVED_FROM_ELDER__0_, e));
- handleManagerStartup(e, null/*stub already registered*/);
+ handleManagerStartup(e);
}
} // an elder exists
} // someone didn't reply
@@ -3104,7 +3095,7 @@ public class DistributionManager
* The id of the distribution manager starting up
*
*/
- private void handleManagerStartup(InternalDistributedMember theId, Stub directChannel) {
+ private void handleManagerStartup(InternalDistributedMember theId) {
HashMap<InternalDistributedMember,InternalDistributedMember> tmp = null;
synchronized (this.membersLock) {
// Note test is under membersLock
@@ -3150,7 +3141,7 @@ public class DistributionManager
* the distributed cache.
*
*/
- private void handleConsoleStartup(InternalDistributedMember theId, Serializable directChannel) {
+ private void handleConsoleStartup(InternalDistributedMember theId) {
// if we have an all listener then notify it NOW.
HashSet tmp = null;
synchronized (this.membersLock) {
@@ -4400,12 +4391,12 @@ public class DistributionManager
handleIncomingDMsg(message);
}
- public void newMemberConnected(InternalDistributedMember member, Stub stub) {
+ public void newMemberConnected(InternalDistributedMember member) {
// Do not elect the elder here as surprise members invoke this callback
// without holding the view lock. That can cause a race condition and
// subsequent deadlock (#45566). Elder selection is now done when a view
// is installed.
- dm.addNewMember(member, stub);
+ dm.addNewMember(member);
}
public void memberDeparted(InternalDistributedMember theId, boolean crashed, String reason) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/HighPriorityAckedMessage.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/HighPriorityAckedMessage.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/HighPriorityAckedMessage.java
index cf0a856..66bd9bb 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/HighPriorityAckedMessage.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/HighPriorityAckedMessage.java
@@ -69,7 +69,9 @@ public final class HighPriorityAckedMessage extends HighPriorityDistributionMess
if (ds != null) {
this.originDm = (DistributionManager)ds.getDistributionManager();
}
- this.id = this.originDm.getDistributionManagerId();
+ if (this.originDm != null) {
+ this.id = this.originDm.getDistributionManagerId();
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupMessage.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupMessage.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupMessage.java
index 612d3fa..96f8b60 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupMessage.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupMessage.java
@@ -46,8 +46,6 @@ import com.gemstone.gemfire.internal.tcp.Stub;
public final class StartupMessage extends HighPriorityDistributionMessage implements AdminMessageType {
private static final Logger logger = LogService.getLogger();
- /** A stub for the direct channel for this manager */
- private Stub directChannel;
private String version = GemFireVersion.getGemFireVersion(); // added for bug 29005
private int replyProcessorId;
private boolean isMcastEnabled;
@@ -102,13 +100,6 @@ public final class StartupMessage extends HighPriorityDistributionMessage implem
/////////////////////// Instance Methods ///////////////////////
/**
- * Sets the id of the distribution manager that is starting up
- */
- void setDirectChannel(Stub directChannel) {
- this.directChannel = directChannel;
- }
-
- /**
* Sets the reply processor for this message
*/
void setReplyProcessorId(int proc) {
@@ -319,10 +310,6 @@ public final class StartupMessage extends HighPriorityDistributionMessage implem
@Override
public void toData(DataOutput out) throws IOException {
super.toData(out);
- out.writeBoolean(this.directChannel != null);
- if (this.directChannel != null) {
- InternalDataSerializer.invokeToData(this.directChannel, out);
- }
boolean pre9_0_0_0 = InternalDataSerializer.
getVersionForDataStream(out).compareTo(Version.GFE_90) < 0;
@@ -391,12 +378,6 @@ public final class StartupMessage extends HighPriorityDistributionMessage implem
public void fromData(DataInput in)
throws IOException, ClassNotFoundException {
super.fromData(in);
- boolean hasDirectChannel = in.readBoolean();
- if (hasDirectChannel) {
- this.directChannel = Stub.createFromData(in);
- } else {
- this.directChannel = null;
- }
boolean pre9_0_0_0 = InternalDataSerializer.
getVersionForDataStream(in).compareTo(Version.GFE_90) < 0;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupOperation.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupOperation.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupOperation.java
index 6d0ccb7..721f95b 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupOperation.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupOperation.java
@@ -65,7 +65,6 @@ public class StartupOperation {
msg.setDistributedSystemId(dm.getConfig().getDistributedSystemId());
msg.setRedundancyZone(redundancyZone);
msg.setEnforceUniqueZone(enforceUniqueZone);
- msg.setDirectChannel(dm.getDirectChannel());
msg.setMcastEnabled(transport.isMcastEnabled());
msg.setMcastPort(dm.getSystem().getOriginalConfig().getMcastPort());
msg.setMcastHostAddress(dm.getSystem().getOriginalConfig().getMcastAddress());
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
index fb7572a..f84813e 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
@@ -91,7 +91,7 @@ public class DirectChannel {
private volatile boolean disconnectCompleted = true;
/** this is the DistributionManager, most of the time */
- private final DistributedMembershipListener receiver;
+ private final DirectChannelListener receiver;
private final InetAddress address;
@@ -142,17 +142,17 @@ public class DirectChannel {
/**
* @param mgr
- * @param dm
+ * @param listener
* @param dc
* @param unused
* @throws ConnectionException
*/
- public DirectChannel(MembershipManager mgr, DistributedMembershipListener dm,
- DistributionConfig dc, Properties unused)
+ public DirectChannel(MembershipManager mgr, DirectChannelListener listener,
+ DistributionConfig dc)
throws ConnectionException {
- this.receiver = dm;
+ this.receiver = listener;
- this.address = initAddress(dm, dc);
+ this.address = initAddress(dc);
boolean isBindAddress = dc.getBindAddress() != null;
try {
int port = Integer.getInteger("tcpServerPort", 0).intValue();
@@ -889,7 +889,7 @@ public class DirectChannel {
}
/** returns the receiver to which this DirectChannel is delivering messages */
- protected DistributedMembershipListener getReceiver() {
+ protected DirectChannelListener getReceiver() {
return receiver;
}
@@ -909,7 +909,7 @@ public class DirectChannel {
return this.conduit;
}
- private InetAddress initAddress(DistributedMembershipListener dm, DistributionConfig dc) {
+ private InetAddress initAddress(DistributionConfig dc) {
String bindAddress = dc.getBindAddress();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannelListener.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannelListener.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannelListener.java
new file mode 100755
index 0000000..28f481b
--- /dev/null
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannelListener.java
@@ -0,0 +1,22 @@
+package com.gemstone.gemfire.distributed.internal.direct;
+
+import com.gemstone.gemfire.distributed.internal.DistributionManager;
+import com.gemstone.gemfire.distributed.internal.DistributionMessage;
+
+public interface DirectChannelListener {
+
+ /**
+ * Event indicating a message has been delivered that we need to process.
+ *
+ * @param o the message that should be processed.
+ */
+ public void messageReceived(DistributionMessage o);
+
+
+ /**
+ * Return the distribution manager for this receiver
+ * @return the distribution manager
+ */
+ public DistributionManager getDM();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/DistributedMembershipListener.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/DistributedMembershipListener.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/DistributedMembershipListener.java
index 5436b47..acfd6ba 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/DistributedMembershipListener.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/DistributedMembershipListener.java
@@ -21,8 +21,9 @@ import java.util.Set;
import com.gemstone.gemfire.distributed.internal.DistributionManager;
import com.gemstone.gemfire.distributed.internal.DistributionMessage;
+import com.gemstone.gemfire.distributed.internal.direct.DirectChannelListener;
-public interface DistributedMembershipListener {
+public interface DistributedMembershipListener extends DirectChannelListener {
/** this method is invoked when the processing of a new view is completed */
public void viewInstalled(NetView view);
@@ -33,10 +34,8 @@ public interface DistributedMembershipListener {
/**
* Event indicating that a new member has joined the system.
* @param m the new member
- * @param stub the stub, if any, representing communication to this member
*/
- public void newMemberConnected(InternalDistributedMember m,
- com.gemstone.gemfire.internal.tcp.Stub stub);
+ public void newMemberConnected(InternalDistributedMember m);
/**
* Event indicating that a member has left the system
@@ -83,10 +82,4 @@ public interface DistributedMembershipListener {
*/
public String toString();
- /**
- * Return the distribution manager for this receiver
- * @return the distribution manager
- */
- public DistributionManager getDM();
-
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberFactory.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberFactory.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberFactory.java
index c8a23e8..250a9a3 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberFactory.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberFactory.java
@@ -38,14 +38,6 @@ public class MemberFactory {
private static final MemberServices services = new GMSMemberFactory();
/**
- * Return a blank NetMember (used by externalization)
- * @return the new NetMember
- */
- static public NetMember newNetMember() {
- return services.newNetMember();
- }
-
- /**
* Return a new NetMember, possibly for a different host
*
* @param i the name of the host for the specified NetMember, the current host (hopefully)
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberServices.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberServices.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberServices.java
index 8fb302e..3fb6ef2 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberServices.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberServices.java
@@ -35,12 +35,6 @@ import com.gemstone.gemfire.internal.admin.remote.RemoteTransportConfig;
public interface MemberServices {
/**
- * Return a blank NetMember (used by externalization)
- * @return the new NetMember
- */
- public abstract NetMember newNetMember();
-
- /**
* Return a new NetMember, possibly for a different host
*
* @param i the name of the host for the specified NetMember, the current host (hopefully)
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MembershipManager.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MembershipManager.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MembershipManager.java
index f72e6e2..54b82a7 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MembershipManager.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MembershipManager.java
@@ -121,13 +121,6 @@ public interface MembershipManager {
*/
public void startEventProcessing();
- /**
- * Return the underlying proxy object, if any, associated with this
- * local side of this connection.
- *
- * @return the Stub
- */
- public Stub getDirectChannel();
/**
* @param destinations list of members to send the message to. A list of
@@ -345,10 +338,4 @@ public interface MembershipManager {
*/
public void releaseQuorumChecker(QuorumChecker checker);
- /**
- * sets the log writer for authentication logging
- * @param writer
- */
- public void setSecurityLogWriter(InternalLogWriter writer);
-
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
index e7c9315..f4784ed 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMember.java
@@ -93,28 +93,6 @@ public class GMSMember implements NetMember, DataSerializableFixedID {
}
/**
- * This is the only constructor to refer to a CacheMember other
- * than the current host.
- */
- public GMSMember(GMSMember m) {
- udpPort=m.udpPort;
- preferredForCoordinator=m.preferredForCoordinator;
- splitBrainEnabled=m.splitBrainEnabled;
- memberWeight=m.memberWeight;
- inetAddr=m.inetAddr;
- processId=m.processId;
- vmKind=m.vmKind;
- vmViewId=m.vmViewId;
- directPort=m.directPort;
- name=m.name;
- durableClientAttributes=m.durableClientAttributes;
- groups=m.groups;
- versionOrdinal=m.versionOrdinal;
- uuidLSBs=m.uuidLSBs;
- uuidMSBs=m.uuidMSBs;
- }
-
- /**
* Create a CacheMember referring to the current host (as defined by
* the given string).
*
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java
index 36311a2..2063d7c 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java
@@ -95,17 +95,6 @@ public class GMSMemberFactory implements MemberServices {
return newNetMember(inetAddr, p);
}
- /**
- * Return a new Member
- *
- * Used by externalization only.
- *
- * @return blank member for use with externalization
- */
- public NetMember newNetMember() {
- return new GMSMember();
- }
-
public MembershipManager newMembershipManager(DistributedMembershipListener listener,
DistributionConfig config,
RemoteTransportConfig transport, DMStats stats) throws DistributionException
@@ -140,4 +129,5 @@ public class GMSMemberFactory implements MemberServices {
return new GMSLocator(bindAddress, stateFile, locatorString, usePreferredCoordinators, networkPartitionDetectionEnabled, stats);
}
+
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSUtil.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSUtil.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSUtil.java
index df8847c..6478c70 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSUtil.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSUtil.java
@@ -136,5 +136,24 @@ public class GMSUtil {
}
+ /** compareTo for InetAddresses */
+ public static int compareAddresses(InetAddress one, InetAddress two) {
+ byte[] oneBytes = one.getAddress();
+ byte[] twoBytes = two.getAddress();
+
+ if (oneBytes != twoBytes) {
+ for (int i = 0; i < oneBytes.length; i++) {
+ if (i >= twoBytes.length)
+ return -1; // same as far as they go, but shorter...
+ if (oneBytes[i] < twoBytes[i])
+ return -1;
+ if (oneBytes[i] > twoBytes[i])
+ return 1;
+ }
+ if (oneBytes.length > twoBytes.length)
+ return 1; // same as far as they go, but longer...
+ }
+ return 0;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
index bd60236..fcda1a0 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
@@ -419,7 +419,7 @@ public class GMSHealthMonitor implements HealthMonitor, MessageHandler {
* @return
*/
private boolean doCheckMember(InternalDistributedMember member) {
- if (playingDead) {
+ if (playingDead || beingSick) {
// a member playingDead should not be sending messages to other
// members, so we avoid sending heartbeat requests or suspect
// messages by returning true.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
index 91c32ae..3a00f62 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
@@ -605,7 +605,7 @@ public class JGroupsMessenger implements Messenger {
}
}
if (problem != null) {
- if (services.getManager().getShutdownCause() != null) {
+ if (services.getShutdownCause() != null) {
Throwable cause = services.getShutdownCause();
// If ForcedDisconnectException occurred then report it as actual
// problem.
@@ -901,13 +901,6 @@ public class JGroupsMessenger implements Messenger {
}
/**
- * returns the JChannel for test verification
- */
- public JChannel getJGroupsChannel() {
- return this.myChannel;
- }
-
- /**
* for unit testing we need to replace UDP with a fake UDP protocol
*/
public void setJGroupsStackConfigForTesting(String config) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManager.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
index e7c937d..4e108be 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
@@ -65,12 +65,14 @@ import com.gemstone.gemfire.distributed.internal.SizeableRunnable;
import com.gemstone.gemfire.distributed.internal.StartupMessage;
import com.gemstone.gemfire.distributed.internal.ThrottlingMemLinkedQueueWithDMStats;
import com.gemstone.gemfire.distributed.internal.direct.DirectChannel;
+import com.gemstone.gemfire.distributed.internal.direct.DirectChannelListener;
import com.gemstone.gemfire.distributed.internal.membership.DistributedMembershipListener;
import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
import com.gemstone.gemfire.distributed.internal.membership.MembershipManager;
import com.gemstone.gemfire.distributed.internal.membership.MembershipTestHook;
import com.gemstone.gemfire.distributed.internal.membership.NetView;
import com.gemstone.gemfire.distributed.internal.membership.QuorumChecker;
+import com.gemstone.gemfire.distributed.internal.membership.gms.GMSUtil;
import com.gemstone.gemfire.distributed.internal.membership.gms.Services;
import com.gemstone.gemfire.distributed.internal.membership.gms.SuspectMember;
import com.gemstone.gemfire.distributed.internal.membership.gms.fd.GMSHealthMonitor;
@@ -85,7 +87,6 @@ import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
import com.gemstone.gemfire.internal.cache.xmlcache.CacheServerCreation;
import com.gemstone.gemfire.internal.cache.xmlcache.CacheXmlGenerator;
import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
-import com.gemstone.gemfire.internal.logging.InternalLogWriter;
import com.gemstone.gemfire.internal.logging.log4j.AlertAppender;
import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
@@ -134,18 +135,16 @@ public class GMSMembershipManager implements MembershipManager, Manager
}
static class StartupEvent {
- static final int DEPARTURE = 1;
- static final int CONNECT = 2;
- static final int VIEW = 3;
- static final int MESSAGE = 4;
+ static final int SURPRISE_CONNECT = 1;
+ static final int VIEW = 2;
+ static final int MESSAGE = 3;
/**
* indicates whether the event is a departure, a surprise connect
* (i.e., before the view message arrived), a view, or a regular
* message
*
- * @see #DEPARTURE
- * @see #CONNECT
+ * @see #SURPRISE_CONNECT
* @see #VIEW
* @see #MESSAGE
*/
@@ -164,20 +163,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
StringBuffer sb = new StringBuffer();
sb.append("kind=");
switch (kind) {
- case DEPARTURE:
- sb.append("departure; member = <")
- .append(member)
- .append(">; crashed = ")
- .append(crashed)
- .append("; reason = ");
- if (reason != null && (reason.indexOf("NoSuchMemberException") >= 0)) {
- sb.append(LocalizedStrings.GroupMembershipService_TCPIP_CONNECTIONS_CLOSED.toLocalizedString());
- }
- else {
- sb.append(reason);
- }
- break;
- case CONNECT:
+ case SURPRISE_CONNECT:
sb.append("connect; member = <" + member + ">; stub = " + stub);
break;
case VIEW:
@@ -193,42 +179,23 @@ public class GMSMembershipManager implements MembershipManager, Manager
}
return sb.toString();
}
- /**
- * Create a departure event
- * @param dm the member that left
- * @param crashed true if this member crashed
- * @param reason reason string, esp. if crashed
- */
- StartupEvent(InternalDistributedMember dm, boolean crashed, String reason) {
- this.kind = DEPARTURE;
- this.member = dm;
- this.crashed = crashed;
- this.reason = reason;
- }
- /**
- * Indicate if this is a departure
- * @return true if this is a departure event
- */
- boolean isDepartureEvent() {
- return this.kind == DEPARTURE;
- }
/**
- * Create a connect event
+ * Create a surprise connect event
* @param member the member connecting
* @param id the stub
*/
StartupEvent(final InternalDistributedMember member, final Stub id) {
- this.kind = CONNECT;
+ this.kind = SURPRISE_CONNECT;
this.member = member;
this.stub = id;
}
/**
- * Indicate if this is a connect event
+ * Indicate if this is a surprise connect event
* @return true if this is a connect event
*/
- boolean isConnect() {
- return this.kind == CONNECT;
+ boolean isSurpriseConnect() {
+ return this.kind == SURPRISE_CONNECT;
}
/**
@@ -398,11 +365,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
*/
private final long suspectMemberTimeout = 180000;
- /** sleep period, in millis, that the user of this manager should slumber after creating
- the manager. This is advice from the JChannel itself when it detects a concurrent
- startup race condition that requires a settling period. */
- private long channelPause = 0;
-
/**
* Length of time, in seconds, that a member is retained in the zombie set
*
@@ -451,10 +413,10 @@ public class GMSMembershipManager implements MembershipManager, Manager
* @author jpenney
*
*/
- class MyDCReceiver implements DistributedMembershipListener
+ class MyDCReceiver implements DirectChannelListener
{
- DistributedMembershipListener upCall;
+ DirectChannelListener upCall;
/**
* Don't provide events until the caller has told us we are ready.
@@ -465,60 +427,17 @@ public class GMSMembershipManager implements MembershipManager, Manager
* client; we don't need to put this check before every call...
*
*/
- MyDCReceiver(DistributedMembershipListener up) {
+ MyDCReceiver(DirectChannelListener up) {
upCall = up;
}
- public void messageReceived(DistributionMessage msg)
- {
+ public void messageReceived(DistributionMessage msg) {
// bug 36851 - notify failure detection that we've had contact from a member
services.getHealthMonitor().contactedBy(msg.getSender());
handleOrDeferMessage(msg);
}
- public void newMemberConnected(final InternalDistributedMember member, final Stub id)
- {
- handleOrDeferSurpriseConnect(member, id);
- }
-
- public void memberDeparted(InternalDistributedMember id, boolean crashed, String reason)
- {
- try {
- handleOrDeferRemove(id, crashed, reason);
- }
- catch (DistributedSystemDisconnectedException ignore) {
- // ignore
- }
- catch (RuntimeException e) {
- logger.warn(LocalizedMessage.create(LocalizedStrings.GroupMembershipService_MEMBERSHIP_ERROR_HANDLING_MEMBER_DEPARTURE__0), e);
- }
- }
-
- public void quorumLost(Set<InternalDistributedMember> failures, List<InternalDistributedMember> remaining) {
- }
-
- public void memberSuspect(InternalDistributedMember suspect, InternalDistributedMember whoSuspected) {
- // the direct channel isn't currently a source of suspect events, though
- // it does request initiation of suspicion through the membership
- // manager
- }
-
- public boolean isShutdownMsgSent()
- {
- return upCall.isShutdownMsgSent();
- }
-
- public void membershipFailure(String reason, Throwable t)
- {
- upCall.membershipFailure(reason, t);
- }
-
- public void viewInstalled(NetView view) {
- upCall.viewInstalled(view);
- }
-
- public DistributionManager getDM()
- {
+ public DistributionManager getDM() {
return upCall.getDM();
}
@@ -547,9 +466,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
msg.append("Membership: Processing view ");
msg.append(newView);
msg.append("} on " + address.toString());
- if (logger.isDebugEnabled()) {
- logger.debug(LogMarker.DM_VIEWS, msg);
- }
if (!newView.contains(address)) {
logger.info(LocalizedMessage.create(
LocalizedStrings.GroupMembershipService_THE_MEMBER_WITH_ID_0_IS_NO_LONGER_IN_MY_OWN_VIEW_1,
@@ -584,10 +500,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
if (newViewId < latestViewId) {
// ignore this view since it is old news
- if (newViewId < latestViewId && logger.isDebugEnabled(LogMarker.DISTRIBUTION_VIEWS)) {
- logger.debug(LogMarker.DISTRIBUTION_VIEWS, "Membership: Ignoring view (with id {}) since it is older than the last view (with id {}); ignoredView={}",
- newViewId, latestViewId, newView);
- }
return;
}
@@ -641,8 +553,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
}
if (shutdownInProgress()) {
- logger.info(LogMarker.DM_VIEWS, LocalizedMessage.create(
- LocalizedStrings.GroupMembershipService_MEMBERSHIP_SHUNNING_MEMBER__0__DURING_OUR_SHUTDOWN, m));
addShunnedMember(m);
continue; // no additions processed after shutdown begins
} else {
@@ -655,7 +565,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
logger.info(LocalizedMessage.create(LocalizedStrings.GroupMembershipService_MEMBERSHIP_PROCESSING_ADDITION__0_, m));
try {
- listener.newMemberConnected(m, getStubForMember(m));
+ listener.newMemberConnected(m);
}
catch (VirtualMachineError err) {
SystemFailure.initiateFailure(err);
@@ -690,8 +600,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
}
try {
- logger.info(LogMarker.DM_VIEWS, LocalizedMessage.create(
- LocalizedStrings.GroupMembershipService_MEMBERSHIP_PROCESSING_DEPARTING_MEMBER__0_, m));
removeWithViewLock(m,
newView.getCrashedMembers().contains(m) || suspectedMembers.containsKey(m)
, "departed membership view");
@@ -741,9 +649,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
if (birthtime.longValue() < oldestAllowed) {
InternalDistributedMember m = (InternalDistributedMember)entry.getKey();
it.remove();
- if (logger.isTraceEnabled(LogMarker.DISTRIBUTION_VIEWS)) {
- logger.trace(LogMarker.DISTRIBUTION_VIEWS, "Membership: expiring suspect member <{}>", m);
- }
}
}
try {
@@ -755,8 +660,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
} finally {
latestViewLock.writeLock().unlock();
}
- logger.info(LogMarker.DM_VIEWS, LocalizedMessage.create(
- LocalizedStrings.GroupMembershipService_MEMBERSHIP_FINISHED_VIEW_PROCESSING_VIEWID___0, Long.valueOf(newViewId)));
}
/**
@@ -869,7 +772,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
int dcPort = 0;
if (!tcpDisabled) {
- directChannel = new DirectChannel(this, dcReceiver, config, null);
+ directChannel = new DirectChannel(this, dcReceiver, config);
dcPort = directChannel.getPort();
}
@@ -971,23 +874,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
}
/**
- * Remove a member, or queue a startup operation to do so
- * @param dm the member to shun
- * @param crashed true if crashed
- * @param reason the reason, esp. if crashed
- */
- protected void handleOrDeferRemove(InternalDistributedMember dm,
- boolean crashed, String reason) {
- synchronized(startupLock) {
- if (!processingEvents) {
- startupMessages.add(new StartupEvent(dm, crashed, reason));
- return;
- }
- }
- removeMember(dm, crashed, reason);
- }
-
- /**
* Remove a member. {@link #latestViewLock} must be held
* before this method is called. If member is not already shunned,
* the uplevel event handler is invoked.
@@ -1007,10 +893,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
return; // Explicit deletion, no upcall.
}
- if (logger.isTraceEnabled(LogMarker.DISTRIBUTION_VIEWS)) {
- logger.trace(LogMarker.DISTRIBUTION_VIEWS, "Membership: dispatching uplevel departure event for < {} >", dm);
- }
-
try {
listener.memberDeparted(dm, crashed, reason);
}
@@ -1020,48 +902,12 @@ public class GMSMembershipManager implements MembershipManager, Manager
}
/**
- * Automatic removal of a member (for internal
- * use only). Write-locks {@link #latestViewLock} and then deletes
- * the member.
- *
- * @param dm
- * @param crashed
- * @param reason
- */
- protected void removeMember(InternalDistributedMember dm,
- boolean crashed, String reason)
- {
- if (logger.isTraceEnabled(LogMarker.DISTRIBUTION_VIEWS)) {
- StringBuffer sb = new StringBuffer(200);
- sb.append("Membership: removing <")
- .append(dm)
- .append(">; crashed = ")
- .append(crashed)
- .append("; reason = ");
- if (reason != null && (reason.indexOf("NoSuchMemberException") >= 0)) {
- sb.append("tcp/ip connections closed");
- }
- else {
- sb.append(reason);
- }
- logger.trace(LogMarker.DISTRIBUTION_VIEWS, sb);
- }
- latestViewLock.writeLock().lock();
- try {
- removeWithViewLock(dm, crashed, reason);
- } finally {
- latestViewLock.writeLock().unlock();
- }
- }
-
-
- /**
* Process a surprise connect event, or place it on the startup queue.
* @param member the member
* @param stub its stub
*/
- protected void handleOrDeferSurpriseConnect(InternalDistributedMember member,
- Stub stub) {
+ protected void handleOrDeferSurpriseConnect(InternalDistributedMember member) {
+ Stub stub = new Stub(member.getInetAddress(), member.getDirectChannelPort(), member.getVmViewId());
synchronized (startupLock) {
if (!processingEvents) {
startupMessages.add(new StartupEvent(member, stub));
@@ -1113,7 +959,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
return true;
}
if (member.getVmViewId() < 0) {
- logger.warn("attempt to add a surprise member that has not yet joined the distributed system: " + member, new Exception("stack trace"));
+ logger.warn("adding a surprise member that has not yet joined the distributed system: " + member, new Exception("stack trace"));
}
if (latestView.getViewId() > member.getVmViewId()) {
// tell the process that it should shut down distribution.
@@ -1133,20 +979,11 @@ public class GMSMembershipManager implements MembershipManager, Manager
return false;
}
- if (logger.isTraceEnabled(LogMarker.DISTRIBUTION_VIEWS)) {
- logger.trace(LogMarker.DISTRIBUTION_VIEWS, "Membership: Received message from surprise member: <{}>. My view number is {} it is {}",
- member, latestView.getViewId(), member.getVmViewId());
- }
-
// Adding him to this set ensures we won't remove him if a new
// view comes in and he's still not visible.
surpriseMembers.put(member, Long.valueOf(System.currentTimeMillis()));
if (shutdownInProgress()) {
- if (logger.isTraceEnabled(LogMarker.DISTRIBUTION_VIEWS)) {
- logger.trace(LogMarker.DISTRIBUTION_VIEWS, "Membership: new member during shutdown ignored: <{}>", member);
- }
-
// Force disconnect, esp. the TCPConduit
String msg = LocalizedStrings.GroupMembershipService_THIS_DISTRIBUTED_SYSTEM_IS_SHUTTING_DOWN.toLocalizedString();
if (directChannel != null) {
@@ -1166,10 +1003,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
} else {
// Now that we're sure the member is new, add them.
- if (logger.isTraceEnabled(LogMarker.DM_VIEWS)) {
- logger.trace(LogMarker.DM_VIEWS, "Membership: Processing surprise addition <{}>", member);
- }
-
// make sure the surprise-member cleanup task is running
if (this.cleanupTimer == null) {
startCleanupTimer();
@@ -1206,7 +1039,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
logger.warn(LocalizedMessage.create(
LocalizedStrings.GroupMembershipService_MEMBERSHIP_IGNORING_SURPRISE_CONNECT_FROM_SHUNNED_MEMBER_0, member));
} else {
- listener.newMemberConnected(member, s);
+ listener.newMemberConnected(member);
}
return !warn;
}
@@ -1364,10 +1197,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
// to avoid blocking a reader thread
NetView newView = viewArg;
long newId = viewArg.getViewId();
- if (logger.isTraceEnabled(LogMarker.DM_VIEWS)) {
- logger.trace(LogMarker.DM_VIEWS, "Membership: queuing new view for processing, id = {}, view = {}",
- newId, newView);
- }
LocalViewMessage v = new LocalViewMessage(address, newId, newView,
GMSMembershipManager.this);
@@ -1445,10 +1274,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
else if (o.isGmsView()) { // view event
processView(o.gmsView.getViewId(), o.gmsView);
}
- else if (o.isDepartureEvent()) { // departure
- removeMember(o.member, o.crashed, o.reason);
- }
- else if (o.isConnect()) { // connect
+ else if (o.isSurpriseConnect()) { // connect
processSurpriseConnect(o.member, o.stub);
}
@@ -1552,6 +1378,12 @@ public class GMSMembershipManager implements MembershipManager, Manager
}
}
+ /**
+ * for testing we need to validate the startup event list
+ */
+ public List<StartupEvent> getStartupEvents() {
+ return this.startupMessages;
+ }
public ReadWriteLock getViewLock() {
return this.latestViewLock;
@@ -1639,19 +1471,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
return services;
}
- public void postConnect()
- {
- if (channelPause > 0) {
- logger.info(LocalizedMessage.create(
- LocalizedStrings.GroupMembershipService_MEMBERSHIP_PAUSING_TO_ALLOW_OTHER_CONCURRENT_PROCESSES_TO_JOIN_THE_DISTRIBUTED_SYSTEM));
- try {
- Thread.sleep(channelPause);
- }
- catch (InterruptedException ie) {
- Thread.currentThread().interrupt();
- }
- channelPause = 0;
- }
+ public void postConnect() {
}
/**
@@ -1936,7 +1756,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
* all received it)
* @throws NotSerializableException if the message is not serializable
*/
- private Set<InternalDistributedMember> directChannelSend(InternalDistributedMember[] destinations,
+ protected Set<InternalDistributedMember> directChannelSend(InternalDistributedMember[] destinations,
DistributionMessage content,
DMStats theStats)
throws NotSerializableException
@@ -2122,7 +1942,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
if (msg instanceof AdminMessageType
&& this.shutdownInProgress) {
- // no alerts while shutting down - this can cause threads to hang
+ // no admin messages while shutting down - this can cause threads to hang
return new HashSet(Arrays.asList(msg.getRecipients()));
}
@@ -2243,7 +2063,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
if (result == null) {
// it may have not been added to the stub->idm map yet, so check the current view
for (InternalDistributedMember idm: latestView.getMembers()) {
- if (idm.getInetAddress().equals(s.getInetAddress())
+ if (GMSUtil.compareAddresses(idm.getInetAddress(), s.getInetAddress()) == 0
&& idm.getDirectChannelPort() == s.getPort()) {
addChannel(idm, s);
return idm;
@@ -2298,8 +2118,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
*/
protected void destroyMember(final InternalDistributedMember member,
boolean crashed, final String reason) {
- if (logger.isTraceEnabled(LogMarker.DISTRIBUTION_VIEWS))
- logger.trace(LogMarker.DISTRIBUTION_VIEWS, "Membership: destroying < {} >", member);
// Clean up the maps
Stub theChannel = (Stub)memberToStubMap.remove(member);
@@ -2362,18 +2180,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
}
}
- public Stub getDirectChannel()
- {
- Stub result;
- latestViewLock.readLock().lock();
- try {
- result = (Stub)memberToStubMap.get(address);
- } finally {
- latestViewLock.readLock().unlock();
- }
- return result;
- }
-
/**
* Indicate whether the given member is in the zombie list (dead or dying)
* @param m the member in question
@@ -2398,9 +2204,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
return true;
// Oh, it _is_ stale. Remove it while we're here.
- if (logger.isTraceEnabled(LogMarker.DISTRIBUTION_VIEWS)) {
- logger.debug("Membership: no longer shunning < {} >", m);
- }
endShun(m);
return false;
} finally {
@@ -2459,14 +2262,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
return this.surpriseMemberTimeout;
}
- /**
- * returns the shunned member shunset interval, in milliseconds
- */
- public int getShunnedMemberTimeout() {
- return SHUNNED_SUNSET * 1000;
- }
-
-
private boolean endShun(DistributedMember m) {
boolean wasShunned = (shunnedMembers.remove(m) != null);
shunnedAndWarnedMembers.remove(m);
@@ -2490,8 +2285,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
// Update the shunned set.
if (!isShunned(m)) {
shunnedMembers.put(m, Long.valueOf(System.currentTimeMillis()));
- if (logger.isTraceEnabled(LogMarker.DISTRIBUTION_VIEWS))
- logger.trace(LogMarker.DISTRIBUTION_VIEWS, "Membership: added shunned member < {} >", m);
}
// Remove really really old shunned members.
@@ -2535,13 +2328,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
}
/**
- * Set thread-local data for hydra
- */
- public void setThreadLocalData(Object data) {
- Map dataMap = (Map)data;
- }
-
- /**
* for testing verification purposes, this return the port for the
* direct channel, or zero if there is no direct
* channel
@@ -2550,6 +2336,14 @@ public class GMSMembershipManager implements MembershipManager, Manager
return directChannel == null? 0 : directChannel.getPort();
}
+ /**
+ * for mock testing this allows insertion of a DirectChannel mock
+ */
+ protected void setDirectChannel(DirectChannel dc) {
+ this.directChannel = dc;
+ this.tcpDisabled = false;
+ }
+
/* non-thread-owned serial channels and high priority channels are not
* included
*/
@@ -2664,6 +2458,8 @@ public class GMSMembershipManager implements MembershipManager, Manager
}
+ // TODO remove this overly complex method and replace its use with
+ // waitForViewChange using the remote member's view ID
public boolean waitForMembershipCheck(InternalDistributedMember remoteId) {
boolean foundRemoteId = false;
CountDownLatch currentLatch = null;
@@ -2689,8 +2485,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
}
if (!foundRemoteId) {
- // ARB: wait for hardcoded 1000 ms for latch to open.
- // if-stmt precondition: currentLatch is non-null
try {
if (currentLatch.await(membershipCheckTimeout, TimeUnit.MILLISECONDS)) {
foundRemoteId = true;
@@ -2783,9 +2577,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
public synchronized void beSick() {
if (!beingSick) {
beingSick = true;
- if (logger.isInfoEnabled()) {
- logger.info("GroupMembershipService.beSick invoked for {} - simulating sickness", this.address);
- }
+ logger.info("GroupMembershipService.beSick invoked for {} - simulating sickness", this.address);
services.getJoinLeave().beSick();
services.getHealthMonitor().beSick();
if (directChannel != null) {
@@ -2800,9 +2592,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
public synchronized void playDead() {
if (!playingDead) {
playingDead = true;
- if (logger.isDebugEnabled()) {
- logger.debug("GroupMembershipService.playDead invoked for {}", this.address);
- }
+ logger.info("GroupMembershipService.playDead invoked for {}", this.address);
services.getJoinLeave().playDead();
services.getHealthMonitor().playDead();
services.getMessenger().playDead();
@@ -2816,9 +2606,7 @@ public class GMSMembershipManager implements MembershipManager, Manager
if (beingSick || playingDead) {
beingSick = false;
playingDead = false;
- if (logger.isDebugEnabled()) {
- logger.debug("GroupMembershipService.beHealthy invoked for {} - recovering health now", this.address);
- }
+ logger.info("GroupMembershipService.beHealthy invoked for {} - recovering health now", this.address);
if (directChannel != null) {
directChannel.beHealthy();
}
@@ -2955,11 +2743,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
services.getJoinLeave().disableDisconnectOnQuorumLossForTesting();
}
- @Override
- public void setSecurityLogWriter(InternalLogWriter writer) {
- Services.setSecurityLogWriter(writer);
- }
-
/**
* Class <code>BoundedLinkedHashMap</code> is a bounded
@@ -2980,29 +2763,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
/**
* Constructor.
*
- * @param initialCapacity The initial capacity.
- * @param loadFactor The load factor
- * @param maximumNumberOfEntries The maximum number of allowed entries
- */
- public BoundedLinkedHashMap(int initialCapacity, float loadFactor, int maximumNumberOfEntries) {
- super(initialCapacity, loadFactor);
- this._maximumNumberOfEntries = maximumNumberOfEntries;
- }
-
- /**
- * Constructor.
- *
- * @param initialCapacity The initial capacity.
- * @param maximumNumberOfEntries The maximum number of allowed entries
- */
- public BoundedLinkedHashMap(int initialCapacity, int maximumNumberOfEntries) {
- super(initialCapacity);
- this._maximumNumberOfEntries = maximumNumberOfEntries;
- }
-
- /**
- * Constructor.
- *
* @param maximumNumberOfEntries The maximum number of allowed entries
*/
public BoundedLinkedHashMap(int maximumNumberOfEntries) {
@@ -3010,14 +2770,6 @@ public class GMSMembershipManager implements MembershipManager, Manager
this._maximumNumberOfEntries = maximumNumberOfEntries;
}
- /**
- * Returns the maximum number of entries.
- * @return the maximum number of entries
- */
- public int getMaximumNumberOfEntries(){
- return this._maximumNumberOfEntries;
- }
-
@Override
protected boolean removeEldestEntry(Map.Entry entry) {
return size() > this._maximumNumberOfEntries;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/internal/logging/log4j/LogMarker.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/logging/log4j/LogMarker.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/logging/log4j/LogMarker.java
index 04b4223..3b95ca6 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/logging/log4j/LogMarker.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/logging/log4j/LogMarker.java
@@ -73,7 +73,6 @@ public interface LogMarker {
public static final Marker DISTRIBUTION_BRIDGE_SERVER = MarkerManager.getMarker("DISTRIBUTION_BRIDGE_SERVER").addParents(DISTRIBUTION, BRIDGE_SERVER);
public static final Marker DISTRIBUTION_VIEWS = MarkerManager.getMarker("DISTRIBUTION_VIEWS").addParents(DISTRIBUTION);
public static final Marker DM = MarkerManager.getMarker("DM").addParents(DISTRIBUTION);
- public static final Marker DM_VIEWS = MarkerManager.getMarker("DM_VIEWS").addParents(DM, DISTRIBUTION_VIEWS);
public static final Marker DM_BRIDGE_SERVER = MarkerManager.getMarker("DM_BRIDGE").addParents(BRIDGE_SERVER, DM);
public static final Marker DA = MarkerManager.getMarker("DA").addParents(DISTRIBUTION);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/Connection.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/Connection.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/Connection.java
index c592133..30962e7 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/Connection.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/Connection.java
@@ -771,6 +771,13 @@ public class Connection implements Runnable {
String peerName;
if (this.remoteAddr != null) {
peerName = this.remoteAddr.toString();
+ // late in the life of jdk 1.7 we started seeing connections accepted
+ // when accept() was not even being called. This started causing timeouts
+ // to occur in the handshake threads instead of causing failures in
+ // connection-formation. So, we need to initiate suspect processing here
+ owner.getDM().getMembershipManager().suspectMember(this.remoteAddr,
+ LocalizedStrings.Connection_CONNECTION_HANDSHAKE_WITH_0_TIMED_OUT_AFTER_WAITING_1_MILLISECONDS.toLocalizedString(
+ new Object[] {peerName, Integer.valueOf(HANDSHAKE_TIMEOUT_MS)}));
}
else {
peerName = "socket " + this.socket.getRemoteSocketAddress().toString()
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/TCPConduit.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/TCPConduit.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/TCPConduit.java
index f4fab74..12a03fd 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/TCPConduit.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tcp/TCPConduit.java
@@ -645,9 +645,9 @@ public class TCPConduit implements Runnable {
continue;
}
if (inhibitNewConnections) {
- if (logger.isTraceEnabled(LogMarker.QA)) {
- logger.trace(LogMarker.QA, "Test hook: inhibiting acceptance of connection {}", othersock);
- }
+// if (logger.isTraceEnabled(LogMarker.QA)) {
+ logger.info("Test hook: inhibiting acceptance of connection {}", othersock);
+// }
othersock.close();
while (inhibitNewConnections && !stopped) {
this.stopper.checkCancelInProgress(null);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
index fd5aaa7..91889df 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
@@ -19,6 +19,10 @@ package com.gemstone.gemfire.distributed.internal.membership;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
import java.io.File;
import java.net.InetAddress;
import java.util.ArrayList;
@@ -43,6 +47,7 @@ import com.gemstone.gemfire.distributed.internal.DistributionConfig;
import com.gemstone.gemfire.distributed.internal.DistributionConfigImpl;
import com.gemstone.gemfire.distributed.internal.DistributionManager;
import com.gemstone.gemfire.distributed.internal.InternalLocator;
+import com.gemstone.gemfire.distributed.internal.membership.gms.GMSUtil;
import com.gemstone.gemfire.distributed.internal.membership.gms.ServiceConfig;
import com.gemstone.gemfire.distributed.internal.membership.gms.Services;
import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.JoinLeave;
@@ -54,13 +59,9 @@ import com.gemstone.gemfire.internal.admin.remote.RemoteTransportConfig;
import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
@Category(IntegrationTest.class)
-public class MembershipJUnitTest extends TestCase {
+public class MembershipJUnitTest {
static Level baseLogLevel;
- public MembershipJUnitTest(String name) {
- super(name);
- }
-
@BeforeClass
public static void setupClass() {
// baseLogLevel = LogService.getBaseLogLevel();
@@ -68,7 +69,7 @@ public class MembershipJUnitTest extends TestCase {
}
@AfterClass
- protected void tearDown() throws Exception {
+ public static void tearDown() throws Exception {
// LogService.setBaseLogLevel(baseLogLevel);
}
@@ -263,11 +264,25 @@ public class MembershipJUnitTest extends TestCase {
GMSJoinLeave joinLeave = new GMSJoinLeave();
try {
joinLeave.init(services);
- fail("expected a GemFireConfigException to be thrown because no locators are configured");
+ throw new Error("expected a GemFireConfigException to be thrown because no locators are configured");
} catch (GemFireConfigException e) {
// expected
}
}
+ /**
+ * test the GMSUtil.formatBytes() method
+ */
+ @Test
+ public void testFormatBytes() throws Exception {
+ byte[] bytes = new byte[200];
+ for (int i=0; i<bytes.length; i++) {
+ bytes[i] = (byte)(i%255);
+ }
+ String str = GMSUtil.formatBytes(bytes, 0, bytes.length);
+ System.out.println(str);
+ assertEquals(600+4, str.length());
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
index 2d042fc..7badce6 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
@@ -152,8 +152,8 @@ public class GMSLocatorRecoveryJUnitTest {
nonDefault.put(DistributionConfig.MCAST_PORT_NAME, "0");
nonDefault.put(DistributionConfig.LOG_FILE_NAME, "");
nonDefault.put(DistributionConfig.LOG_LEVEL_NAME, "fine");
- nonDefault.put(DistributionConfig.LOCATORS_NAME, localHost.getHostAddress()+'['+port+']');
- nonDefault.put(DistributionConfig.BIND_ADDRESS_NAME, localHost.getHostAddress());
+ nonDefault.put(DistributionConfig.LOCATORS_NAME, localHost.getHostName()+'['+port+']');
+ nonDefault.put(DistributionConfig.BIND_ADDRESS_NAME, localHost.getHostName());
DistributionConfigImpl config = new DistributionConfigImpl(nonDefault);
RemoteTransportConfig transport = new RemoteTransportConfig(config,
DistributionManager.NORMAL_DM_TYPE);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/38dd3ed8/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java
new file mode 100755
index 0000000..2b59ca5
--- /dev/null
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java
@@ -0,0 +1,370 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.distributed.internal.membership.gms.mgr;
+
+import static org.mockito.Mockito.*;
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
+import java.util.Timer;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.distributed.DistributedSystemDisconnectedException;
+import com.gemstone.gemfire.distributed.internal.AdminMessageType;
+import com.gemstone.gemfire.distributed.internal.DistributionConfig;
+import com.gemstone.gemfire.distributed.internal.DistributionConfigImpl;
+import com.gemstone.gemfire.distributed.internal.DistributionManager;
+import com.gemstone.gemfire.distributed.internal.DistributionMessage;
+import com.gemstone.gemfire.distributed.internal.HighPriorityAckedMessage;
+import com.gemstone.gemfire.distributed.internal.HighPriorityDistributionMessage;
+import com.gemstone.gemfire.distributed.internal.direct.DirectChannel;
+import com.gemstone.gemfire.distributed.internal.membership.DistributedMembershipListener;
+import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
+import com.gemstone.gemfire.distributed.internal.membership.NetView;
+import com.gemstone.gemfire.distributed.internal.membership.gms.ServiceConfig;
+import com.gemstone.gemfire.distributed.internal.membership.gms.Services;
+import com.gemstone.gemfire.distributed.internal.membership.gms.Services.Stopper;
+import com.gemstone.gemfire.distributed.internal.membership.gms.SuspectMember;
+import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.Authenticator;
+import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.HealthMonitor;
+import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.JoinLeave;
+import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.Manager;
+import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.Messenger;
+import com.gemstone.gemfire.distributed.internal.membership.gms.membership.GMSJoinLeave;
+import com.gemstone.gemfire.distributed.internal.membership.gms.mgr.GMSMembershipManager;
+import com.gemstone.gemfire.distributed.internal.membership.gms.mgr.GMSMembershipManager.StartupEvent;
+import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.internal.Version;
+import com.gemstone.gemfire.internal.admin.remote.AdminRequest;
+import com.gemstone.gemfire.internal.admin.remote.AdminResponse;
+import com.gemstone.gemfire.internal.admin.remote.AlertListenerMessage;
+import com.gemstone.gemfire.internal.admin.remote.RemoteTransportConfig;
+import com.gemstone.gemfire.internal.tcp.ConnectExceptions;
+import com.gemstone.gemfire.internal.tcp.Stub;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class GMSMembershipManagerJUnitTest {
+ private Services services;
+ private ServiceConfig mockConfig;
+ private DistributionConfig distConfig;
+ private Authenticator authenticator;
+ private HealthMonitor healthMonitor;
+ private InternalDistributedMember myMemberId;
+ private InternalDistributedMember[] mockMembers;
+ private Messenger messenger;
+ private JoinLeave joinLeave;
+ private Stopper stopper;
+ DistributedMembershipListener listener;
+ private GMSMembershipManager manager;
+ private List<InternalDistributedMember> members;
+ private Set<InternalDistributedMember> emptyMembersSet = new HashSet<>();
+ private DirectChannel dc;
+
+ @Before
+ public void initMocks() throws Exception {
+ Properties nonDefault = new Properties();
+ nonDefault.put(DistributionConfig.DISABLE_TCP_NAME, "true");
+ nonDefault.put(DistributionConfig.MCAST_PORT_NAME, "0");
+ nonDefault.put(DistributionConfig.MCAST_TTL_NAME, "0");
+ nonDefault.put(DistributionConfig.LOG_FILE_NAME, "");
+ nonDefault.put(DistributionConfig.LOG_LEVEL_NAME, "fine");
+ nonDefault.put(DistributionConfig.MEMBER_TIMEOUT_NAME, "2000");
+ nonDefault.put(DistributionConfig.LOCATORS_NAME, "localhost[10344]");
+ distConfig = new DistributionConfigImpl(nonDefault);
+ RemoteTransportConfig tconfig = new RemoteTransportConfig(distConfig,
+ DistributionManager.NORMAL_DM_TYPE);
+
+
+ mockConfig = mock(ServiceConfig.class);
+ when(mockConfig.getDistributionConfig()).thenReturn(distConfig);
+ when(mockConfig.getTransport()).thenReturn(tconfig);
+
+ authenticator = mock(Authenticator.class);
+ myMemberId = new InternalDistributedMember("localhost", 8887);
+
+ messenger = mock(Messenger.class);
+ when(messenger.getMemberID()).thenReturn(myMemberId);
+
+ stopper = mock(Stopper.class);
+ when(stopper.isCancelInProgress()).thenReturn(false);
+
+ healthMonitor = mock(HealthMonitor.class);
+ when(healthMonitor.getFailureDetectionPort()).thenReturn(Integer.valueOf(-1));
+
+ joinLeave = mock(JoinLeave.class);
+
+ services = mock(Services.class);
+ when(services.getAuthenticator()).thenReturn(authenticator);
+ when(services.getConfig()).thenReturn(mockConfig);
+ when(services.getMessenger()).thenReturn(messenger);
+ when(services.getCancelCriterion()).thenReturn(stopper);
+ when(services.getHealthMonitor()).thenReturn(healthMonitor);
+ when(services.getJoinLeave()).thenReturn(joinLeave);
+
+ Timer t = new Timer(true);
+ when(services.getTimer()).thenReturn(t);
+
+ mockMembers = new InternalDistributedMember[5];
+ for (int i = 0; i < mockMembers.length; i++) {
+ mockMembers[i] = new InternalDistributedMember("localhost", 8888 + i);
+ }
+ members = new ArrayList<>(Arrays.asList(mockMembers));
+
+ listener = mock(DistributedMembershipListener.class);
+
+ manager = new GMSMembershipManager(listener);
+ manager.init(services);
+ when(services.getManager()).thenReturn(manager);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (manager != null) {
+ manager.stop();
+ manager.stopped();
+ }
+ }
+
+ @Test
+ public void testSendMessage() throws Exception {
+ HighPriorityAckedMessage m = new HighPriorityAckedMessage();
+ m.setRecipient(mockMembers[0]);
+ manager.start();
+ manager.started();
+ manager.installView(new NetView(myMemberId, 1, members, emptyMembersSet, emptyMembersSet));
+ Set<InternalDistributedMember> failures = manager.send(m);
+ verify(messenger).send(m);
+ if (failures != null) {
+ assertEquals(0, failures.size());
+ }
+ }
+
+ @Test
+ public void testSendAdminMessageFailsDuringShutdown() throws Exception {
+ AlertListenerMessage m = AlertListenerMessage.create(mockMembers[0], 1,
+ new Date(System.currentTimeMillis()), "thread", "", 1L, "", "");
+ manager.start();
+ manager.started();
+ manager.installView(new NetView(myMemberId, 1, members, emptyMembersSet, emptyMembersSet));
+ manager.setShutdown();
+ Set<InternalDistributedMember> failures = manager.send(m);
+ verify(messenger, never()).send(m);
+ assertEquals(1, failures.size());
+ assertEquals(mockMembers[0], failures.iterator().next());
+ }
+
+ @Test
+ public void testSendToEmptyListIsRejected() throws Exception {
+ InternalDistributedMember[] emptyList = new InternalDistributedMember[0];
+ HighPriorityAckedMessage m = new HighPriorityAckedMessage();
+ m.setRecipient(mockMembers[0]);
+ manager.start();
+ manager.started();
+ manager.installView(new NetView(myMemberId, 1, members, emptyMembersSet, emptyMembersSet));
+ Set<InternalDistributedMember> failures = manager.send(null, m, null);
+ verify(messenger, never()).send(m);
+ reset(messenger);
+ failures = manager.send(emptyList, m, null);
+ verify(messenger, never()).send(m);
+ }
+
+ @Test
+ public void testStartupEvents() throws Exception {
+ manager.start();
+ manager.started();
+ manager.isJoining = true;
+
+ List<InternalDistributedMember> viewmembers = Arrays.asList(new InternalDistributedMember[] {mockMembers[0], myMemberId});
+ manager.installView(new NetView(myMemberId, 2, viewmembers, emptyMembersSet, emptyMembersSet));
+
+ // add a surprise member that will be shunned due to it's having
+ // an old view ID
+ InternalDistributedMember surpriseMember = mockMembers[2];
+ surpriseMember.setVmViewId(1);
+ manager.handleOrDeferSurpriseConnect(surpriseMember);
+ assertEquals(1, manager.getStartupEvents().size());
+
+ // add a surprise member that will be accepted
+ InternalDistributedMember surpriseMember2 = mockMembers[3];
+ surpriseMember2.setVmViewId(3);
+ manager.handleOrDeferSurpriseConnect(surpriseMember2);
+ assertEquals(2, manager.getStartupEvents().size());
+
+ // suspect a member
+ InternalDistributedMember suspectMember = mockMembers[1];
+ manager.handleOrDeferSuspect(new SuspectMember(mockMembers[0], suspectMember));
+ // suspect messages aren't queued - they're ignored before joining the system
+ assertEquals(2, manager.getStartupEvents().size());
+ verify(listener, never()).memberSuspect(suspectMember, mockMembers[0]);
+
+ HighPriorityAckedMessage m = new HighPriorityAckedMessage();
+ mockMembers[0].setVmViewId(1);
+ m.setRecipient(mockMembers[0]);
+ m.setSender(mockMembers[1]);
+ manager.handleOrDeferMessage(m);
+ assertEquals(3, manager.getStartupEvents().size());
+
+ // this view officially adds surpriseMember2
+ viewmembers = Arrays.asList(
+ new InternalDistributedMember[] {mockMembers[0], myMemberId, surpriseMember2});
+ manager.handleOrDeferViewEvent(new NetView(myMemberId, 3, viewmembers, emptyMembersSet, emptyMembersSet));
+ assertEquals(4, manager.getStartupEvents().size());
+
+ // add a surprise member that will be shunned due to it's having
+ // an old view ID
+ InternalDistributedMember surpriseMember3 = mockMembers[4];
+ surpriseMember.setVmViewId(1);
+ manager.handleOrDeferSurpriseConnect(surpriseMember);
+ assertEquals(5, manager.getStartupEvents().size());
+
+
+ // process a new view after we finish joining but before event processing has started
+ manager.isJoining = false;
+ mockMembers[4].setVmViewId(4);
+ viewmembers = Arrays.asList(new InternalDistributedMember[] {mockMembers[0], myMemberId, surpriseMember2, mockMembers[4]});
+ manager.handleOrDeferViewEvent(new NetView(myMemberId, 4, viewmembers, emptyMembersSet, emptyMembersSet));
+ assertEquals(6, manager.getStartupEvents().size());
+
+ // exercise the toString methods for code coverage
+ for (StartupEvent ev: manager.getStartupEvents()) {
+ ev.toString();
+ }
+
+ manager.startEventProcessing();
+
+ // all startup events should have been processed
+ assertEquals(0, manager.getStartupEvents().size());
+ // the new view should have been installed
+ assertEquals(4, manager.getView().getViewId());
+ // supriseMember2 should have been announced
+ verify(listener).newMemberConnected(surpriseMember2);
+ // supriseMember should have been rejected (old view ID)
+ verify(listener, never()).newMemberConnected(surpriseMember);
+
+ // for code coverage also install a view after we finish joining but before
+ // event processing has started. This should notify the distribution manager
+ // with a LocalViewMessage to process the view
+ reset(listener);
+ manager.handleOrDeferViewEvent(new NetView(myMemberId, 5, viewmembers, emptyMembersSet, emptyMembersSet));
+ assertEquals(0, manager.getStartupEvents().size());
+ verify(listener).messageReceived(isA(LocalViewMessage.class));
+
+ // process a suspect now - it will be passed to the listener
+ reset(listener);
+ suspectMember = mockMembers[1];
+ manager.handleOrDeferSuspect(new SuspectMember(mockMembers[0], suspectMember));
+ verify(listener).memberSuspect(suspectMember, mockMembers[0]);
+
+ InternalDistributedMember mbr = manager.getMemberForStub(new Stub(myMemberId.getInetAddress(), 2033, 20), false);
+ assertTrue(mbr == null);
+ myMemberId.setDirectChannelPort(2033);
+ mbr = manager.getMemberForStub(new Stub(myMemberId.getInetAddress(), 2033, 20), false);
+ assertTrue(mbr != null);
+ assertEquals(mbr, myMemberId);
+ }
+
+ /**
+ * Some tests require a DirectChannel mock
+ */
+ private void setUpDirectChannelMock() throws Exception {
+ dc = mock(DirectChannel.class);
+ when(dc.send(any(GMSMembershipManager.class), any(mockMembers.getClass()), any(DistributionMessage.class), anyInt(), anyInt()))
+ .thenReturn(100);
+
+ manager.start();
+ manager.started();
+
+ manager.setDirectChannel(dc);
+
+ NetView view = new NetView(myMemberId, 1, members, emptyMembersSet, emptyMembersSet);
+ manager.installView(view);
+ when(joinLeave.getView()).thenReturn(view);
+
+ manager.startEventProcessing();
+ }
+
+ @Test
+ public void testDirectChannelSend() throws Exception {
+ setUpDirectChannelMock();
+ HighPriorityAckedMessage m = new HighPriorityAckedMessage();
+ InternalDistributedMember[] recipients = new InternalDistributedMember[] {mockMembers[2], mockMembers[3]};
+ m.setRecipients(Arrays.asList(recipients));
+ Set<InternalDistributedMember> failures = manager.directChannelSend(recipients, m, null);
+ assertTrue(failures == null);
+ verify(dc).send(isA(GMSMembershipManager.class), isA(mockMembers.getClass()), isA(DistributionMessage.class), anyInt(), anyInt());
+ }
+
+ @Test
+ public void testDirectChannelSendFailureToOneRecipient() throws Exception {
+ setUpDirectChannelMock();
+ HighPriorityAckedMessage m = new HighPriorityAckedMessage();
+ InternalDistributedMember[] recipients = new InternalDistributedMember[] {mockMembers[2], mockMembers[3]};
+ m.setRecipients(Arrays.asList(recipients));
+ Set<InternalDistributedMember> failures = manager.directChannelSend(recipients, m, null);
+
+ ConnectExceptions exception = new ConnectExceptions();
+ exception.addFailure(recipients[0], new Exception("testing"));
+ when(dc.send(any(GMSMembershipManager.class), any(mockMembers.getClass()), any(DistributionMessage.class), anyInt(), anyInt()))
+ .thenThrow(exception);
+ failures = manager.directChannelSend(recipients, m, null);
+ assertTrue(failures != null);
+ assertEquals(1, failures.size());
+ assertEquals(recipients[0], failures.iterator().next());
+ }
+
+ @Test
+ public void testDirectChannelSendFailureToAll() throws Exception {
+ setUpDirectChannelMock();
+ HighPriorityAckedMessage m = new HighPriorityAckedMessage();
+ InternalDistributedMember[] recipients = new InternalDistributedMember[] {mockMembers[2], mockMembers[3]};
+ m.setRecipients(Arrays.asList(recipients));
+ Set<InternalDistributedMember> failures = manager.directChannelSend(recipients, m, null);
+ when(dc.send(any(GMSMembershipManager.class), any(mockMembers.getClass()), any(DistributionMessage.class), anyInt(), anyInt()))
+ .thenReturn(0);
+ when(stopper.cancelInProgress()).thenReturn("stopping for test");
+ try {
+ manager.directChannelSend(recipients, m, null);
+ throw new RuntimeException("expected directChannelSend to throw an exception");
+ } catch (DistributedSystemDisconnectedException e) {
+ // expected
+ }
+ }
+
+ @Test
+ public void testDirectChannelSendAllRecipients() throws Exception {
+ setUpDirectChannelMock();
+ HighPriorityAckedMessage m = new HighPriorityAckedMessage();
+ m.setRecipient(DistributionMessage.ALL_RECIPIENTS);
+ assertTrue(m.forAll());
+ Set<InternalDistributedMember> failures = manager.directChannelSend(null, m, null);
+ assertTrue(failures == null);
+ verify(dc).send(isA(GMSMembershipManager.class), isA(mockMembers.getClass()), isA(DistributionMessage.class), anyInt(), anyInt());
+ }
+
+}
+
[2/9] incubator-geode git commit: GEODE-616: failure detection ports
not set in new membership view
Posted by ab...@apache.org.
GEODE-616: failure detection ports not set in new membership view
Added a method to NetView to copy failure detection ports from an old
view to the new view. I also added a JUnit test for NetView to make
sure we have adequate code-coverage for this class.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/e4448adc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/e4448adc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/e4448adc
Branch: refs/heads/feature/GEODE-608
Commit: e4448adc3ce1c5774410194dcbd361eb21890e7d
Parents: 2803a10
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Tue Dec 1 08:33:02 2015 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Tue Dec 1 08:33:02 2015 -0800
----------------------------------------------------------------------
.../internal/membership/NetView.java | 46 ++++-
.../membership/gms/membership/GMSJoinLeave.java | 25 +--
.../internal/membership/NetViewJUnitTest.java | 194 +++++++++++++++++++
3 files changed, 241 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e4448adc/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetView.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetView.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetView.java
index 8800d9d..a90a45d 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetView.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetView.java
@@ -88,6 +88,12 @@ public class NetView implements DataSerializableFixedID {
Arrays.fill(failureDetectionPorts, -1);
}
+ /**
+ * Create a new view with the contents of the given view and the
+ * specified view ID
+ * @param other
+ * @param viewId
+ */
public NetView(NetView other, int viewId) {
this.creator = other.creator;
this.viewId = viewId;
@@ -129,7 +135,7 @@ public class NetView implements DataSerializableFixedID {
public int getFailureDetectionPort(InternalDistributedMember mbr) {
int idx = members.indexOf(mbr);
- if (idx < 0 || failureDetectionPorts == null || idx >= failureDetectionPorts.length) {
+ if (idx < 0 || idx >= failureDetectionPorts.length) {
return -1;
}
return failureDetectionPorts[idx];
@@ -143,15 +149,36 @@ public class NetView implements DataSerializableFixedID {
ensureFDCapacity(idx);
failureDetectionPorts[idx] = port;
}
+
+ /**
+ * Transfer the failure-detection ports from another view to this one
+ * @param otherView
+ */
+ public void setFailureDetectionPorts(NetView otherView) {
+ int[] ports = otherView.getFailureDetectionPorts();
+ if (ports != null) {
+ int idx = 0;
+ int portsSize = ports.length;
+ for (InternalDistributedMember mbr: otherView.getMembers()) {
+ if (contains(mbr)) {
+ // unit tests create views w/o failure detection ports, so we must check the length
+ // of the array
+ if (idx < portsSize) {
+ setFailureDetectionPort(mbr, ports[idx]);
+ } else {
+ setFailureDetectionPort(mbr, -1);
+ }
+ }
+ idx += 1;
+ }
+ }
+ }
/**
* ensures that there is a slot at idx to store an int
*/
private void ensureFDCapacity(int idx) {
- if (failureDetectionPorts == null) {
- failureDetectionPorts = new int[idx+10];
- Arrays.fill(failureDetectionPorts, -1);
- } else if (idx >= failureDetectionPorts.length) {
+ if (idx >= failureDetectionPorts.length) {
int[] p = new int[idx+10];
if (failureDetectionPorts.length > 0) {
System.arraycopy(failureDetectionPorts, 0, p, 0, failureDetectionPorts.length);
@@ -479,6 +506,15 @@ public class NetView implements DataSerializableFixedID {
first = false;
}
}
+// sb.append("] fd ports: [");
+// int[] ports = getFailureDetectionPorts();
+// int numMembers = size();
+// for (int i=0; i<numMembers; i++) {
+// if (i > 0) {
+// sb.append(' ');
+// }
+// sb.append(ports[i]);
+// }
sb.append("]");
return sb.toString();
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e4448adc/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
index 1c7b601..2f8d734 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
@@ -531,7 +531,6 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
NetView check = new NetView(v, v.getViewId() + 1);
synchronized (removedMembers) {
removedMembers.add(mbr);
- check = new NetView(v, v.getViewId());
check.addCrashedMembers(removedMembers);
check.removeAll(removedMembers);
}
@@ -660,6 +659,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
mbrs.removeAll(leaving);
newView = new NetView(this.localAddress, viewNumber, mbrs, leaving,
removals);
+ newView.setFailureDetectionPorts(currentView);
newView.setFailureDetectionPort(this.localAddress, services.getHealthMonitor().getFailureDetectionPort());
}
if (viewCreator == null || viewCreator.isShutdown()) {
@@ -1890,23 +1890,7 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
}
}
if (currentView != null) {
- int[] ports = currentView.getFailureDetectionPorts();
- if (ports != null) {
- int idx = 0;
- int portsSize = ports.length;
- for (InternalDistributedMember mbr: currentView.getMembers()) {
- if (newView.contains(mbr)) {
- // unit tests create views w/o failure detection ports, so we must check the length
- // of the array
- if (idx < portsSize) {
- newView.setFailureDetectionPort(mbr, ports[idx]);
- } else {
- newView.setFailureDetectionPort(mbr, -1);
- }
- }
- idx += 1;
- }
- }
+ newView.setFailureDetectionPorts(currentView);
}
}
@@ -1995,12 +1979,15 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
logger.info("adding these new members from a conflicting view to the new view: {}", newMembers);
for (InternalDistributedMember mbr: newMembers) {
int port = conflictingView.getFailureDetectionPort(mbr);
- JoinRequestMessage msg = new JoinRequestMessage(localAddress, mbr, null, port);
newView.add(mbr);
newView.setFailureDetectionPort(mbr, port);
joinReqs.add(mbr);
}
}
+ // trump the view ID of the conflicting view so mine will be accepted
+ if (conflictingView.getViewId() >= newView.getViewId()) {
+ newView = new NetView(newView, conflictingView.getViewId()+1);
+ }
}
if (!unresponsive.isEmpty()) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e4448adc/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/NetViewJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/NetViewJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/NetViewJUnitTest.java
new file mode 100755
index 0000000..603c7bf
--- /dev/null
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/NetViewJUnitTest.java
@@ -0,0 +1,194 @@
+package com.gemstone.gemfire.distributed.internal.membership;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.Timer;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import com.gemstone.gemfire.distributed.internal.DistributionManager;
+import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
+import com.gemstone.gemfire.distributed.internal.membership.NetView;
+import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class NetViewJUnitTest {
+ List<InternalDistributedMember> members;
+
+ @Before
+ public void initMembers() throws Exception {
+ int numMembers = 10;
+ members = new ArrayList<>(numMembers);
+ for (int i=0; i<numMembers; i++) {
+ members.add(new InternalDistributedMember(SocketCreator.getLocalHost(), 1000+i));
+ }
+ // view creator is a locator
+ members.get(0).setVmKind(DistributionManager.LOCATOR_DM_TYPE);
+ members.get(0).setVmViewId(0);
+ members.get(0).getNetMember().setPreferredForCoordinator(true);
+
+ // members who joined in view #1
+ for (int i=1; i<(numMembers-1); i++) {
+ members.get(i).setVmViewId(1);
+ members.get(i).setVmKind(DistributionManager.NORMAL_DM_TYPE);
+ members.get(i).getNetMember().setPreferredForCoordinator(false);
+ }
+
+ // member joining in this view
+ members.get(numMembers-1).setVmViewId(2);
+ members.get(numMembers-1).setVmKind(DistributionManager.NORMAL_DM_TYPE);
+ }
+
+ private void setFailureDetectionPorts(NetView view) {
+ int numMembers = members.size();
+ // use the membership port as the FD port so it's easy to figure out problems
+ for (int i=0; i<numMembers; i++) {
+ view.setFailureDetectionPort(members.get(i), members.get(i).getPort());
+ }
+ }
+
+ @Test
+ public void testCreateView() throws Exception {
+ int numMembers = members.size();
+ NetView view = new NetView(members.get(0), 2, members, Collections.emptySet(), Collections.emptySet());
+ setFailureDetectionPorts(view);
+
+ assertTrue(view.getCreator().equals(members.get(0)));
+ assertEquals(2, view.getViewId());
+ assertEquals(members, view.getMembers());
+ assertEquals(0, view.getCrashedMembers().size());
+ assertEquals(members.get(1), view.getLeadMember()); // a locator can't be lead member
+ assertEquals(0, view.getShutdownMembers().size());
+ assertEquals(1, view.getNewMembers().size());
+ assertEquals(members.get(numMembers-1), view.getNewMembers().iterator().next());
+ assertEquals(members.get(0), view.getCoordinator());
+
+ for (int i=0; i<numMembers; i++) {
+ InternalDistributedMember mbr = members.get(i);
+ assertEquals(mbr.getPort(), view.getFailureDetectionPort(mbr));
+ }
+
+ assertFalse(view.shouldBeCoordinator(members.get(1)));
+ assertTrue(view.shouldBeCoordinator(members.get(0)));
+ assertEquals(members.get(numMembers-1), view.getCoordinator(Collections.singletonList(members.get(0))));
+ members.get(numMembers-1).getNetMember().setPreferredForCoordinator(false);
+ assertEquals(members.get(1), view.getCoordinator(Collections.singletonList(members.get(0))));
+
+ members.get(numMembers-1).getNetMember().setPreferredForCoordinator(true);
+ List<InternalDistributedMember> preferred = view.getPreferredCoordinators(Collections.<InternalDistributedMember>singleton(members.get(1)), members.get(0), 2);
+ assertEquals(3, preferred.size());
+ assertEquals(members.get(numMembers-1), preferred.get(0));
+ }
+
+ @Test
+ public void testRemoveMembers() throws Exception {
+ int numMembers = members.size();
+ NetView view = new NetView(members.get(0), 2, new ArrayList<>(members), Collections.emptySet(),
+ Collections.emptySet());
+ setFailureDetectionPorts(view);
+
+ for (int i=1; i<numMembers; i+=2) {
+ view.remove(members.get(i));
+ assertFalse(view.contains(members.get(i)));
+ }
+
+ List<InternalDistributedMember> remainingMembers = view.getMembers();
+ int num = remainingMembers.size();
+ for (int i=0; i<num; i++) {
+ InternalDistributedMember mbr = remainingMembers.get(i);
+ assertEquals(mbr.getPort(), view.getFailureDetectionPort(mbr));
+ }
+ }
+
+ @Test
+ public void testRemoveAll() throws Exception {
+ int numMembers = members.size();
+ NetView view = new NetView(members.get(0), 2, new ArrayList<>(members), Collections.emptySet(),
+ Collections.emptySet());
+ setFailureDetectionPorts(view);
+
+ Collection<InternalDistributedMember> removals = new ArrayList<>(numMembers/2);
+ for (int i=1; i<numMembers; i+=2) {
+ removals.add(members.get(i));
+ }
+
+ view.removeAll(removals);
+ for (InternalDistributedMember mbr: removals) {
+ assertFalse(view.contains(mbr));
+ }
+ assertEquals(numMembers-removals.size(), view.size());
+
+ List<InternalDistributedMember> remainingMembers = view.getMembers();
+ int num = remainingMembers.size();
+ for (int i=0; i<num; i++) {
+ InternalDistributedMember mbr = remainingMembers.get(i);
+ assertEquals(mbr.getPort(), view.getFailureDetectionPort(mbr));
+ }
+ }
+
+ @Test
+ public void testCopyView() throws Exception {
+ NetView view = new NetView(members.get(0), 2, new ArrayList<>(members), Collections.emptySet(),
+ Collections.emptySet());
+ setFailureDetectionPorts(view);
+
+ NetView newView = new NetView(view, 3);
+
+ assertTrue(newView.getCreator().equals(members.get(0)));
+ assertEquals(3, newView.getViewId());
+ assertEquals(members, newView.getMembers());
+ assertEquals(0, newView.getCrashedMembers().size());
+ assertEquals(members.get(1), newView.getLeadMember()); // a locator can't be lead member
+ assertEquals(0, newView.getShutdownMembers().size());
+ assertEquals(0, newView.getNewMembers().size());
+ assertTrue(newView.equals(view));
+ assertTrue(view.equals(newView));
+ newView.remove(members.get(1));
+ assertFalse(newView.equals(view));
+ }
+
+ @Test
+ public void testAddLotsOfMembers() throws Exception {
+ NetView view = new NetView(members.get(0), 2, new ArrayList<>(members), Collections.emptySet(),
+ Collections.emptySet());
+ setFailureDetectionPorts(view);
+
+ NetView copy = new NetView(view, 2);
+
+ int oldSize = view.size();
+ for (int i=0; i<100; i++) {
+ InternalDistributedMember mbr = new InternalDistributedMember(SocketCreator.getLocalHost(), 2000+i);
+ mbr.setVmKind(DistributionManager.NORMAL_DM_TYPE);
+ mbr.setVmViewId(2);
+ view.add(mbr);
+ view.setFailureDetectionPort(mbr, 2000+i);
+ }
+
+ assertEquals(oldSize+100, view.size());
+ for (InternalDistributedMember mbr: view.getMembers()) {
+ assertEquals(mbr.getPort(), view.getFailureDetectionPort(mbr));
+ }
+
+ assertEquals(100, view.getNewMembers(copy).size());
+ }
+
+}