我在同一台机器上运行三个Hazelcast节点,每个节点都尝试更改AtomicReference。第一个和第二个节点运行没有问题,第三个节点抛出HazelcastSerializationException。
Hazelcast版本:Hazelcast 3.4.2(20150326 - f6349a4)
任何人都知道发生了什么?
Exception in thread "main" com.hazelcast.nio.serialization.HazelcastSerializationException: Cannot write a Data instance! Use #writeData(ObjectDataOutput out, Data data) instead. at com.hazelcast.nio.serialization.SerializationServiceImpl.writeObject(SerializationServiceImpl.java:272) at com.hazelcast.nio.serialization.ByteArrayObjectDataOutput.writeObject(ByteArrayObjectDataOutput.java:262) at com.hazelcast.concurrent.atomicreference.operations.AbstractAlterOperation.writeInternal(AbstractAlterOperation.java:61) at com.hazelcast.spi.Operation.writeData(Operation.java:281) at com.hazelcast.nio.serialization.DataSerializer.write(DataSerializer.java:140) at com.hazelcast.nio.serialization.DataSerializer.write(DataSerializer.java:39) at com.hazelcast.nio.serialization.StreamSerializerAdapter.toData(StreamSerializerAdapter.java:51) at com.hazelcast.nio.serialization.SerializationServiceImpl.toData(SerializationServiceImpl.java:222) at com.hazelcast.nio.serialization.SerializationServiceImpl.toData(SerializationServiceImpl.java:203) at com.hazelcast.spi.impl.NodeEngineImpl.toData(NodeEngineImpl.java:180) at com.hazelcast.spi.impl.BasicOperationService.send(BasicOperationService.java:348) at com.hazelcast.spi.impl.BasicInvocation.doInvokeRemote(BasicInvocation.java:288) at com.hazelcast.spi.impl.BasicInvocation.doInvoke(BasicInvocation.java:260) at com.hazelcast.spi.impl.BasicInvocation.invoke(BasicInvocation.java:229) at com.hazelcast.spi.impl.BasicOperationService.invokeOnPartition(BasicOperationService.java:272) at com.hazelcast.concurrent.atomicreference.AtomicReferenceProxy.asyncInvoke(AtomicReferenceProxy.java:56) at com.hazelcast.concurrent.atomicreference.AtomicReferenceProxy.asyncAlterAndGet(AtomicReferenceProxy.java:87) at com.hazelcast.concurrent.atomicreference.AtomicReferenceProxy.alterAndGet(AtomicReferenceProxy.java:78) at com.senior.seguranca.csm.datamart.hazelcast.HazelcastTest.(HazelcastTest.java:18) at com.senior.seguranca.csm.datamart.hazelcast.HazelcastTest.main(HazelcastTest.java:22)
我的代码:
package com.senior.seguranca.csm.datamart.hazelcast;
import com.hazelcast.config.Config;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IAtomicReference;
import com.hazelcast.core.IFunction;
public class HazelcastTest {
public HazelcastTest() {
Config config = new Config();
config.setInstanceName("HAZELCAST_INSTANCE");
HazelcastInstance hazelcastInstance = Hazelcast.getOrCreateHazelcastInstance(config);
IAtomicReference<String> atomicReference = hazelcastInstance.getAtomicReference("TEST");
String item = "A";
System.out.println("Item: " + atomicReference.alterAndGet(new MyFunction(item)));
}
public static void main(String[] args) {
new HazelcastTest();
}
}
class MyFunction implements IFunction<String, String> {
private String newItem;
public MyFunction(String newItem) {
this.newItem = newItem;
}
@Override
public String apply(String item) {
return newItem;
}
}
答案 0 :(得分:0)
如果您确定所有三个节点都具有相同的Hazelcast版本(请验证这一点,因为我认为第三个节点出于未知原因有旧版本),请在错误跟踪器中提交一个问题。< / p>