diff --git a/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java b/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java index 561f258c0b8..5da98d1cdf5 100644 --- a/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java +++ b/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java @@ -188,31 +188,33 @@ public final class RamUsageTester { */ @SuppressForbidden(reason = "We need to access private fields of measured objects.") private static ClassCache createCacheEntry(final Class clazz) { - ClassCache cachedInfo; - long shallowInstanceSize = RamUsageEstimator.NUM_BYTES_OBJECT_HEADER; - final ArrayList referenceFields = new ArrayList<>(32); - for (Class c = clazz; c != null; c = c.getSuperclass()) { - if (c == Class.class) { - // prevent inspection of Class' fields, throws SecurityException in Java 9! - continue; - } - final Field[] fields = c.getDeclaredFields(); - for (final Field f : fields) { - if (!Modifier.isStatic(f.getModifiers())) { - shallowInstanceSize = RamUsageEstimator.adjustForField(shallowInstanceSize, f); - - if (!f.getType().isPrimitive()) { - final PrivilegedAction act = () -> { f.setAccessible(true); return f; }; - referenceFields.add(AccessController.doPrivileged(act)); + return AccessController.doPrivileged((PrivilegedAction) () -> { + ClassCache cachedInfo; + long shallowInstanceSize = RamUsageEstimator.NUM_BYTES_OBJECT_HEADER; + final ArrayList referenceFields = new ArrayList<>(32); + for (Class c = clazz; c != null; c = c.getSuperclass()) { + if (c == Class.class) { + // prevent inspection of Class' fields, throws SecurityException in Java 9! + continue; + } + final Field[] fields = c.getDeclaredFields(); + for (final Field f : fields) { + if (!Modifier.isStatic(f.getModifiers())) { + shallowInstanceSize = RamUsageEstimator.adjustForField(shallowInstanceSize, f); + + if (!f.getType().isPrimitive()) { + f.setAccessible(true); + referenceFields.add(f); + } } } } - } - - cachedInfo = new ClassCache( - RamUsageEstimator.alignObjectSize(shallowInstanceSize), - referenceFields.toArray(new Field[referenceFields.size()])); - return cachedInfo; + + cachedInfo = new ClassCache( + RamUsageEstimator.alignObjectSize(shallowInstanceSize), + referenceFields.toArray(new Field[referenceFields.size()])); + return cachedInfo; + }); } }