Infinispan 集群错误:在 SerializationContext

如何解决Infinispan 集群错误:在 SerializationContext

我有一个带有 2 个嵌入式节点的测试集群 (Infinispan 12.1.4.Final)。我在 RocksDB 缓存存储中使用了复制缓存。缓存的大小约为 4 GB。有时,当我重新启动节点时,我会收到该异常,并且其中一个节点冻结 - 它等待缓存重新平衡。复制缓存的配置如下:

    <replicated-cache name="event" statistics="true">
            <expiration interval="3600000"/>
            <persistence>
                <rocksdb-store xmlns="urn:infinispan:config:store:rocksdb:12.1" path="rocksdb/data" fetch-state="true">
                    <expiration path="rocksdb/expired"/>
                </rocksdb-store>
            </persistence>
            <memory max-count="100"/>
            <indexing>
                <index-reader refresh-interval="5000"/>
                <indexed-entities>
                    <indexed-entity>org.example.model.IndexedEndpointEventModel</indexed-entity>
                </indexed-entities>
            </indexing>
    </replicated-cache>

整个堆栈跟踪:

     2021-06-10 19:41:27,993 ERROR [org.inf.sta.StateProviderImpl] (non-blocking-thread--p2-t1) ISPN000261: Failed to execute outbound transfer: org.infinispan.persistence.spi.PersistenceException: java.lang.IllegalStateException: MarshallableuserObject marshaller not overridden in SerializationContext
        at org.infinispan.marshall.persistence.impl.MarshallableEntryImpl.unmarshall(MarshallableEntryImpl.java:248)
        at org.infinispan.marshall.persistence.impl.MarshallableEntryImpl.unmarshall(MarshallableEntryImpl.java:237)
        at org.infinispan.marshall.persistence.impl.MarshallableEntryImpl.getValue(MarshallableEntryImpl.java:81)
        at org.infinispan.statetransfer.StateProviderImpl.defaultMapEntryFromStore(StateProviderImpl.java:379)
        at io.reactivex.rxjava3.internal.operators.flowable.FlowableMap$MapSubscriber.onNext(FlowableMap.java:64)
        at io.reactivex.rxjava3.internal.operators.flowable.Flowableusing$UsingSubscriber.onNext(Flowableusing.java:104)
        at io.reactivex.rxjava3.internal.util.HalfSerializer.onNext(HalfSerializer.java:45)
        at io.reactivex.rxjava3.internal.operators.flowable.FlowableConcatMap$ConcatMapImmediate.innerNext(FlowableConcatMap.java:204)
        at io.reactivex.rxjava3.internal.operators.flowable.FlowableConcatMap$ConcatMapInner.onNext(FlowableConcatMap.java:559)
        at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:402)
        at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaSEObserveOnSubscriber.run(FlowableObserveOn.java:176)
        at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:322)
        at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker.runEager(ExecutorScheduler.java:287)
        at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:248)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
    Caused by: java.lang.IllegalStateException: MarshallableuserObject marshaller not overridden in SerializationContext
        at org.infinispan.marshall.protostream.impl.MarshallableuserObject.<init>(MarshallableuserObject.java:44)
        at org.infinispan.marshall.protostream.impl.MarshallableuserObject$___Marshaller_ff6b068168b51aac5d0c18c371e02ff55d3bb0cb73296e9cf1f4a65917105dec.read(MarshallableuserObject$___Marshaller_ff6b068168b51aac5d0c18c371e02ff55d3bb0cb73296e9cf1f4a65917105dec.java:49)
        at org.infinispan.marshall.protostream.impl.MarshallableuserObject$___Marshaller_ff6b068168b51aac5d0c18c371e02ff55d3bb0cb73296e9cf1f4a65917105dec.read(MarshallableuserObject$___Marshaller_ff6b068168b51aac5d0c18c371e02ff55d3bb0cb73296e9cf1f4a65917105dec.java:15)
        at org.infinispan.protostream.impl.ProtobufTagMarshallerDelegate.unmarshall(ProtobufTagMarshallerDelegate.java:32)
        at org.infinispan.protostream.WrappedMessage.readMessage(WrappedMessage.java:539)
        at org.infinispan.protostream.WrappedMessage.read(WrappedMessage.java:351)
        at org.infinispan.protostream.ProtobufUtil.fromWrappedByteArray(ProtobufUtil.java:129)
        at org.infinispan.marshall.protostream.impl.AbstractInternalProtoStreamMarshaller.objectFromByteBuffer(AbstractInternalProtoStreamMarshaller.java:97)
        at org.infinispan.marshall.persistence.impl.MarshallableEntryImpl.unmarshall(MarshallableEntryImpl.java:246)
        ... 16 more

有人遇到过同样的问题吗?

编辑 1:

添加 IndexedEndpointEventModel 定义:

@Indexed
public class IndexedEndpointEventModel implements Serializable {

    private static final Random RANDOM = new Random();

    private String field1;
    @GenericField(projectable = Projectable.YES,searchable = Searchable.YES,sortable = Sortable.YES,aggregable = Aggregable.NO)
    private LocalDateTime field2;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private LocalDateTime field3;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private String field4;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private String field5;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private String field6;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private String field7;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private String field8;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private String field9;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private String field10;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private String field11;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private Long field12;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private Integer field13;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private String field14;
    @GenericField(projectable = Projectable.YES,aggregable = Aggregable.NO)
    private Boolean field15;
    private String field16;
    private Map<String,List<String>> field17;
    private Map<String,List<String>> field18;

    public IndexedEndpointEventModel() {
        field1 = UUID.randomUUID().toString();
        field2 = LocalDateTime.Now();
        field3 = LocalDateTime.Now();
        field4 = UUID.randomUUID().toString();
        field5 = UUID.randomUUID().toString();
        field6 = UUID.randomUUID().toString();
        field7 = UUID.randomUUID().toString();
        field8 = UUID.randomUUID().toString();
        field9 = UUID.randomUUID().toString();
        field10 = UUID.randomUUID().toString();
        field11 = UUID.randomUUID().toString();
        field12 = RANDOM.nextLong();
        field13 = RANDOM.nextInt();
        field14 = UUID.randomUUID().toString();
        field15 = RANDOM.nextBoolean();
        field16 = UUID.randomUUID().toString();
        field17 = Map.of(UUID.randomUUID().toString(),List.of(UUID.randomUUID().toString(),UUID.randomUUID().toString()));
        field18 = Map.of(UUID.randomUUID().toString(),List.of(UUID.randomUUID().toString()),UUID.randomUUID().toString(),List.of(UUID.randomUUID().toString()));
    }

// Setters/Getters

}

编辑 2:

额外的异常堆栈跟踪(使用 await-initial-transfer="false"):

2021-06-11 21:29:57,973 ERROR [org.inf.int.imp.InvocationContextInterceptor] (non-blocking-thread--p2-t12) ISPN000136: Error executing command PutkeyvalueCommand on Cache 'event',writing keys [cc05c0d7-b984-485d-8afd-298743550a7b]: java.lang.IllegalStateException: MarshallableuserObject marshaller not overridden in SerializationContext
        at org.infinispan.marshall.protostream.impl.MarshallableuserObject.<init>(MarshallableuserObject.java:44)
        at org.infinispan.marshall.protostream.impl.MarshallableuserObject$___Marshaller_ff6b068168b51aac5d0c18c371e02ff55d3bb0cb73296e9cf1f4a65917105dec.read(MarshallableuserObject$___Marshaller_ff6b068168b51aac5d0c18c371e02ff55d3bb0cb73296e9cf1f4a65917105dec.java:49)
        at org.infinispan.marshall.protostream.impl.MarshallableuserObject$___Marshaller_ff6b068168b51aac5d0c18c371e02ff55d3bb0cb73296e9cf1f4a65917105dec.read(MarshallableuserObject$___Marshaller_ff6b068168b51aac5d0c18c371e02ff55d3bb0cb73296e9cf1f4a65917105dec.java:15)
        at org.infinispan.protostream.impl.ProtobufTagMarshallerDelegate.unmarshall(ProtobufTagMarshallerDelegate.java:32)
        at org.infinispan.protostream.WrappedMessage.readMessage(WrappedMessage.java:539)
        at org.infinispan.protostream.WrappedMessage.read(WrappedMessage.java:351)
        at org.infinispan.protostream.ProtobufUtil.fromWrappedByteArray(ProtobufUtil.java:129)
        at org.infinispan.marshall.protostream.impl.AbstractInternalProtoStreamMarshaller.objectFromByteBuffer(AbstractInternalProtoStreamMarshaller.java:97)
        at org.infinispan.marshall.protostream.impl.AbstractInternalProtoStreamMarshaller.objectFromByteBuffer(AbstractInternalProtoStreamMarshaller.java:92)
        at org.infinispan.persistence.rocksdb.RocksDBStore.unmarshall(RocksDBStore.java:524)
        at org.infinispan.persistence.rocksdb.RocksDBStore.unmarshall(RocksDBStore.java:531)
        at org.infinispan.persistence.rocksdb.RocksDBStore.putExpireDbData(RocksDBStore.java:1106)
        at org.infinispan.persistence.rocksdb.RocksDBStore.addNewExpiry(RocksDBStore.java:551)
        at org.infinispan.persistence.rocksdb.RocksDBStore.access$1200(RocksDBStore.java:82)
        at org.infinispan.persistence.rocksdb.RocksDBStore$RocksDBHandler.lambda$write$2(RocksDBStore.java:753)
        at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2415)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
        at java.base/java.lang.Thread.run(Thread.java:834)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?