Jason Heimann created THRIFT-3472:
-------------------------------------
Summary: Missing semi-colon in IDL leads to non-deterministic
builds
Key: THRIFT-3472
URL: https://issues.apache.org/jira/browse/THRIFT-3472
Project: Thrift
Issue Type: Bug
Affects Versions: 0.9.2
Environment: Ubuntu 14.04.3 LTS x86_64
Reporter: Jason Heimann
The following erroneous IDL was fed into thrift, from which we generated python
(new_style), java (private-members), node.js and C++ output:
{code}
namespace java com.acme.model.sequencenumber
namespace py acme_thrift.model.sequencenumber
namespace cpp acme.model.sequencenumber
include "Common.thrift"
struct SequenceNumberResponse
{
1: required Common.ResponseContext context;
2: required Common.VersionId sequenceNumber
}
{code}
Each of these generated languages are compiled (as applicable) and packaged
after generation. This is all to say, several revisions of our thrift IDL
successfully generated, compiled, packaged and deployed with this error.
...until it didn't. An IDL revision in a completely unrelated namespace
triggered the following compilation error in the C++ output:
{code}
In file included from
/build_tmp/thrift-api-cmake/generated-sources/gen-cpp/SequenceNumber.cpp:7:0:
/build_tmp/thrift-api-cmake/generated-sources/gen-cpp/SequenceNumber.h:18:57:
error: 'acme::model::sequencenumber' has not been declared
/build_tmp/thrift-api-cmake/generated-sources/gen-cpp/SequenceNumber.h:18:95:
error: expected ',' or '...' before '&' token
{code}
Of course, adding the missing semicolon fixed this issue. This being said, I'd
expect something in the thrift compiler to complain about such faulty IDL
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)