diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 1a85a9c5127..80b949fe11b 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -107,6 +107,8 @@ New Features * SOLR-13569: AdminUI visual indication of prod/test/dev environment (janhoy) +* SOLR-12554: Expose IndexWriterConfig's ramPerThreadHardLimitMB through solrconfig.xml (Ishan Chattopadhyaya, Munendra S N) + Bug Fixes ---------------------- diff --git a/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java b/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java index 42f893765ea..0bdfe84f073 100644 --- a/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java +++ b/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java @@ -67,6 +67,7 @@ public class SolrIndexConfig implements MapSerializable { public final int maxBufferedDocs; public final double ramBufferSizeMB; + public final int ramPerThreadHardLimitMB; public final int writeLockTimeout; public final String lockType; @@ -85,6 +86,7 @@ public class SolrIndexConfig implements MapSerializable { useCompoundFile = false; maxBufferedDocs = -1; ramBufferSizeMB = 100; + ramPerThreadHardLimitMB = -1; writeLockTimeout = -1; lockType = DirectoryFactory.LOCK_TYPE_NATIVE; mergePolicyFactoryInfo = null; @@ -130,6 +132,9 @@ public class SolrIndexConfig implements MapSerializable { maxBufferedDocs=solrConfig.getInt(prefix+"/maxBufferedDocs",def.maxBufferedDocs); ramBufferSizeMB = solrConfig.getDouble(prefix+"/ramBufferSizeMB", def.ramBufferSizeMB); + // how do we validate the value?? + ramPerThreadHardLimitMB = solrConfig.getInt(prefix+"/ramPerThreadHardLimitMB", def.ramPerThreadHardLimitMB); + writeLockTimeout=solrConfig.getInt(prefix+"/writeLockTimeout", def.writeLockTimeout); lockType=solrConfig.get(prefix+"/lockType", def.lockType); @@ -179,6 +184,7 @@ public class SolrIndexConfig implements MapSerializable { Map m = Utils.makeMap("useCompoundFile", useCompoundFile, "maxBufferedDocs", maxBufferedDocs, "ramBufferSizeMB", ramBufferSizeMB, + "ramPerThreadHardLimitMB", ramPerThreadHardLimitMB, "writeLockTimeout", writeLockTimeout, "lockType", lockType, "infoStreamEnabled", infoStream != InfoStream.NO_OUTPUT); @@ -221,6 +227,10 @@ public class SolrIndexConfig implements MapSerializable { if (ramBufferSizeMB != -1) iwc.setRAMBufferSizeMB(ramBufferSizeMB); + if (ramPerThreadHardLimitMB != -1) { + iwc.setRAMPerThreadHardLimitMB(ramPerThreadHardLimitMB); + } + iwc.setSimilarity(schema.getSimilarity()); MergePolicy mergePolicy = buildMergePolicy(core.getResourceLoader(), schema); iwc.setMergePolicy(mergePolicy); diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig.snippet.randomindexconfig.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig.snippet.randomindexconfig.xml index 8f90d26273d..20ddf96df42 100644 --- a/solr/core/src/test-files/solr/collection1/conf/solrconfig.snippet.randomindexconfig.xml +++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig.snippet.randomindexconfig.xml @@ -32,6 +32,7 @@ A solrconfig.xml snippet containing indexConfig settings for randomized testing. ${solr.tests.maxBufferedDocs} ${solr.tests.ramBufferSizeMB} + ${solr.tests.ramPerThreadHardLimitMB} diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml b/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml index fd1d94c803f..f5ffe08b554 100644 --- a/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml +++ b/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml @@ -163,6 +163,15 @@ + + + + + + + + +