You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2016/03/19 14:54:33 UTC

[jira] [Commented] (SOLR-8874) Add fixes and workaround for Java 9 Jigsaw (Module System) to Solr tests

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

ASF subversion and git services commented on SOLR-8874:
-------------------------------------------------------

Commit f93f90ca1b22d67d738cbd238ef44c292dd82274 in lucene-solr's branch refs/heads/master from [~thetaphi]
[ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=f93f90c ]

SOLR-8874: Make Solr tests work with Java 9 Jigsaw


> Add fixes and workaround for Java 9 Jigsaw (Module System) to Solr tests
> ------------------------------------------------------------------------
>
>                 Key: SOLR-8874
>                 URL: https://issues.apache.org/jira/browse/SOLR-8874
>             Project: Solr
>          Issue Type: Test
>          Components: Tests
>    Affects Versions: 6.0
>            Reporter: Uwe Schindler
>            Assignee: Uwe Schindler
>            Priority: Critical
>              Labels: Java9
>         Attachments: SOLR-8874.patch, SOLR-8874.patch, SOLR-8874.patch, SOLR-8874.patch
>
>
> We now have one more week to prepare our build for Java 9 Jigsaw. The next Java 9 EA build will now contain the new Java 9 module system. From that time on, it is no longer possible to test Java 9 unless we fix remaining bugs. Currently Solr does not pass at all, because almost every test fails because the RAMUsageEstimator tries to look into objects in static field where the internals were hidden by Java 9:
> {noformat}
>    [junit4] ERROR   0.00s | SolrRequestParserTest (suite) <<<
>    [junit4]    > Throwable #1: java.lang.IllegalStateException: Unable to access 'private final sun.nio.fs.WindowsFileSystem sun.nio.fs
> .WindowsPath.fs' to estimate memory usage
>    [junit4]    >        at __randomizedtesting.SeedInfo.seed([C6C2FAD07A66283B]:0)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.rules.RamUsageEstimator.createCacheEntry(RamUsageEstimator.java:602)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.rules.RamUsageEstimator.measureSizeOf(RamUsageEstimator.java:545)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.rules.RamUsageEstimator.sizeOfAll(RamUsageEstimator.java:387)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.rules.StaticFieldsInvariantRule$1.afterAlways(StaticFieldsInvariantRule.j
> ava:127)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:43)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>    [junit4]    >        at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
>    [junit4]    >        at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
>    [junit4]    >        at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
>    [junit4]    >        at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:367)
>    [junit4]    >        at java.lang.Thread.run(java.base@9-ea/Thread.java:804)
>    [junit4]    > Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make member of class sun.nio.fs.WindowsPath access
> ible:  module java.base does not export sun.nio.fs to unnamed module @436813f3
>    [junit4]    >        at sun.reflect.Reflection.throwInaccessibleObjectException(java.base@9-ea/Reflection.java:420)
>    [junit4]    >        at java.lang.reflect.AccessibleObject.checkCanSetAccessible(java.base@9-ea/AccessibleObject.java:174)
>    [junit4]    >        at java.lang.reflect.Field.checkCanSetAccessible(java.base@9-ea/Field.java:170)
>    [junit4]    >        at java.lang.reflect.Field.setAccessible(java.base@9-ea/Field.java:164)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.rules.RamUsageEstimator$3.run(RamUsageEstimator.java:597)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.rules.RamUsageEstimator$3.run(RamUsageEstimator.java:594)
>    [junit4]    >        at java.security.AccessController.doPrivileged(java.base@9-ea/Native Method)
>    [junit4]    >        at com.carrotsearch.randomizedtesting.rules.RamUsageEstimator.createCacheEntry(RamUsageEstimator.java:594)
>    [junit4]    >        ... 13 more
>    [junit4] Completed [1/1 (1!)] in 8.46s, 12 tests, 1 error <<< FAILURES!
> {noformat}
> I have 2 suggestions:
> - for now disable the static heap usage checks for Java 9 (how? See below!)
> - fix the problems! Mainly we have to ensure that *all* static, non-final fields in tests pointing to Java obects are nulled on tear down (@AfterClass).
> I have no idea how to do the disabling conditionally. Maybe Dawid Weiss can give a hint.
> In addition, almost every Hadoop test fails with Java 9 module system! Unless Hadoop fixes this and we have updated libs, our only chance is to disable all hadoop related stuff with Java 9 preview builds - sorry. I'd like to add a new Test annotation {{@DisableWithJava9Jigsaw}}, which disables the test if running under Java 9 Jigsaw.



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

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