thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jens Geyer (JIRA)" <>
Subject [jira] [Commented] (THRIFT-4405) Proper use of sequence IDs in all clients and servers
Date Mon, 28 Jan 2019 21:44:00 GMT


Jens Geyer commented on THRIFT-4405:

The [{color:#0066cc}Whitepaper{color}|]
explicitly lists the seqID at request, response AND processing stages. But other than mentioning
them in pseudo code, the whitepaper makes no assumptions and applies no further requirements
on them. Sounds like a good idea to fix some lose ends.


> Proper use of sequence IDs in all clients and servers
> -----------------------------------------------------
>                 Key: THRIFT-4405
>                 URL:
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Test Suite
>    Affects Versions: 0.10.0
>         Environment: docker ubuntu-xenial
>            Reporter: James E. King III
>            Assignee: James E. King III
>            Priority: Major
> Create a feature test that verifies sequence numbers are used properly.  Write a server
that verifies clients are generating unique sequence IDs.  Write a client that makes sure
servers return the same sequence ID that was given.
> To do this, I enhanced the C++ TProcessorEventHandler class to include a preReadSeq,
which is like preRead but carries the sequence ID.
> In the C++ TestServer, I check to see if the sequence numbers are unique and do not repeat;
if any of them do, the cpp test fails.
> The following languages properly send sequence IDs (for the binary protocol):
> * dart
> * go
> * nodejs
> * java
> * rs
> The rest of the languages do not.  Now, one could argue that unless a language has a
concurrent-safe client and server, sequence IDs are unnecessary.  While that is true, all
languages should respect that the protocol has a sequence ID and there could be future implementations
that will require all clients are well-behaved, which is why I am putting this test in.
> Languages fixed up so unique sequence IDs are sent by the client, and verified by the
> * cpp (was only sending unique sequence IDs for Concurrent clients, now it does for the
regular one too)
> * csharp (seqid_ was not bring incremented with each use)
> * lua (seqid_ was not bring incremented with each use)
> * perl (seqid_ was not bring incremented with each use)
> * ruby (seqid_ was not bring incremented with each use and a unit test was updated to
no longer be pending)
> Languages left to do:
> * c_glib
> * erlang
> * haskell
> * php
> * python
> * python3
> * any non-cross tested languages

This message was sent by Atlassian JIRA

View raw message