2017-05-15 25 views
1

我正在使用“hazelcast.operation.call.timeout.millis = 100”配置超时榛木操作。Hazelcast自定义超时操作

但是在hazelcast启动时,由于这种配置,某些地图大小操作正在超时。我只是想在地图加载后超时,这些操作基本上是地图获取操作。有没有办法为这些map.get()操作添加自定义操作超时?

有没有其他办法可以完成这项工作?

com.hazelcast.core.OperationTimeoutException: HDMapSizeOperation got rejected before execution due to not starting within the operation-call-timeout of: 100ms. Current time: 2017-05-15 11:41:47.503. Start time: 2017-05-15 11:41:44.189. Total elapsed time: 3314 ms. Invocation{op=com.hazelcast.map.impl.operation.HDMapSizeOperation{serviceName='hz:impl:mapService', identityHash=1941379381, partitionId=0, replicaIndex=0, callId=-24461, invocationTime=1494828707296 (2017-05-15 11:41:47.296), waitTimeout=-1, callTimeout=100, name=blockMap}, tryCount=250, tryPauseMillis=500, invokeCount=11, callTimeoutMillis=100, firstInvocationTimeMs=1494828704189, firstInvocationTime='2017-05-15 11:41:44.189', lastHeartbeatMillis=0, lastHeartbeatTime='1970-01-01 05:30:00.000', target=[192.168.2.204]:5701, pendingResponse={VOID}, backupsAcksExpected=0, backupsAcksReceived=0, connection=null} 
at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.newOperationTimeoutException(InvocationFuture.java:151) 
at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolve(InvocationFuture.java:99) 
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.spi.impl.operationservice.impl.InvokeOnPartitions.retryFailedPartitions(InvokeOnPartitions.java:143) 
at com.hazelcast.spi.impl.operationservice.impl.InvokeOnPartitions.invoke(InvokeOnPartitions.java:73) 
at com.hazelcast.spi.impl.operationservice.impl.OperationServiceImpl.invokeOnAllPartitions(OperationServiceImpl.java:371) 
at com.hazelcast.map.impl.proxy.MapProxySupport.size(MapProxySupport.java:628) 
at com.hazelcast.map.impl.proxy.MapProxyImpl.size(MapProxyImpl.java:102) 
at it.XXXX.tbx.server.MapLoader.run(MapLoader.java:36) 

问候, Tharinda

回答

4

如果你试图控制等待的如结果一个map.get;你可以看看像map.getAsync这样的异步版本。它返回一个未来,你可以控制你想等待一个结果的时间。

不建议修改呼叫超时。