diff --git a/core-signatures.txt b/core-signatures.txt index fefd82739051c..88f8726db10e5 100644 --- a/core-signatures.txt +++ b/core-signatures.txt @@ -17,3 +17,6 @@ java.util.Collections#sort(java.util.List) java.util.Collections#sort(java.util.List,java.util.Comparator) java.io.StringReader#(java.lang.String) @ Use FastStringReader instead + +org.apache.lucene.util.RamUsageEstimator#sizeOf(java.lang.Object) @ This can be a perfromance trap + diff --git a/pom.xml b/pom.xml index 299908814e825..fe866cbbcf5e9 100644 --- a/pom.xml +++ b/pom.xml @@ -982,6 +982,7 @@ org/elasticsearch/plugins/PluginManager.class org/elasticsearch/bootstrap/Bootstrap.class org/elasticsearch/Version.class + org/elasticsearch/index/percolator/stats/ShardPercolateService$RamEstimator.class org/elasticsearch/common/util/UnsafeUtils.class diff --git a/src/main/java/org/elasticsearch/index/percolator/stats/ShardPercolateService.java b/src/main/java/org/elasticsearch/index/percolator/stats/ShardPercolateService.java index 0d00718741624..a6b30f0f4db2b 100644 --- a/src/main/java/org/elasticsearch/index/percolator/stats/ShardPercolateService.java +++ b/src/main/java/org/elasticsearch/index/percolator/stats/ShardPercolateService.java @@ -86,8 +86,16 @@ public PercolateStats stats() { private static long computeSizeInMemory(HashedBytesRef id, Query query) { long size = (3 * RamUsageEstimator.NUM_BYTES_INT) + RamUsageEstimator.NUM_BYTES_OBJECT_REF + RamUsageEstimator.NUM_BYTES_OBJECT_HEADER + id.bytes.bytes.length; - size += RamUsageEstimator.sizeOf(query); + size += RamEstimator.sizeOf(query); return size; } + private static final class RamEstimator { + // we move this into it's own class to exclude it from the forbidden API checks + // it's fine to use here! + static long sizeOf(Query query) { + return RamUsageEstimator.sizeOf(query); + } + } + }