It comes from scylladb/cassandra-stress#30.
Time to time it can stuck waiting for DefaultResultSetFuture to be released:
"Thread-2" prio=5 Id=59 WAITING on com.datastax.driver.core.DefaultResultSetFuture@2ad5ebfd
at [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
- waiting on com.datastax.driver.core.DefaultResultSetFuture@2ad5ebfd
at [email protected]/java.util.concurrent.locks.LockSupport.park(Unknown Source)
at app//com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:561)
at app//com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:247)
at app//com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:308)
at app//com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:58)
at app//org.apache.cassandra.stress.util.JavaDriverClient.executePrepared(JavaDriverClient.java:247)
at app//org.apache.cassandra.stress.operations.predefined.CqlOperation$JavaDriverWrapper.execute(CqlOperation.java:308)
It means that there is a bug in ReleaseHandler or in DefaultResultSetFuture that leaves DefaultResultSetFuture without set or setException called on it.
As result getUninterruptibly waits for it forever.
to go forward we need to do the following:
- Check
ReleaseHandler and DefaultResultSetFuture to make sure every case ends up in set or setException
- Find a way for
AbstractSession.execute(Statement statement) to have timeout on getUninterruptibly.
It comes from scylladb/cassandra-stress#30.
Time to time it can stuck waiting for
DefaultResultSetFutureto be released:It means that there is a bug in
ReleaseHandleror inDefaultResultSetFuturethat leavesDefaultResultSetFuturewithoutsetorsetExceptioncalled on it.As result
getUninterruptiblywaits for it forever.to go forward we need to do the following:
ReleaseHandlerandDefaultResultSetFutureto make sure every case ends up insetorsetExceptionAbstractSession.execute(Statement statement)to have timeout ongetUninterruptibly.