Hazelcast - IMap 如何使用 quorum 进行锁操作?
Hazelcast - IMap how to use quorum for lock operations?
我想使用 Quorum 对我的地图进行地图锁定操作:myMap。
我对仲裁使用编程配置。
QuorumConfig quorumConfig = new QuorumConfig();
quorumConfig.setName("xxx");
quorumConfig.setEnabled(true);
quorumConfig.setQuorumFunctionImplementation(new QuorumFunction() {
@Override
public boolean apply(Collection<Member> members) {
...
}
});
我使用com.hazelcast.config.MapConfig.setQuorumName方法来设置quorum ımpl。
我的地图配置如下所示,因为法定人数设置为 xxx。
MapConfig{name='myMap', inMemoryFormat=BINARY', ...., mapAttributeConfigs=null, quorumName=xxx, queryCacheConfigs=null, cacheDeserializedValues=INDEX_ONLY}
问题是,对于锁操作,未调用仲裁函数。
对于映射放置/删除操作,我看到遵守仲裁功能。
com.hazelcast.quorum.QuorumException: Cluster quorum failed
at com.hazelcast.quorum.impl.QuorumImpl.newQuorumException(QuorumImpl.java:164)
at com.hazelcast.quorum.impl.QuorumImpl.ensureQuorumPresent(QuorumImpl.java:158)
at com.hazelcast.quorum.impl.QuorumServiceImpl.ensureQuorumPresent(QuorumServiceImpl.java:127)
at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.ensureQuorumPresent(OperationRunnerImpl.java:237)
at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:178)
at com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.process(OperationThread.java:120)
at com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.run(OperationThread.java:100)
at ------ submitted from ------.(Unknown Source)
at java.lang.Thread.getStackTrace(Thread.java:1117)
at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolve(InvocationFuture.java:114)
at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolveAndThrowIfException(InvocationFuture.java:75)
at com.hazelcast.spi.impl.AbstractInvocationFuture.get(AbstractInvocationFuture.java:155)
at com.hazelcast.map.impl.proxy.MapProxySupport.invokeOperation(MapProxySupport.java:373)
at com.hazelcast.map.impl.proxy.MapProxySupport.removeInternal(MapProxySupport.java:508)
at com.hazelcast.map.impl.proxy.MapProxyImpl.remove(MapProxyImpl.java:211)
但法定人数不用于锁定操作。
在文档中 xml 为锁定操作提供了配置。
Example config is given as:
An example of declarative configuration:
<map name="myMap">
<quorum-ref>map-actions-quorum</quorum-ref>
</map>
<lock name="myMap">
<quorum-ref>map-lock-actions-quorum</quorum-ref>
</lock>
Here the configured map will use the map-lock-actions-quorum quorum
for map lock actions and the map-actions-quorum quorum for other map
actions.
这在编程上的等价物是什么?
此致
这里是一个配置锁定仲裁的示例:
Config config = new Config();
LockConfig lockConfig = new LockConfig();
lockConfig.setName("myLock")
.setQuorumName("quorum-name");
config.addLockConfig(lockConfig);
查看 link 了解详情:http://docs.hazelcast.org/docs/3.8.3/manual/html-single/index.html#lock-configuration
我想使用 Quorum 对我的地图进行地图锁定操作:myMap。
我对仲裁使用编程配置。
QuorumConfig quorumConfig = new QuorumConfig();
quorumConfig.setName("xxx");
quorumConfig.setEnabled(true);
quorumConfig.setQuorumFunctionImplementation(new QuorumFunction() {
@Override
public boolean apply(Collection<Member> members) {
...
}
});
我使用com.hazelcast.config.MapConfig.setQuorumName方法来设置quorum ımpl。
我的地图配置如下所示,因为法定人数设置为 xxx。
MapConfig{name='myMap', inMemoryFormat=BINARY', ...., mapAttributeConfigs=null, quorumName=xxx, queryCacheConfigs=null, cacheDeserializedValues=INDEX_ONLY}
问题是,对于锁操作,未调用仲裁函数。
对于映射放置/删除操作,我看到遵守仲裁功能。
com.hazelcast.quorum.QuorumException: Cluster quorum failed
at com.hazelcast.quorum.impl.QuorumImpl.newQuorumException(QuorumImpl.java:164)
at com.hazelcast.quorum.impl.QuorumImpl.ensureQuorumPresent(QuorumImpl.java:158)
at com.hazelcast.quorum.impl.QuorumServiceImpl.ensureQuorumPresent(QuorumServiceImpl.java:127)
at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.ensureQuorumPresent(OperationRunnerImpl.java:237)
at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:178)
at com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.process(OperationThread.java:120)
at com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.run(OperationThread.java:100)
at ------ submitted from ------.(Unknown Source)
at java.lang.Thread.getStackTrace(Thread.java:1117)
at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolve(InvocationFuture.java:114)
at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolveAndThrowIfException(InvocationFuture.java:75)
at com.hazelcast.spi.impl.AbstractInvocationFuture.get(AbstractInvocationFuture.java:155)
at com.hazelcast.map.impl.proxy.MapProxySupport.invokeOperation(MapProxySupport.java:373)
at com.hazelcast.map.impl.proxy.MapProxySupport.removeInternal(MapProxySupport.java:508)
at com.hazelcast.map.impl.proxy.MapProxyImpl.remove(MapProxyImpl.java:211)
但法定人数不用于锁定操作。
在文档中 xml 为锁定操作提供了配置。
Example config is given as:
An example of declarative configuration:
<map name="myMap"> <quorum-ref>map-actions-quorum</quorum-ref> </map> <lock name="myMap"> <quorum-ref>map-lock-actions-quorum</quorum-ref> </lock>
Here the configured map will use the map-lock-actions-quorum quorum for map lock actions and the map-actions-quorum quorum for other map actions.
这在编程上的等价物是什么?
此致
这里是一个配置锁定仲裁的示例:
Config config = new Config();
LockConfig lockConfig = new LockConfig();
lockConfig.setName("myLock")
.setQuorumName("quorum-name");
config.addLockConfig(lockConfig);
查看 link 了解详情:http://docs.hazelcast.org/docs/3.8.3/manual/html-single/index.html#lock-configuration