[
https://issues.apache.org/jira/browse/THRIFT-4226?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
James E. King, III updated THRIFT-4226:
---------------------------------------
Fix Version/s: (was: 0.10.0)
> Type Safety (Structs) not satisfied in Python and Node.js
> ---------------------------------------------------------
>
> Key: THRIFT-4226
> URL: https://issues.apache.org/jira/browse/THRIFT-4226
> Project: Thrift
> Issue Type: Bug
> Components: Node.js - Library, Python - Library
> Affects Versions: 0.10.0
> Environment: macOs: 10.11.6
> Thrift: 0.10.0
> Python: 3.6
> Node.js: 8.0.0
> Reporter: Matteo Tosi
> Labels: node.js, patch, python, struct, structtype
>
> Python and Node.js client and server generated code doesn't make a validation
> on the *type of Struct* passed as argument of a Service.
> \\
> Example:
> {code:java}
> // First Struct
> struct StructA {
> 1: required string query,
> 2: required i32 max_results
> }
> // Second Struct
> struct StructB {
> 1: required string query
> }
> // Service with a method that has the second Struct as argument
> service Question {
> string make_question(1: StructB);
> }
> {code}
> After generating the python and Node.js code from this thrift file, the
> behaviour occurs when the client calls the server method passing a different
> Struct type to it (example with python client):
> \\
> {code:java}
> res = client.make_question(StructA(query="hello", max_results=5))
> {code}
> This code doesn't throw any kind of error, because the type of the Struct is
> not validated and the two Structs from the example have the same argument
> 'query'.
> \\
> Neither the server side throws an exception, interpreting the upcoming client
> message as StructB, even if its type is StructA.
> \\
> Is it possible that this kind of check is not made in any of the non-typed
> languages supported by thrift?
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)