[ 
https://issues.apache.org/jira/browse/LUCENE-7595?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15779982#comment-15779982
 ] 

Dawid Weiss commented on LUCENE-7595:
-------------------------------------

Looks good to me overall. A few notes and ideas.

There is a separate RUE impl. inside randomized runner just for the sake of 
{{StaticFieldsInvariantRule}}... perhaps we could simply copy over this rule's 
source code to Lucene to make use of the local ram estimator -- then you'd have 
full control to tweak it as needed. Perhaps it'd also simplify the static rule 
initialization block.

{code}
+      a(String.class, v -> charArraySize(v.length())); // may not be correct 
with Java 9's compact strings!
{code}

Yup, this is overestimating based on the patch 
(https://bugs.openjdk.java.net/browse/JDK-8054307). But I think it's ok -- 
better to overestimate here and blow up early and there's no way to check which 
representation (byte or char-based) was actually chosen by the jvm. Yes, we 
could reimplement the Latin1 vs. UTF16 heuristic, but it seems like an 
overkill. :)




> RAMUsageTester in test-framework and static field checker no longer works 
> with Java 9
> -------------------------------------------------------------------------------------
>
>                 Key: LUCENE-7595
>                 URL: https://issues.apache.org/jira/browse/LUCENE-7595
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: general/test
>            Reporter: Uwe Schindler
>            Assignee: Uwe Schindler
>              Labels: Java9
>         Attachments: LUCENE-7595.patch
>
>
> Lucene/Solr tests have a special rule that records memory usage in static 
> fields before and after test, so we can detect memory leaks. This check dives 
> into JDK classes (like java.lang.String to detect their size). As Java 9 
> build 148 completely forbids setAccessible on any runtime class, we have to 
> change or disable this check:
> - As first step I will only add the rule to LTC, if we not have Java 8
> - As a second step we might investigate how to improve this
> [~rcmuir] had some ideas for the 2nd point:
> - Don't dive into classes from JDK modules and instead "estimate" the size 
> for some special cases (like Strings)
> - Disallow any static field in tests that is not final (constant) and points 
> to an Object except: Strings and native (wrapper) types.
> In addition we also have RAMUsageTester, that has similar problems and is 
> used to compare estimations of Lucene's calculations of 
> Codec/IndexWriter/IndexReader memory usage with reality. We should simply 
> disable those tests.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to