[jira] [Comment Edited] (CASSANDRA-16002) jvm upgrade dtests fail on java 11 caused by bad initialization order of DatabaseDescriptor and FileUtils

2020-07-30 Thread David Capwell (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17168291#comment-17168291
 ] 

David Capwell edited comment on CASSANDRA-16002 at 7/30/20, 11:19 PM:
--

To help with review, the following commands can be run locally

{code}
setjdk 8
unset CASSANDRA_USE_JDK11
for v in 2.2 3.0 3.11 trunk; do 
  cd ../cassandra-$v
  ant realclean 
  ant jar dtest-jar
  ant generate-idea-files
done
echo ../cassandra-{3.0,3.11,trunk}/build/ | xargs -n1 cp -v 
../cassandra-2.2/build/dtest-2.2*.jar
echo ../cassandra-{3.11,trunk}/build/ | xargs -n1 cp -v 
../cassandra-3.0/build/dtest-3.0*.jar
echo ../cassandra-trunk/build/ | xargs -n1 cp -v 
../cassandra-3.11/build/dtest-3.11*.jar

cd  ../cassandra-trunk 

setjdk 11

CASSANDRA_USE_JDK11=true ant testclasslist -Dtest.classlistfile=<( echo 
"org/apache/cassandra/distributed/upgrade/UpgradeTest.java" ) 
-Dtest.classlistprefix=distributed 
{code}


was (Author: dcapwell):
To help with review, the following commands can be run locally

{code}
setjdk 8
unset CASSANDRA_USE_JDK11
for v in 2.2 3.0 3.11 trunk; do 
  cd ../cassandra-$v
  ant realclean 
  ant jar dtest-jar
  ant generate-idea-files
done
echo ../cassandra-{3.0,3.11,trunk}/build/ | xargs -n1 cp -v 
../cassandra-2.2/build/dtest-2.2*.jar
echo ../cassandra-{3.11,trunk}/build/ | xargs -n1 cp -v 
../cassandra-3.0/build/dtest-3.0*.jar
echo ../cassandra-trunk/build/ | xargs -n1 cp -v 
../cassandra-3.11/build/dtest-3.11*.jar
cd  ../cassandra-trunk 

setjdk 11
ant testclasslist -Dtest.classlistfile=<( echo 
"org/apache/cassandra/distributed/upgrade/UpgradeTest.java" ) 
-Dtest.classlistprefix=distributed 
{code}

> jvm upgrade dtests fail on java 11 caused by bad initialization order of 
> DatabaseDescriptor and FileUtils
> -
>
> Key: CASSANDRA-16002
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16002
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/dtest
>Reporter: David Capwell
>Assignee: David Capwell
>Priority: Normal
> Fix For: 3.0.x, 3.11.x, 4.0-beta
>
>
> In FileUtils we check to see if we have access to some classes (specifically 
> to set org.apache.cassandra.io.util.FileUtils#isCleanerAvailable), which can 
> fail in java 11.  This is fine with CassandraDaemon as it will just log the 
> failure, but in in-jvm dtests this can fail to startup an instance with the 
> following
> {code}
> java.lang.RuntimeException: java.lang.RuntimeException: 
> java.lang.AssertionError: network topology must be assigned before using 
> snitch
>   at 
> org.apache.cassandra.distributed.impl.IsolatedExecutor.waitOn(IsolatedExecutor.java:209)
>   at 
> org.apache.cassandra.distributed.impl.IsolatedExecutor.lambda$sync$7(IsolatedExecutor.java:112)
>   at 
> org.apache.cassandra.distributed.impl.Instance.startup(Instance.java:592)
>   at 
> org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:209)
>   at 
> org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:200)
>   at 
> org.apache.cassandra.distributed.upgrade.UpgradeTestBase$TestCase.run(UpgradeTestBase.java:179)
>   at 
> org.apache.cassandra.distributed.upgrade.UpgradeTest.upgradeTest(UpgradeTest.java:50)
>   at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> Caused by: java.lang.RuntimeException: java.lang.AssertionError: network 
> topology must be assigned before using snitch
>   at 
> org.apache.cassandra.distributed.impl.Instance.lambda$startup$7(Instance.java:590)
>   at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>   at 
> org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:83)
>   at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.lang.AssertionError: network topology must be assigned before 
> using snitch
>   at 
> org.apache.cassandra.distributed.impl.DistributedTestSnitch.getDatacenter(DistributedTestSnitch.java:90)
>   at 
> 

[jira] [Comment Edited] (CASSANDRA-16002) jvm upgrade dtests fail on java 11 caused by bad initialization order of DatabaseDescriptor and FileUtils

2020-07-30 Thread Jordan West (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17168182#comment-17168182
 ] 

Jordan West edited comment on CASSANDRA-16002 at 7/30/20, 7:51 PM:
---

+1 LGTM. For 3.0/3.11 moving the logging line above the stability inspector 
call makes sense because the JVM can be killed before reaching the log line. 
For trunk, logging the exceptions for additional information also makes sense. 
So does registering the error handler after initializing {{DatabaseDescriptor}} 
in all cases.


was (Author: jrwest):
+1 LGTM. For 3.0/3.11 moving the logging line above the stability inspector 
call makes sense because the JVM can be killed before reaching the log line. 
For trunk, logging the exceptions for additional information also makes sense. 

> jvm upgrade dtests fail on java 11 caused by bad initialization order of 
> DatabaseDescriptor and FileUtils
> -
>
> Key: CASSANDRA-16002
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16002
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/dtest
>Reporter: David Capwell
>Assignee: David Capwell
>Priority: Normal
> Fix For: 3.0.x, 3.11.x, 4.0-beta
>
>
> In FileUtils we check to see if we have access to some classes (specifically 
> to set org.apache.cassandra.io.util.FileUtils#isCleanerAvailable), which can 
> fail in java 11.  This is fine with CassandraDaemon as it will just log the 
> failure, but in in-jvm dtests this can fail to startup an instance with the 
> following
> {code}
> java.lang.RuntimeException: java.lang.RuntimeException: 
> java.lang.AssertionError: network topology must be assigned before using 
> snitch
>   at 
> org.apache.cassandra.distributed.impl.IsolatedExecutor.waitOn(IsolatedExecutor.java:209)
>   at 
> org.apache.cassandra.distributed.impl.IsolatedExecutor.lambda$sync$7(IsolatedExecutor.java:112)
>   at 
> org.apache.cassandra.distributed.impl.Instance.startup(Instance.java:592)
>   at 
> org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:209)
>   at 
> org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:200)
>   at 
> org.apache.cassandra.distributed.upgrade.UpgradeTestBase$TestCase.run(UpgradeTestBase.java:179)
>   at 
> org.apache.cassandra.distributed.upgrade.UpgradeTest.upgradeTest(UpgradeTest.java:50)
>   at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> Caused by: java.lang.RuntimeException: java.lang.AssertionError: network 
> topology must be assigned before using snitch
>   at 
> org.apache.cassandra.distributed.impl.Instance.lambda$startup$7(Instance.java:590)
>   at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>   at 
> org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:83)
>   at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.lang.AssertionError: network topology must be assigned before 
> using snitch
>   at 
> org.apache.cassandra.distributed.impl.DistributedTestSnitch.getDatacenter(DistributedTestSnitch.java:90)
>   at 
> org.apache.cassandra.distributed.impl.DistributedTestSnitch.getDatacenter(DistributedTestSnitch.java:85)
>   at 
> org.apache.cassandra.locator.DynamicEndpointSnitch.getDatacenter(DynamicEndpointSnitch.java:118)
>   at 
> org.apache.cassandra.config.DatabaseDescriptor.applyConfig(DatabaseDescriptor.java:488)
>   at 
> org.apache.cassandra.config.DatabaseDescriptor.(DatabaseDescriptor.java:137)
>   at 
> org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector.java:102)
>   at 
> org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector.java:60)
>   at org.apache.cassandra.io.util.FileUtils.(FileUtils.java:78)
>   at 
> org.apache.cassandra.distributed.impl.Instance.lambda$startup$7(Instance.java:509)
> {code}
> The exception isn’t clear, but what is happening is the following
> {code}
> static
> {
> boolean canClean = false;
> try
> {
> ByteBuffer 

[jira] [Comment Edited] (CASSANDRA-16002) jvm upgrade dtests fail on java 11 caused by bad initialization order of DatabaseDescriptor and FileUtils

2020-07-30 Thread David Capwell (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17168142#comment-17168142
 ] 

David Capwell edited comment on CASSANDRA-16002 at 7/30/20, 6:55 PM:
-

The underline exception is

{code}
ERROR [node1_isolatedExecutor:1] node1 2020-07-30 11:44:38,115 Cannot 
initialize un-mmaper.  (Are you using a non-Oracle JVM?)  Compacted data files 
will not be removed promptly.  Consider using an Oracle JVM or using standard 
disk access mode
java.lang.NoSuchMethodError: sun.nio.ch.DirectBuffer.cleaner()Lsun/misc/Cleaner;
  at org.apache.cassandra.io.util.FileUtils.(FileUtils.java:73) 
~[dtest-3.0.22.jar:na]
  at 
org.apache.cassandra.distributed.impl.Instance.lambda$startup$7(Instance.java:509)
 ~[dtest-3.0.22.jar:na]
  at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
 ~[na:na]
  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 ~[na:na]
  at 
org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:83)
 ~[dtest-3.0.22.jar:na]
  at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
{code}

As of java 11, the cleaner is now jdk.internal.ref.Cleaner


was (Author: dcapwell):
The underline exception is

{code}
ERROR [node1_isolatedExecutor:1] node1 2020-07-30 11:44:38,115 Cannot 
initialize un-mmaper.  (Are you using a non-Oracle JVM?)  Compacted data files 
will not be removed promptly.  Consider using an Oracle JVM or using standard 
disk access mode
java.lang.NoSuchMethodError: sun.nio.ch.DirectBuffer.cleaner()Lsun/misc/Cleaner;
  at org.apache.cassandra.io.util.FileUtils.(FileUtils.java:73) 
~[dtest-3.0.22.jar:na]
  at 
org.apache.cassandra.distributed.impl.Instance.lambda$startup$7(Instance.java:509)
 ~[dtest-3.0.22.jar:na]
  at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
 ~[na:na]
  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 ~[na:na]
  at 
org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:83)
 ~[dtest-3.0.22.jar:na]
  at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
{code}

As of java 11, the cleaner is now jdk.internal.ref.Cleaner

So, in order to get the upgrade tests working again, we will need to backport 
CASSANDRA-9608 as well

> jvm upgrade dtests fail on java 11 caused by bad initialization order of 
> DatabaseDescriptor and FileUtils
> -
>
> Key: CASSANDRA-16002
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16002
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/dtest
>Reporter: David Capwell
>Assignee: David Capwell
>Priority: Normal
> Fix For: 3.0.x, 3.11.x, 4.0-beta
>
>
> In FileUtils we check to see if we have access to some classes (specifically 
> to set org.apache.cassandra.io.util.FileUtils#isCleanerAvailable), which can 
> fail in java 11.  This is fine with CassandraDaemon as it will just log the 
> failure, but in in-jvm dtests this can fail to startup an instance with the 
> following
> {code}
> java.lang.RuntimeException: java.lang.RuntimeException: 
> java.lang.AssertionError: network topology must be assigned before using 
> snitch
>   at 
> org.apache.cassandra.distributed.impl.IsolatedExecutor.waitOn(IsolatedExecutor.java:209)
>   at 
> org.apache.cassandra.distributed.impl.IsolatedExecutor.lambda$sync$7(IsolatedExecutor.java:112)
>   at 
> org.apache.cassandra.distributed.impl.Instance.startup(Instance.java:592)
>   at 
> org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:209)
>   at 
> org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:200)
>   at 
> org.apache.cassandra.distributed.upgrade.UpgradeTestBase$TestCase.run(UpgradeTestBase.java:179)
>   at 
> org.apache.cassandra.distributed.upgrade.UpgradeTest.upgradeTest(UpgradeTest.java:50)
>   at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> 

[jira] [Comment Edited] (CASSANDRA-16002) jvm upgrade dtests fail on java 11 caused by bad initialization order of DatabaseDescriptor and FileUtils

2020-07-30 Thread David Capwell (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17168142#comment-17168142
 ] 

David Capwell edited comment on CASSANDRA-16002 at 7/30/20, 6:50 PM:
-

The underline exception is

{code}
ERROR [node1_isolatedExecutor:1] node1 2020-07-30 11:44:38,115 Cannot 
initialize un-mmaper.  (Are you using a non-Oracle JVM?)  Compacted data files 
will not be removed promptly.  Consider using an Oracle JVM or using standard 
disk access mode
java.lang.NoSuchMethodError: sun.nio.ch.DirectBuffer.cleaner()Lsun/misc/Cleaner;
  at org.apache.cassandra.io.util.FileUtils.(FileUtils.java:73) 
~[dtest-3.0.22.jar:na]
  at 
org.apache.cassandra.distributed.impl.Instance.lambda$startup$7(Instance.java:509)
 ~[dtest-3.0.22.jar:na]
  at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
 ~[na:na]
  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 ~[na:na]
  at 
org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:83)
 ~[dtest-3.0.22.jar:na]
  at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
{code}

As of java 11, the cleaner is now jdk.internal.ref.Cleaner

So, in order to get the upgrade tests working again, we will need to backport 
CASSANDRA-9608 as well


was (Author: dcapwell):
The underline exception is

{code}
ERROR [node1_isolatedExecutor:1] node1 2020-07-30 11:44:38,115 Cannot 
initialize un-mmaper.  (Are you using a non-Oracle JVM?)  Compacted data files 
will not be removed promptly.  Consider using an Oracle JVM or using standard 
disk access mode
java.lang.NoSuchMethodError: sun.nio.ch.DirectBuffer.cleaner()Lsun/misc/Cleaner;
  at org.apache.cassandra.io.util.FileUtils.(FileUtils.java:73) 
~[dtest-3.0.22.jar:na]
  at 
org.apache.cassandra.distributed.impl.Instance.lambda$startup$7(Instance.java:509)
 ~[dtest-3.0.22.jar:na]
  at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
 ~[na:na]
  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 ~[na:na]
  at 
org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:83)
 ~[dtest-3.0.22.jar:na]
  at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
{code}

As of java 11, the cleaner is now jdk.internal.ref.Cleaner

> jvm upgrade dtests fail on java 11 caused by bad initialization order of 
> DatabaseDescriptor and FileUtils
> -
>
> Key: CASSANDRA-16002
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16002
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/dtest
>Reporter: David Capwell
>Assignee: David Capwell
>Priority: Normal
> Fix For: 3.0.x, 3.11.x, 4.0-beta
>
>
> In FileUtils we check to see if we have access to some classes (specifically 
> to set org.apache.cassandra.io.util.FileUtils#isCleanerAvailable), which can 
> fail in java 11.  This is fine with CassandraDaemon as it will just log the 
> failure, but in in-jvm dtests this can fail to startup an instance with the 
> following
> {code}
> java.lang.RuntimeException: java.lang.RuntimeException: 
> java.lang.AssertionError: network topology must be assigned before using 
> snitch
>   at 
> org.apache.cassandra.distributed.impl.IsolatedExecutor.waitOn(IsolatedExecutor.java:209)
>   at 
> org.apache.cassandra.distributed.impl.IsolatedExecutor.lambda$sync$7(IsolatedExecutor.java:112)
>   at 
> org.apache.cassandra.distributed.impl.Instance.startup(Instance.java:592)
>   at 
> org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:209)
>   at 
> org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:200)
>   at 
> org.apache.cassandra.distributed.upgrade.UpgradeTestBase$TestCase.run(UpgradeTestBase.java:179)
>   at 
> org.apache.cassandra.distributed.upgrade.UpgradeTest.upgradeTest(UpgradeTest.java:50)
>   at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> 

[jira] [Comment Edited] (CASSANDRA-16002) jvm upgrade dtests fail on java 11 caused by bad initialization order of DatabaseDescriptor and FileUtils

2020-07-30 Thread David Capwell (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17168142#comment-17168142
 ] 

David Capwell edited comment on CASSANDRA-16002 at 7/30/20, 6:47 PM:
-

The underline exception is

{code}
ERROR [node1_isolatedExecutor:1] node1 2020-07-30 11:44:38,115 Cannot 
initialize un-mmaper.  (Are you using a non-Oracle JVM?)  Compacted data files 
will not be removed promptly.  Consider using an Oracle JVM or using standard 
disk access mode
java.lang.NoSuchMethodError: sun.nio.ch.DirectBuffer.cleaner()Lsun/misc/Cleaner;
  at org.apache.cassandra.io.util.FileUtils.(FileUtils.java:73) 
~[dtest-3.0.22.jar:na]
  at 
org.apache.cassandra.distributed.impl.Instance.lambda$startup$7(Instance.java:509)
 ~[dtest-3.0.22.jar:na]
  at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
 ~[na:na]
  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 ~[na:na]
  at 
org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:83)
 ~[dtest-3.0.22.jar:na]
  at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
{code}

As of java 11, the cleaner is now jdk.internal.ref.Cleaner


was (Author: dcapwell):
The underline exception is

{code}
ERROR [node1_isolatedExecutor:1] node1 2020-07-30 11:44:38,115 Cannot 
initialize un-mmaper.  (Are you using a non-Oracle JVM?)  Compacted data files 
will not be removed promptly.  Consider using an Oracle JVM or using standard 
disk access mode
java.lang.NoSuchMethodError: sun.nio.ch.DirectBuffer.cleaner()Lsun/misc/Cleaner;
  at org.apache.cassandra.io.util.FileUtils.(FileUtils.java:73) 
~[dtest-3.0.22.jar:na]
  at 
org.apache.cassandra.distributed.impl.Instance.lambda$startup$7(Instance.java:509)
 ~[dtest-3.0.22.jar:na]
  at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
 ~[na:na]
  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 ~[na:na]
  at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 ~[na:na]
  at 
org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:83)
 ~[dtest-3.0.22.jar:na]
  at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
{code}

> jvm upgrade dtests fail on java 11 caused by bad initialization order of 
> DatabaseDescriptor and FileUtils
> -
>
> Key: CASSANDRA-16002
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16002
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/dtest
>Reporter: David Capwell
>Assignee: David Capwell
>Priority: Normal
> Fix For: 3.0.x, 3.11.x, 4.0-beta
>
>
> In FileUtils we check to see if we have access to some classes (specifically 
> to set org.apache.cassandra.io.util.FileUtils#isCleanerAvailable), which can 
> fail in java 11.  This is fine with CassandraDaemon as it will just log the 
> failure, but in in-jvm dtests this can fail to startup an instance with the 
> following
> {code}
> java.lang.RuntimeException: java.lang.RuntimeException: 
> java.lang.AssertionError: network topology must be assigned before using 
> snitch
>   at 
> org.apache.cassandra.distributed.impl.IsolatedExecutor.waitOn(IsolatedExecutor.java:209)
>   at 
> org.apache.cassandra.distributed.impl.IsolatedExecutor.lambda$sync$7(IsolatedExecutor.java:112)
>   at 
> org.apache.cassandra.distributed.impl.Instance.startup(Instance.java:592)
>   at 
> org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:209)
>   at 
> org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:200)
>   at 
> org.apache.cassandra.distributed.upgrade.UpgradeTestBase$TestCase.run(UpgradeTestBase.java:179)
>   at 
> org.apache.cassandra.distributed.upgrade.UpgradeTest.upgradeTest(UpgradeTest.java:50)
>   at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> Caused by: java.lang.RuntimeException: java.lang.AssertionError: network 
> topology must be assigned before using snitch
>   at 
> 

[jira] [Comment Edited] (CASSANDRA-16002) jvm upgrade dtests fail on java 11 caused by bad initialization order of DatabaseDescriptor and FileUtils

2020-07-30 Thread David Capwell (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17168141#comment-17168141
 ] 

David Capwell edited comment on CASSANDRA-16002 at 7/30/20, 6:45 PM:
-

OSS CI doesn't do upgrade tests with java 11, so need to replicate by hand

{code}
ant testclasslist -Dtest.classlistfile=<( echo 
"org/apache/cassandra/distributed/upgrade/UpgradeTest.java" ) 
-Dtest.classlistprefix=distributed
...
[junit-timeout] Testcase: 
upgradeTest(org.apache.cassandra.distributed.upgrade.UpgradeTest):Caused an 
ERROR
[junit-timeout] java.lang.RuntimeException: java.lang.AssertionError: network 
topology must be assigned before using snitch
[junit-timeout] java.lang.RuntimeException: java.lang.RuntimeException: 
java.lang.AssertionError: network topology must be assigned before using snitch
[junit-timeout] at 
org.apache.cassandra.distributed.impl.IsolatedExecutor.waitOn(IsolatedExecutor.java:209)
[junit-timeout] at 
org.apache.cassandra.distributed.impl.IsolatedExecutor.lambda$sync$7(IsolatedExecutor.java:112)
[junit-timeout] at 
org.apache.cassandra.distributed.impl.Instance.startup(Instance.java:592)
[junit-timeout] at 
org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:209)
[junit-timeout] at 
org.apache.cassandra.distributed.impl.AbstractCluster$Wrapper.startup(AbstractCluster.java:200)
[junit-timeout] at 
org.apache.cassandra.distributed.upgrade.UpgradeTestBase$TestCase.run(UpgradeTestBase.java:179)
[junit-timeout] at 
org.apache.cassandra.distributed.upgrade.UpgradeTest.upgradeTest(UpgradeTest.java:50)
[junit-timeout] at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[junit-timeout] at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[junit-timeout] at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[junit-timeout] Caused by: java.lang.RuntimeException: 
java.lang.AssertionError: network topology must be assigned before using snitch
[junit-timeout] at 
org.apache.cassandra.distributed.impl.Instance.lambda$startup$7(Instance.java:590)
[junit-timeout] at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[junit-timeout] at 
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[junit-timeout] at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[junit-timeout] at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[junit-timeout] at 
org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:83)
[junit-timeout] at java.base/java.lang.Thread.run(Thread.java:834)
[junit-timeout] Caused by: java.lang.AssertionError: network topology must be 
assigned before using snitch
[junit-timeout] at 
org.apache.cassandra.distributed.impl.DistributedTestSnitch.getDatacenter(DistributedTestSnitch.java:90)
[junit-timeout] at 
org.apache.cassandra.distributed.impl.DistributedTestSnitch.getDatacenter(DistributedTestSnitch.java:85)
[junit-timeout] at 
org.apache.cassandra.locator.DynamicEndpointSnitch.getDatacenter(DynamicEndpointSnitch.java:118)
[junit-timeout] at 
org.apache.cassandra.config.DatabaseDescriptor.applyConfig(DatabaseDescriptor.java:488)
[junit-timeout] at 
org.apache.cassandra.config.DatabaseDescriptor.(DatabaseDescriptor.java:137)
[junit-timeout] at 
org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector.java:102)
[junit-timeout] at 
org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector.java:60)
[junit-timeout] at 
org.apache.cassandra.io.util.FileUtils.(FileUtils.java:79)
[junit-timeout] at 
org.apache.cassandra.distributed.impl.Instance.lambda$startup$7(Instance.java:509)
[junit-timeout]
[junit-timeout]
[junit-timeout] Test org.apache.cassandra.distributed.upgrade.UpgradeTest FAILED
...
{code}


was (Author: dcapwell):
OSS CI doesn't do upgrade tests with java 11, so need to replicate by hand

{code}
ant testclasslist -Dtest.classlistfile=<( echo 
"org/apache/cassandra/distributed/upgrade/UpgradeTest.java" ) 
-Dtest.classlistprefix=distributed
{code}

> jvm upgrade dtests fail on java 11 caused by bad initialization order of 
> DatabaseDescriptor and FileUtils
> -
>
> Key: CASSANDRA-16002
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16002
> Project: Cassandra
>  Issue Type: Bug
>