From c3751801c6cbedda000c64d65395bc10c4711cb9 Mon Sep 17 00:00:00 2001 From: Robert Muir Date: Thu, 15 Oct 2015 08:47:05 -0400 Subject: [PATCH] Test that the lucene "unmap hack" is supported. Closes #14120 Squashed commit of the following: commit 556b7f5783211bd82a5d9796996e21be87b0404b Author: Robert Muir Date: Wed Oct 14 15:16:54 2015 -0400 Add bugid link commit b44aac7e9f1a97974938c17e013812ebf4c2fa76 Author: Robert Muir Date: Wed Oct 14 15:01:41 2015 -0400 Test that the lucene "unmap hack" is supported. We should know if this is not working for any configuration, otherwise resources such as address space, file handles, and even disk space become tied to Java's garbage collector. --- .../elasticsearch/common/lucene/LuceneTests.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/core/src/test/java/org/elasticsearch/common/lucene/LuceneTests.java b/core/src/test/java/org/elasticsearch/common/lucene/LuceneTests.java index 13ac6fd0a6f..2edd266af60 100644 --- a/core/src/test/java/org/elasticsearch/common/lucene/LuceneTests.java +++ b/core/src/test/java/org/elasticsearch/common/lucene/LuceneTests.java @@ -28,6 +28,7 @@ import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.MatchAllDocsQuery; import org.apache.lucene.search.TermQuery; import org.apache.lucene.store.Directory; +import org.apache.lucene.store.MMapDirectory; import org.apache.lucene.store.MockDirectoryWrapper; import org.apache.lucene.util.Version; import org.elasticsearch.test.ESTestCase; @@ -359,4 +360,16 @@ public class LuceneTests extends ESTestCase { w.close(); dir.close(); } + + /** + * Test that the "unmap hack" is detected as supported by lucene. + * This works around the following bug: https://bugs.openjdk.java.net/browse/JDK-4724038 + *

+ * While not guaranteed, current status is "Critical Internal API": http://openjdk.java.net/jeps/260 + * Additionally this checks we did not screw up the security logic around the hack. + */ + public void testMMapHackSupported() throws Exception { + // add assume's here if needed for certain platforms, but we should know if it does not work. + assertTrue(MMapDirectory.UNMAP_SUPPORTED); + } }