You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Jason Heimann (JIRA)" <ji...@apache.org> on 2015/12/05 01:47:10 UTC

[jira] [Created] (THRIFT-3472) Missing semi-colon in IDL leads to non-deterministic builds

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)