Hazelcast - AtomicReference.alterAndGet создает исключение HazelcastSerializationException

Я использую три узла Hazelcast на одном компьютере, каждый узел пытается изменить AtomicReference. Первый и второй узлы работают без проблем, третий узел генерирует исключение HazelcastSerializationException.

Версия Hazelcast: Hazelcast 3.4.2 (20150326 - f6349a4)

Кто-нибудь знает, что происходит?

    Исключение в потоке "main" com.hazelcast.nio.serialization.HazelcastSerializationException: Невозможно записать экземпляр данных! Вместо этого используйте #writeData(ObjectDataOutput out, Data data).
    в com.hazelcast.nio.serialization.SerializationServiceImpl.writeObject(SerializationServiceImpl.java:272)
    в com.hazelcast.nio.serialization.ByteArrayObjectDataOutput.writeObject(ByteArrayObjectDataOutput.java:262)
    в com.hazelcast.concurrent.atomicreference.operations.AbstractAlterOperation.writeInternal(AbstractAlterOperation.java:61)
    на com.hazelcast.spi.Operation.writeData(Operation.java:281)
    на com.hazelcast.nio.serialization.DataSerializer.write(DataSerializer.java:140)
    на com.hazelcast.nio.serialization.DataSerializer.write(DataSerializer.java:39)
    в com.hazelcast.nio.serialization.StreamSerializerAdapter.toData(StreamSerializerAdapter.java:51)
    в com.hazelcast.nio.serialization.SerializationServiceImpl.toData(SerializationServiceImpl.java:222)
    в com.hazelcast.nio.serialization.SerializationServiceImpl.toData(SerializationServiceImpl.java:203)
    в com.hazelcast.spi.impl.NodeEngineImpl.toData(NodeEngineImpl.java:180)
    в com.hazelcast.spi.impl.BasicOperationService.send(BasicOperationService.java:348)
    в com.hazelcast.spi.impl.BasicInvocation.doInvokeRemote(BasicInvocation.java:288)
    в com.hazelcast.spi.impl.BasicInvocation.doInvoke(BasicInvocation.java:260)
    на com.hazelcast.spi.impl.BasicInvocation.invoke(BasicInvocation.java:229)
    в com.hazelcast.spi.impl.BasicOperationService.invokeOnPartition(BasicOperationService.java:272)
    в com.hazelcast.concurrent.atomicreference.AtomicReferenceProxy.asyncInvoke(AtomicReferenceProxy.java:56)
    в com.hazelcast.concurrent.atomicreference.AtomicReferenceProxy.asyncAlterAndGet(AtomicReferenceProxy.java:87)
    в com.hazelcast.concurrent.atomicreference.AtomicReferenceProxy.alterAndGet(AtomicReferenceProxy.java:78)
    на com.senior.seguranca.csm.datamart.hazelcast.HazelcastTest.(HazelcastTest.java:18)
    в 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;
    }
}

1 ответ

Если вы уверены, что все три узла имеют одинаковую версию Hazelcast (проверьте это, поскольку я предполагаю, что третий по неизвестной причине имеет старую версию), пожалуйста, сообщите об ошибке в багтрекер.

Другие вопросы по тегам