Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-10886

Server side objects implementing Serializable causes serialization errors

    XMLWordPrintable

Details

    • Bug
    • Resolution: Not a Bug
    • Major
    • None
    • 10.0.0.Final, 10.0.1.Final
    • Server
    • None

    Description

      When storing objects unmarshalled (cache configired with key/value encoding as application/x-java-object) or using custom objects in the server (filters, converters, partition handlers, etc) that implements Serializable, the following exception is thrown:

      2019-11-05 10:54:11,389 WARN  [org.infinispan.PERSISTENCE] (SINGLE_PORT-ServerIO-5-3) ISPN000559: Cannot marshall 'class org.infinispan.spark.domain.Runner': java.lang.IllegalArgumentException: No marshaller registered for Java type org.infinispan.spark.domain.Runner
      	at org.infinispan.protostream.impl.SerializationContextImpl.getMarshallerDelegate(SerializationContextImpl.java:279)
      	at org.infinispan.protostream.WrappedMessage.writeMessage(WrappedMessage.java:240)
      	at org.infinispan.protostream.ProtobufUtil.toWrappedStream(ProtobufUtil.java:196)
      	at org.infinispan.marshall.persistence.impl.PersistenceMarshallerImpl.objectToBuffer(PersistenceMarshallerImpl.java:157)
      	at org.infinispan.marshall.persistence.impl.PersistenceMarshallerImpl.objectToByteBuffer(PersistenceMarshallerImpl.java:137)
      	at org.infinispan.marshall.persistence.impl.PersistenceMarshallerImpl.objectToByteBuffer(PersistenceMarshallerImpl.java:145)
      	at org.infinispan.marshall.core.GlobalMarshaller.writeRawUnknown(GlobalMarshaller.java:638)
      	at org.infinispan.marshall.core.GlobalMarshaller.writeUnknown(GlobalMarshaller.java:627)
      	at org.infinispan.marshall.core.GlobalMarshaller.writeUnknown(GlobalMarshaller.java:618)
      	at org.infinispan.marshall.core.GlobalMarshaller.writeNonNullableObject(GlobalMarshaller.java:384)
      	at org.infinispan.marshall.core.GlobalMarshaller.writeNullableObject(GlobalMarshaller.java:352)
      	at org.infinispan.marshall.core.BytesObjectOutput.writeObject(BytesObjectOutput.java:26)
      	at org.infinispan.commands.write.PutKeyValueCommand.writeTo(PutKeyValueCommand.java:81)
      	at org.infinispan.marshall.exts.ReplicableCommandExternalizer.writeCommandParameters(ReplicableCommandExternalizer.java:70)
      	at org.infinispan.marshall.exts.ReplicableCommandExternalizer.writeObject(ReplicableCommandExternalizer.java:66)
      	at org.infinispan.marshall.exts.ReplicableCommandExternalizer.writeObject(ReplicableCommandExternalizer.java:54)
      	at org.infinispan.marshall.core.GlobalMarshaller.writeInternal(GlobalMarshaller.java:656)
      	at org.infinispan.marshall.core.GlobalMarshaller.writeNonNullableObject(GlobalMarshaller.java:371)
      	at org.infinispan.marshall.core.GlobalMarshaller.writeNullableObject(GlobalMarshaller.java:352)
      	at org.infinispan.marshall.core.BytesObjectOutput.writeObject(BytesObjectOutput.java:26)
      	at org.infinispan.commands.remote.SingleRpcCommand.writeTo(SingleRpcCommand.java:52)
      	at org.infinispan.marshall.exts.ReplicableCommandExternalizer.writeCommandParameters(ReplicableCommandExternalizer.java:70)
      	at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.marshallParameters(CacheRpcCommandExternalizer.java:120)
      

      This changed between 10.0.0.CR3 and 10.0.1.Final: although JBoss Marshaller is in the classpath and the Hot Rod client users Jboss marshaller, it tries to use protostream to replicate commands involving those objects

      The workaround it to annotate all of them with @SerializeWith and write Externalizers

      Attachments

        Activity

          People

            Unassigned Unassigned
            gfernand@redhat.com Gustavo Fernandes (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: