我看过很多关于com.hazelcast.spi.exception.TargetNotMemberException: Not Member! target:
但在这种情况下该怎么办?问题:可以捕获异常并执行“hazelCastInstance.shutdown()`”
还可以连续看到“错误的节点”:“队列中的剩余迁移任务=> 1”
Hazelcast 3.7具有两个节点的群集。
完成StackTrace:
com.hazelcast.spi.exception.TargetNotMemberException: Not Member! target: [machine]:5704, partitionId: 0, operation: com.hazelcast.map.impl.query.QueryPartitionOperation, service: hz:impl:mapService
at com.hazelcast.spi.impl.operationservice.impl.Invocation.initInvocationTarget(Invocation.java:324)
at com.hazelcast.spi.impl.operationservice.impl.Invocation.doInvoke(Invocation.java:256)
at com.hazelcast.spi.impl.operationservice.impl.Invocation.access$300(Invocation.java:94)
at com.hazelcast.spi.impl.operationservice.impl.Invocation$InvocationRetryTask.run(Invocation.java:530)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:682)
at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:76)
at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:92)
at ------ submitted from ------.(Unknown Source)
at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolve(InvocationFuture.java:111)
at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolveAndThrow(InvocationFuture.java:74)
at com.hazelcast.spi.impl.AbstractInvocationFuture.get(AbstractInvocationFuture.java:158)
at com.hazelcast.map.impl.query.MapQueryEngineImpl.addResultsOfPredicate(MapQueryEngineImpl.java:605)
at com.hazelcast.map.impl.query.MapQueryEngineImpl.invokeQueryAllPartitions(MapQueryEngineImpl.java:506)
at com.hazelcast.map.impl.proxy.MapProxyImpl.entrySet(MapProxyImpl.java:633)
at com.hazelcast.map.impl.proxy.MapProxyImpl.entrySet(MapProxyImpl.java:622)
at myClass.getAll(MyClass.java:10)
答案 0 :(得分:0)
TargetNotMemberException扩展了RetryableHazelcastException,它进一步扩展了HazelcastException,因此您可以捕获HazelcastException然后关闭实例,或者您可以直接捕获TargetNotMemberException并关闭Hazelcast实例。你可以看下面的课程。
你可以这样编码......
import java.io.PrintWriter;
import java.io.StringWriter;
import com.hazelcast.config.Config;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastException;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.spi.exception.TargetNotMemberException;
public class HazelcastExceptionTest {
public static void main(String[] args) {
Config config = new Config("instanceOne");
HazelcastInstance instanceOne = Hazelcast.newHazelcastInstance(config);
try {
testTargetNotMemberException();
}
catch (HazelcastException e) {
StringWriter trace = new StringWriter();
PrintWriter eTrace = new PrintWriter(trace, true);
e.printStackTrace(eTrace);
System.out.println("exception " + trace.toString());
instanceOne.shutdown();
}
}
public static void testTargetNotMemberException() {
throw new TargetNotMemberException("TargetNotMemberException");
}
}