[英]java.lang.IllegalMonitorStateException: Current thread is not owner of the lock
I upgraded my hazelcast from 2.4 to 3.3, but this exception occurred.我将hazelcast 从2.4 升级到3.3,但是发生了这个异常。
13:12:51,269 [Thread-21]: ERROR xx.xx.xxThread:1783 - run:
java.lang.IllegalMonitorStateException: Current thread is not owner of the lock! -> <not-locked>
at com.hazelcast.concurrent.lock.operations.UnlockOperation.ensureUnlocked(UnlockOperation.java:71)
at com.hazelcast.concurrent.lock.operations.UnlockOperation.unlock(UnlockOperation.java:65)
at com.hazelcast.concurrent.lock.operations.UnlockOperation.run(UnlockOperation.java:57)
at com.hazelcast.spi.impl.BasicOperationService$OperationHandler.handle(BasicOperationService.java:699)
at com.hazelcast.spi.impl.BasicOperationService$OperationHandler.access$400(BasicOperationService.java:675)
at com.hazelcast.spi.impl.BasicOperationService$OperationPacketHandler.handle(BasicOperationService.java:649)
at com.hazelcast.spi.impl.BasicOperationService$OperationPacketHandler.handle(BasicOperationService.java:604)
at com.hazelcast.spi.impl.BasicOperationService$OperationPacketHandler.access$1400(BasicOperationService.java:591)
at com.hazelcast.spi.impl.BasicOperationService$BasicDispatcherImpl.dispatch(BasicOperationService.java:543)
at com.hazelcast.spi.impl.BasicOperationScheduler$OperationThread.process(BasicOperationScheduler.java:439)
at com.hazelcast.spi.impl.BasicOperationScheduler$OperationThread.doRun(BasicOperationScheduler.java:433)
at com.hazelcast.spi.impl.BasicOperationScheduler$OperationThread.run(BasicOperationScheduler.java:408)
at ------ End remote and begin local stack-trace ------.(Unknown Source)
at com.hazelcast.spi.impl.BasicInvocationFuture.resolveApplicationResponse(BasicInvocationFuture.java:356)
at com.hazelcast.spi.impl.BasicInvocationFuture.resolveApplicationResponseOrThrowException(BasicInvocationFuture.java:289)
at com.hazelcast.spi.impl.BasicInvocationFuture.get(BasicInvocationFuture.java:181)
at com.hazelcast.spi.impl.BasicInvocationFuture.get(BasicInvocationFuture.java:160)
at com.hazelcast.spi.impl.BasicInvocationFuture.getSafely(BasicInvocationFuture.java:172)
at com.hazelcast.concurrent.lock.LockProxySupport.unlock(LockProxySupport.java:126)
at com.hazelcast.concurrent.lock.LockProxy.unlock(LockProxy.java:99)
at activesync.server.CheckLoginsThread.run(CheckLoginsThread.java:1552)
The change for getLock in 3.3 is that the String is required as the parameter in new version. 3.3中getLock的变化是新版本需要String作为参数。 I just changed it from Object to String, nothing else is changed.我只是将它从 Object 更改为 String,没有其他任何更改。 The code is as below:代码如下:
Map logins = MyHazelcast.getMap("logins");
Lock lock = MyHazelcast.getLock("logins");
lock.lock();
try
{
// do something...
}
finally
{
lock.unlock();
}
Is this caused by the new version or I missed something?这是由新版本引起的还是我错过了什么?
> Current thread is not owner of the lock! -> <not-locked>
"not locked" means that lock with given key wasn't found. “未锁定”表示未找到具有给定密钥的锁。 Is it possible that lock with key "logins" is used in another place?是否有可能在另一个地方使用带有“登录”键的锁?
Maybe you release the lock somewhere inside your code?也许您在代码中的某处释放了锁?
I would start with unique key name for this lock.我将从这个锁的唯一键名开始。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.