jsevellec / cassandra-unit

Utility tool to load Data into Cassandra to help you writing good isolated JUnit Test into your application
GNU Lesser General Public License v3.0
425 stars 0 forks source link

CU hangs on CommitLog creation with Java 17 - Update cassandra-all to 4.0.1 to support Java 17 #332

Open miikeat opened 2 years ago

miikeat commented 2 years ago

When I try to run cassandra-unit in java17 it hangs in AbrstactCommitLogSegmentManager upon calling create segment. After some digging I assume cassandra-all 3.1.1 does not support Java 17. I tried to update the dependency but the yaml files aren't compatible.

I would be really nice to use this library! Are there any plans to switch cassandra-all to V4?

markkolich commented 1 year ago

Same problem here – cassandra-unit:4.3.1.0 on Java 17 hangs at:

"main" #1 prio=5 os_prio=31 cpu=1671.37ms elapsed=871.08s tid=0x00007fc89c015200 nid=0x1403 waiting on condition  [0x0000700008945000]
   java.lang.Thread.State: WAITING (parking)
    at jdk.internal.misc.Unsafe.park(java.base@17.0.5/Native Method)
    at java.util.concurrent.locks.LockSupport.park(java.base@17.0.5/LockSupport.java:341)
    at org.apache.cassandra.utils.concurrent.WaitQueue$AbstractSignal.awaitUninterruptibly(WaitQueue.java:280)
    at org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.awaitAvailableSegment(AbstractCommitLogSegmentManager.java:262)
    at org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.advanceAllocatingFrom(AbstractCommitLogSegmentManager.java:236)
    at org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.start(AbstractCommitLogSegmentManager.java:153)
    at org.apache.cassandra.db.commitlog.CommitLog.start(CommitLog.java:110)
    at org.apache.cassandra.db.commitlog.CommitLog.construct(CommitLog.java:83)
    at org.apache.cassandra.db.commitlog.CommitLog.<clinit>(CommitLog.java:64)
    at org.cassandraunit.utils.EmbeddedCassandraServerHelper.cleanupAndLeaveDirs(EmbeddedCassandraServerHelper.java:338)
    at org.cassandraunit.utils.EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.java:147)
    at org.cassandraunit.utils.EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.java:108)
    at org.cassandraunit.utils.EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.java:88)
    at org.cassandraunit.utils.EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.java:80)
    at org.cassandraunit.utils.EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.java:76)
    at ***.***.CassandraUnitConnection.createCassandraUnitSession(CassandraUnitConnection.java:61)

Works fine on Java 11.

Haven't yet found a way around this.

munepom commented 1 year ago

I'm in trouble too... 😢

munepom commented 1 year ago

Apparently it is better to use Testcontainer. https://www.testcontainers.org/