Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SessionAwareSemaphoreBasicTest.testNoDuplicateRelease_whenSessionExpires fails with Cannot invoke "java.lang.invoke.MethodHandle.invokeExact #26327

Closed
AleksPeychev opened this issue May 7, 2024 · 1 comment

Comments

@AleksPeychev
Copy link
Contributor

5.4.z (commit f6ba60a0ddba563c06604704a0c7ac9d6e27260c)
Failed on openj9-21: https://jenkins.hazelcast.com/view/Official%20Builds/job/Hazelcast-5.maintenance-Openj9-21/1/testReport/junit/com.hazelcast.cp.internal.datastructures.semaphore/SessionAwareSemaphoreBasicTest/testNoDuplicateRelease_whenSessionExpires/

Stacktrace:
java.lang.NullPointerException: Cannot invoke "java.lang.invoke.MethodHandle.invokeExact(java.lang.invoke.MethodHandle, java.lang.Object[])"
	at java.base/java.lang.StringConcatHelper.stringOf(StringConcatHelper.java)
	at com.hazelcast.cp.internal.datastructures.spi.blocking.AbstractBlockingService.heartbeatSession(AbstractBlockingService.java:311)
	at com.hazelcast.cp.internal.datastructures.semaphore.SemaphoreService.releasePermits(SemaphoreService.java:117)
	at com.hazelcast.cp.internal.datastructures.semaphore.operation.ReleasePermitsOp.run(ReleasePermitsOp.java:53)
	at com.hazelcast.cp.internal.NodeEngineRaftIntegration.runOperation(NodeEngineRaftIntegration.java:219)
	at com.hazelcast.cp.internal.raft.impl.RaftNodeImpl.applyLogEntry(RaftNodeImpl.java:852)
	at com.hazelcast.cp.internal.raft.impl.RaftNodeImpl.applyLogEntries(RaftNodeImpl.java:795)
	at com.hazelcast.cp.internal.raft.impl.RaftNodeImpl.commitEntries(RaftNodeImpl.java:1303)
	at com.hazelcast.cp.internal.raft.impl.RaftNodeImpl.tryAdvanceCommitIndex(RaftNodeImpl.java:1287)
	at com.hazelcast.cp.internal.raft.impl.handler.AppendSuccessResponseHandlerTask.handleResponse(AppendSuccessResponseHandlerTask.java:71)
	at com.hazelcast.cp.internal.raft.impl.handler.AbstractResponseHandlerTask.innerRun(AbstractResponseHandlerTask.java:43)
	at com.hazelcast.cp.internal.raft.impl.task.RaftNodeStatusAwareTask.run(RaftNodeStatusAwareTask.java:52)
	at com.hazelcast.cp.internal.NodeEngineRaftIntegration.execute(NodeEngineRaftIntegration.java:114)
	at com.hazelcast.cp.internal.raft.impl.RaftNodeImpl.execute(RaftNodeImpl.java:886)
	at com.hazelcast.cp.internal.raft.impl.RaftNodeImpl.handleAppendResponse(RaftNodeImpl.java:403)
	at com.hazelcast.cp.internal.RaftService.handleAppendResponse(RaftService.java:792)
	at com.hazelcast.cp.internal.operation.integration.AppendSuccessResponseOp.run(AppendSuccessResponseOp.java:48)
	at com.hazelcast.spi.impl.operationservice.Operation.call(Operation.java:193)
	at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.call(OperationRunnerImpl.java:294)
	at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:265)
	at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:497)
	at com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.process(OperationThread.java:185)
	at com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.process(OperationThread.java:141)
	at com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.loop(OperationThread.java:134)
	at com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.executeRun(OperationThread.java:115)
	at com.hazelcast.internal.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:111)
	at ------ submitted from ------.()
	at com.hazelcast.internal.util.ExceptionUtil.cloneExceptionWithFixedAsyncStackTrace(ExceptionUtil.java:348)
	at com.hazelcast.spi.impl.AbstractInvocationFuture.wrapRuntimeException(AbstractInvocationFuture.java:1975)
	at com.hazelcast.spi.impl.AbstractInvocationFuture.wrapOrPeel(AbstractInvocationFuture.java:1956)
	at com.hazelcast.spi.impl.AbstractInvocationFuture$ExceptionalResult.wrapForJoinInternal(AbstractInvocationFuture.java:1438)
	at com.hazelcast.spi.impl.AbstractInvocationFuture.resolveAndThrowForJoinInternal(AbstractInvocationFuture.java:601)
	at com.hazelcast.spi.impl.AbstractInvocationFuture.joinInternal(AbstractInvocationFuture.java:585)
	at com.hazelcast.cp.internal.datastructures.semaphore.proxy.SessionAwareSemaphoreProxy.release(SessionAwareSemaphoreProxy.java:177)
	at com.hazelcast.cp.internal.datastructures.semaphore.AbstractSessionAwareSemaphoreBasicTest.testNoDuplicateRelease_whenSessionExpires(AbstractSessionAwareSemaphoreBasicTest.java:458)
	at java.base/java.lang.reflect.Method.invoke(Method.java:586)
	at com.hazelcast.test.FailOnTimeoutStatement$CallableStatement.call(FailOnTimeoutStatement.java:115)
	at com.hazelcast.test.FailOnTimeoutStatement$CallableStatement.call(FailOnTimeoutStatement.java:107)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.base/java.lang.Thread.run(Thread.java:1595)

Standard output can be found here - https://s3.console.aws.amazon.com/s3/buckets/j-artifacts/Hazelcast-5.maintenance-Openj9-21/1/

@JackPGreen
Copy link
Contributor

JackPGreen commented May 10, 2024

com.hazelcast.cp.internal.datastructures.spi.blocking.AbstractBlockingService.heartbeatSession(AbstractBlockingService.java:311)

That's just a string concatenation:

throw new SessionExpiredException("active session: " + sessionId + " does not exist in " + groupId);

Even concatenating null doesn't cause a NullPointerException. I've looked in the openj9 source of StringConcatHelper#stringOf and don't see any method handle usage so I'm guessing this is some kind of JDK/JIT optimization issue. There's a similar previous issue that validates this feeling.

The full stack trace isn't much more helpful, either:

java.lang.NullPointerException: null
	at java.base/java.lang.StringConcatHelper.stringOf(StringConcatHelper.java) ~[?:?]
	at com.hazelcast.cp.internal.datastructures.spi.blocking.AbstractBlockingService.heartbeatSession(AbstractBlockingService.java:311) ~[classes/:?]

Closing to see if happens again...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants