[
https://issues.apache.org/jira/browse/THRIFT-1238?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13144273#comment-13144273
]
Ryan Phillips commented on THRIFT-1238:
---------------------------------------
Hi!
I'm testing thrift 0.8.0 with our code base and came across an issue using
javascript and node-thrift.
Our generated thrift code runs with this error: Uncaught TypeError: Cannot read
property 'length' of undefined.
The generated code includes:
if (input.rstack.length > input.rpos[input.rpos.length -1] + 1) {
input.rstack.pop();
}
It appears this patch breaks binary protocol compatibility, but I want to run
the issue by everyone, since I'm new with thrift.
Thanks,
Ryan
> Thrift JS client cannot read map of structures
> ----------------------------------------------
>
> Key: THRIFT-1238
> URL: https://issues.apache.org/jira/browse/THRIFT-1238
> Project: Thrift
> Issue Type: Bug
> Components: JavaScript - Compiler, JavaScript - Library
> Affects Versions: 0.6.1
> Reporter: Henrique Mendonca
> Labels: javascript
> Fix For: 0.8
>
> Attachments: THRIFT-1238-fix-maps+qunit.patch,
> THRIFT-1238-qunit-insanity.patch
>
>
> Apparently we have a problem reading map of structures, only one item is been
> read and the other come as undefined in the result map on the client side.
> I was having this with some complex maps and notice that the test case
> 'testInsanity' was quite similar to my case but was actually been tested at
> all. Then checking its result I could see that's it actually a general
> problem.
> The server sends 2 elements:
> {code}
> {
> "1":{
> "3":{
> "userMap":{
> "8":8,
> "5":5
> },
> "xtructs":[{
> "string_thing":"Goodbye4",
> "byte_thing":4,
> "i32_thing":4,
> "i64_thing":4
> },
> {
> "string_thing":"Hello2",
> "byte_thing":2,
> "i32_thing":2,
> "i64_thing":2
> }
> ]
> },
> "2":{
> "userMap":{
> "8":8,
> "5":5
> },
> "xtructs":[{
> "string_thing":"Goodbye4",
> "byte_thing":4,
> "i32_thing":4,
> "i64_thing":4
> },
> {
> "string_thing":"Hello2",
> "byte_thing":2,
> "i32_thing":2,
> "i64_thing":2
> }
> ]
> }
> },
> "2":{
> "6":{
> "userMap":null,
> "xtructs":null
> }
> }
> }
> {code}
> but we can only read 1:
> {code}
> {
> "1":{
> "2":{
> "userMap":{
> "8":8,
> "5":5
> },
> "xtructs":[{
> "string_thing":"Goodbye4",
> "byte_thing":4,
> "i32_thing":4,
> "i64_thing":4
> },
> {
> "string_thing":"Hello2",
> "byte_thing":2,
> "i32_thing":2,
> "i64_thing":2
> }
> ]
> },
> "undefined":{
> "userMap":null,
> "xtructs":null
> }
> },
> "2":{
> "6":{
> "userMap":null,
> "xtructs":null
> }
> }
> }
> {code}
> on my code it also happens with 3 or more structures, only the first one is
> read, the second is "undefined" and the rest is gone!
> ps.: I'm submitting the patch for the unit test. I had a quick look on the
> code but could find anything yet and won't have time in the next weeks...
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira