[infinispan-issues] [JBoss JIRA] (ISPN-10886) Server side objects implementing Serializable causes serialization errors

Gustavo Fernandes (Jira) issues at jboss.org
Tue Nov 5 06:18:00 EST 2019


     [ https://issues.jboss.org/browse/ISPN-10886?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gustavo Fernandes updated ISPN-10886:
-------------------------------------
    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:

{noformat}
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)
{noformat}

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

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

{noformat}
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)
{noformat}

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



> Server side objects implementing Serializable causes serialization errors
> -------------------------------------------------------------------------
>
>                 Key: ISPN-10886
>                 URL: https://issues.jboss.org/browse/ISPN-10886
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Server
>    Affects Versions: 10.0.0.Final, 10.0.1.Final
>            Reporter: Gustavo Fernandes
>            Priority: Major
>
> 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:
> {noformat}
> 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)
> {noformat}
> 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



--
This message was sent by Atlassian Jira
(v7.13.8#713008)


More information about the infinispan-issues mailing list