[ https://issues.apache.org/jira/browse/THRIFT-4405?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16755462#comment-16755462 ]
James E. King III commented on THRIFT-4405: ------------------------------------------- First of all, +1 for proper use of vis-รก-vis. (my former CEO said it all the time) Secondly, an overflow number in int32_t is as unique as any other sequence number. As long as the server handles the negative number properly, it is okay. I will add to my tests for this, setting the initial request ID to INT32_MAX - 10, and letting the cross test cause an overflow to negative numbers. > Proper use of sequence IDs in all clients and servers > ----------------------------------------------------- > > Key: THRIFT-4405 > URL: https://issues.apache.org/jira/browse/THRIFT-4405 > 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 > Time Spent: 10m > Remaining Estimate: 0h > > 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 tests: > * 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 (v7.6.3#76005)