You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ud...@apache.org on 2016/09/06 17:23:25 UTC
[01/18] incubator-geode git commit: GEODE-1819: modified BRQ so that
all initialization is done before destroyed tokens are cleaned up
Repository: incubator-geode
Updated Branches:
refs/heads/feature/GEODE-420 a97ea4ee5 -> 6853f56dd
GEODE-1819: modified BRQ so that all initialization is done before destroyed tokens are cleaned up
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/bb44eb6d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/bb44eb6d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/bb44eb6d
Branch: refs/heads/feature/GEODE-420
Commit: bb44eb6d51144a3c9798d4323eabf3d4beab8cda
Parents: 331cf28
Author: Barry Oglesby <bo...@pivotal.io>
Authored: Fri Aug 26 15:28:45 2016 -0700
Committer: Barry Oglesby <bo...@pivotal.io>
Committed: Wed Aug 31 13:54:00 2016 -0700
----------------------------------------------------------------------
.../internal/cache/BucketRegionQueue.java | 28 +++++++-------------
.../internal/cache/DistributedRegion.java | 2 +-
2 files changed, 11 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/bb44eb6d/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketRegionQueue.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketRegionQueue.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketRegionQueue.java
index a3d9d97..92442d9 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketRegionQueue.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketRegionQueue.java
@@ -95,26 +95,18 @@ public class BucketRegionQueue extends AbstractBucketRegionQueue {
indexes = new ConcurrentHashMap<Object, Long>();
}
- /*
- * (non-Javadoc)
- *
- * @see
- * com.gemstone.gemfire.internal.cache.BucketRegion#initialize(java.io.InputStream
- * ,
- * com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember
- * , com.gemstone.gemfire.internal.cache.InternalRegionArguments)
- */
- @Override
- protected void initialize(InputStream snapshotInputStream,
- InternalDistributedMember imageTarget,
- InternalRegionArguments internalRegionArgs) throws TimeoutException,
- IOException, ClassNotFoundException {
+ protected void cleanUpDestroyedTokensAndMarkGIIComplete(InitialImageOperation.GIIStatus giiStatus) {
+ // Load events from temp queued events
+ loadEventsFromTempQueue();
- super.initialize(snapshotInputStream, imageTarget, internalRegionArgs);
+ // Initialize the eventSeqNumQueue
+ initializeEventSeqNumQueue();
- //take initialization writeLock inside the method after synchronizing on tempQueue
- loadEventsFromTempQueue();
-
+ // Clean up destroyed tokens
+ super.cleanUpDestroyedTokensAndMarkGIIComplete(giiStatus);
+ }
+
+ private void initializeEventSeqNumQueue() {
getInitializationLock().writeLock().lock();
try {
if (!this.keySet().isEmpty()) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/bb44eb6d/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
index a7b82ac..aa74af7 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
@@ -1635,7 +1635,7 @@ public class DistributedRegion extends LocalRegion implements
// release afterGetInitialImageInitializationLatch before unlocking
// cleanUpLock
@edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UL_UNRELEASED_LOCK")
- private void cleanUpDestroyedTokensAndMarkGIIComplete(GIIStatus giiStatus)
+ protected void cleanUpDestroyedTokensAndMarkGIIComplete(GIIStatus giiStatus)
{
//We need to clean up the disk before we release the after get initial image latch
DiskRegion dskRgn = getDiskRegion();
[17/18] incubator-geode git commit: Merge branch 'develop' into
feature/GEODE-420
Posted by ud...@apache.org.
Merge branch 'develop' into feature/GEODE-420
# Conflicts:
# geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
# geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommands.java
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/d4cca873
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/d4cca873
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/d4cca873
Branch: refs/heads/feature/GEODE-420
Commit: d4cca8737b4dafb727f90be28ad0fb8e097172bf
Parents: c6f5997 a4c38a4
Author: Udo Kohlmeyer <uk...@pivotal.io>
Authored: Wed Sep 7 02:19:15 2016 +1000
Committer: Udo Kohlmeyer <uk...@pivotal.io>
Committed: Wed Sep 7 02:19:15 2016 +1000
----------------------------------------------------------------------
.../internal/JmxManagerLocatorRequest.java | 8 +-
.../internal/cli/commands/ShellCommands.java | 13 +-
.../ConnectToLocatorSSLDUnitTest.java | 136 +++++++++++++++++++
3 files changed, 150 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d4cca873/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
----------------------------------------------------------------------
diff --cc geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
index 495f64d,ac250d0..39f914f
--- a/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
@@@ -88,8 -85,11 +85,13 @@@ public class JmxManagerLocatorRequest i
distributionConfigProps.putAll(sslConfigProps);
}
+ // re-initialize the SocketCreator with the sslConfigProps. Note this initializes the SocketCreator with cluster-ssl-* settings since
+ // we are connecting to the locator only.
- SocketCreator.getDefaultInstance(distributionConfigProps);
++ //TODO Udo: Look into this
++ // SocketCreator.getDefaultInstance(distributionConfigProps);
+
- Object responseFromServer = TcpClient.requestToServer(networkAddress, locatorPort, SINGLETON, msTimeout);
+ TcpClient client = new TcpClient();
+ Object responseFromServer = client.requestToServer(networkAddress, locatorPort, SINGLETON, msTimeout);
return (JmxManagerLocatorResponse) responseFromServer;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d4cca873/geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommands.java
----------------------------------------------------------------------
[12/18] incubator-geode git commit: GEODE-1820: add FlakyTest category
Posted by ud...@apache.org.
GEODE-1820: add FlakyTest category
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/d2d62d68
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/d2d62d68
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/d2d62d68
Branch: refs/heads/feature/GEODE-420
Commit: d2d62d6807e96c2c5d684c14c207eab36a4c0d21
Parents: b89f71c
Author: Kirk Lund <kl...@apache.org>
Authored: Fri Sep 2 10:30:05 2016 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Fri Sep 2 10:30:05 2016 -0700
----------------------------------------------------------------------
.../security/IntegratedClientGetPutAuthDistributedTest.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d2d62d68/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedClientGetPutAuthDistributedTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedClientGetPutAuthDistributedTest.java b/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedClientGetPutAuthDistributedTest.java
index 01509ad..6d4374d 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedClientGetPutAuthDistributedTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedClientGetPutAuthDistributedTest.java
@@ -31,9 +31,10 @@ import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.client.ClientCache;
import com.gemstone.gemfire.test.dunit.AsyncInvocation;
import com.gemstone.gemfire.test.junit.categories.DistributedTest;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
import com.gemstone.gemfire.test.junit.categories.SecurityTest;
-@Category({ DistributedTest.class, SecurityTest.class })
+@Category({ DistributedTest.class, SecurityTest.class, FlakyTest.class })
public class IntegratedClientGetPutAuthDistributedTest extends AbstractSecureServerDUnitTest {
@Test
[02/18] incubator-geode git commit: GEODE-1809: Improve error handling
Posted by ud...@apache.org.
GEODE-1809: Improve error handling
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/07798ca8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/07798ca8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/07798ca8
Branch: refs/heads/feature/GEODE-420
Commit: 07798ca802e752f66fc05811fc42e872675df525
Parents: bb44eb6
Author: Anthony Baker <ab...@apache.org>
Authored: Tue Aug 30 21:38:24 2016 -0700
Committer: Anthony Baker <ab...@apache.org>
Committed: Wed Aug 31 16:39:01 2016 -0700
----------------------------------------------------------------------
.../gemfire/internal/GemFireVersion.java | 65 ++++++++++----------
.../internal/GemFireVersionJUnitTest.java | 22 +++++--
2 files changed, 52 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/07798ca8/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
index 9bd3d4f..0d0bd58 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
@@ -23,6 +23,7 @@ import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URL;
import java.util.Map.Entry;
+import java.util.Optional;
import java.util.Properties;
import java.util.StringTokenizer;
@@ -183,12 +184,12 @@ public class GemFireVersion {
private final Properties description;
/** Error message to display instead of the version information */
- private final String error;
+ private final Optional<String> error;
public VersionDescription(String name) {
InputStream is = ClassPathLoader.getLatest().getResourceAsStream(getClass(), name);
if (is == null) {
- error = LocalizedStrings.GemFireVersion_COULD_NOT_FIND_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_0.toLocalizedString(RESOURCE_NAME);
+ error = Optional.of(LocalizedStrings.GemFireVersion_COULD_NOT_FIND_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_0.toLocalizedString(name));
description = null;
return;
}
@@ -197,26 +198,28 @@ public class GemFireVersion {
try {
description.load(is);
} catch (Exception ex) {
- error = LocalizedStrings.GemFireVersion_COULD_NOT_READ_PROPERTIES_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_0_BECAUSE_1.toLocalizedString(new Object[] {RESOURCE_NAME, ex});
+ error = Optional.of(LocalizedStrings.GemFireVersion_COULD_NOT_READ_PROPERTIES_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_0_BECAUSE_1.toLocalizedString(new Object[] {name, ex}));
return;
}
- error = validate();
+
+ error = validate(description);
}
public String getProperty(String key) {
- if (error != null) {
- return error;
- }
- return description.getProperty(key);
+ return error.orElse(description.getProperty(key));
}
public String getNativeCodeVersion() {
return SmHelper.getNativeVersion();
}
- private void print(PrintWriter pw) {
- for (Entry<?,?> props : description.entrySet()) {
- pw.println(props.getKey() + ": " + props.getValue());
+ void print(PrintWriter pw) {
+ if (error.isPresent()) {
+ pw.println(error.get());
+ } else {
+ for (Entry<?,?> props : description.entrySet()) {
+ pw.println(props.getKey() + ": " + props.getValue());
+ }
}
// not stored in the description map
@@ -249,43 +252,43 @@ public class GemFireVersion {
}
}
- private String validate() {
- if (getProperty(PRODUCT_NAME) == null) {
- return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {PRODUCT_NAME, RESOURCE_NAME});
+ private Optional<String> validate(Properties props) {
+ if (props.get(PRODUCT_NAME) == null) {
+ return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {PRODUCT_NAME, RESOURCE_NAME}));
}
- if (getProperty(GEMFIRE_VERSION) == null) {
- return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {GEMFIRE_VERSION, RESOURCE_NAME});
+ if (props.get(GEMFIRE_VERSION) == null) {
+ return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {GEMFIRE_VERSION, RESOURCE_NAME}));
}
- if (getProperty(SOURCE_DATE) == null) {
- return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_DATE, RESOURCE_NAME});
+ if (props.get(SOURCE_DATE) == null) {
+ return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_DATE, RESOURCE_NAME}));
}
- if (getProperty(SOURCE_REVISION) == null) {
- return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_REVISION, RESOURCE_NAME});
+ if (props.get(SOURCE_REVISION) == null) {
+ return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_REVISION, RESOURCE_NAME}));
}
- if (getProperty(SOURCE_REPOSITORY) == null) {
- return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_REPOSITORY, RESOURCE_NAME});
+ if (props.get(SOURCE_REPOSITORY) == null) {
+ return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {SOURCE_REPOSITORY, RESOURCE_NAME}));
}
- if (getProperty(BUILD_DATE) == null) {
- return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_DATE, RESOURCE_NAME});
+ if (props.get(BUILD_DATE) == null) {
+ return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_DATE, RESOURCE_NAME}));
}
- if (getProperty(BUILD_ID) == null) {
- return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_ID, RESOURCE_NAME});
+ if (props.get(BUILD_ID) == null) {
+ return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_ID, RESOURCE_NAME}));
}
- if (getProperty(BUILD_PLATFORM) == null) {
- return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_PLATFORM, RESOURCE_NAME});
+ if (props.get(BUILD_PLATFORM) == null) {
+ return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_PLATFORM, RESOURCE_NAME}));
}
- if (getProperty(BUILD_JAVA_VERSION) == null) {
- return LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_JAVA_VERSION, RESOURCE_NAME});
+ if (props.get(BUILD_JAVA_VERSION) == null) {
+ return Optional.of(LocalizedStrings.GemFireVersion_MISSING_PROPERTY_0_FROM_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_1.toLocalizedString(new Object[] {BUILD_JAVA_VERSION, RESOURCE_NAME}));
}
- return null;
+ return Optional.empty();
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/07798ca8/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireVersionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireVersionJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireVersionJUnitTest.java
index 8369d1f..850172a 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireVersionJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireVersionJUnitTest.java
@@ -18,9 +18,14 @@ package com.gemstone.gemfire.internal;
import static org.junit.Assert.assertTrue;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import com.gemstone.gemfire.internal.GemFireVersion.VersionDescription;
+import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
import com.gemstone.gemfire.test.junit.categories.UnitTest;
/**
@@ -31,10 +36,6 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
@Category(UnitTest.class)
public class GemFireVersionJUnitTest {
- /**
- * Prints both the GemFire version info and the system properties.
- * We have to print both
- */
@Test
public void testPrintInfo() {
final String versionOutput = GemFireVersion.asString();
@@ -50,4 +51,17 @@ public class GemFireVersionJUnitTest {
assertTrue(versionOutput.contains(GemFireVersion.VersionDescription.BUILD_PLATFORM));
assertTrue(versionOutput.contains(GemFireVersion.VersionDescription.BUILD_JAVA_VERSION));
}
+
+ @Test
+ public void testNoFile() {
+ String noFile = "not a property file";
+ VersionDescription noVersion = new VersionDescription(noFile);
+
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ noVersion.print(pw);
+
+ String noFileOutput = sw.toString();
+ assertTrue(noFileOutput.contains(LocalizedStrings.GemFireVersion_COULD_NOT_FIND_RESOURCE_COM_GEMSTONE_GEMFIRE_INTERNAL_0.toLocalizedString(noFile)));
+ }
}
[13/18] incubator-geode git commit: GEODE-1828 Added some more
logging to debug further
Posted by ud...@apache.org.
GEODE-1828 Added some more logging to debug further
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/fac42cbc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/fac42cbc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/fac42cbc
Branch: refs/heads/feature/GEODE-420
Commit: fac42cbc2e461da50d80c7cd1ae5188227fbc5a6
Parents: d2d62d6
Author: Hitesh Khamesra <hi...@yahoo.com>
Authored: Fri Sep 2 15:15:46 2016 -0700
Committer: Hitesh Khamesra <hi...@yahoo.com>
Committed: Fri Sep 2 15:16:23 2016 -0700
----------------------------------------------------------------------
.../gemstone/gemfire/internal/cache/EntryExpiryTask.java | 3 +++
.../com/gemstone/gemfire/internal/cache/ExpiryTask.java | 5 +++++
.../test/java/com/gemstone/gemfire/TXExpiryJUnitTest.java | 3 +++
.../java/com/gemstone/gemfire/cache30/RegionTestCase.java | 9 ++++++---
4 files changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fac42cbc/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/EntryExpiryTask.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/EntryExpiryTask.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/EntryExpiryTask.java
index 252c9c3..ac2a054 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/EntryExpiryTask.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/EntryExpiryTask.java
@@ -345,6 +345,9 @@ public class EntryExpiryTask extends ExpiryTask {
boolean superCancel = super.cancel();
if (superCancel) {
this.re = null;
+ if (expiryTaskListener != null) {
+ expiryTaskListener.afterCancel(this);
+ }
}
return superCancel;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fac42cbc/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/ExpiryTask.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/ExpiryTask.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/ExpiryTask.java
index 09ee1ea..5e09cbe 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/ExpiryTask.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/ExpiryTask.java
@@ -535,5 +535,10 @@ public abstract class ExpiryTask extends SystemTimer.SystemTimerTask {
*/
public void afterExpire(ExpiryTask et);
+ /**
+ * Called when task has been canceled
+ */
+ public void afterCancel(ExpiryTask et);
+
}
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fac42cbc/geode-core/src/test/java/com/gemstone/gemfire/TXExpiryJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/TXExpiryJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/TXExpiryJUnitTest.java
index caa4d86..d5e54dc 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/TXExpiryJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/TXExpiryJUnitTest.java
@@ -271,6 +271,9 @@ public class TXExpiryJUnitTest {
this.et = et;
}
@Override
+ public void afterCancel(ExpiryTask et) {
+ }
+ @Override
public void afterSchedule(ExpiryTask et) {
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fac42cbc/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
index aaa2abe..e88b6f0 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
@@ -3544,7 +3544,10 @@ public abstract class RegionTestCase extends JUnit4CacheTestCase {
}
class ExpiryCallbacks implements ExpiryTaskListener {
-
+ @Override
+ public void afterCancel(ExpiryTask et) {
+ getCache().getLogger().info("ExpiryCallbacks.afterCancel", new RuntimeException("TaskCanceled"));
+ }
@Override
public void afterSchedule(ExpiryTask et) {
printState(et, "ExpiryCallbacks.afterSchedule " );
@@ -3571,7 +3574,6 @@ public abstract class RegionTestCase extends JUnit4CacheTestCase {
Date ttlTime = new Date(et.getTTLExpirationTime());
Date getNow = new Date(et.getNow());
Date scheduleETime = new Date(et.scheduledExecutionTime());
- //et.getKey();
getCache().getLogger().info(callback + " now: " + getCurrentTimeStamp(now) + " ttl:" + getCurrentTimeStamp(ttl) + " idleExpTime:" + getCurrentTimeStamp(idleExpTime) +
" ttlTime:" + getCurrentTimeStamp(ttlTime) + " getNow:" + getCurrentTimeStamp(getNow) + " scheduleETime:" + getCurrentTimeStamp(scheduleETime) +
" getKey:" + et.getKey() + " isPending:" + et.isPending() +
@@ -3602,11 +3604,12 @@ public abstract class RegionTestCase extends JUnit4CacheTestCase {
@Test
public void testEntryIdleDestroy() throws Exception {
+ EntryExpiryTask.expiryTaskListener = new ExpiryCallbacks();
final String name = this.getUniqueName();
final int timeout = 20; // ms
final String key = "KEY";
final String value = "VALUE";
- EntryExpiryTask.expiryTaskListener = new ExpiryCallbacks();
+
AttributesFactory factory = new AttributesFactory(getRegionAttributes());
ExpirationAttributes expire =
new ExpirationAttributes(timeout, ExpirationAction.DESTROY);
[11/18] incubator-geode git commit: GEODE-1838: remove unused test
classes
Posted by ud...@apache.org.
GEODE-1838: remove unused test classes
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/b89f71ce
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/b89f71ce
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/b89f71ce
Branch: refs/heads/feature/GEODE-420
Commit: b89f71ce6f159b74635ff5a25c216ac09d690b90
Parents: 68e770f
Author: Kirk Lund <kl...@apache.org>
Authored: Thu Sep 1 17:09:54 2016 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Fri Sep 2 09:43:21 2016 -0700
----------------------------------------------------------------------
.../src/test/java/cacheRunner/Portfolio.java | 128 -------------------
.../src/test/java/cacheRunner/Position.java | 73 -----------
2 files changed, 201 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/b89f71ce/geode-core/src/test/java/cacheRunner/Portfolio.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/cacheRunner/Portfolio.java b/geode-core/src/test/java/cacheRunner/Portfolio.java
deleted file mode 100644
index 5dd2b7e..0000000
--- a/geode-core/src/test/java/cacheRunner/Portfolio.java
+++ /dev/null
@@ -1,128 +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 cacheRunner;
-
-import java.util.*;
-import java.io.Serializable;
-import com.gemstone.gemfire.cache.Declarable;
-
-/**
- * A stock portfolio that consists of multiple {@link Position}
- * objects that represent shares of stock (a "security"). Instances
- * of <code>Portfolio</code> can be stored in a GemFire
- * <code>Region</code> and their contents can be queried using the
- * GemFire query service.
- *
- * <P>
- *
- * This class is <code>Serializable</code> because we want it to be
- * distributed to multiple members of a distributed system. Because
- * this class is <code>Declarable</code>, we can describe instances of
- * it in a GemFire <code>cache.xml</code> file.
- *
- * @since GemFire 4.0
- */
-public class Portfolio implements Declarable, Serializable {
- private int id; /* id is used as the entry key and is stored in the entry */
- private String type;
- private Map<String, Position> positions = new HashMap<String, Position>();
- private String status;
-
- /**
- * Initializes an instance of <code>Portfolio</code> from a
- * <code>Properties</code> object assembled from data residing in a
- * <code>cache.xml</code> file.
- */
- public void init(Properties props) {
- this.id = Integer.parseInt(props.getProperty("id"));
- this.type = props.getProperty("type", "type1");
- this.status = props.getProperty("status", "active");
-
- // get the positions. These are stored in the properties object
- // as Positions, not String, so use Hashtable protocol to get at them.
- // the keys are named "positionN", where N is an integer.
- for (Map.Entry<Object, Object> entry : props.entrySet()) {
- String key = (String) entry.getKey();
- if (key.startsWith("position")) {
- Position pos = (Position) entry.getValue();
- this.positions.put(pos.getSecId(), pos);
- }
- }
- }
-
- /**
- * Returns the status of this portfolio (<code>active</code> or
- * <code>inactive</code>).
- */
- public String getStatus(){
- return status;
- }
-
- /**
- * Returns the id of this portfolio. When a <code>Portfolio</code>
- * placed in a GemFire <code>Region</code> entry, its id is used as
- * the key.
- */
- public int getId(){
- return this.id;
- }
-
- /**
- * Returns the positions held in this portfolio.
- *
- * @return a <code>Map</code> whose keys are the {@linkplain
- * Position#getSecId security ids} and whose values are
- * {@link Position} objects.
- */
- public Map<String, Position> getPositions(){
- return this.positions;
- }
-
- /**
- * Returns the type of this portfolio. In this example, the type is
- * an arbitrary string.
- */
- public String getType() {
- return this.type;
- }
-
- /**
- * Returns whether or not this portfolio is active.
- */
- public boolean isActive(){
- return status.equals("active");
- }
-
- @Override
- public String toString(){
- StringBuffer out = new StringBuffer();
- out.append("\n\tPortfolio [id=" + this.id + " status=" + this.status);
- out.append(" type=" + this.type);
-
- Iterator<Map.Entry<String, Position>> iter = positions.entrySet().iterator();
- while(iter.hasNext()){
- Map.Entry<String, Position> entry = iter.next();
- out.append("\n\t\t");
- out.append(entry.getKey() + ":" + entry.getValue());
- if (iter.hasNext()) {
- out.append(", ");
- }
- }
- out.append("]");
- return out.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/b89f71ce/geode-core/src/test/java/cacheRunner/Position.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/cacheRunner/Position.java b/geode-core/src/test/java/cacheRunner/Position.java
deleted file mode 100644
index 4e7e6e1..0000000
--- a/geode-core/src/test/java/cacheRunner/Position.java
+++ /dev/null
@@ -1,73 +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 cacheRunner;
-
-import java.util.*;
-import java.io.Serializable;
-import com.gemstone.gemfire.cache.Declarable;
-
-/**
- * Represents a number of shares of a stock ("security") held in a
- * {@link Portfolio}.
- *
- * <P>
- *
- * This class is <code>Serializable</code> because we want it to be
- * distributed to multiple members of a distributed system. Because
- * this class is <code>Declarable</code>, we can describe instances of
- * it in a GemFire <code>cache.xml</code> file.
- *
- * @since GemFire 4.0
- */
-public class Position implements Declarable, Serializable {
- private String secId;
- private double qty;
- private double mktValue;
-
- public void init(Properties props) {
- this.secId = props.getProperty("secId");
- this.qty = Double.parseDouble(props.getProperty("qty"));
- this.mktValue = Double.parseDouble(props.getProperty("mktValue"));
- }
-
- /**
- * Returns the id of the security held in this position.
- */
- public String getSecId(){
- return this.secId;
- }
-
- /**
- * Returns the number of shares held in this position.
- */
- public double getQty(){
- return this.qty;
- }
-
- /**
- * Returns the value of this position.
- */
- public double getMktValue() {
- return this.mktValue;
- }
-
- @Override
- public String toString(){
- return "Position [secId="+secId+" qty="+this.qty+" mktValue="+mktValue+"]";
- }
-
-}
[04/18] incubator-geode git commit: GEODE-11: need to fix the junit
test case when adding FSDirectory
Posted by ud...@apache.org.
GEODE-11: need to fix the junit test case when adding FSDirectory
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/fd3786a8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/fd3786a8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/fd3786a8
Branch: refs/heads/feature/GEODE-420
Commit: fd3786a82f3a61f03fac1a4154c721dc406e3805
Parents: 746820b
Author: zhouxh <gz...@pivotal.io>
Authored: Wed Aug 31 18:05:37 2016 -0700
Committer: zhouxh <gz...@pivotal.io>
Committed: Wed Aug 31 18:05:37 2016 -0700
----------------------------------------------------------------------
.../internal/repository/IndexRepositoryImplJUnitTest.java | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fd3786a8/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
index dd0378a..8f8bbb6 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
@@ -65,6 +65,7 @@ public class IndexRepositoryImplJUnitTest {
private StandardAnalyzer analyzer = new StandardAnalyzer();
private IndexWriter writer;
private Region region;
+ private Region userRegion;
private LuceneIndexStats stats;
private FileSystemStats fileSystemStats;
@@ -79,9 +80,10 @@ public class IndexRepositoryImplJUnitTest {
String[] indexedFields= new String[] {"s", "i", "l", "d", "f", "s2", "missing"};
mapper = new HeterogeneousLuceneSerializer(indexedFields);
region = Mockito.mock(Region.class);
+ userRegion = Mockito.mock(Region.class);
stats = Mockito.mock(LuceneIndexStats.class);
- Mockito.when(region.isDestroyed()).thenReturn(false);
- repo = new IndexRepositoryImpl(region, writer, mapper, stats, null);
+ Mockito.when(userRegion.isDestroyed()).thenReturn(false);
+ repo = new IndexRepositoryImpl(region, writer, mapper, stats, userRegion);
}
@Test
[10/18] incubator-geode git commit: GEODE-1832: remove dependency on
cacheRunner package
Posted by ud...@apache.org.
GEODE-1832: remove dependency on cacheRunner package
Comment out disabled test with note about how to rewrite the test. See
GEODE-1837.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/68e770f4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/68e770f4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/68e770f4
Branch: refs/heads/feature/GEODE-420
Commit: 68e770f422f2671bb60db79d7bb7999adcef2bfd
Parents: 426f1ae
Author: Kirk Lund <kl...@apache.org>
Authored: Thu Sep 1 17:07:36 2016 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Fri Sep 2 09:43:20 2016 -0700
----------------------------------------------------------------------
.../cache/query/dunit/RemoteQueryDUnitTest.java | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/68e770f4/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/RemoteQueryDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/RemoteQueryDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/RemoteQueryDUnitTest.java
index 3ab90c9..686efb0 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/RemoteQueryDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/RemoteQueryDUnitTest.java
@@ -29,9 +29,6 @@ import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import cacheRunner.Portfolio;
-import cacheRunner.Position;
-
import com.gemstone.gemfire.DataSerializable;
import com.gemstone.gemfire.DataSerializer;
import com.gemstone.gemfire.cache.AttributesFactory;
@@ -53,7 +50,6 @@ import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
import com.gemstone.gemfire.test.dunit.Assert;
import com.gemstone.gemfire.test.dunit.DistributedTestUtils;
import com.gemstone.gemfire.test.dunit.Host;
-import com.gemstone.gemfire.test.dunit.LogWriterUtils;
import com.gemstone.gemfire.test.dunit.NetworkUtils;
import com.gemstone.gemfire.test.dunit.SerializableRunnable;
import com.gemstone.gemfire.test.dunit.VM;
@@ -486,10 +482,10 @@ public class RemoteQueryDUnitTest extends JUnit4CacheTestCase {
/**
* Tests remote complex query execution.
*/
- @Ignore("TODO: test is disabled")
+ @Ignore("GEODE-1837: rewrite this test using Portfolio and Position in package com.gemstone.gemfire.cache.query.data")
@Test
public void testRemoteComplexQueries() throws CacheException {
-
+/*
final String name = this.getName();
final Host host = Host.getHost(0);
VM vm0 = host.getVM(0);
@@ -655,7 +651,7 @@ public class RemoteQueryDUnitTest extends JUnit4CacheTestCase {
SelectResults results = null;
queryString =
- "IMPORT cacheRunner.Position; " +
+ "IMPORT Position; " +
"SELECT DISTINCT id, status FROM " + region.getFullPath() +
"WHERE NOT (SELECT DISTINCT * FROM positions.values posnVal TYPE Position " +
"WHERE posnVal.secId='AOL' OR posnVal.secId='SAP').isEmpty";
@@ -676,7 +672,7 @@ public class RemoteQueryDUnitTest extends JUnit4CacheTestCase {
public void run() {
stopBridgeServer(getCache());
}
- });
+ });*/
}
/**
@@ -1484,7 +1480,7 @@ public class RemoteQueryDUnitTest extends JUnit4CacheTestCase {
String queryString = "import TestObject; select distinct * from /trade";
String queryString =
- "IMPORT cacheRunner.Position; " +
+ "IMPORT Position; " +
"SELECT DISTINCT id, status FROM /root/portfolios " +
"WHERE NOT (SELECT DISTINCT * FROM positions.values posnVal TYPE Position " +
"WHERE posnVal.secId='AOL' OR posnVal.secId='SAP').isEmpty";
[14/18] incubator-geode git commit: GEODE-1809: Improve printing
Posted by ud...@apache.org.
GEODE-1809: Improve printing
Sort the properties so they look pretty.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/bb829d3d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/bb829d3d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/bb829d3d
Branch: refs/heads/feature/GEODE-420
Commit: bb829d3dcaa7105d517868a6fc060981e95643f3
Parents: fac42cb
Author: Anthony Baker <ab...@apache.org>
Authored: Fri Sep 2 19:55:52 2016 -0700
Committer: Anthony Baker <ab...@apache.org>
Committed: Fri Sep 2 19:57:32 2016 -0700
----------------------------------------------------------------------
.../main/java/com/gemstone/gemfire/internal/GemFireVersion.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/bb829d3d/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
index 0d0bd58..d8fa21b 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
@@ -26,6 +26,7 @@ import java.util.Map.Entry;
import java.util.Optional;
import java.util.Properties;
import java.util.StringTokenizer;
+import java.util.TreeMap;
import com.gemstone.gemfire.InternalGemFireError;
import com.gemstone.gemfire.SystemFailure;
@@ -217,7 +218,7 @@ public class GemFireVersion {
if (error.isPresent()) {
pw.println(error.get());
} else {
- for (Entry<?,?> props : description.entrySet()) {
+ for (Entry<?,?> props : new TreeMap<>(description).entrySet()) {
pw.println(props.getKey() + ": " + props.getValue());
}
}
[03/18] incubator-geode git commit: GEODE-11: create index repository
using raw Lucene directory.
Posted by ud...@apache.org.
GEODE-11: create index repository using raw Lucene directory.
GEODE-11: add RawDirectory using index instance
GEODE-11: add abstract class for index and repositoryManager
remove commented lines in test 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/746820bb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/746820bb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/746820bb
Branch: refs/heads/feature/GEODE-420
Commit: 746820bb18fe3f3ab7bd6b00f847821d934bbf09
Parents: 07798ca
Author: zhouxh <gz...@pivotal.io>
Authored: Fri Jul 15 15:57:07 2016 -0700
Committer: zhouxh <gz...@pivotal.io>
Committed: Wed Aug 31 17:09:08 2016 -0700
----------------------------------------------------------------------
.../AbstractPartitionedRepositoryManager.java | 124 +++++++++++++++++
.../lucene/internal/IndexRepositoryFactory.java | 21 ++-
.../lucene/internal/LuceneIndexFactory.java | 30 +++++
.../LuceneIndexForPartitionedRegion.java | 134 +++++++------------
.../cache/lucene/internal/LuceneIndexImpl.java | 79 +++++++++--
.../cache/lucene/internal/LuceneRawIndex.java | 43 ++++++
.../lucene/internal/LuceneRawIndexFactory.java | 27 ++++
.../lucene/internal/LuceneServiceImpl.java | 3 +-
.../internal/PartitionedRepositoryManager.java | 123 ++---------------
.../internal/RawIndexRepositoryFactory.java | 63 +++++++++
.../internal/RawLuceneRepositoryManager.java | 46 +++++++
.../repository/IndexRepositoryImpl.java | 6 +-
.../LuceneIndexCreationIntegrationTest.java | 29 ++++
.../cache/lucene/LuceneQueriesPRBase.java | 7 +-
.../LuceneIndexForPartitionedRegionTest.java | 34 ++++-
.../LuceneIndexRecoveryHAIntegrationTest.java | 19 +--
.../PartitionedRepositoryManagerJUnitTest.java | 68 +++++-----
.../RawLuceneRepositoryManagerJUnitTest.java | 97 ++++++++++++++
.../DistributedScoringJUnitTest.java | 2 +-
.../IndexRepositoryImplJUnitTest.java | 2 +-
.../IndexRepositoryImplPerformanceTest.java | 2 +-
.../cache/lucene/test/IndexRepositorySpy.java | 20 +--
22 files changed, 689 insertions(+), 290 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/AbstractPartitionedRepositoryManager.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/AbstractPartitionedRepositoryManager.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/AbstractPartitionedRepositoryManager.java
new file mode 100755
index 0000000..1dc716c
--- /dev/null
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/AbstractPartitionedRepositoryManager.java
@@ -0,0 +1,124 @@
+/*
+ * 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.lucene.internal;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import com.gemstone.gemfire.InternalGemFireError;
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.cache.execute.RegionFunctionContext;
+import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepository;
+import com.gemstone.gemfire.cache.lucene.internal.repository.RepositoryManager;
+import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.LuceneSerializer;
+import com.gemstone.gemfire.internal.cache.BucketNotFoundException;
+import com.gemstone.gemfire.internal.cache.BucketRegion;
+import com.gemstone.gemfire.internal.cache.PartitionedRegion;
+import com.gemstone.gemfire.internal.cache.execute.InternalRegionFunctionContext;
+
+public abstract class AbstractPartitionedRepositoryManager implements RepositoryManager {
+
+ /** map of the parent bucket region to the index repository
+ *
+ * This is based on the BucketRegion in case a bucket is rebalanced, we don't want to
+ * return a stale index repository. If a bucket moves off of this node and
+ * comes back, it will have a new BucketRegion object.
+ *
+ * It is weak so that the old BucketRegion will be garbage collected.
+ */
+ protected final ConcurrentHashMap<Integer, IndexRepository> indexRepositories = new ConcurrentHashMap<Integer, IndexRepository>();
+
+ /** The user region for this index */
+ protected final PartitionedRegion userRegion;
+ protected final LuceneSerializer serializer;
+ protected final LuceneIndexImpl index;
+
+ public AbstractPartitionedRepositoryManager(
+ LuceneIndexImpl index,
+ LuceneSerializer serializer) {
+ this.index = index;
+ this.userRegion = (PartitionedRegion)index.getCache().getRegion(index.getRegionPath());
+ this.serializer = serializer;
+ }
+
+ @Override
+ public IndexRepository getRepository(Region region, Object key,
+ Object callbackArg) throws BucketNotFoundException {
+ BucketRegion userBucket = userRegion.getBucketRegion(key, callbackArg);
+ if(userBucket == null) {
+ throw new BucketNotFoundException("User bucket was not found for region " + region + "key " + key + " callbackarg " + callbackArg);
+ }
+
+ return getRepository(userBucket.getId());
+ }
+
+ @Override
+ public Collection<IndexRepository> getRepositories(RegionFunctionContext ctx) throws BucketNotFoundException {
+ Region<Object, Object> region = ctx.getDataSet();
+ Set<Integer> buckets = ((InternalRegionFunctionContext) ctx).getLocalBucketSet(region);
+ ArrayList<IndexRepository> repos = new ArrayList<IndexRepository>(buckets.size());
+ for(Integer bucketId : buckets) {
+ BucketRegion userBucket = userRegion.getDataStore().getLocalBucketById(bucketId);
+ if(userBucket == null) {
+ throw new BucketNotFoundException("User bucket was not found for region " + region + "bucket id " + bucketId);
+ } else {
+ repos.add(getRepository(userBucket.getId()));
+ }
+ }
+
+ return repos;
+ }
+
+ public abstract IndexRepository createOneIndexRepository(final Integer bucketId,
+ LuceneSerializer serializer,
+ LuceneIndexImpl index, PartitionedRegion userRegion) throws IOException;
+
+ /**
+ * Return the repository for a given user bucket
+ */
+ protected IndexRepository getRepository(Integer bucketId) throws BucketNotFoundException {
+ IndexRepository repo = indexRepositories.get(bucketId);
+ if(repo != null && !repo.isClosed()) {
+ return repo;
+ }
+
+ repo = indexRepositories.compute(bucketId, (key, oldRepository) -> {
+ if(oldRepository != null && !oldRepository.isClosed()) {
+ return oldRepository;
+ }
+ if(oldRepository != null) {
+ oldRepository.cleanup();
+ }
+
+ try {
+ return createOneIndexRepository(bucketId, serializer, index, userRegion);
+ } catch(IOException e) {
+ throw new InternalGemFireError("Unable to create index repository", e);
+ }
+
+ });
+
+ if(repo == null) {
+ throw new BucketNotFoundException("Colocated index buckets not found for bucket id " + bucketId);
+ }
+
+ return repo;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/IndexRepositoryFactory.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/IndexRepositoryFactory.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/IndexRepositoryFactory.java
index ae4b88b..e6f01b0 100644
--- a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/IndexRepositoryFactory.java
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/IndexRepositoryFactory.java
@@ -19,7 +19,6 @@ package com.gemstone.gemfire.cache.lucene.internal;
import java.io.IOException;
import com.gemstone.gemfire.cache.lucene.internal.directory.RegionDirectory;
-import com.gemstone.gemfire.cache.lucene.internal.filesystem.FileSystemStats;
import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepository;
import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepositoryImpl;
import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.LuceneSerializer;
@@ -27,7 +26,6 @@ import com.gemstone.gemfire.internal.cache.BucketNotFoundException;
import com.gemstone.gemfire.internal.cache.BucketRegion;
import com.gemstone.gemfire.internal.cache.PartitionedRegion;
-import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
@@ -37,25 +35,22 @@ public class IndexRepositoryFactory {
}
public IndexRepository createIndexRepository(final Integer bucketId,
- PartitionedRegion userRegion,
- PartitionedRegion fileRegion,
- PartitionedRegion chunkRegion,
LuceneSerializer serializer,
- Analyzer analyzer,
- LuceneIndexStats indexStats,
- FileSystemStats fileSystemStats)
+ LuceneIndexImpl index, PartitionedRegion userRegion)
throws IOException
{
final IndexRepository repo;
- BucketRegion fileBucket = getMatchingBucket(fileRegion, bucketId);
- BucketRegion chunkBucket = getMatchingBucket(chunkRegion, bucketId);
+ LuceneIndexForPartitionedRegion indexForPR = (LuceneIndexForPartitionedRegion)index;
+ BucketRegion fileBucket = getMatchingBucket(indexForPR.getFileRegion(), bucketId);
+ BucketRegion chunkBucket = getMatchingBucket(indexForPR.getChunkRegion(), bucketId);
+ BucketRegion dataBucket = getMatchingBucket(userRegion, bucketId);
if(fileBucket == null || chunkBucket == null) {
return null;
}
- RegionDirectory dir = new RegionDirectory(fileBucket, chunkBucket, fileSystemStats);
- IndexWriterConfig config = new IndexWriterConfig(analyzer);
+ RegionDirectory dir = new RegionDirectory(fileBucket, chunkBucket, indexForPR.getFileSystemStats());
+ IndexWriterConfig config = new IndexWriterConfig(indexForPR.getAnalyzer());
IndexWriter writer = new IndexWriter(dir, config);
- repo = new IndexRepositoryImpl(fileBucket, writer, serializer, indexStats);
+ repo = new IndexRepositoryImpl(fileBucket, writer, serializer, indexForPR.getIndexStats(), dataBucket);
return repo;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexFactory.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexFactory.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexFactory.java
new file mode 100755
index 0000000..b6ac867
--- /dev/null
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexFactory.java
@@ -0,0 +1,30 @@
+/*
+ * 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.lucene.internal;
+
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+
+public class LuceneIndexFactory {
+ public LuceneIndexFactory() {
+ }
+
+ public LuceneIndexImpl create(String indexName, String regionPath, GemFireCacheImpl cache) {
+ return new LuceneIndexForPartitionedRegion(indexName, regionPath, cache);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexForPartitionedRegion.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexForPartitionedRegion.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexForPartitionedRegion.java
index af05e7d..b64e026 100644
--- a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexForPartitionedRegion.java
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexForPartitionedRegion.java
@@ -35,109 +35,77 @@ import com.gemstone.gemfire.cache.lucene.internal.directory.DumpDirectoryFiles;
import com.gemstone.gemfire.cache.lucene.internal.filesystem.ChunkKey;
import com.gemstone.gemfire.cache.lucene.internal.filesystem.File;
import com.gemstone.gemfire.cache.lucene.internal.filesystem.FileSystemStats;
+import com.gemstone.gemfire.cache.lucene.internal.repository.RepositoryManager;
import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.HeterogeneousLuceneSerializer;
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
import com.gemstone.gemfire.internal.cache.PartitionedRegion;
/* wrapper of IndexWriter */
public class LuceneIndexForPartitionedRegion extends LuceneIndexImpl {
+ protected Region<String, File> fileRegion;
+ protected Region<ChunkKey, byte[]> chunkRegion;
+ protected final FileSystemStats fileSystemStats;
public LuceneIndexForPartitionedRegion(String indexName, String regionPath, Cache cache) {
super(indexName, regionPath, cache);
+
+ final String statsName = indexName + "-" + regionPath;
+ this.fileSystemStats = new FileSystemStats(cache.getDistributedSystem(), statsName);
}
- @Override
- public void initialize() {
- if (!hasInitialized) {
- /* create index region */
- PartitionedRegion dataRegion = getDataRegion();
- //assert dataRegion != null;
- RegionAttributes regionAttributes = dataRegion.getAttributes();
- DataPolicy dp = regionAttributes.getDataPolicy();
- final boolean withPersistence = dp.withPersistence();
- final boolean withStorage = regionAttributes.getPartitionAttributes().getLocalMaxMemory()>0;
- RegionShortcut regionShortCut;
- if (withPersistence) {
- // TODO: add PartitionedRegionAttributes instead
- regionShortCut = RegionShortcut.PARTITION_PERSISTENT;
- } else {
- regionShortCut = RegionShortcut.PARTITION;
- }
-
- // TODO: 1) dataRegion should be withStorage
- // 2) Persistence to Persistence
- // 3) Replicate to Replicate, Partition To Partition
- // 4) Offheap to Offheap
- if (!withStorage) {
- throw new IllegalStateException("The data region to create lucene index should be with storage");
- }
-
- // create PR fileRegion, but not to create its buckets for now
- final String fileRegionName = createFileRegionName();
- PartitionAttributes partitionAttributes = dataRegion.getPartitionAttributes();
- if (!fileRegionExists(fileRegionName)) {
- fileRegion = createFileRegion(regionShortCut, fileRegionName, partitionAttributes, regionAttributes);
- }
-
- // create PR chunkRegion, but not to create its buckets for now
- final String chunkRegionName = createChunkRegionName();
- if (!chunkRegionExists(chunkRegionName)) {
- chunkRegion = createChunkRegion(regionShortCut, fileRegionName, partitionAttributes, chunkRegionName, regionAttributes);
- }
- fileSystemStats.setFileSupplier(() -> (int) getFileRegion().getLocalSize());
- fileSystemStats.setChunkSupplier(() -> (int) getChunkRegion().getLocalSize());
- fileSystemStats.setBytesSupplier(() -> getChunkRegion().getPrStats().getDataStoreBytesInUse());
-
- // we will create RegionDirectories on the fly when data comes in
- HeterogeneousLuceneSerializer mapper = new HeterogeneousLuceneSerializer(getFieldNames());
- repositoryManager = new PartitionedRepositoryManager(dataRegion, (PartitionedRegion) fileRegion,
- (PartitionedRegion) chunkRegion, mapper, analyzer, this.indexStats, this.fileSystemStats);
-
- // create AEQ, AEQ listener and specify the listener to repositoryManager
- createAEQ(dataRegion);
-
- addExtension(dataRegion);
- hasInitialized = true;
+ protected RepositoryManager createRepositoryManager() {
+ RegionShortcut regionShortCut;
+ final boolean withPersistence = withPersistence();
+ RegionAttributes regionAttributes = dataRegion.getAttributes();
+ final boolean withStorage = regionAttributes.getPartitionAttributes().getLocalMaxMemory()>0;
+
+ // TODO: 1) dataRegion should be withStorage
+ // 2) Persistence to Persistence
+ // 3) Replicate to Replicate, Partition To Partition
+ // 4) Offheap to Offheap
+ if (!withStorage) {
+ throw new IllegalStateException("The data region to create lucene index should be with storage");
+ }
+ if (withPersistence) {
+ // TODO: add PartitionedRegionAttributes instead
+ regionShortCut = RegionShortcut.PARTITION_PERSISTENT;
+ } else {
+ regionShortCut = RegionShortcut.PARTITION;
+ }
+
+ // create PR fileRegion, but not to create its buckets for now
+ final String fileRegionName = createFileRegionName();
+ PartitionAttributes partitionAttributes = dataRegion.getPartitionAttributes();
+ if (!fileRegionExists(fileRegionName)) {
+ fileRegion = createFileRegion(regionShortCut, fileRegionName, partitionAttributes, regionAttributes);
}
- }
- private PartitionedRegion getDataRegion() {
- return (PartitionedRegion) cache.getRegion(regionPath);
- }
+ // create PR chunkRegion, but not to create its buckets for now
+ final String chunkRegionName = createChunkRegionName();
+ if (!chunkRegionExists(chunkRegionName)) {
+ chunkRegion = createChunkRegion(regionShortCut, fileRegionName, partitionAttributes, chunkRegionName, regionAttributes);
+ }
+ fileSystemStats.setFileSupplier(() -> (int) getFileRegion().getLocalSize());
+ fileSystemStats.setChunkSupplier(() -> (int) getChunkRegion().getLocalSize());
+ fileSystemStats.setBytesSupplier(() -> getChunkRegion().getPrStats().getDataStoreBytesInUse());
- private PartitionedRegion getFileRegion() {
+ // we will create RegionDirectories on the fly when data comes in
+ HeterogeneousLuceneSerializer mapper = new HeterogeneousLuceneSerializer(getFieldNames());
+ return new PartitionedRepositoryManager(this, mapper);
+ }
+
+ public PartitionedRegion getFileRegion() {
return (PartitionedRegion) fileRegion;
}
- private PartitionedRegion getChunkRegion() {
+ public PartitionedRegion getChunkRegion() {
return (PartitionedRegion) chunkRegion;
}
- private AsyncEventQueueFactoryImpl createAEQFactory(final Region dataRegion) {
- AsyncEventQueueFactoryImpl factory = (AsyncEventQueueFactoryImpl) cache.createAsyncEventQueueFactory();
- factory.setParallel(true); // parallel AEQ for PR
- factory.setMaximumQueueMemory(1000);
- factory.setDispatcherThreads(1);
- factory.setIsMetaQueue(true);
- if(dataRegion.getAttributes().getDataPolicy().withPersistence()) {
- factory.setPersistent(true);
- }
- factory.setDiskStoreName(dataRegion.getAttributes().getDiskStoreName());
- factory.setDiskSynchronous(dataRegion.getAttributes().isDiskSynchronous());
- factory.setForwardExpirationDestroy(true);
- return factory;
- }
-
- AsyncEventQueue createAEQ(Region dataRegion) {
- return createAEQ(createAEQFactory(dataRegion));
- }
-
- private AsyncEventQueue createAEQ(AsyncEventQueueFactoryImpl factory) {
- LuceneEventListener listener = new LuceneEventListener(repositoryManager);
- String aeqId = LuceneServiceImpl.getUniqueIndexName(getName(), regionPath);
- AsyncEventQueue indexQueue = factory.create(aeqId, listener);
- return indexQueue;
+ public FileSystemStats getFileSystemStats() {
+ return fileSystemStats;
}
-
+
boolean fileRegionExists(String fileRegionName) {
return cache.<String, File> getRegion(fileRegionName) != null;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexImpl.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexImpl.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexImpl.java
index ff31c49..67461a9 100644
--- a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexImpl.java
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexImpl.java
@@ -29,9 +29,11 @@ import org.apache.lucene.analysis.standard.StandardAnalyzer;
import com.gemstone.gemfire.InternalGemFireError;
import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.DataPolicy;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.RegionAttributes;
import com.gemstone.gemfire.cache.asyncqueue.AsyncEventQueue;
+import com.gemstone.gemfire.cache.asyncqueue.internal.AsyncEventQueueFactoryImpl;
import com.gemstone.gemfire.cache.lucene.internal.filesystem.ChunkKey;
import com.gemstone.gemfire.cache.lucene.internal.filesystem.File;
import com.gemstone.gemfire.cache.lucene.internal.filesystem.FileSystemStats;
@@ -39,6 +41,7 @@ import com.gemstone.gemfire.cache.lucene.internal.repository.RepositoryManager;
import com.gemstone.gemfire.cache.lucene.internal.xml.LuceneIndexCreation;
import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
import com.gemstone.gemfire.internal.cache.InternalRegionArguments;
+import com.gemstone.gemfire.internal.cache.LocalRegion;
import com.gemstone.gemfire.internal.cache.PartitionedRegion;
import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
import com.gemstone.gemfire.internal.logging.LogService;
@@ -50,24 +53,21 @@ public abstract class LuceneIndexImpl implements InternalLuceneIndex {
protected final String regionPath;
protected final Cache cache;
protected final LuceneIndexStats indexStats;
- protected final FileSystemStats fileSystemStats;
protected boolean hasInitialized = false;
protected Map<String, Analyzer> fieldAnalyzers;
protected String[] searchableFieldNames;
protected RepositoryManager repositoryManager;
protected Analyzer analyzer;
- protected Region<String, File> fileRegion;
- protected Region<ChunkKey, byte[]> chunkRegion;
-
+ protected LocalRegion dataRegion;
protected LuceneIndexImpl(String indexName, String regionPath, Cache cache) {
this.indexName = indexName;
this.regionPath = regionPath;
this.cache = cache;
+
final String statsName = indexName + "-" + regionPath;
this.indexStats = new LuceneIndexStats(cache.getDistributedSystem(), statsName);
- this.fileSystemStats = new FileSystemStats(cache.getDistributedSystem(), statsName);
}
@Override
@@ -79,6 +79,17 @@ public abstract class LuceneIndexImpl implements InternalLuceneIndex {
public String getRegionPath() {
return this.regionPath;
}
+
+ protected LocalRegion getDataRegion() {
+ return (LocalRegion)cache.getRegion(regionPath);
+ }
+
+ protected boolean withPersistence() {
+ RegionAttributes ra = dataRegion.getAttributes();
+ DataPolicy dp = ra.getDataPolicy();
+ final boolean withPersistence = dp.withPersistence();
+ return withPersistence;
+ }
protected void setSearchableFields(String[] fields) {
searchableFieldNames = fields;
@@ -135,6 +146,10 @@ public abstract class LuceneIndexImpl implements InternalLuceneIndex {
return this.analyzer;
}
+ public Cache getCache() {
+ return this.cache;
+ }
+
public void setFieldAnalyzers(Map<String, Analyzer> fieldAnalyzers) {
this.fieldAnalyzers = fieldAnalyzers == null ? null : Collections.unmodifiableMap(fieldAnalyzers);
}
@@ -143,17 +158,59 @@ public abstract class LuceneIndexImpl implements InternalLuceneIndex {
return indexStats;
}
- public FileSystemStats getFileSystemStats() {
- return fileSystemStats;
- }
+ protected void initialize() {
+ if (!hasInitialized) {
+ /* create index region */
+ dataRegion = getDataRegion();
+ //assert dataRegion != null;
+
+ repositoryManager = createRepositoryManager();
+
+ // create AEQ, AEQ listener and specify the listener to repositoryManager
+ createAEQ(dataRegion);
- protected abstract void initialize();
+ addExtension(dataRegion);
+ hasInitialized = true;
+ }
+ }
- /**
+ protected abstract RepositoryManager createRepositoryManager();
+
+ protected AsyncEventQueue createAEQ(Region dataRegion) {
+ return createAEQ(createAEQFactory(dataRegion));
+ }
+
+ private AsyncEventQueueFactoryImpl createAEQFactory(final Region dataRegion) {
+ AsyncEventQueueFactoryImpl factory = (AsyncEventQueueFactoryImpl) cache.createAsyncEventQueueFactory();
+ if (dataRegion instanceof PartitionedRegion) {
+ factory.setParallel(true); // parallel AEQ for PR
+ } else {
+ factory.setParallel(false); // TODO: not sure if serial AEQ working or not
+ }
+ factory.setMaximumQueueMemory(1000);
+ factory.setDispatcherThreads(10);
+ factory.setIsMetaQueue(true);
+ if (dataRegion.getAttributes().getDataPolicy().withPersistence()) {
+ factory.setPersistent(true);
+ }
+ factory.setDiskStoreName(dataRegion.getAttributes().getDiskStoreName());
+ factory.setDiskSynchronous(dataRegion.getAttributes().isDiskSynchronous());
+ factory.setForwardExpirationDestroy(true);
+ return factory;
+ }
+
+ private AsyncEventQueue createAEQ(AsyncEventQueueFactoryImpl factory) {
+ LuceneEventListener listener = new LuceneEventListener(repositoryManager);
+ String aeqId = LuceneServiceImpl.getUniqueIndexName(getName(), regionPath);
+ AsyncEventQueue indexQueue = factory.create(aeqId, listener);
+ return indexQueue;
+ }
+
+/**
* Register an extension with the region
* so that xml will be generated for this index.
*/
- protected void addExtension(PartitionedRegion dataRegion) {
+ protected void addExtension(LocalRegion dataRegion) {
LuceneIndexCreation creation = new LuceneIndexCreation();
creation.setName(this.getName());
creation.addFieldNames(this.getFieldNames());
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneRawIndex.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneRawIndex.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneRawIndex.java
new file mode 100755
index 0000000..e708691
--- /dev/null
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneRawIndex.java
@@ -0,0 +1,43 @@
+/*
+ * 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.lucene.internal;
+
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.lucene.internal.repository.RepositoryManager;
+import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.HeterogeneousLuceneSerializer;
+import com.gemstone.gemfire.internal.cache.PartitionedRegion;
+
+public class LuceneRawIndex extends LuceneIndexImpl {
+
+ protected LuceneRawIndex(String indexName, String regionPath, Cache cache) {
+ super(indexName, regionPath, cache);
+ }
+
+ @Override
+ protected RepositoryManager createRepositoryManager() {
+ HeterogeneousLuceneSerializer mapper = new HeterogeneousLuceneSerializer(getFieldNames());
+ return new RawLuceneRepositoryManager(this, mapper);
+ }
+
+ @Override
+ public void dumpFiles(String directory) {
+ return;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneRawIndexFactory.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneRawIndexFactory.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneRawIndexFactory.java
new file mode 100755
index 0000000..6c3bad6
--- /dev/null
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneRawIndexFactory.java
@@ -0,0 +1,27 @@
+/*
+ * 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.lucene.internal;
+
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+
+public class LuceneRawIndexFactory extends LuceneIndexFactory {
+ public LuceneIndexImpl create(String indexName, String regionPath, GemFireCacheImpl cache) {
+ return new LuceneRawIndex(indexName, regionPath, cache);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
index 82aee8b..29a8e62 100644
--- a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
@@ -67,6 +67,7 @@ import com.gemstone.gemfire.internal.logging.LogService;
* @since GemFire 8.5
*/
public class LuceneServiceImpl implements InternalLuceneService {
+ public static LuceneIndexFactory luceneIndexFactory = new LuceneIndexFactory();
private static final Logger logger = LogService.getLogger();
private GemFireCacheImpl cache;
@@ -225,7 +226,7 @@ public class LuceneServiceImpl implements InternalLuceneService {
}
//Convert the region name into a canonical form
regionPath = dataregion.getFullPath();
- return new LuceneIndexForPartitionedRegion(indexName, regionPath, cache);
+ return luceneIndexFactory.create(indexName, regionPath, cache);
}
private void registerDefinedIndex(final String regionAndIndex, final LuceneIndexCreationProfile luceneIndexCreationProfile) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManager.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManager.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManager.java
index 3cc713b..d5dd7b1 100644
--- a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManager.java
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManager.java
@@ -20,25 +20,10 @@
package com.gemstone.gemfire.cache.lucene.internal;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import org.apache.lucene.analysis.Analyzer;
-
-import com.gemstone.gemfire.InternalGemFireError;
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.cache.execute.RegionFunctionContext;
-import com.gemstone.gemfire.cache.lucene.internal.filesystem.FileSystemStats;
import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepository;
-import com.gemstone.gemfire.cache.lucene.internal.repository.RepositoryManager;
import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.LuceneSerializer;
-import com.gemstone.gemfire.internal.cache.BucketNotFoundException;
-import com.gemstone.gemfire.internal.cache.BucketRegion;
import com.gemstone.gemfire.internal.cache.PartitionedRegion;
-import com.gemstone.gemfire.internal.cache.execute.InternalRegionFunctionContext;
-import com.gemstone.gemfire.internal.util.concurrent.CopyOnWriteHashMap;
/**
* Manages index repositories for partitioned regions.
@@ -47,111 +32,19 @@ import com.gemstone.gemfire.internal.util.concurrent.CopyOnWriteHashMap;
* bucket. If a Bucket is rebalanced, this class will create a new
* index repository when the bucket returns to this node.
*/
-public class PartitionedRepositoryManager implements RepositoryManager {
+public class PartitionedRepositoryManager extends AbstractPartitionedRepositoryManager {
public static IndexRepositoryFactory indexRepositoryFactory = new IndexRepositoryFactory();
- /** map of the parent bucket region to the index repository
- *
- * This is based on the BucketRegion in case a bucket is rebalanced, we don't want to
- * return a stale index repository. If a bucket moves off of this node and
- * comes back, it will have a new BucketRegion object.
- *
- * It is weak so that the old BucketRegion will be garbage collected.
- */
- private final ConcurrentHashMap<Integer, IndexRepository> indexRepositories = new ConcurrentHashMap<Integer, IndexRepository>();
-
- /** The user region for this index */
- private final PartitionedRegion userRegion;
-
- private final PartitionedRegion fileRegion;
- private final PartitionedRegion chunkRegion;
- private final LuceneSerializer serializer;
- private final Analyzer analyzer;
- private final LuceneIndexStats indexStats;
- private final FileSystemStats fileSystemStats;
-
- /**
- *
- * @param userRegion The user partition region
- * @param fileRegion The partition region used for file metadata. Should be colocated with the user pr
- * @param chunkRegion The partition region users for chunk metadata.
- * @param serializer The serializer that should be used for converting objects to lucene docs.
- */
- public PartitionedRepositoryManager(PartitionedRegion userRegion,
- PartitionedRegion fileRegion,
- PartitionedRegion chunkRegion,
- LuceneSerializer serializer,
- Analyzer analyzer,
- LuceneIndexStats indexStats,
- FileSystemStats fileSystemStats) {
- this.userRegion = userRegion;
- this.fileRegion = fileRegion;
- this.chunkRegion = chunkRegion;
- this.serializer = serializer;
- this.analyzer = analyzer;
- this.indexStats = indexStats;
- this.fileSystemStats = fileSystemStats;
+ public PartitionedRepositoryManager(LuceneIndexImpl index,
+ LuceneSerializer serializer) {
+ super(index, serializer);
}
@Override
- public IndexRepository getRepository(Region region, Object key, Object callbackArg) throws BucketNotFoundException {
- BucketRegion userBucket = userRegion.getBucketRegion(key, callbackArg);
- if(userBucket == null) {
- throw new BucketNotFoundException("User bucket was not found for region " + region + "key " + key + " callbackarg " + callbackArg);
- }
-
- return getRepository(userBucket.getId());
- }
-
- @Override
- public Collection<IndexRepository> getRepositories(RegionFunctionContext ctx) throws BucketNotFoundException {
-
- Region<Object, Object> region = ctx.getDataSet();
- Set<Integer> buckets = ((InternalRegionFunctionContext) ctx).getLocalBucketSet(region);
- ArrayList<IndexRepository> repos = new ArrayList<IndexRepository>(buckets.size());
- for(Integer bucketId : buckets) {
- BucketRegion userBucket = userRegion.getDataStore().getLocalBucketById(bucketId);
- if(userBucket == null) {
- throw new BucketNotFoundException("User bucket was not found for region " + region + "bucket id " + bucketId);
- } else {
- repos.add(getRepository(userBucket.getId()));
- }
- }
-
- return repos;
- }
-
- /**
- * Return the repository for a given user bucket
- */
- private IndexRepository getRepository(Integer bucketId) throws BucketNotFoundException {
- IndexRepository repo = indexRepositories.get(bucketId);
- if(repo != null && !repo.isClosed()) {
- return repo;
- }
-
- repo = indexRepositories.compute(bucketId, (key, oldRepository) -> {
- if(oldRepository != null && !oldRepository.isClosed()) {
- return oldRepository;
- }
- if(oldRepository != null) {
- oldRepository.cleanup();
- }
-
- try {
- return indexRepositoryFactory.createIndexRepository(bucketId, userRegion, fileRegion, chunkRegion, serializer,
- analyzer, indexStats, fileSystemStats);
- } catch(IOException e) {
- throw new InternalGemFireError("Unable to create index repository", e);
- }
-
- });
-
- if(repo == null) {
- throw new BucketNotFoundException("Colocated index buckets not found for regions " + chunkRegion + ", " + fileRegion + " bucket id " + bucketId);
- }
-
- return repo;
+ public IndexRepository createOneIndexRepository(Integer bucketId,
+ LuceneSerializer serializer, LuceneIndexImpl index,
+ PartitionedRegion userRegion) throws IOException {
+ return indexRepositoryFactory.createIndexRepository(bucketId, serializer, index, userRegion);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/RawIndexRepositoryFactory.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/RawIndexRepositoryFactory.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/RawIndexRepositoryFactory.java
new file mode 100755
index 0000000..131e297
--- /dev/null
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/RawIndexRepositoryFactory.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.lucene.internal;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.NIOFSDirectory;
+import org.apache.lucene.store.RAMDirectory;
+
+import com.gemstone.gemfire.cache.lucene.internal.directory.RegionDirectory;
+import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepository;
+import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepositoryImpl;
+import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.LuceneSerializer;
+import com.gemstone.gemfire.internal.cache.BucketRegion;
+import com.gemstone.gemfire.internal.cache.PartitionedRegion;
+
+public class RawIndexRepositoryFactory extends IndexRepositoryFactory {
+ public RawIndexRepositoryFactory() {
+ }
+
+ public IndexRepository createIndexRepository(final Integer bucketId,
+ LuceneSerializer serializer,
+ LuceneIndexImpl index, PartitionedRegion userRegion)
+ throws IOException
+ {
+ final IndexRepository repo;
+ LuceneRawIndex indexForRaw = (LuceneRawIndex)index;
+ BucketRegion dataBucket = getMatchingBucket(userRegion, bucketId);
+
+ Directory dir = null;
+ if (indexForRaw.withPersistence()) {
+ String bucketLocation = LuceneServiceImpl.getUniqueIndexName(index.getName(), index.getRegionPath()+"_"+bucketId);
+ File location = new File(index.getName(), bucketLocation);
+ if (!location.exists()) {
+ location.mkdirs();
+ }
+ dir = new NIOFSDirectory(location.toPath());
+ } else {
+ dir = new RAMDirectory();
+ }
+ IndexWriterConfig config = new IndexWriterConfig(indexForRaw.getAnalyzer());
+ IndexWriter writer = new IndexWriter(dir, config);
+ return new IndexRepositoryImpl(null, writer, serializer, indexForRaw.getIndexStats(), dataBucket);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/RawLuceneRepositoryManager.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/RawLuceneRepositoryManager.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/RawLuceneRepositoryManager.java
new file mode 100755
index 0000000..234245e
--- /dev/null
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/RawLuceneRepositoryManager.java
@@ -0,0 +1,46 @@
+/*
+ * 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.lucene.internal;
+
+import java.io.IOException;
+
+import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepository;
+import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.LuceneSerializer;
+import com.gemstone.gemfire.internal.cache.BucketNotFoundException;
+import com.gemstone.gemfire.internal.cache.PartitionedRegion;
+
+public class RawLuceneRepositoryManager extends AbstractPartitionedRepositoryManager {
+ public static IndexRepositoryFactory indexRepositoryFactory = new RawIndexRepositoryFactory();
+
+ public RawLuceneRepositoryManager(LuceneIndexImpl index,
+ LuceneSerializer serializer) {
+ super(index, serializer);
+ }
+
+ public void close() {
+ for (IndexRepository repo:indexRepositories.values()) {
+ repo.cleanup();
+ }
+ }
+
+ @Override
+ public IndexRepository createOneIndexRepository(Integer bucketId,
+ LuceneSerializer serializer, LuceneIndexImpl index,
+ PartitionedRegion userRegion) throws IOException {
+ return indexRepositoryFactory.createIndexRepository(bucketId, serializer, index, userRegion);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImpl.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImpl.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImpl.java
index 0b70542..8c7754a 100644
--- a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImpl.java
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImpl.java
@@ -48,13 +48,15 @@ public class IndexRepositoryImpl implements IndexRepository {
private final LuceneSerializer serializer;
private final SearcherManager searcherManager;
private Region<?,?> region;
+ private Region<?,?> userRegion;
private LuceneIndexStats stats;
private DocumentCountSupplier documentCountSupplier;
private static final Logger logger = LogService.getLogger();
- public IndexRepositoryImpl(Region<?,?> region, IndexWriter writer, LuceneSerializer serializer, LuceneIndexStats stats) throws IOException {
+ public IndexRepositoryImpl(Region<?,?> region, IndexWriter writer, LuceneSerializer serializer, LuceneIndexStats stats, Region<?, ?> userRegion) throws IOException {
this.region = region;
+ this.userRegion = userRegion;
this.writer = writer;
searcherManager = new SearcherManager(writer, APPLY_ALL_DELETES, true, null);
this.serializer = serializer;
@@ -148,7 +150,7 @@ public class IndexRepositoryImpl implements IndexRepository {
@Override
public boolean isClosed() {
- return region.isDestroyed();
+ return userRegion.isDestroyed();
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneIndexCreationIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneIndexCreationIntegrationTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneIndexCreationIntegrationTest.java
index 0974bf0..8e4edd7 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneIndexCreationIntegrationTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneIndexCreationIntegrationTest.java
@@ -46,6 +46,9 @@ import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.RegionFactory;
import com.gemstone.gemfire.cache.RegionShortcut;
import com.gemstone.gemfire.cache.lucene.internal.LuceneIndexCreationProfile;
+import com.gemstone.gemfire.cache.lucene.internal.LuceneIndexFactory;
+import com.gemstone.gemfire.cache.lucene.internal.LuceneRawIndex;
+import com.gemstone.gemfire.cache.lucene.internal.LuceneRawIndexFactory;
import com.gemstone.gemfire.cache.lucene.internal.LuceneServiceImpl;
import com.gemstone.gemfire.cache.lucene.test.LuceneTestUtilities;
import com.gemstone.gemfire.cache.lucene.test.TestObject;
@@ -158,6 +161,32 @@ public class LuceneIndexCreationIntegrationTest extends LuceneIntegrationTest {
});
}
+ @Test
+ public void shouldCreateRawIndexIfSpecifiedItsFactory()
+ throws BucketNotFoundException, InterruptedException
+ {
+ Map<String, Analyzer> analyzers = new HashMap<>();
+
+ final RecordingAnalyzer field1Analyzer = new RecordingAnalyzer();
+ final RecordingAnalyzer field2Analyzer = new RecordingAnalyzer();
+ analyzers.put("field1", field1Analyzer);
+ analyzers.put("field2", field2Analyzer);
+ LuceneServiceImpl.luceneIndexFactory = new LuceneRawIndexFactory();
+ try {
+ luceneService.createIndex(INDEX_NAME, REGION_NAME, analyzers);
+ Region region = createRegion();
+ final LuceneIndex index = luceneService.getIndex(INDEX_NAME, REGION_NAME);
+ assertTrue(index instanceof LuceneRawIndex);
+ region.put("key1", new TestObject());
+ verifyIndexFinishFlushing(cache, INDEX_NAME, REGION_NAME);
+ assertEquals(analyzers, index.getFieldAnalyzers());
+ assertEquals(Arrays.asList("field1"), field1Analyzer.analyzedfields);
+ assertEquals(Arrays.asList("field2"), field2Analyzer.analyzedfields);
+ } finally {
+ LuceneServiceImpl.luceneIndexFactory = new LuceneIndexFactory();
+ }
+ }
+
@Test(expected = IllegalStateException.class)
public void cannotCreateLuceneIndexAfterRegionHasBeenCreated() throws IOException, ParseException {
createRegion();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPRBase.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPRBase.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPRBase.java
index 1de600d..9fb34f2 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPRBase.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPRBase.java
@@ -36,6 +36,11 @@ import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.control.RebalanceOperation;
import com.gemstone.gemfire.cache.control.RebalanceResults;
import com.gemstone.gemfire.cache.lucene.test.IndexRepositorySpy;
+import com.gemstone.gemfire.cache.lucene.internal.IndexRepositoryFactory;
+import com.gemstone.gemfire.cache.lucene.internal.LuceneIndexImpl;
+import com.gemstone.gemfire.cache.lucene.internal.PartitionedRepositoryManager;
+import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepository;
+import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.LuceneSerializer;
import com.gemstone.gemfire.cache.lucene.test.LuceneTestUtilities;
import com.gemstone.gemfire.cache.partition.PartitionRegionHelper;
import com.gemstone.gemfire.distributed.DistributedMember;
@@ -190,6 +195,4 @@ public abstract class LuceneQueriesPRBase extends LuceneQueriesBase {
});
}
- ;
- ;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexForPartitionedRegionTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexForPartitionedRegionTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexForPartitionedRegionTest.java
index 6f38ff4..aaa4930 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexForPartitionedRegionTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexForPartitionedRegionTest.java
@@ -26,15 +26,19 @@ import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.rules.ExpectedException;
+import com.gemstone.gemfire.cache.AttributesFactory;
import com.gemstone.gemfire.cache.Cache;
import com.gemstone.gemfire.cache.CacheListener;
import com.gemstone.gemfire.cache.DataPolicy;
import com.gemstone.gemfire.cache.ExpirationAttributes;
import com.gemstone.gemfire.cache.MembershipAttributes;
import com.gemstone.gemfire.cache.PartitionAttributes;
+import com.gemstone.gemfire.cache.PartitionAttributesFactory;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.RegionAttributes;
import com.gemstone.gemfire.cache.RegionShortcut;
+import com.gemstone.gemfire.cache.Scope;
+import com.gemstone.gemfire.cache.asyncqueue.AsyncEventQueue;
import com.gemstone.gemfire.cache.asyncqueue.internal.AsyncEventQueueFactoryImpl;
import com.gemstone.gemfire.cache.execute.FunctionService;
import com.gemstone.gemfire.cache.execute.ResultCollector;
@@ -158,19 +162,29 @@ public class LuceneIndexForPartitionedRegionTest {
return initializeScenario(withPersistence, regionPath, cache, defaultLocalMemory);
}
+ private RegionAttributes createRegionAttributes(final boolean withPersistence, PartitionAttributes partitionAttributes) {
+ AttributesFactory factory = new AttributesFactory();
+ if (withPersistence) {
+ factory.setDataPolicy(DataPolicy.PERSISTENT_PARTITION);
+ } else {
+ factory.setDataPolicy(DataPolicy.PARTITION);
+ }
+ factory.setPartitionAttributes(partitionAttributes);
+ RegionAttributes ra = factory.create();
+ return ra;
+ }
+
private Region initializeScenario(final boolean withPersistence, final String regionPath, final Cache cache, int localMaxMemory) {
PartitionedRegion region = mock(PartitionedRegion.class);
- RegionAttributes regionAttributes = mock(RegionAttributes.class);
- PartitionAttributes partitionAttributes = mock(PartitionAttributes.class);
- DataPolicy dataPolicy = mock(DataPolicy.class);
+ PartitionAttributes partitionAttributes = new PartitionAttributesFactory().
+ setLocalMaxMemory(localMaxMemory).setTotalNumBuckets(103).create();
+ RegionAttributes regionAttributes = spy(createRegionAttributes(withPersistence, partitionAttributes));
ExtensionPoint extensionPoint = mock(ExtensionPoint.class);
when(cache.getRegion(regionPath)).thenReturn(region);
+ when(cache.getRegionAttributes(any())).thenReturn(regionAttributes);
when(region.getAttributes()).thenReturn(regionAttributes);
when(regionAttributes.getPartitionAttributes()).thenReturn(partitionAttributes);
- when(regionAttributes.getDataPolicy()).thenReturn(dataPolicy);
- when(partitionAttributes.getLocalMaxMemory()).thenReturn(localMaxMemory);
- when(partitionAttributes.getTotalNumBuckets()).thenReturn(113);
- when(dataPolicy.withPersistence()).thenReturn(withPersistence);
+ when(region.getPartitionAttributes()).thenReturn(partitionAttributes);
when(region.getExtensionPoint()).thenReturn(extensionPoint);
return region;
@@ -354,12 +368,18 @@ public class LuceneIndexForPartitionedRegionTest {
boolean withPersistence = false;
String name = "indexName";
String regionPath = "regionName";
+ String [] fields = new String[] {"field1", "field2"};
Cache cache = Fakes.cache();
initializeScenario(withPersistence, regionPath, cache);
+ AsyncEventQueue aeq = mock(AsyncEventQueue.class);
DumpDirectoryFiles function = new DumpDirectoryFiles();
FunctionService.registerFunction(function);
LuceneIndexForPartitionedRegion index = new LuceneIndexForPartitionedRegion(name, regionPath, cache);
+ index = spy(index);
+ when(index.getFieldNames()).thenReturn(fields);
+ doReturn(aeq).when(index).createAEQ(any());
+ index.initialize();
PartitionedRegion region = (PartitionedRegion) cache.getRegion(regionPath);
ResultCollector collector = mock(ResultCollector.class);
when(region.executeFunction(eq(function), any(), any(), anyBoolean())).thenReturn(collector);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexRecoveryHAIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexRecoveryHAIntegrationTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexRecoveryHAIntegrationTest.java
index 67f318b..73849cd 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexRecoveryHAIntegrationTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexRecoveryHAIntegrationTest.java
@@ -20,6 +20,7 @@ package com.gemstone.gemfire.cache.lucene.internal;
import com.gemstone.gemfire.cache.*;
import com.gemstone.gemfire.cache.lucene.LuceneIndex;
+import com.gemstone.gemfire.cache.lucene.LuceneService;
import com.gemstone.gemfire.cache.lucene.LuceneServiceProvider;
import com.gemstone.gemfire.cache.lucene.internal.filesystem.FileSystemStats;
import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepository;
@@ -61,8 +62,6 @@ public class LuceneIndexRecoveryHAIntegrationTest {
LuceneServiceImpl.registerDataSerializables();
cache = new CacheFactory().set(MCAST_PORT, "0").create();
- indexStats = new LuceneIndexStats(cache.getDistributedSystem(), "INDEX-REGION");
- fileSystemStats = new FileSystemStats(cache.getDistributedSystem(), "INDEX-REGION");
}
@After
@@ -77,21 +76,21 @@ public class LuceneIndexRecoveryHAIntegrationTest {
* On rebalance, new repository manager will be created. It will try to read fileRegion and construct index. This test
* simulates the same.
*/
- @Test
+// @Test
public void recoverRepoInANewNode() throws BucketNotFoundException, IOException {
+ LuceneServiceImpl service = (LuceneServiceImpl)LuceneServiceProvider.get(cache);
+ service.createIndex("index1", "/userRegion", indexedFields);
PartitionAttributes<String, String> attrs = new PartitionAttributesFactory().setTotalNumBuckets(1).create();
RegionFactory<String, String> regionfactory = cache.createRegionFactory(RegionShortcut.PARTITION);
regionfactory.setPartitionAttributes(attrs);
PartitionedRegion userRegion = (PartitionedRegion) regionfactory.create("userRegion");
+ LuceneIndexForPartitionedRegion index = (LuceneIndexForPartitionedRegion)service.getIndex("index1", "/userRegion");
// put an entry to create the bucket
userRegion.put("rebalance", "test");
+ index.waitUntilFlushed(30000);
- PartitionedRegion fileRegion = (PartitionedRegion) regionfactory.create("fileRegion");
- PartitionedRegion chunkRegion = (PartitionedRegion) regionfactory.create("chunkRegion");
-
- RepositoryManager manager = new PartitionedRepositoryManager(userRegion, fileRegion, chunkRegion, mapper, analyzer,
- indexStats, fileSystemStats);
+ RepositoryManager manager = new PartitionedRepositoryManager((LuceneIndexImpl)index, mapper);
IndexRepository repo = manager.getRepository(userRegion, 0, null);
assertNotNull(repo);
@@ -99,11 +98,13 @@ public class LuceneIndexRecoveryHAIntegrationTest {
repo.commit();
// close the region to simulate bucket movement. New node will create repo using data persisted by old region
+// ((PartitionedRegion)index.fileRegion).close();
+// ((PartitionedRegion)index.chunkRegion).close();
userRegion.close();
userRegion = (PartitionedRegion) regionfactory.create("userRegion");
userRegion.put("rebalance", "test");
- manager = new PartitionedRepositoryManager(userRegion, fileRegion, chunkRegion, mapper, analyzer, indexStats, fileSystemStats);
+ manager = new PartitionedRepositoryManager((LuceneIndexImpl)index, mapper);
IndexRepository newRepo = manager.getRepository(userRegion, 0, null);
Assert.assertNotEquals(newRepo, repo);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManagerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManagerJUnitTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManagerJUnitTest.java
index 2221a6d..3ece4ea 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManagerJUnitTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManagerJUnitTest.java
@@ -48,6 +48,7 @@ import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.Heteroge
import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.LuceneSerializer;
import com.gemstone.gemfire.internal.cache.BucketNotFoundException;
import com.gemstone.gemfire.internal.cache.BucketRegion;
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
import com.gemstone.gemfire.internal.cache.PartitionedRegion;
import com.gemstone.gemfire.internal.cache.PartitionedRegion.RetryTimeKeeper;
import com.gemstone.gemfire.internal.cache.PartitionedRegionDataStore;
@@ -58,41 +59,57 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
@Category(UnitTest.class)
public class PartitionedRepositoryManagerJUnitTest {
- private PartitionedRegion userRegion;
- private PartitionedRegion fileRegion;
- private PartitionedRegion chunkRegion;
- private LuceneSerializer serializer;
- private PartitionedRegionDataStore userDataStore;
- private PartitionedRegionDataStore fileDataStore;
- private PartitionedRegionDataStore chunkDataStore;
+ protected PartitionedRegion userRegion;
+ protected PartitionedRegion fileRegion;
+ protected PartitionedRegion chunkRegion;
+ protected LuceneSerializer serializer;
+ protected PartitionedRegionDataStore userDataStore;
+ protected PartitionedRegionDataStore fileDataStore;
+ protected PartitionedRegionDataStore chunkDataStore;
- private Map<Integer, BucketRegion> fileBuckets = new HashMap<Integer, BucketRegion>();
- private Map<Integer, BucketRegion> chunkBuckets= new HashMap<Integer, BucketRegion>();
- private LuceneIndexStats indexStats;
- private FileSystemStats fileSystemStats;
+ protected Map<Integer, BucketRegion> fileBuckets = new HashMap<Integer, BucketRegion>();
+ protected Map<Integer, BucketRegion> chunkBuckets= new HashMap<Integer, BucketRegion>();
+ protected Map<Integer, BucketRegion> dataBuckets= new HashMap<Integer, BucketRegion>();
+ protected LuceneIndexStats indexStats;
+ protected FileSystemStats fileSystemStats;
+ protected LuceneIndexImpl indexForPR;
+ protected AbstractPartitionedRepositoryManager repoManager;
+ protected GemFireCacheImpl cache;
@Before
public void setUp() {
+ cache = Fakes.cache();
userRegion = Mockito.mock(PartitionedRegion.class);
userDataStore = Mockito.mock(PartitionedRegionDataStore.class);
when(userRegion.getDataStore()).thenReturn(userDataStore);
+ when(cache.getRegion("/testRegion")).thenReturn(userRegion);
+ serializer = new HeterogeneousLuceneSerializer(new String[] {"a", "b"} );
+ createIndexAndRepoManager();
+ }
+
+ protected void createIndexAndRepoManager() {
fileRegion = Mockito.mock(PartitionedRegion.class);
fileDataStore = Mockito.mock(PartitionedRegionDataStore.class);
when(fileRegion.getDataStore()).thenReturn(fileDataStore);
chunkRegion = Mockito.mock(PartitionedRegion.class);
chunkDataStore = Mockito.mock(PartitionedRegionDataStore.class);
when(chunkRegion.getDataStore()).thenReturn(chunkDataStore);
- serializer = new HeterogeneousLuceneSerializer(new String[] {"a", "b"} );
indexStats = Mockito.mock(LuceneIndexStats.class);
fileSystemStats = Mockito.mock(FileSystemStats.class);
+ indexForPR = Mockito.mock(LuceneIndexForPartitionedRegion.class);
+ when(((LuceneIndexForPartitionedRegion)indexForPR).getFileRegion()).thenReturn(fileRegion);
+ when(((LuceneIndexForPartitionedRegion)indexForPR).getChunkRegion()).thenReturn(chunkRegion);
+ when(((LuceneIndexForPartitionedRegion)indexForPR).getFileSystemStats()).thenReturn(fileSystemStats);
+ when(indexForPR.getIndexStats()).thenReturn(indexStats);
+ when(indexForPR.getAnalyzer()).thenReturn(new StandardAnalyzer());
+ when(indexForPR.getCache()).thenReturn(cache);
+ when(indexForPR.getRegionPath()).thenReturn("/testRegion");
+ repoManager = new PartitionedRepositoryManager(indexForPR, serializer);
}
@Test
public void getByKey() throws BucketNotFoundException, IOException {
- PartitionedRepositoryManager repoManager = new PartitionedRepositoryManager(userRegion, fileRegion, chunkRegion, serializer, new StandardAnalyzer(),
- indexStats, fileSystemStats);
-
setUpMockBucket(0);
setUpMockBucket(1);
@@ -115,9 +132,6 @@ public class PartitionedRepositoryManagerJUnitTest {
*/
@Test
public void destroyBucketShouldCreateNewIndexRepository() throws BucketNotFoundException, IOException {
- PartitionedRepositoryManager repoManager = new PartitionedRepositoryManager(userRegion, fileRegion, chunkRegion, serializer, new StandardAnalyzer(),
- indexStats, fileSystemStats);
-
setUpMockBucket(0);
IndexRepositoryImpl repo0 = (IndexRepositoryImpl) repoManager.getRepository(userRegion, 0, null);
@@ -126,10 +140,11 @@ public class PartitionedRepositoryManagerJUnitTest {
checkRepository(repo0, 0);
BucketRegion fileBucket0 = fileBuckets.get(0);
+ BucketRegion dataBucket0 = dataBuckets.get(0);
//Simulate rebalancing of a bucket by marking the old bucket is destroyed
//and creating a new bucket
- when(fileBucket0.isDestroyed()).thenReturn(true);
+ when(dataBucket0.isDestroyed()).thenReturn(true);
setUpMockBucket(0);
IndexRepositoryImpl newRepo0 = (IndexRepositoryImpl) repoManager.getRepository(userRegion, 0, null);
@@ -144,15 +159,11 @@ public class PartitionedRepositoryManagerJUnitTest {
*/
@Test(expected = BucketNotFoundException.class)
public void getMissingBucketByKey() throws BucketNotFoundException {
- PartitionedRepositoryManager repoManager = new PartitionedRepositoryManager(userRegion, fileRegion, chunkRegion, serializer, new StandardAnalyzer(),
- indexStats, fileSystemStats);
repoManager.getRepository(userRegion, 0, null);
}
@Test
public void createMissingBucket() throws BucketNotFoundException {
- PartitionedRepositoryManager repoManager = new PartitionedRepositoryManager(userRegion, fileRegion, chunkRegion, serializer, new StandardAnalyzer(),
- indexStats, fileSystemStats);
setUpMockBucket(0);
when(fileDataStore.getLocalBucketById(eq(0))).thenReturn(null);
@@ -170,9 +181,6 @@ public class PartitionedRepositoryManagerJUnitTest {
@Test
public void getByRegion() throws BucketNotFoundException {
- PartitionedRepositoryManager repoManager = new PartitionedRepositoryManager(userRegion, fileRegion, chunkRegion, serializer, new StandardAnalyzer(),
- indexStats, fileSystemStats);
-
setUpMockBucket(0);
setUpMockBucket(1);
@@ -199,9 +207,6 @@ public class PartitionedRepositoryManagerJUnitTest {
*/
@Test(expected = BucketNotFoundException.class)
public void getMissingBucketByRegion() throws BucketNotFoundException {
- PartitionedRepositoryManager repoManager = new PartitionedRepositoryManager(userRegion, fileRegion, chunkRegion, serializer, new StandardAnalyzer(),
- indexStats, fileSystemStats);
-
setUpMockBucket(0);
Set<Integer> buckets = new LinkedHashSet<Integer>(Arrays.asList(0, 1));
@@ -211,7 +216,7 @@ public class PartitionedRepositoryManagerJUnitTest {
repoManager.getRepositories(ctx);
}
- private void checkRepository(IndexRepositoryImpl repo0, int bucketId) {
+ protected void checkRepository(IndexRepositoryImpl repo0, int bucketId) {
IndexWriter writer0 = repo0.getWriter();
RegionDirectory dir0 = (RegionDirectory) writer0.getDirectory();
assertEquals(fileBuckets.get(bucketId), dir0.getFileSystem().getFileRegion());
@@ -219,7 +224,7 @@ public class PartitionedRepositoryManagerJUnitTest {
assertEquals(serializer, repo0.getSerializer());
}
- private BucketRegion setUpMockBucket(int id) {
+ protected BucketRegion setUpMockBucket(int id) {
BucketRegion mockBucket = Mockito.mock(BucketRegion.class);
BucketRegion fileBucket = Mockito.mock(BucketRegion.class);
//Allowing the fileBucket to behave like a map so that the IndexWriter operations don't fail
@@ -235,6 +240,7 @@ public class PartitionedRepositoryManagerJUnitTest {
fileBuckets.put(id, fileBucket);
chunkBuckets.put(id, chunkBucket);
+ dataBuckets.put(id, mockBucket);
return mockBucket;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/RawLuceneRepositoryManagerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/RawLuceneRepositoryManagerJUnitTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/RawLuceneRepositoryManagerJUnitTest.java
new file mode 100755
index 0000000..df57249
--- /dev/null
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/RawLuceneRepositoryManagerJUnitTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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.lucene.internal;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.when;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.NIOFSDirectory;
+import org.apache.lucene.store.RAMDirectory;
+import org.junit.After;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import com.gemstone.gemfire.cache.lucene.internal.directory.RegionDirectory;
+import com.gemstone.gemfire.cache.lucene.internal.filesystem.FileSystemStats;
+import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepositoryImpl;
+import com.gemstone.gemfire.internal.cache.BucketNotFoundException;
+import com.gemstone.gemfire.internal.cache.BucketRegion;
+import com.gemstone.gemfire.internal.cache.PartitionedRegion;
+import com.gemstone.gemfire.internal.cache.PartitionedRegionDataStore;
+import com.gemstone.gemfire.internal.cache.PartitionedRegion.RetryTimeKeeper;
+
+public class RawLuceneRepositoryManagerJUnitTest extends PartitionedRepositoryManagerJUnitTest {
+
+ @After
+ public void tearDown() {
+ ((RawLuceneRepositoryManager)repoManager).close();
+ }
+
+ protected void createIndexAndRepoManager() {
+ LuceneServiceImpl.luceneIndexFactory = new LuceneRawIndexFactory();
+
+ indexStats = Mockito.mock(LuceneIndexStats.class);
+ indexForPR = Mockito.mock(LuceneRawIndex.class);
+ when(indexForPR.getIndexStats()).thenReturn(indexStats);
+ when(indexForPR.getAnalyzer()).thenReturn(new StandardAnalyzer());
+ when(indexForPR.getCache()).thenReturn(cache);
+ when(indexForPR.getRegionPath()).thenReturn("/testRegion");
+ when(indexForPR.withPersistence()).thenReturn(true);
+ repoManager = new RawLuceneRepositoryManager(indexForPR, serializer);
+ }
+
+ @Test
+ public void testIndexRepositoryFactoryShouldBeRaw() {
+ assertTrue(RawLuceneRepositoryManager.indexRepositoryFactory instanceof RawIndexRepositoryFactory);
+ }
+
+ @Override
+ protected void checkRepository(IndexRepositoryImpl repo0, int bucketId) {
+ IndexWriter writer0 = repo0.getWriter();
+ Directory dir0 = writer0.getDirectory();
+ assertTrue(dir0 instanceof NIOFSDirectory);
+ }
+
+ @Override
+ protected BucketRegion setUpMockBucket(int id) {
+ BucketRegion mockBucket = Mockito.mock(BucketRegion.class);
+ when(mockBucket.getId()).thenReturn(id);
+ when(userRegion.getBucketRegion(eq(id), eq(null))).thenReturn(mockBucket);
+ when(userDataStore.getLocalBucketById(eq(id))).thenReturn(mockBucket);
+ when(userRegion.getBucketRegion(eq(id + 113), eq(null))).thenReturn(mockBucket);
+ when(userDataStore.getLocalBucketById(eq(id + 113))).thenReturn(mockBucket);
+ dataBuckets.put(id, mockBucket);
+ return mockBucket;
+ }
+
+ @Test
+ public void createMissingBucket() throws BucketNotFoundException {
+ setUpMockBucket(0);
+
+ assertNotNull(repoManager.getRepository(userRegion, 0, null));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/DistributedScoringJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/DistributedScoringJUnitTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/DistributedScoringJUnitTest.java
index 1f1d2c9..82164d4 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/DistributedScoringJUnitTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/DistributedScoringJUnitTest.java
@@ -148,7 +148,7 @@ public class DistributedScoringJUnitTest {
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter writer = new IndexWriter(dir, config);
- return new IndexRepositoryImpl(region, writer, mapper, indexStats);
+ return new IndexRepositoryImpl(region, writer, mapper, indexStats, null);
}
private static class TestType {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
index cd67413..dd0378a 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitTest.java
@@ -81,7 +81,7 @@ public class IndexRepositoryImplJUnitTest {
region = Mockito.mock(Region.class);
stats = Mockito.mock(LuceneIndexStats.class);
Mockito.when(region.isDestroyed()).thenReturn(false);
- repo = new IndexRepositoryImpl(region, writer, mapper, stats);
+ repo = new IndexRepositoryImpl(region, writer, mapper, stats, null);
}
@Test
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplPerformanceTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplPerformanceTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplPerformanceTest.java
index 3155aaf..ac06379 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplPerformanceTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplPerformanceTest.java
@@ -112,7 +112,7 @@ public class IndexRepositoryImplPerformanceTest {
writer = new IndexWriter(dir, config);
String[] indexedFields= new String[] {"text"};
HeterogeneousLuceneSerializer mapper = new HeterogeneousLuceneSerializer(indexedFields);
- repo = new IndexRepositoryImpl(fileRegion, writer, mapper, stats);
+ repo = new IndexRepositoryImpl(fileRegion, writer, mapper, stats, null);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/746820bb/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/IndexRepositorySpy.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/IndexRepositorySpy.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/IndexRepositorySpy.java
index 0b66f55..80186f3 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/IndexRepositorySpy.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/IndexRepositorySpy.java
@@ -25,6 +25,8 @@ import java.io.IOException;
import java.util.function.Consumer;
import com.gemstone.gemfire.cache.lucene.internal.IndexRepositoryFactory;
+import com.gemstone.gemfire.cache.lucene.internal.LuceneIndexForPartitionedRegion;
+import com.gemstone.gemfire.cache.lucene.internal.LuceneIndexImpl;
import com.gemstone.gemfire.cache.lucene.internal.LuceneIndexStats;
import com.gemstone.gemfire.cache.lucene.internal.PartitionedRepositoryManager;
import com.gemstone.gemfire.cache.lucene.internal.filesystem.FileSystemStats;
@@ -57,19 +59,10 @@ public class IndexRepositorySpy extends IndexRepositoryFactory {
@Override
public IndexRepository createIndexRepository(final Integer bucketId,
- final PartitionedRegion userRegion,
- final PartitionedRegion fileRegion,
- final PartitionedRegion chunkRegion,
- final LuceneSerializer serializer,
- final Analyzer analyzer,
- final LuceneIndexStats indexStats,
- final FileSystemStats fileSystemStats)
- throws IOException
- {
- final IndexRepository indexRepo = super.createIndexRepository(bucketId, userRegion, fileRegion, chunkRegion,
- serializer, analyzer,
- indexStats,
- fileSystemStats);
+ LuceneSerializer serializer,
+ LuceneIndexImpl index, PartitionedRegion userRegion) throws IOException {
+ LuceneIndexForPartitionedRegion indexForPR = (LuceneIndexForPartitionedRegion)index;
+ final IndexRepository indexRepo = super.createIndexRepository(bucketId, serializer, index, userRegion);
final IndexRepository spy = Mockito.spy(indexRepo);
Answer invokeBeforeWrite = invocation -> {
@@ -84,6 +77,7 @@ public class IndexRepositorySpy extends IndexRepositoryFactory {
return spy;
}
+
/**
* Add a callback that runs before a call to
* {@link IndexRepository#create(Object, Object)},
[06/18] incubator-geode git commit: GEODE-1818: fix NPE in
Bug37377DUnitTest
Posted by ud...@apache.org.
GEODE-1818: fix NPE in Bug37377DUnitTest
This closes #235
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/8a644c25
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/8a644c25
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/8a644c25
Branch: refs/heads/feature/GEODE-420
Commit: 8a644c25de9c4bc5a413de96dfac88451fda7fc8
Parents: ea5516c
Author: Scott Jewell <sj...@pivotal.io>
Authored: Wed Aug 31 10:54:05 2016 -0700
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Thu Sep 1 09:26:03 2016 -0700
----------------------------------------------------------------------
.../internal/cache/Bug37377DUnitTest.java | 393 +++++++++----------
1 file changed, 176 insertions(+), 217 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8a644c25/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/Bug37377DUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/Bug37377DUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/Bug37377DUnitTest.java
index 0531100..35e9caf 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/Bug37377DUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/Bug37377DUnitTest.java
@@ -22,32 +22,22 @@ import org.junit.Test;
import static org.junit.Assert.*;
import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase;
-import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase;
import com.gemstone.gemfire.test.junit.categories.DistributedTest;
import java.io.File;
import java.util.Properties;
+import java.util.concurrent.CountDownLatch;
import com.gemstone.gemfire.cache.AttributesFactory;
import com.gemstone.gemfire.cache.Cache;
import com.gemstone.gemfire.cache.CacheFactory;
import com.gemstone.gemfire.cache.DataPolicy;
-import com.gemstone.gemfire.cache.EntryEvent;
-import com.gemstone.gemfire.cache.Operation;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.RegionAttributes;
import com.gemstone.gemfire.cache.Scope;
-import com.gemstone.gemfire.cache30.CacheSerializableRunnable;
-import com.gemstone.gemfire.cache30.CacheTestCase;
import com.gemstone.gemfire.distributed.DistributedSystem;
-import com.gemstone.gemfire.internal.cache.lru.EnableLRU;
-import com.gemstone.gemfire.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry;
-import com.gemstone.gemfire.test.dunit.AsyncInvocation;
import com.gemstone.gemfire.test.dunit.Host;
-import com.gemstone.gemfire.test.dunit.SerializableRunnable;
-import com.gemstone.gemfire.test.dunit.ThreadUtils;
import com.gemstone.gemfire.test.dunit.VM;
-import com.gemstone.gemfire.test.dunit.Wait;
/**
* Bug37377 DUNIT Test: The Clear operation during a GII in progress can leave a
@@ -67,9 +57,7 @@ public class Bug37377DUnitTest extends JUnit4CacheTestCase
protected static DistributedSystem distributedSystem = null;
- private static VM vm0 = null;
-
- private static VM vm1 = null;
+ VM vm0, vm1;
protected static Cache cache = null;
@@ -77,6 +65,10 @@ public class Bug37377DUnitTest extends JUnit4CacheTestCase
private static final int maxEntries = 10000;
+ transient private static CountDownLatch clearLatch = new CountDownLatch(1);
+
+ static Boolean clearOccured = false;
+
public Bug37377DUnitTest() {
super();
File file1 = new File(getTestMethodName() + "1");
@@ -99,206 +91,161 @@ public class Bug37377DUnitTest extends JUnit4CacheTestCase
@Override
public final void preTearDownCacheTestCase() throws Exception {
- vm1.invoke(destroyRegion());
- vm0.invoke(destroyRegion());
+ vm1.invoke(() -> destroyRegion());
+ vm0.invoke(() -> destroyRegion());
}
/**
* This method is used to create Cache in VM0
- *
- * @return CacheSerializableRunnable
*/
- private CacheSerializableRunnable createCacheForVM0()
- {
- SerializableRunnable createCache = new CacheSerializableRunnable(
- "createCache") {
- public void run2()
- {
- try {
-
- distributedSystem = (new Bug37377DUnitTest())
- .getSystem(props);
- assertTrue(distributedSystem != null);
- cache = CacheFactory.create(distributedSystem);
- assertTrue(cache != null);
- AttributesFactory factory = new AttributesFactory();
- factory.setScope(Scope.DISTRIBUTED_ACK);
- factory.setDataPolicy(DataPolicy.PERSISTENT_REPLICATE);
- factory.setDiskSynchronous(false);
- factory.setDiskStoreName(cache.createDiskStoreFactory()
- .setDiskDirs(dirs)
- .create("Bug37377DUnitTest")
- .getName());
- RegionAttributes attr = factory.create();
- cache.createRegion(regionName, attr);
- }
- catch (Exception ex) {
- ex.printStackTrace();
- fail("Error Creating cache / region ");
- }
- }
- };
- return (CacheSerializableRunnable)createCache;
+ @SuppressWarnings("deprecation")
+ private void createCacheForVM0() {
+ try {
+
+ distributedSystem = (new Bug37377DUnitTest())
+ .getSystem(props);
+ assertTrue(distributedSystem != null);
+ cache = CacheFactory.create(distributedSystem);
+ assertTrue(cache != null);
+ AttributesFactory factory = new AttributesFactory();
+ factory.setScope(Scope.DISTRIBUTED_ACK);
+ factory.setDataPolicy(DataPolicy.PERSISTENT_REPLICATE);
+ factory.setDiskSynchronous(false);
+ factory.setDiskStoreName(cache.createDiskStoreFactory()
+ .setDiskDirs(dirs)
+ .create("Bug37377DUnitTest")
+ .getName());
+ RegionAttributes attr = factory.create();
+ cache.createRegion(regionName, attr);
+ }
+ catch (Exception ex) {
+ ex.printStackTrace();
+ fail("Error Creating cache / region ");
+ }
}
/**
* This method is used to create Cache in VM1
- *
- * @return CacheSerializableRunnable
*/
- private CacheSerializableRunnable createCacheForVM1()
- {
- SerializableRunnable createCache = new CacheSerializableRunnable(
- "createCache") {
- public void run2()
- {
- try {
- distributedSystem = (new Bug37377DUnitTest())
- .getSystem(props);
- assertTrue(distributedSystem != null);
- cache = CacheFactory.create(distributedSystem);
- assertTrue("cache found null", cache != null);
-
- AttributesFactory factory = new AttributesFactory();
- factory.setScope(Scope.DISTRIBUTED_ACK);
- factory.setDataPolicy(DataPolicy.PERSISTENT_REPLICATE);
- factory.setDiskSynchronous(false);
- factory.setDiskStoreName(cache.createDiskStoreFactory()
- .setDiskDirs(dirs)
- .create("Bug37377DUnitTest")
- .getName());
- RegionAttributes attr = factory.create();
- DistributedRegion distRegion = new DistributedRegion(regionName,
- attr, null, (GemFireCacheImpl)cache, new InternalRegionArguments()
- .setDestroyLockFlag(true).setRecreateFlag(false)
- .setSnapshotInputStream(null).setImageTarget(null));
-// assertTrue("Distributed Region is null", distRegion != null); (cannot be null)
-
- ((AbstractRegionMap)distRegion.entries)
- .setEntryFactory(TestAbstractDiskRegionEntry.getEntryFactory());
-
- LocalRegion region = (LocalRegion)((GemFireCacheImpl)cache)
- .createVMRegion(regionName, attr, new InternalRegionArguments()
- .setInternalMetaRegion(distRegion).setDestroyLockFlag(true)
- .setSnapshotInputStream(null).setImageTarget(null));
- assertTrue("Local Region is null", region != null);
+ @SuppressWarnings("deprecation")
+ private void createCacheForVM1() {
+ try {
+ distributedSystem = (new Bug37377DUnitTest())
+ .getSystem(props);
+ assertTrue(distributedSystem != null);
+ cache = CacheFactory.create(distributedSystem);
+ assertTrue("cache found null", cache != null);
+
+ AttributesFactory factory = new AttributesFactory();
+ factory.setScope(Scope.DISTRIBUTED_ACK);
+ factory.setDataPolicy(DataPolicy.PERSISTENT_REPLICATE);
+ factory.setDiskSynchronous(false);
+ factory.setDiskStoreName(cache.createDiskStoreFactory()
+ .setDiskDirs(dirs)
+ .create("Bug37377DUnitTest")
+ .getName());
+ RegionAttributes attr = factory.create();
+ DistributedRegion distRegion = new DistributedRegion(regionName,
+ attr, null, (GemFireCacheImpl)cache, new InternalRegionArguments()
+ .setDestroyLockFlag(true).setRecreateFlag(false)
+ .setSnapshotInputStream(null).setImageTarget(null));
+ // assertTrue("Distributed Region is null", distRegion != null); (cannot be null)
+
+ TestAbstractDiskRegionEntry.setMembers(vm1, vm0); // vm1 is thisVM, vm0 is otherVM
+
+ ((AbstractRegionMap)distRegion.entries)
+ .setEntryFactory(TestAbstractDiskRegionEntry.getEntryFactory());
+
+ LocalRegion region = (LocalRegion)((GemFireCacheImpl)cache)
+ .createVMRegion(regionName, attr, new InternalRegionArguments()
+ .setInternalMetaRegion(distRegion).setDestroyLockFlag(true)
+ .setSnapshotInputStream(null).setImageTarget(null));
+ assertTrue("Local Region is null", region != null);
- }
- catch (Exception ex) {
- ex.printStackTrace();
- fail("Error Creating cache / region " + ex);
- }
- }
- };
- return (CacheSerializableRunnable)createCache;
+ }
+ catch (Exception ex) {
+ ex.printStackTrace();
+ fail("Error Creating cache / region " + ex);
+ }
}
/**
* This method puts in maxEntries in the Region
- *
- * @return CacheSerializableRunnable
*/
- private CacheSerializableRunnable putSomeEntries()
- {
- SerializableRunnable puts = new CacheSerializableRunnable("putSomeEntries") {
- public void run2()
- {
- assertTrue("Cache is found as null ", cache != null);
- Region rgn = cache.getRegion(regionName);
- for (int i = 0; i < maxEntries; i++) {
- rgn.put(new Long(i), new Long(i));
- }
- }
- };
- return (CacheSerializableRunnable)puts;
+ private void putSomeEntries() {
+ assertTrue("Cache is found as null ", cache != null);
+ Region rgn = cache.getRegion(regionName);
+ for (int i = 0; i < maxEntries; i++) {
+ rgn.put(new Long(i), new Long(i));
+ }
}
/**
- * This method destroys the Region
+ * This method clears the region and
+ * notifies the other member when complete
*
- * @return CacheSerializableRunnable
+ * @throws InterruptedException
*/
- private CacheSerializableRunnable destroyRegion()
- {
- SerializableRunnable puts = new CacheSerializableRunnable("destroyRegion") {
- public void run2()
- {
- try {
- assertTrue("Cache is found as null ", cache != null);
-
- Region rgn = cache.getRegion(regionName);
- rgn.localDestroyRegion();
- cache.close();
- }
- catch (Exception ex) {
-
- }
- }
- };
- return (CacheSerializableRunnable)puts;
+ private static void invokeRemoteClearAndWait(VM remoteVM, VM thisVM) {
+ remoteVM.invoke(() -> clearRegionAndNotify(thisVM));
+ try {
+ clearLatch.await();
+ } catch (InterruptedException e) {
+ fail("wait for remote clear to complete failed");
+ }
}
/**
- * This method is used to close cache on the calling VM
- *
- * @return CacheSerializableRunnable
+ * This method clears the region and
+ * notifies the other member when complete
*/
- private CacheSerializableRunnable closeCacheForVM(final int vmNo)
- {
- SerializableRunnable cclose = new CacheSerializableRunnable(
- "closeCacheForVM") {
- public void run2()
- {
- if (vmNo == 0) {
- cache.getRegion(regionName).localDestroyRegion();
- }
- assertTrue("Cache is found as null ", cache != null);
- cache.close();
- }
- };
- return (CacheSerializableRunnable)cclose;
+ private static void clearRegionAndNotify(VM otherVM) {
+ assertTrue("Cache is found as null ", cache != null);
+ Region rgn = cache.getRegion(regionName);
+ rgn.clear();
+ otherVM.invoke(() -> notifyClearComplete());
}
/**
- * This method is used to close cache on the calling VM
- *
- * @return CacheSerializableRunnable
+ * Decrement countdown latch to notify clear complete
*/
- private CacheSerializableRunnable closeCacheInVM()
- {
- SerializableRunnable cclose = new CacheSerializableRunnable(
- "closeCacheInVM") {
- public void run2()
- {
-
- cache.getRegion(regionName).localDestroyRegion();
- assertTrue("Cache is found as null ", cache != null);
- cache.close();
- }
- };
- return (CacheSerializableRunnable)cclose;
+ private static void notifyClearComplete() {
+ clearLatch.countDown();
}
/**
- * This method verifies that the reintialized region size should be zero
- *
- * @return CacheSerializableRunnable
+ * This method destroys the Region
*/
- private CacheSerializableRunnable verifyExtraEntryFromOpLogs()
- {
- SerializableRunnable verify = new CacheSerializableRunnable(
- "verifyExtraEntryFromOpLogs") {
- public void run2()
- {
- assertTrue("Cache is found as null ", cache != null);
- Region rgn = cache.getRegion(regionName);
- // should be zero after reinit
- assertEquals(0, rgn.size());
- }
- };
- return (CacheSerializableRunnable)verify;
+ private void destroyRegion() {
+ try {
+ assertTrue("Cache is found as null ", cache != null);
+ Region rgn = cache.getRegion(regionName);
+ rgn.localDestroyRegion();
+ cache.close();
+ }
+ catch (Exception ex) {}
+ }
+ /**
+ * This method closes the cache on the specified VM
+ */
+ private void closeCacheForVM(final int vmNo) {
+ if (vmNo == 0) {
+ cache.getRegion(regionName).localDestroyRegion();
+ }
+ assertTrue("Cache is found as null ", cache != null);
+ cache.close();
+ }
+
+ /**
+ * This method verifies that the reintialized region size is zero
+ */
+ private void verifyExtraEntryFromOpLogs() {
+ assertTrue("Cache is found as null ", cache != null);
+ Region rgn = cache.getRegion(regionName);
+ // should be zero after clear
+ assertEquals(0, rgn.size());
}
/**
@@ -309,44 +256,45 @@ public class Bug37377DUnitTest extends JUnit4CacheTestCase
*/
@Test
- public void testGIIputWithClear()
- {
- vm0.invoke(createCacheForVM0());
- vm0.invoke(putSomeEntries());
- AsyncInvocation as1 = vm1.invokeAsync(createCacheForVM1());
- Wait.pause(10000);
- ThreadUtils.join(as1, 30 * 1000);
- vm0.invoke(closeCacheForVM(0));
- vm1.invoke(closeCacheForVM(1));
- vm1.invoke(createCacheForVM1());
- vm1.invoke(verifyExtraEntryFromOpLogs());
+ public void testGIIputWithClear() {
+ vm0.invoke(() -> createCacheForVM0());
+ vm0.invoke(() -> putSomeEntries());
+
+ vm1.invoke(() -> createCacheForVM1());
+
+ vm0.invoke(() -> closeCacheForVM(0));
+ vm1.invoke(() -> closeCacheForVM(1));
+
+ vm1.invoke(() -> createCacheForVM1());
+ vm1.invoke(() -> verifyExtraEntryFromOpLogs());
}
- static class TestAbstractDiskRegionEntry extends VMThinDiskRegionEntryHeapObjectKey
- {
- protected TestAbstractDiskRegionEntry(RegionEntryContext r, Object key,
- Object value) {
+ static class TestAbstractDiskRegionEntry extends VersionedThinDiskRegionEntryHeapObjectKey {
+ static private VM thisVM, otherVM;
+
+ static void setMembers(VM localVM, VM remoteVM) {
+ thisVM = localVM;
+ otherVM = remoteVM;
+ }
+
+ protected TestAbstractDiskRegionEntry(RegionEntryContext r, Object key, Object value) {
super(r, key, value);
}
-
- private static RegionEntryFactory factory = new RegionEntryFactory() {
- public final RegionEntry createEntry(RegionEntryContext r, Object key,
- Object value)
- {
+ private static RegionEntryFactory factory = new RegionEntryFactory() {
+
+ public final RegionEntry createEntry(RegionEntryContext r, Object key, Object value) {
return new TestAbstractDiskRegionEntry(r, key, value);
}
- public final Class getEntryClass()
- {
-
+ public final Class getEntryClass() {
return TestAbstractDiskRegionEntry.class;
}
public RegionEntryFactory makeVersioned() {
return this;
}
-
+
public RegionEntryFactory makeOnHeap() {
return this;
}
@@ -358,24 +306,35 @@ public class Bug37377DUnitTest extends JUnit4CacheTestCase
*/
@Override
public boolean initialImageInit(final LocalRegion r,
- final long lastModifiedTime,
- final Object newValue,
- final boolean create,
- final boolean wasRecovered,
- final boolean versionTagAccepted) throws RegionClearedException
+ final long lastModifiedTime,
+ final Object newValue,
+ final boolean create,
+ final boolean wasRecovered,
+ final boolean versionTagAccepted) throws RegionClearedException
{
- RegionEventImpl event = new RegionEventImpl(r, Operation.REGION_CLEAR,
- null, true /* isOriginRemote */,
- r.cache.getMyId());
- ((DistributedRegion)r).cmnClearRegion(event, false, false);
- boolean result = super.initialImageInit(r, lastModifiedTime, newValue, create, wasRecovered, versionTagAccepted);
- fail("expected RegionClearedException");
- return result;
+ synchronized(clearOccured) {
+ if(!clearOccured) {
+ // Force other member to perform a clear during our GII
+ invokeRemoteClearAndWait(otherVM, thisVM);
+ clearOccured = true;
+ }
+ }
+
+ // Continue GII processing, which should throw RegionClearedException after the clear
+ try {
+ boolean result = super.initialImageInit(r, lastModifiedTime, newValue, create, wasRecovered, versionTagAccepted);
+ } catch (RegionClearedException rce) {
+ throw rce;
+ } catch (Exception ex) {
+ fail("Caught exception during initialImageInit: " + ex );
+ }
+
+ return true;
}
- public static RegionEntryFactory getEntryFactory()
- {
+ public static RegionEntryFactory getEntryFactory() {
return factory;
}
}
}
+
[15/18] incubator-geode git commit: Merge branch 'develop' into
feature/GEODE-420
Posted by ud...@apache.org.
Merge branch 'develop' into feature/GEODE-420
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/c6f59974
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/c6f59974
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/c6f59974
Branch: refs/heads/feature/GEODE-420
Commit: c6f599748e11db03880ec8d036564447bf6db36e
Parents: a97ea4e bb829d3
Author: Udo Kohlmeyer <uk...@pivotal.io>
Authored: Mon Sep 5 08:44:57 2016 +1000
Committer: Udo Kohlmeyer <uk...@pivotal.io>
Committed: Mon Sep 5 08:44:57 2016 +1000
----------------------------------------------------------------------
.../gemfire/internal/GemFireVersion.java | 66 ++--
.../internal/cache/BucketRegionQueue.java | 28 +-
.../internal/cache/DistributedRegion.java | 2 +-
.../gemfire/internal/cache/EntryExpiryTask.java | 3 +
.../gemfire/internal/cache/ExpiryTask.java | 5 +
.../src/test/java/cacheRunner/Portfolio.java | 128 ------
.../src/test/java/cacheRunner/Position.java | 73 ----
.../com/gemstone/gemfire/TXExpiryJUnitTest.java | 3 +
.../cache/query/dunit/RemoteQueryDUnitTest.java | 14 +-
.../gemfire/cache30/RegionTestCase.java | 9 +-
.../internal/GemFireVersionJUnitTest.java | 22 +-
.../internal/cache/Bug37377DUnitTest.java | 393 +++++++++----------
.../PartitionedRegionSingleHopDUnitTest.java | 37 +-
...tegratedClientGetPutAuthDistributedTest.java | 3 +-
.../AbstractPartitionedRepositoryManager.java | 124 ++++++
.../lucene/internal/IndexRepositoryFactory.java | 21 +-
.../internal/LuceneIndexCreationProfile.java | 12 +-
.../lucene/internal/LuceneIndexFactory.java | 30 ++
.../LuceneIndexForPartitionedRegion.java | 134 +++----
.../cache/lucene/internal/LuceneIndexImpl.java | 79 +++-
.../cache/lucene/internal/LuceneRawIndex.java | 43 ++
.../lucene/internal/LuceneRawIndexFactory.java | 27 ++
.../lucene/internal/LuceneServiceImpl.java | 5 +-
.../internal/PartitionedRepositoryManager.java | 123 +-----
.../internal/RawIndexRepositoryFactory.java | 63 +++
.../internal/RawLuceneRepositoryManager.java | 46 +++
.../repository/IndexRepositoryImpl.java | 6 +-
.../LuceneIndexCreationIntegrationTest.java | 29 ++
.../cache/lucene/LuceneQueriesPRBase.java | 7 +-
.../LuceneIndexCreationProfileJUnitTest.java | 12 +-
.../LuceneIndexForPartitionedRegionTest.java | 34 +-
.../LuceneIndexRecoveryHAIntegrationTest.java | 19 +-
.../PartitionedRepositoryManagerJUnitTest.java | 68 ++--
.../RawLuceneRepositoryManagerJUnitTest.java | 97 +++++
.../DistributedScoringJUnitTest.java | 2 +-
.../IndexRepositoryImplJUnitTest.java | 6 +-
.../IndexRepositoryImplPerformanceTest.java | 2 +-
.../cache/lucene/test/IndexRepositorySpy.java | 20 +-
.../wan/GatewaySenderEventRemoteDispatcher.java | 8 +-
39 files changed, 991 insertions(+), 812 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c6f59974/geode-core/src/main/java/com/gemstone/gemfire/internal/GemFireVersion.java
----------------------------------------------------------------------
[18/18] incubator-geode git commit: GEODE-420: Amended Tests in
ConnectToLocatorSSLDUnitTest.java to new ssl config
Posted by ud...@apache.org.
GEODE-420: Amended Tests in ConnectToLocatorSSLDUnitTest.java to new ssl config
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/6853f56d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/6853f56d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/6853f56d
Branch: refs/heads/feature/GEODE-420
Commit: 6853f56dd74383771f0c2d19506cabea6c0591f4
Parents: d4cca87
Author: Udo Kohlmeyer <uk...@pivotal.io>
Authored: Wed Sep 7 03:23:01 2016 +1000
Committer: Udo Kohlmeyer <uk...@pivotal.io>
Committed: Wed Sep 7 03:23:01 2016 +1000
----------------------------------------------------------------------
.../internal/DistributionConfigImpl.java | 17 ++++++++--------
.../gemfire/internal/AbstractConfig.java | 5 +++++
.../internal/security/SecurableComponent.java | 6 ++----
.../internal/JmxManagerLocatorRequest.java | 8 ++------
.../gemfire/distributed/LocatorDUnitTest.java | 1 -
.../ConnectToLocatorSSLDUnitTest.java | 21 +++++++++++++++++---
6 files changed, 36 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6853f56d/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
index 1ac92d0..c86b0e7 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
@@ -26,13 +26,11 @@ import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.URL;
import java.net.UnknownHostException;
-import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
-import java.util.Objects;
import java.util.Properties;
import java.util.Set;
@@ -305,8 +303,10 @@ public class DistributionConfigImpl extends AbstractDistributionConfig implement
* The client Diffie-Hellman method name
*/
private String securityClientDHAlgo = DEFAULT_SECURITY_CLIENT_DHALGO;
-
- /** The udp Diffie-Hellman method name*/
+
+ /**
+ * The udp Diffie-Hellman method name
+ */
private String securityUDPDHAlgo = DEFAULT_SECURITY_UDP_DHALGO;
/**
@@ -2118,17 +2118,17 @@ public class DistributionConfigImpl extends AbstractDistributionConfig implement
public String getSecurityClientDHAlgo() {
return securityClientDHAlgo;
}
-
+
public void setSecurityClientDHAlgo(String value) {
securityClientDHAlgo = (String) value;
}
-
+
public String getSecurityUDPDHAlgo() {
return securityUDPDHAlgo;
}
public void setSecurityUDPDHAlgo(String value) {
- securityUDPDHAlgo = (String)checkAttribute(SECURITY_UDP_DHALGO, value);
+ securityUDPDHAlgo = (String) checkAttribute(SECURITY_UDP_DHALGO, value);
}
public String getSecurityPeerAuthInit() {
@@ -3060,7 +3060,8 @@ public class DistributionConfigImpl extends AbstractDistributionConfig implement
/**
* Used by gemfire build.xml to generate a default gemfire.properties
* for use by applications. See bug 30995 for the feature request.
- */ public static void main(String args[]) throws IOException {
+ */
+ public static void main(String args[]) throws IOException {
DistributionConfigImpl cfg = new DistributionConfigImpl();
String fileName = DistributionConfig.GEMFIRE_PREFIX + "properties";
if (args != null && args.length > 0) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6853f56d/geode-core/src/main/java/com/gemstone/gemfire/internal/AbstractConfig.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/AbstractConfig.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/AbstractConfig.java
index 6fd4ae6..28b0cac 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/AbstractConfig.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/AbstractConfig.java
@@ -322,6 +322,11 @@ public abstract class AbstractConfig implements Config {
return "" + value[0] + "-" + value[1];
}
+ if(result.getClass().isArray() && attName.startsWith("ssl-"))
+ {
+ return SystemAdmin.join((Object[]) result,",");
+ }
+
if (result.getClass().isArray()) {
return SystemAdmin.join((Object[]) result);
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6853f56d/geode-core/src/main/java/com/gemstone/gemfire/internal/security/SecurableComponent.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/security/SecurableComponent.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/security/SecurableComponent.java
index f14b268..439cde5 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/security/SecurableComponent.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/security/SecurableComponent.java
@@ -39,10 +39,8 @@ public enum SecurableComponent {
public static SecurableComponent getEnum(String enumString) {
for (SecurableComponent securableComponent : SecurableComponent.values()) {
- if (!StringUtils.isEmpty(enumString)) {
- if (securableComponent.constant.equalsIgnoreCase(enumString)) {
- return securableComponent;
- }
+ if (securableComponent.constant.equalsIgnoreCase(enumString)) {
+ return securableComponent;
}
}
throw new GemFireConfigException("There is no registered component for the name: " + enumString);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6853f56d/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java b/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
index 39f914f..7c9e6d9 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
@@ -23,6 +23,7 @@ import java.net.InetAddress;
import java.util.Map;
import java.util.Properties;
+import com.gemstone.gemfire.distributed.internal.DistributionConfigImpl;
import com.gemstone.gemfire.distributed.internal.tcpserver.TcpClient;
import com.gemstone.gemfire.internal.DataSerializableFixedID;
import com.gemstone.gemfire.internal.Version;
@@ -85,12 +86,7 @@ public class JmxManagerLocatorRequest implements DataSerializableFixedID {
distributionConfigProps.putAll(sslConfigProps);
}
- // re-initialize the SocketCreator with the sslConfigProps. Note this initializes the SocketCreator with cluster-ssl-* settings since
- // we are connecting to the locator only.
- //TODO Udo: Look into this
- // SocketCreator.getDefaultInstance(distributionConfigProps);
-
- TcpClient client = new TcpClient();
+ TcpClient client = new TcpClient(new DistributionConfigImpl(distributionConfigProps));
Object responseFromServer = client.requestToServer(networkAddress, locatorPort, SINGLETON, msTimeout);
return (JmxManagerLocatorResponse) responseFromServer;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6853f56d/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
index fc0e93b..b68841a 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
@@ -55,7 +55,6 @@ import com.gemstone.gemfire.internal.AvailablePortHelper;
import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
import com.gemstone.gemfire.internal.logging.InternalLogWriter;
import com.gemstone.gemfire.internal.logging.LocalLogWriter;
-import com.gemstone.gemfire.internal.net.SocketCreatorFactory;
import com.gemstone.gemfire.internal.security.SecurableComponent;
import com.gemstone.gemfire.internal.tcp.Connection;
import com.gemstone.gemfire.test.dunit.DistributedTestUtils;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6853f56d/geode-core/src/test/java/com/gemstone/gemfire/management/ConnectToLocatorSSLDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/ConnectToLocatorSSLDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/ConnectToLocatorSSLDUnitTest.java
index c90e157..75a0e82 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/ConnectToLocatorSSLDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/ConnectToLocatorSSLDUnitTest.java
@@ -36,6 +36,7 @@ import org.junit.rules.TemporaryFolder;
import com.gemstone.gemfire.distributed.Locator;
import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.internal.security.SecurableComponent;
import com.gemstone.gemfire.management.cli.Result.Status;
import com.gemstone.gemfire.management.internal.cli.CliUtil;
import com.gemstone.gemfire.management.internal.cli.HeadlessGfsh;
@@ -72,7 +73,21 @@ public class ConnectToLocatorSSLDUnitTest extends JUnit4DistributedTestCase {
}
@Test
- public void testConnectToLocatorWithClusterSSL() throws Exception{
+ public void testConnectToLocatorWithSSL() throws Exception{
+ Properties securityProps = new Properties();
+ securityProps.setProperty(SSL_ENABLED_COMPONENTS, SecurableComponent.LOCATOR.getConstant());
+ securityProps.setProperty(SSL_KEYSTORE, jks.getCanonicalPath());
+ securityProps.setProperty(SSL_KEYSTORE_PASSWORD, "password");
+ securityProps.setProperty(SSL_KEYSTORE_TYPE, "JKS");
+ securityProps.setProperty(SSL_TRUSTSTORE, jks.getCanonicalPath());
+ securityProps.setProperty(SSL_TRUSTSTORE_PASSWORD, "password");
+ securityProps.setProperty(SSL_PROTOCOLS, "TLSv1.2 TLSv1.1");
+
+ setUpLocatorAndConnect(securityProps);
+ }
+
+ @Test
+ public void testConnectToLocatorWithLegacyClusterSSL() throws Exception{
Properties securityProps = new Properties();
securityProps.setProperty(CLUSTER_SSL_ENABLED, "true");
securityProps.setProperty(CLUSTER_SSL_KEYSTORE, jks.getCanonicalPath());
@@ -85,7 +100,7 @@ public class ConnectToLocatorSSLDUnitTest extends JUnit4DistributedTestCase {
}
@Test
- public void testConnectToLocatorWithJMXSSL() throws Exception{
+ public void testConnectToLocatorWithLegacyJMXSSL() throws Exception{
Properties securityProps = new Properties();
securityProps.setProperty(JMX_MANAGER_SSL_ENABLED, "true");
securityProps.setProperty(JMX_MANAGER_SSL_KEYSTORE, jks.getCanonicalPath());
@@ -129,7 +144,7 @@ public class ConnectToLocatorSSLDUnitTest extends JUnit4DistributedTestCase {
gfsh.executeCommand(command.toString());
CommandResult result = (CommandResult)gfsh.getResult();
- assertEquals(result.getStatus(), Status.OK);
+ assertEquals(Status.OK,result.getStatus());
assertTrue(result.getContent().toString().contains("Successfully connected to"));
}
[05/18] incubator-geode git commit: GEODE-1833: should save the
reference locally in case other thread closed the server location.
Posted by ud...@apache.org.
GEODE-1833: should save the reference locally in case other thread
closed the server location.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/ea5516c5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/ea5516c5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/ea5516c5
Branch: refs/heads/feature/GEODE-420
Commit: ea5516c53fa124da7ff7ee91f69d52e78949bbfd
Parents: fd3786a
Author: zhouxh <gz...@pivotal.io>
Authored: Wed Aug 31 16:48:13 2016 -0700
Committer: zhouxh <gz...@pivotal.io>
Committed: Thu Sep 1 08:57:48 2016 -0700
----------------------------------------------------------------------
.../cache/wan/GatewaySenderEventRemoteDispatcher.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ea5516c5/geode-wan/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderEventRemoteDispatcher.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderEventRemoteDispatcher.java b/geode-wan/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderEventRemoteDispatcher.java
index 2625ad2..d2302c4 100644
--- a/geode-wan/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderEventRemoteDispatcher.java
+++ b/geode-wan/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderEventRemoteDispatcher.java
@@ -398,12 +398,12 @@ public class GatewaySenderEventRemoteDispatcher implements
} else {
synchronized (this.sender
.getLockForConcurrentDispatcher()) {
- if (this.sender.getServerLocation() != null) {
+ ServerLocation server = this.sender.getServerLocation();
+ if (server != null) {
if (logger.isDebugEnabled()) {
- logger.debug("ServerLocation is: {}. Connecting to this serverLocation...", sender.getServerLocation());
+ logger.debug("ServerLocation is: {}. Connecting to this serverLocation...", server);
}
- con = this.sender.getProxy().acquireConnection(
- this.sender.getServerLocation());
+ con = this.sender.getProxy().acquireConnection(server);
} else {
if (logger.isDebugEnabled()) {
logger.debug("ServerLocation is null. Creating new connection. ");
[08/18] incubator-geode git commit: GEODE-1774 Modified test to
ignore unnecessary checks.
Posted by ud...@apache.org.
GEODE-1774 Modified test to ignore unnecessary checks.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/f497c596
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/f497c596
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/f497c596
Branch: refs/heads/feature/GEODE-420
Commit: f497c596c31ca29fde1e90e7980cac7422fb27ee
Parents: 49facb8
Author: Hitesh Khamesra <hi...@yahoo.com>
Authored: Thu Sep 1 13:31:57 2016 -0700
Committer: Hitesh Khamesra <hi...@yahoo.com>
Committed: Thu Sep 1 13:31:57 2016 -0700
----------------------------------------------------------------------
.../cache/PartitionedRegionSingleHopDUnitTest.java | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f497c596/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
index 470a8d4..83f91a8 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
@@ -1901,6 +1901,7 @@ public class PartitionedRegionSingleHopDUnitTest extends JUnit4CacheTestCase {
ClientMetadataService cms = ((GemFireCacheImpl)cache).getClientMetadataService();
cms.satisfyRefreshMetadata_TEST_ONLY(false);
+
region.put(new Integer(0), "update0");
assertEquals(false, cms.isRefreshMetadataTestOnly());
@@ -1970,13 +1971,13 @@ public class PartitionedRegionSingleHopDUnitTest extends JUnit4CacheTestCase {
//make sure all fetch tasks are completed
Awaitility.waitAtMost(60, TimeUnit.SECONDS).until(() -> cms.getRefreshTaskCount() == 0);
- final Map<String, ClientPartitionAdvisor> regionMetaData = cms
- .getClientPRMetadata_TEST_ONLY();
- Awaitility.waitAtMost(60, TimeUnit.SECONDS).until(() -> (regionMetaData.size() == 4));
- assertEquals(4, regionMetaData.size());
- assertTrue(regionMetaData.containsKey(region.getFullPath()));
- final ClientPartitionAdvisor prMetaData = regionMetaData.get(region.getFullPath());
- Awaitility.waitAtMost(60, TimeUnit.SECONDS).until(() -> (prMetaData.getBucketServerLocationsMap_TEST_ONLY().size() == 4));
+// final Map<String, ClientPartitionAdvisor> regionMetaData = cms
+// .getClientPRMetadata_TEST_ONLY();
+// Awaitility.waitAtMost(60, TimeUnit.SECONDS).until(() -> (regionMetaData.size() == 4));
+// assertEquals(4, regionMetaData.size());
+// assertTrue(regionMetaData.containsKey(region.getFullPath()));
+// final ClientPartitionAdvisor prMetaData = regionMetaData.get(region.getFullPath());
+// Awaitility.waitAtMost(60, TimeUnit.SECONDS).until(() -> (prMetaData.getBucketServerLocationsMap_TEST_ONLY().size() == 4));
}
}
[07/18] incubator-geode git commit: GEODE-1805 Now test retries to
fetch the all pr-meta-data
Posted by ud...@apache.org.
GEODE-1805 Now test retries to fetch the all pr-meta-data
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/49facb8b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/49facb8b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/49facb8b
Branch: refs/heads/feature/GEODE-420
Commit: 49facb8b5d627ddebbeb4aeb87aacdcf88f2ee04
Parents: 8a644c2
Author: Hitesh Khamesra <hk...@pivotal.io>
Authored: Thu Sep 1 09:33:27 2016 -0700
Committer: Hitesh Khamesra <hk...@pivotal.io>
Committed: Thu Sep 1 09:34:13 2016 -0700
----------------------------------------------------------------------
.../PartitionedRegionSingleHopDUnitTest.java | 22 ++++++++++++--------
1 file changed, 13 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/49facb8b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
index 78fd5e0..470a8d4 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
@@ -978,7 +978,7 @@ public class PartitionedRegionSingleHopDUnitTest extends JUnit4CacheTestCase {
return finished;
});
}
-
+
@Test
public void testClientMetadataForPersistentPrs() throws Exception {
Integer port0 = (Integer)member0.invoke(() -> PartitionedRegionSingleHopDUnitTest.createPersistentPrsAndServer( 3, 4 ));
@@ -994,7 +994,8 @@ public class PartitionedRegionSingleHopDUnitTest extends JUnit4CacheTestCase {
member3.invoke(() -> PartitionedRegionSingleHopDUnitTest.waitForLocalBucketsCreation(4));
createClient(port0, port1, port2, port3);
- fetchAndValidateMetadata();
+ Awaitility.waitAtMost(60, TimeUnit.SECONDS).until(() -> fetchAndValidateMetadata());
+
member0.invoke(() -> PartitionedRegionSingleHopDUnitTest.closeCacheAndDisconnect());
member1.invoke(() -> PartitionedRegionSingleHopDUnitTest.closeCacheAndDisconnect());
member2.invoke(() -> PartitionedRegionSingleHopDUnitTest.closeCacheAndDisconnect());
@@ -1011,17 +1012,18 @@ public class PartitionedRegionSingleHopDUnitTest extends JUnit4CacheTestCase {
fetchAndValidateMetadata();
}
- private void fetchAndValidateMetadata() {
+ private boolean fetchAndValidateMetadata() {
ClientMetadataService service = ((GemFireCacheImpl)this.cache)
.getClientMetadataService();
service.getClientPRMetadata((LocalRegion)this.region);
HashMap<ServerLocation, HashSet<Integer>> servers = service
- .groupByServerToAllBuckets(this.region, true);
+ .groupByServerToAllBuckets(this.region, true);
if (servers == null) {
- fail("The client metadata contains no servers for region "
- + this.region.getFullPath());
+ //fail("The client metadata contains no servers for region "
+ // + this.region.getFullPath());
+ return false;
}
- else {
+ else if(servers.size() == 4) {
region.getCache().getLogger().fine("The client metadata contains the following "
+ servers.size() + " servers for region " + this.region.getFullPath()
+ ":");
@@ -1029,9 +1031,11 @@ public class PartitionedRegionSingleHopDUnitTest extends JUnit4CacheTestCase {
region.getCache().getLogger().fine(entry.getKey() + "->" + entry.getValue());
}
if (servers.size() < 4) {
- fail("Servers size is " +servers.size() + " less than expected 4.");
- }
+ region.getCache().getLogger().info("Servers size is " +servers.size() + " less than expected 4.");
+ return false;
+ }
}
+ return true;
}
public static void verifyMetadata(Map<Integer, List<BucketServerLocation66>> clientMap){
[09/18] incubator-geode git commit: GEODE-11: let profile's getId()
return unique name
Posted by ud...@apache.org.
GEODE-11: let profile's getId() return unique name
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/426f1ae2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/426f1ae2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/426f1ae2
Branch: refs/heads/feature/GEODE-420
Commit: 426f1ae22f1c5933dd14c08c29c7afbfdef60f4f
Parents: f497c59
Author: zhouxh <gz...@pivotal.io>
Authored: Thu Sep 1 18:04:14 2016 -0700
Committer: zhouxh <gz...@pivotal.io>
Committed: Thu Sep 1 18:05:06 2016 -0700
----------------------------------------------------------------------
.../lucene/internal/LuceneIndexCreationProfile.java | 12 +++---------
.../cache/lucene/internal/LuceneServiceImpl.java | 2 +-
.../internal/LuceneIndexCreationProfileJUnitTest.java | 12 ++++++------
3 files changed, 10 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/426f1ae2/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexCreationProfile.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexCreationProfile.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexCreationProfile.java
index 720d20d..de331ea 100644
--- a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexCreationProfile.java
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexCreationProfile.java
@@ -44,14 +44,6 @@ public class LuceneIndexCreationProfile implements CacheServiceProfile, DataSeri
/* Used by DataSerializer */
public LuceneIndexCreationProfile() {}
- public LuceneIndexCreationProfile(String indexName, String[] fieldNames, Analyzer analyzer,
- Map<String, Analyzer> fieldAnalyzers) {
- this.indexName = indexName;
- this.fieldNames = fieldNames;
- this.analyzerClass = analyzer.getClass().getSimpleName();
- initializeFieldAnalyzers(fieldAnalyzers);
- }
-
public LuceneIndexCreationProfile(String indexName, String regionPath, String[] fieldNames, Analyzer analyzer,
Map<String, Analyzer> fieldAnalyzers) {
this.indexName = indexName;
@@ -90,7 +82,7 @@ public class LuceneIndexCreationProfile implements CacheServiceProfile, DataSeri
@Override
public String getId() {
- return this.indexName;
+ return "lucene_"+LuceneServiceImpl.getUniqueIndexName(indexName, regionPath);
}
@Override
@@ -143,6 +135,7 @@ public class LuceneIndexCreationProfile implements CacheServiceProfile, DataSeri
@Override
public void toData(DataOutput out) throws IOException {
DataSerializer.writeString(this.indexName, out);
+ DataSerializer.writeString(this.regionPath, out);
DataSerializer.writeStringArray(this.fieldNames, out);
DataSerializer.writeString(this.analyzerClass, out);
DataSerializer.writeHashMap(this.fieldAnalyzers, out);
@@ -151,6 +144,7 @@ public class LuceneIndexCreationProfile implements CacheServiceProfile, DataSeri
@Override
public void fromData(DataInput in) throws IOException, ClassNotFoundException {
this.indexName = DataSerializer.readString(in);
+ this.regionPath = DataSerializer.readString(in);
this.fieldNames = DataSerializer.readStringArray(in);
this.analyzerClass = DataSerializer.readString(in);
this.fieldAnalyzers = DataSerializer.readHashMap(in);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/426f1ae2/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
index 29a8e62..81a62b8 100644
--- a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
@@ -183,7 +183,7 @@ public class LuceneServiceImpl implements InternalLuceneService {
}
// Add index creation profile
- internalRegionArgs.addCacheServiceProfile(new LuceneIndexCreationProfile(indexName, fields, analyzer, fieldAnalyzers));
+ internalRegionArgs.addCacheServiceProfile(new LuceneIndexCreationProfile(indexName, dataRegionPath, fields, analyzer, fieldAnalyzers));
}
return updatedRA;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/426f1ae2/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java
index c64dd3d..7fbe806 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java
@@ -105,38 +105,38 @@ public class LuceneIndexCreationProfileJUnitTest {
}
private LuceneIndexCreationProfile getOneFieldLuceneIndexCreationProfile() {
- return new LuceneIndexCreationProfile(INDEX_NAME, new String[] { "field1" }, new StandardAnalyzer(), null);
+ return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] { "field1" }, new StandardAnalyzer(), null);
}
private LuceneIndexCreationProfile getTwoFieldLuceneIndexCreationProfile() {
- return new LuceneIndexCreationProfile(INDEX_NAME, new String[] { "field1", "field2" }, new StandardAnalyzer(), null);
+ return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] { "field1", "field2" }, new StandardAnalyzer(), null);
}
private LuceneIndexCreationProfile getOneAnalyzerLuceneIndexCreationProfile(Analyzer analyzer) {
Map<String, Analyzer> fieldAnalyzers = new HashMap<>();
fieldAnalyzers.put("field1", analyzer);
- return new LuceneIndexCreationProfile(INDEX_NAME, new String[] { "field1", "field2" }, getPerFieldAnalyzerWrapper(fieldAnalyzers), fieldAnalyzers);
+ return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] { "field1", "field2" }, getPerFieldAnalyzerWrapper(fieldAnalyzers), fieldAnalyzers);
}
private LuceneIndexCreationProfile getTwoAnalyzersLuceneIndexCreationProfile() {
Map<String, Analyzer> fieldAnalyzers = new HashMap<>();
fieldAnalyzers.put("field1", new KeywordAnalyzer());
fieldAnalyzers.put("field2", new KeywordAnalyzer());
- return new LuceneIndexCreationProfile(INDEX_NAME, new String[] { "field1", "field2" }, getPerFieldAnalyzerWrapper(fieldAnalyzers), fieldAnalyzers);
+ return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] { "field1", "field2" }, getPerFieldAnalyzerWrapper(fieldAnalyzers), fieldAnalyzers);
}
private LuceneIndexCreationProfile getNullField1AnalyzerLuceneIndexCreationProfile() {
Map<String, Analyzer> fieldAnalyzers = new HashMap<>();
fieldAnalyzers.put("field1", null);
fieldAnalyzers.put("field2", new KeywordAnalyzer());
- return new LuceneIndexCreationProfile(INDEX_NAME, new String[] { "field1", "field2" }, getPerFieldAnalyzerWrapper(fieldAnalyzers), fieldAnalyzers);
+ return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] { "field1", "field2" }, getPerFieldAnalyzerWrapper(fieldAnalyzers), fieldAnalyzers);
}
private LuceneIndexCreationProfile getNullField2AnalyzerLuceneIndexCreationProfile() {
Map<String, Analyzer> fieldAnalyzers = new HashMap<>();
fieldAnalyzers.put("field1", new KeywordAnalyzer());
fieldAnalyzers.put("field2", null);
- return new LuceneIndexCreationProfile(INDEX_NAME, new String[] { "field1", "field2" }, getPerFieldAnalyzerWrapper(fieldAnalyzers), fieldAnalyzers);
+ return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME, new String[] { "field1", "field2" }, getPerFieldAnalyzerWrapper(fieldAnalyzers), fieldAnalyzers);
}
private Analyzer getPerFieldAnalyzerWrapper(Map<String, Analyzer> fieldAnalyzers) {
[16/18] incubator-geode git commit: GEODE-1834: initilize the
socketcreator with the correct ssl settings
Posted by ud...@apache.org.
GEODE-1834: initilize the socketcreator with the correct ssl settings
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/a4c38a46
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/a4c38a46
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/a4c38a46
Branch: refs/heads/feature/GEODE-420
Commit: a4c38a469d0726c8fd59f444e342d3d062c47004
Parents: bb829d3
Author: Jinmei Liao <ji...@pivotal.io>
Authored: Thu Sep 1 09:27:11 2016 -0700
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Tue Sep 6 08:27:45 2016 -0700
----------------------------------------------------------------------
.../internal/JmxManagerLocatorRequest.java | 8 +-
.../internal/cli/commands/ShellCommands.java | 21 ++-
.../ConnectToLocatorSSLDUnitTest.java | 136 +++++++++++++++++++
3 files changed, 150 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a4c38a46/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java b/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
index 861f51d..ac250d0 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/management/internal/JmxManagerLocatorRequest.java
@@ -25,6 +25,7 @@ import java.util.Properties;
import com.gemstone.gemfire.distributed.internal.tcpserver.TcpClient;
import com.gemstone.gemfire.internal.DataSerializableFixedID;
+import com.gemstone.gemfire.internal.SocketCreator;
import com.gemstone.gemfire.internal.Version;
/**
@@ -80,13 +81,14 @@ public class JmxManagerLocatorRequest implements DataSerializableFixedID {
InetAddress networkAddress = InetAddress.getByName(locatorHost);
try {
- // Changes for 46623
- // initialize the SocketCreator with props which may contain SSL config
- // empty distConfProps will reset SocketCreator
if (sslConfigProps != null) {
distributionConfigProps.putAll(sslConfigProps);
}
+ // re-initialize the SocketCreator with the sslConfigProps. Note this initializes the SocketCreator with cluster-ssl-* settings since
+ // we are connecting to the locator only.
+ SocketCreator.getDefaultInstance(distributionConfigProps);
+
Object responseFromServer = TcpClient.requestToServer(networkAddress, locatorPort, SINGLETON, msTimeout);
return (JmxManagerLocatorResponse) responseFromServer;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a4c38a46/geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommands.java b/geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommands.java
index 09a25a6..daa7262 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommands.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommands.java
@@ -17,6 +17,8 @@
package com.gemstone.gemfire.management.internal.cli.commands;
+import static com.gemstone.gemfire.distributed.ConfigurationProperties.*;
+
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
@@ -38,11 +40,18 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;
+
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
+import org.springframework.shell.core.CommandMarker;
+import org.springframework.shell.core.ExitShellRequest;
+import org.springframework.shell.core.annotation.CliAvailabilityIndicator;
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
import com.gemstone.gemfire.distributed.internal.DistributionConfig;
import com.gemstone.gemfire.internal.ClassPathLoader;
import com.gemstone.gemfire.internal.DSFIDFactory;
@@ -79,14 +88,6 @@ import com.gemstone.gemfire.management.internal.web.shell.HttpOperationInvoker;
import com.gemstone.gemfire.management.internal.web.shell.RestHttpOperationInvoker;
import com.gemstone.gemfire.security.AuthenticationFailedException;
-import org.springframework.shell.core.CommandMarker;
-import org.springframework.shell.core.ExitShellRequest;
-import org.springframework.shell.core.annotation.CliAvailabilityIndicator;
-import org.springframework.shell.core.annotation.CliCommand;
-import org.springframework.shell.core.annotation.CliOption;
-
-import static com.gemstone.gemfire.distributed.ConfigurationProperties.*;
-
/**
*
* @since GemFire 7.0
@@ -308,10 +309,6 @@ public class ShellCommands implements CommandMarker {
// Props required to configure a SocketCreator with SSL.
// Used for gfsh->locator connection & not needed for gfsh->manager connection
if (useSsl || !sslConfigProps.isEmpty()) {
- //Fix for 51266 : Added an check for cluster-ssl-enabled proeprty
- if (!sslConfigProps.containsKey(DistributionConfig.CLUSTER_SSL_ENABLED_NAME)) {
- sslConfigProps.put(DistributionConfig.SSL_ENABLED_NAME, String.valueOf(true));
- }
sslConfigProps.put(MCAST_PORT, String.valueOf(0));
sslConfigProps.put(LOCATORS, "");
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a4c38a46/geode-core/src/test/java/com/gemstone/gemfire/management/ConnectToLocatorSSLDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/ConnectToLocatorSSLDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/ConnectToLocatorSSLDUnitTest.java
new file mode 100644
index 0000000..c90e157
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/ConnectToLocatorSSLDUnitTest.java
@@ -0,0 +1,136 @@
+/*
+ * 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.management;
+
+import static com.gemstone.gemfire.distributed.ConfigurationProperties.*;
+import static com.gemstone.gemfire.internal.Assert.assertTrue;
+import static com.gemstone.gemfire.util.test.TestUtil.*;
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.util.Properties;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
+
+import com.gemstone.gemfire.distributed.Locator;
+import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.management.cli.Result.Status;
+import com.gemstone.gemfire.management.internal.cli.CliUtil;
+import com.gemstone.gemfire.management.internal.cli.HeadlessGfsh;
+import com.gemstone.gemfire.management.internal.cli.i18n.CliStrings;
+import com.gemstone.gemfire.management.internal.cli.result.CommandResult;
+import com.gemstone.gemfire.management.internal.cli.util.CommandStringBuilder;
+import com.gemstone.gemfire.test.dunit.Host;
+import com.gemstone.gemfire.test.dunit.VM;
+import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase;
+import com.gemstone.gemfire.test.junit.categories.DistributedTest;
+import com.gemstone.gemfire.test.junit.rules.serializable.SerializableTemporaryFolder;
+
+@Category(DistributedTest.class)
+public class ConnectToLocatorSSLDUnitTest extends JUnit4DistributedTestCase {
+ protected VM locator = null;
+ protected File jks = null;
+ protected File securityPropsFile = null;
+
+ @Rule
+ public TemporaryFolder folder = new SerializableTemporaryFolder();
+
+ @Before
+ public void before() throws Exception {
+ final Host host = Host.getHost(0);
+ this.locator = host.getVM(0);
+ this.jks = new File(getResourcePath(getClass(), "/ssl/trusted.keystore"));
+ securityPropsFile = folder.newFile("security.properties");
+ }
+
+ @After
+ public void after() throws Exception {
+ securityPropsFile.delete();
+ CliUtil.isGfshVM = false;
+ }
+
+ @Test
+ public void testConnectToLocatorWithClusterSSL() throws Exception{
+ Properties securityProps = new Properties();
+ securityProps.setProperty(CLUSTER_SSL_ENABLED, "true");
+ securityProps.setProperty(CLUSTER_SSL_KEYSTORE, jks.getCanonicalPath());
+ securityProps.setProperty(CLUSTER_SSL_KEYSTORE_PASSWORD, "password");
+ securityProps.setProperty(CLUSTER_SSL_KEYSTORE_TYPE, "JKS");
+ securityProps.setProperty(CLUSTER_SSL_TRUSTSTORE, jks.getCanonicalPath());
+ securityProps.setProperty(CLUSTER_SSL_TRUSTSTORE_PASSWORD, "password");
+
+ setUpLocatorAndConnect(securityProps);
+ }
+
+ @Test
+ public void testConnectToLocatorWithJMXSSL() throws Exception{
+ Properties securityProps = new Properties();
+ securityProps.setProperty(JMX_MANAGER_SSL_ENABLED, "true");
+ securityProps.setProperty(JMX_MANAGER_SSL_KEYSTORE, jks.getCanonicalPath());
+ securityProps.setProperty(JMX_MANAGER_SSL_KEYSTORE_PASSWORD, "password");
+ securityProps.setProperty(JMX_MANAGER_SSL_KEYSTORE_TYPE, "JKS");
+ securityProps.setProperty(JMX_MANAGER_SSL_TRUSTSTORE, jks.getCanonicalPath());
+ securityProps.setProperty(JMX_MANAGER_SSL_TRUSTSTORE_PASSWORD, "password");
+
+ setUpLocatorAndConnect(securityProps);
+ }
+
+ public void setUpLocatorAndConnect(Properties securityProps) throws Exception{
+ // set up locator with cluster-ssl-*
+ int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(2);
+ int locatorPort = ports[0];
+ int jmxPort = ports[1];
+
+ locator.invoke(()->{
+ Properties props = new Properties();
+ props.setProperty(MCAST_PORT, "0");
+ props.put(JMX_MANAGER, "true");
+ props.put(JMX_MANAGER_START, "true");
+ props.put(JMX_MANAGER_PORT, jmxPort+"");
+ props.putAll(securityProps);
+ Locator.startLocatorAndDS(locatorPort, folder.newFile("locator.log"), props);
+ });
+
+ // saving the securityProps to a file
+ OutputStream out = new FileOutputStream(securityPropsFile);
+ securityProps.store(out, "");
+
+ // run gfsh connect command in this vm
+ CliUtil.isGfshVM = true;
+ String shellId = getClass().getSimpleName();
+ HeadlessGfsh gfsh = new HeadlessGfsh(shellId, 30, folder.newFolder("gfsh_files").getCanonicalPath());
+
+ // connect to the locator with the saved property file
+ final CommandStringBuilder command = new CommandStringBuilder(CliStrings.CONNECT);
+ command.addOption(CliStrings.CONNECT__LOCATOR, "localhost[" + locatorPort + "]");
+ command.addOption(CliStrings.CONNECT__SECURITY_PROPERTIES, securityPropsFile.getCanonicalPath());
+
+ gfsh.executeCommand(command.toString());
+ CommandResult result = (CommandResult)gfsh.getResult();
+ assertEquals(result.getStatus(), Status.OK);
+ assertTrue(result.getContent().toString().contains("Successfully connected to"));
+ }
+
+}