[
https://issues.apache.org/jira/browse/SOLR-8874?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Hoss Man updated SOLR-8874:
---------------------------
Fix Version/s: master (7.0)
Manually correcting fixVersion per Step #S5 of LUCENE-7271
> 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
> Fix For: 6.0, 6.1, master (7.0)
>
> 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: [email protected]
For additional commands, e-mail: [email protected]