[
https://issues.apache.org/jira/browse/THRIFT-5793?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Team_RPCtester updated THRIFT-5793:
-----------------------------------
Description:
Hi,
We have discovered an inconsistent behavior under the following conditions:
1. The thrift file:
{code:java}
struct StructClass_0 {
1: required list<bool> f_1
}
service DataService {
StructClass_0 Method_1(1: StructClass_0 agr_method_1)
}
{code}
2. When using Go as the client side(writer) and Node.js as the server
side(reader) with the protocol set to “{*}compact{*}” and the transport set to
“{*}framed{*}“ or “{*}buffered{*}”. We sent the value [true, false] to the
server, but the server receives [false, false], which is unexpected. Here is
the relevant code:We use agr_method_1_0 as the parameter sent to the client
side(writer).
{code:java}
agr_method_1_0 := commonResource.NewStructClass_0()
listItem := []bool{true, false}
agr_method_1_0.F_1 = listItem
{code}
Node.js Server: The server(reader) returns what it receives..
{code:java}
Method_1: async function(agr_method_1, result) {
console.log("Method_1 receives ", agr_method_1);
// Method_1 receives {“f_1”:[false, false]}
result(null, agr_method_1);
}
{code}
Can you help check the issue?
Thank you.
was:
Hi,
We have discovered an inconsistent behavior under the following conditions:
# The thrift file:
struct StructClass_0 {
1: required list<bool> f_1
}
service DataService {
StructClass_0 Method_1(1: StructClass_0 agr_method_1)
}
# When using Go as the client side(writer) and Node.js as the server
side(reader) with the protocol set to “{*}compact{*}” and the transport set to
“{*}framed{*}“ or “{*}buffered{*}”. We sent the value [true, false] to the
server, but the server receives [false, false], which is unexpected. Here is
the relevant code:We use agr_method_1_0 as the parameter sent to the client
side(writer).
agr_method_1_0 := commonResource.NewStructClass_0()
listItem := []{*}bool{*}
{true, false}
agr_method_1_0.F_1 = listItem
Node.js Server: The server(reader) returns what it receives..
Method_1: *async* {*}function{*}(agr_method_1, result) {console.log("Method_1
receives ", agr_method_1);// Method_1 receives
{“f_1”:[false, false]}
result({*}null{*}, agr_method_1); }
Can you help check the issue?
Thank you.
> Inconsistent behavior: Nodejs may modify the values it receives
> ---------------------------------------------------------------
>
> Key: THRIFT-5793
> URL: https://issues.apache.org/jira/browse/THRIFT-5793
> Project: Thrift
> Issue Type: Bug
> Components: Node.js - Compiler, Node.js - Library
> Affects Versions: 0.19.0, 0.20.0
> Reporter: Team_RPCtester
> Priority: Major
>
> Hi,
> We have discovered an inconsistent behavior under the following conditions:
>
> 1. The thrift file:
>
> {code:java}
> struct StructClass_0 {
> 1: required list<bool> f_1
> }
> service DataService {
> StructClass_0 Method_1(1: StructClass_0 agr_method_1)
> }
> {code}
>
> 2. When using Go as the client side(writer) and Node.js as the server
> side(reader) with the protocol set to “{*}compact{*}” and the transport set
> to “{*}framed{*}“ or “{*}buffered{*}”. We sent the value [true, false] to the
> server, but the server receives [false, false], which is unexpected. Here is
> the relevant code:We use agr_method_1_0 as the parameter sent to the client
> side(writer).
>
> {code:java}
> agr_method_1_0 := commonResource.NewStructClass_0()
> listItem := []bool{true, false}
> agr_method_1_0.F_1 = listItem
> {code}
>
> Node.js Server: The server(reader) returns what it receives..
>
> {code:java}
> Method_1: async function(agr_method_1, result) {
> console.log("Method_1 receives ", agr_method_1);
> // Method_1 receives {“f_1”:[false, false]}
> result(null, agr_method_1);
> }
> {code}
>
> Can you help check the issue?
> Thank you.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)