[
https://issues.apache.org/jira/browse/THRIFT-5299?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17223685#comment-17223685
]
Allen George commented on THRIFT-5299:
--------------------------------------
[~shuoli84] I'm sorry - I'm a little confused by what's being reported here. Is
this a problem with the rust library, or {{integer_encoding}}'s implementation
of {{read_varint}} and {{write_varint}} or both?
It appears that the desired state is:
* Sequence number: varint
* All other instances of numbers: varint(zigzag)
My understanding of the problem is that currently in the Rust compact impl the
sequence number is **also** in varint(zigzag), which is wrong. Fixing this in
{{integer-encoding-rs}} appears to be a breaking API change. Probably the
simplest thing to do is add two new methods to the compact implementation:
* {{read_i32_seq_num}}
* {{write_i32_seq_num}}
Which works around the problem within the lib itself. Does that seem right?
> rs implementation compact protocol seq_id should not use zigzag encoding.
> -------------------------------------------------------------------------
>
> Key: THRIFT-5299
> URL: https://issues.apache.org/jira/browse/THRIFT-5299
> Project: Thrift
> Issue Type: Bug
> Components: Rust - Library
> Affects Versions: 0.13.0
> Reporter: shuo li
> Priority: Major
>
> While reviewing code, I discovered a bug in compact protocol.
> The seq_id in message header is decoded with integer-encoding's i32, which
> uses zigzag decode implicitly.
>
>
> EDIT: correct the title and desc.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)