You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2016/05/05 23:46:01 UTC
[5/5] incubator-geode git commit: Revert "GEODE-613 CI Failure:
LocatorLoadSnapshotJUnitTest.testConcurrentBalancing"
Revert "GEODE-613 CI Failure: LocatorLoadSnapshotJUnitTest.testConcurrentBalancing"
This reverts commit 024cd224ed547e9f59eeaa68f2b5495b05a2665b.
After discussion with Bruce, reverting these changes to fix the build
for now.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/96661291
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/96661291
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/96661291
Branch: refs/heads/develop
Commit: 966612915e6e68359fae7cf5f78c8addaadf435f
Parents: a35cca3
Author: Dan Smith <up...@apache.org>
Authored: Thu May 5 16:38:12 2016 -0700
Committer: Dan Smith <up...@apache.org>
Committed: Thu May 5 16:38:46 2016 -0700
----------------------------------------------------------------------
.../execute/EmptyRegionFunctionException.java | 63 -------------------
.../execute/EmtpyRegionFunctionException.java | 63 +++++++++++++++++++
.../internal/LocatorLoadSnapshotJUnitTest.java | 65 +++++++++++++++++---
3 files changed, 118 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/96661291/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmptyRegionFunctionException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmptyRegionFunctionException.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmptyRegionFunctionException.java
deleted file mode 100644
index a077779..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmptyRegionFunctionException.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.cache.execute;
-
-import com.gemstone.gemfire.distributed.DistributedMember;
-
-/**
- * Exception to indicate that Region is empty for data aware functions.
- *
- * @since 6.5
- *
- */
-public class EmptyRegionFunctionException extends FunctionException {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Construct an instance of EmtpyRegionFunctionException
- *
- * @param cause
- * a Throwable cause of this exception
- */
- public EmptyRegionFunctionException(Throwable cause) {
- super(cause);
- }
-
- /**
- * Construct an instance of EmtpyRegionFunctionException
- *
- * @param msg
- * Exception message
- */
- public EmptyRegionFunctionException(String msg) {
- super(msg);
- }
-
- /**
- * Construct an instance of EmtpyRegionFunctionException
- *
- * @param msg
- * the error message
- * @param cause
- * a Throwable cause of this exception
- */
- public EmptyRegionFunctionException(String msg, Throwable cause) {
- super(msg, cause);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/96661291/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmtpyRegionFunctionException.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmtpyRegionFunctionException.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmtpyRegionFunctionException.java
new file mode 100644
index 0000000..6aff9eb
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmtpyRegionFunctionException.java
@@ -0,0 +1,63 @@
+/*
+ * 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.cache.execute;
+
+import com.gemstone.gemfire.distributed.DistributedMember;
+
+/**
+ * Exception to indicate that Region is empty for data aware functions.
+ *
+ * @since 6.5
+ *
+ */
+public class EmtpyRegionFunctionException extends FunctionException {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct an instance of EmtpyRegionFunctionException
+ *
+ * @param cause
+ * a Throwable cause of this exception
+ */
+ public EmtpyRegionFunctionException(Throwable cause) {
+ super(cause);
+ }
+
+ /**
+ * Construct an instance of EmtpyRegionFunctionException
+ *
+ * @param msg
+ * Exception message
+ */
+ public EmtpyRegionFunctionException(String msg) {
+ super(msg);
+ }
+
+ /**
+ * Construct an instance of EmtpyRegionFunctionException
+ *
+ * @param msg
+ * the error message
+ * @param cause
+ * a Throwable cause of this exception
+ */
+ public EmtpyRegionFunctionException(String msg, Throwable cause) {
+ super(msg, cause);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/96661291/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java
old mode 100755
new mode 100644
index d8a1290..34ac767
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java
@@ -257,19 +257,21 @@ public class LocatorLoadSnapshotJUnitTest {
assertEquals(Arrays.asList(new ServerLocation[] {} ), sn.getServersForQueue(null, excludeAll, 3));
}
-
+
/**
- * A basic test of concurrent functionality. Simulate a number of
+ * A basic test of concurrent functionality. Starts a number of
* threads making requests and expects the load to be balanced between
* three servers.
* @throws InterruptedException
*/
+ @Category(FlakyTest.class) // GEODE-613: lots of threads, async action, IntegrationTest-not-UnitTest, thread joins, time sensitive
@Test
public void testConcurrentBalancing() throws InterruptedException {
int NUM_THREADS = 50;
final int NUM_REQUESTS = 10000;
int ALLOWED_THRESHOLD = 50; //We should never be off by more than
-
+ //the number of concurrent threads.
+
final LocatorLoadSnapshot sn = new LocatorLoadSnapshot();
final ServerLocation l1 = new ServerLocation("localhost", 1);
final ServerLocation l2 = new ServerLocation("localhost", 2);
@@ -288,18 +290,47 @@ public class LocatorLoadSnapshotJUnitTest {
loadCounts.put(l2, new AtomicInteger(initialLoad2));
loadCounts.put(l3, new AtomicInteger(initialLoad3));
+ Thread[] threads = new Thread[NUM_THREADS];
+// final Object lock = new Object();
for(int i =0; i < NUM_THREADS; i++) {
- for(int ii = 0; ii < NUM_REQUESTS; ii++) {
- ServerLocation location;
- location = sn.getServerForConnection(null, Collections.EMPTY_SET);
- AtomicInteger count = (AtomicInteger) loadCounts.get(location);
- count.incrementAndGet();
+ threads[i] = new Thread("Thread-" + i) {
+ public void run() {
+ for(int ii = 0; ii < NUM_REQUESTS; ii++) {
+ ServerLocation location;
+// synchronized(lock) {
+ location = sn.getServerForConnection(null, Collections.EMPTY_SET);
+// }
+ AtomicInteger count = (AtomicInteger) loadCounts.get(location);
+ count.incrementAndGet();
+ }
+ }
+ };
+ }
+
+ for(int i =0; i < NUM_THREADS; i++) {
+ threads[i].start();
+ }
+
+ for(int i =0; i < NUM_THREADS; i++) {
+ Thread t = threads[i];
+ long ms = 30 * 1000;
+ t.join(30 * 1000);
+ if (t.isAlive()) {
+ for(int j =0; j < NUM_THREADS; j++) {
+ threads[j].interrupt();
+ }
+ fail("Thread did not terminate after " + ms + " ms: " + t);
}
}
- double expectedPerServer = ( initialLoad1 + initialLoad2 + initialLoad3 +
+ double expectedPerServer = ( initialLoad1 + initialLoad2 + initialLoad3 +
NUM_REQUESTS * NUM_THREADS) / (double) loadCounts.size();
-
+// for(Iterator itr = loadCounts.entrySet().iterator(); itr.hasNext(); ) {
+// Map.Entry entry = (Entry) itr.next();
+// ServerLocation location = (ServerLocation) entry.getKey();
+// AI count= (AI) entry.getValue();
+// }
+
for(Iterator itr = loadCounts.entrySet().iterator(); itr.hasNext(); ) {
Map.Entry entry = (Entry) itr.next();
ServerLocation location = (ServerLocation) entry.getKey();
@@ -337,4 +368,18 @@ public class LocatorLoadSnapshotJUnitTest {
assertFalse(sn.hasBalancedConnections("b"));
}
+ public void _test2() { // delete this method?
+ final LocatorLoadSnapshot sn = new LocatorLoadSnapshot();
+ sn.addServer(new ServerLocation("hs20h.gemstone.com",28543), new String[0], new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f));
+ sn.addServer(new ServerLocation("hs20l.gemstone.com",22385), new String[0], new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f));
+ sn.addServer(new ServerLocation("hs20n.gemstone.com",23482), new String[0], new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f));
+ sn.addServer(new ServerLocation("hs20m.gemstone.com",23429), new String[0], new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f));
+ sn.addServer(new ServerLocation("hs20e.gemstone.com",20154), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f));
+ sn.addServer(new ServerLocation("hs20j.gemstone.com",24273), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f));
+ sn.addServer(new ServerLocation("hs20g.gemstone.com",27125), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f));
+ sn.addServer(new ServerLocation("hs20i.gemstone.com",25201), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f));
+ sn.addServer(new ServerLocation("hs20k.gemstone.com",23711), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f));
+ sn.addServer(new ServerLocation("hs20f.gemstone.com",21025), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f));
+ }
+
}