[infinispan-issues] [JBoss JIRA] (ISPN-10818) ProtoStream 9.4.x client backwards compatibility
Ryan Emerson (Jira)
issues at jboss.org
Tue Nov 19 05:09:00 EST 2019
[ https://issues.jboss.org/browse/ISPN-10818?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13814702#comment-13814702 ]
Ryan Emerson commented on ISPN-10818:
-------------------------------------
Backwards compatibility is also an issue for old clients that utilise ProtoStream as a marshaller for key/value types. The following changes are required to ensure that old clients can interoperate with a 10.x server(s) that also interacts with a 10.x client.
Changes required:
ProtoStream:
* A mechanism to transform TypeIds in ProtoStream byte array via WrappedMessageTypeIdMapper without unmarshalling data
Server:
* 10.x APPLICATION_PROTOSTREAM media type must be set as the storage type on cache
* Server transforms 9.4.x (or older) client payloads for ^ cache using ProtoStream TypeId transformer and stores using the new Ids
* All server responses to old clients must re-transform the payload to the old TypeIds
* Storage type APPLICATION_OCTET_STREAM on the server is not supported with old ProtoStream clients as it's not possible to 100% guarantee payload is Protobuf
> ProtoStream 9.4.x client backwards compatibility
> ------------------------------------------------
>
> Key: ISPN-10818
> URL: https://issues.jboss.org/browse/ISPN-10818
> Project: Infinispan
> Issue Type: Bug
> Components: Remote Querying
> Affects Versions: 10.0.0.CR3
> Reporter: Ryan Emerson
> Assignee: Nistor Adrian
> Priority: Major
> Fix For: 10.1.0.Final
>
>
> For performance reasons, ProtoStream changed the TypeId of WrappedMessage to 0, which means that pre 10.x clients using RemoteQuery are no longer compatible. Furthermore, ISPN-10663 updated the TypeId of the remote query messages to conform to the Infinispan TypeId ranges defined in ProtoStreamTypeIds.
> Therefore, for pre 10.x clients, it is neccessary for all remote query requests to have the legacy TypeId mapped to the new TypeId values. https://issues.jboss.org/browse/IPROTO-119 introduced a mechanism for this mapping, however more work is required, as the mapping must occur on a per request/response basis (only if communication is with a legacy client).
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
More information about the infinispan-issues
mailing list