[infinispan-issues] [JBoss JIRA] (ISPN-11910) Server should see application/octet-stream as protostream
Dan Berindei (Jira)
issues at jboss.org
Thu May 28 09:24:23 EDT 2020
[ https://issues.redhat.com/browse/ISPN-11910?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14119860#comment-14119860 ]
Dan Berindei commented on ISPN-11910:
-------------------------------------
Looks like clients only use {{application/unknown}} for the initial PING operation. Instead {{StorageConfigurationManager}} has some logic (copied from {{DataConversion}}) that uses storage media type {{application/unknown}} in the server, if the storage type is {{OBJECT}}/{{HEAP}}.
This doesn't make any difference for read/write operations, where the conversion between the request media type (e.g. {{application/x-protostream}} or {{application/x-jboss-marshalling}}) and the storage media type {{application/unknown}} is a no-op. But event converters like {{KeyValueWithPreviousEventConverter}} use request media type (aka {{format}}) {{application/x-java-object}}, and the cache needs to use the right marshaller to transcode between {{application/unknown}} and {{application/x-java-object}}.
Since the server always forces {{BinaryTranscoder}} to use {{GenericJBossMarshaller}}, this means a server cache with {{OBJECT}}/{{HEAP}} storage will use {{GenericJBossMarshaller}} for transcoding {{application/unknown}} <-> {{application/x-java-object}}, even when the user marshaller is {{ProtostreamMarshaller}}.
> Server should see application/octet-stream as protostream
> ---------------------------------------------------------
>
> Key: ISPN-11910
> URL: https://issues.redhat.com/browse/ISPN-11910
> Project: Infinispan
> Issue Type: Enhancement
> Components: Server
> Affects Versions: 11.0.0.CR1
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 11.0.0.Final
>
>
> The server, and Infinispan in general, should use the user marshaller to read {{application/octet-stream}} and {{application/unknown}} data.
> ISPN-10433 added a hack in the server (for backwards compatibility, I assume): if {{jboss-marshalling}} is on the classpath, {{org.infinispan.server.core.LifecycleCallbacks.cacheManagerStarting()}} changes the marshaller for {{application/unknown}} (but not for {{application/octet-stream}}) to {{GenericJBossMarshaller}}.
> This means that {{server/core}}, {{server/hotrod}}, and {{client/hotrod-client}} tests see {{application/unknown}} as protostream, but the server distribution in {{server/runtime}} always includes {{jboss-marshalling}}, so the server distribution sees {{application/unknown}} as {{GenericJBossMarshaller}} data.
> It would be much better if the server always used the user marshaller for {{application/unknown}}, and when a user needs backwards compatibility between a new server and an old client, they should configure {{GenericJBossMarshaller}} in the server.
> In addition, new clients should not use {{application/unknown}} unless the marshaller does not implement {{getMediaType()}}: they know the marshaller's media type, and they should send it to the server.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
More information about the infinispan-issues
mailing list