]
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).