thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James E. King, III (JIRA)" <>
Subject [jira] [Updated] (THRIFT-4405) Proper use of sequence IDs in all clients and servers
Date Mon, 04 Dec 2017 21:35:00 GMT


James E. King, III updated THRIFT-4405:
    Issue Type: Improvement  (was: Test)

> 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
> 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