Adding a test of a put on a file region during a GII with the fixed PR
Project: http://git-wip-us.apache.org/repos/asf/geode/repo Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/a17c8555 Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/a17c8555 Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/a17c8555 Branch: refs/heads/feature/GEODE-2402 Commit: a17c8555fc1e24cf771625675e555484c5f0988c Parents: de819a3 Author: Dan Smith <[email protected]> Authored: Wed Feb 8 16:38:13 2017 -0800 Committer: Dan Smith <[email protected]> Committed: Tue Feb 14 10:57:18 2017 -0800 ---------------------------------------------------------------------- .../internal/cache/InitialImageOperation.java | 2 +- .../geode/cache/lucene/LuceneDUnitTest.java | 2 +- .../geode/cache/lucene/LuceneQueriesPRBase.java | 46 ++++++++++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/geode/blob/a17c8555/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java b/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java index 3ec8152..d0ad5db 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java @@ -3947,7 +3947,7 @@ public class InitialImageOperation { } } - public static abstract class GIITestHook implements Runnable { + public static abstract class GIITestHook implements Runnable, Serializable { final private GIITestHookType type; final private String region_name; volatile public boolean isRunning; http://git-wip-us.apache.org/repos/asf/geode/blob/a17c8555/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneDUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneDUnitTest.java index 9318b0e..78edb5c 100644 --- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneDUnitTest.java +++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneDUnitTest.java @@ -27,7 +27,7 @@ public abstract class LuceneDUnitTest extends JUnit4CacheTestCase { public void postSetUp() throws Exception { Host host = Host.getHost(0); dataStore1 = host.getVM(0); - dataStore2 = host.getVM(1); + dataStore2 = host.getVM(-1); } protected abstract void initDataStore(SerializableRunnableIF createIndex) throws Exception; http://git-wip-us.apache.org/repos/asf/geode/blob/a17c8555/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesPRBase.java ---------------------------------------------------------------------- diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesPRBase.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesPRBase.java index 931edc5..be2a754 100644 --- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesPRBase.java +++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesPRBase.java @@ -23,6 +23,13 @@ import static org.mockito.Matchers.any; import java.util.concurrent.TimeUnit; import java.util.stream.IntStream; +import org.apache.geode.distributed.internal.DistributionManager; +import org.apache.geode.distributed.internal.DistributionMessage; +import org.apache.geode.distributed.internal.DistributionMessageObserver; +import org.apache.geode.internal.cache.InitialImageOperation; +import org.apache.geode.internal.cache.InitialImageOperation.GIITestHook; +import org.apache.geode.internal.cache.InitialImageOperation.GIITestHookType; +import org.apache.geode.internal.cache.InitialImageOperation.RequestImageMessage; import org.junit.After; import org.junit.Test; @@ -63,6 +70,45 @@ public abstract class LuceneQueriesPRBase extends LuceneQueriesBase { } @Test + public void returnCorrectResultsWhenIndexUpdateHappensIntheMiddleofGII() + throws InterruptedException { + SerializableRunnableIF createIndex = () -> { + LuceneService luceneService = LuceneServiceProvider.get(getCache()); + luceneService.createIndex(INDEX_NAME, REGION_NAME, "text"); + }; + dataStore1.invoke(() -> initDataStore(createIndex)); + accessor.invoke(() -> initAccessor(createIndex)); + dataStore1.invoke(() -> LuceneTestUtilities.pauseSender(getCache())); + putEntryInEachBucket(); + + dataStore2.invoke(() -> { + InitialImageOperation.setGIITestHook( + new GIITestHook(GIITestHookType.AfterSentRequestImage, "Do puts during request") { + @Override + public void reset() { + + } + + @Override + public String getRegionName() { + return "_B__index#__region.files_0"; + } + + @Override + public void run() { + dataStore1.invoke(() -> LuceneTestUtilities.resumeSender(getCache())); + waitForFlushBeforeExecuteTextSearch(dataStore1, 30000); + } + }); + }); + + dataStore2.invoke(() -> initDataStore(createIndex)); + + assertTrue(waitForFlushBeforeExecuteTextSearch(dataStore1, 30000)); + executeTextSearch(accessor, "world", "text", NUM_BUCKETS); + } + + @Test public void returnCorrectResultsWhenMoveBucketHappensOnIndexUpdate() throws InterruptedException { final DistributedMember member2 = dataStore2.invoke(() -> getCache().getDistributedSystem().getDistributedMember());
