【问题标题】:What causes Hazelcast to throw an InterruptedException during map.lock()是什么导致 Hazelcast 在 map.lock() 期间抛出 InterruptedException
【发布时间】:2015-09-02 17:04:05
【问题描述】:

我正在使用 IMap 进行锁定,按照此处的说明进行操作:
https://groups.google.com/forum/#!topic/hazelcast/9YFGh3xwe8I

IMap<Object, Object> locks = hazelcastInstance.getMap("locks");
locks.lock(someStr);
try {
    //do stuff
} finally {
    locks.unlock(someStr);
}

偶尔会有一行

locks.locks(someStr)

导致错误

com.hazelcast.core.HazelcastException: java.lang.InterruptedException:
Call BasicInvocation{ serviceName='hz:impl:lockService',op=com.hazelcast.concurrent.lock.operations.LockOperation{
serviceName='hz:impl:lockService', callId=2854669, invocationTime=1441146297670, waitTimeout=-900001, callTimeout=60000}, 
partitionId=215, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=0, callTimeout=60000, 
target=Address[*.*.*.*]:****, backupsExpected=0, backupsCompleted=0} was interrupted
at com.hazelcast.util.ExceptionUtil.rethrow(ExceptionUtil.java:52)
at com.hazelcast.spi.impl.BasicInvocationFuture.getSafely(BasicInvocationFuture.java:200)
at com.hazelcast.concurrent.lock.LockProxySupport.lock(LockProxySupport.java:79)
at com.hazelcast.concurrent.lock.LockProxySupport.lock(LockProxySupport.java:73)
at com.hazelcast.map.impl.proxy.MapProxyImpl.lock(MapProxyImpl.java:256)

生产中的集群由两个节点组成。

我无法在本地重现该问题。
我读过一个类似的例外,它与应用服务器时钟时间远远不同步有关,但对我来说不是这样。

谁能解释为什么会这样?
看来我对 IMap 的使用非常简单。

【问题讨论】:

    标签: hazelcast


    【解决方案1】:

    通常InterruptedException 表示正在执行locks.lock(someStr); 的线程被程序的其他线程中断。

    例如,您可以使用 Thread.interrupt()、Future.cancel(true) 或 ExecutorService.shutdownNow() 中断另一个线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 2018-06-17
      • 2017-04-17
      相关资源
      最近更新 更多