Skip to content

Make inproc transport properly obey status ordering rules#17096

Merged
vjpai merged 2 commits intogrpc:masterfrom
vjpai:inproc_fix
Nov 5, 2018
Merged

Make inproc transport properly obey status ordering rules#17096
vjpai merged 2 commits intogrpc:masterfrom
vjpai:inproc_fix

Conversation

@vjpai
Copy link
Copy Markdown
Contributor

@vjpai vjpai commented Nov 5, 2018

The inproc transport was subtly violating the status ordering rules . This was not visible since only the C++ API was exposing the inproc transport, and the C++ API doesn't request status early (until the callback streaming client API came along). Technically, this was preventing the use of the inproc transport with, for example, Python that does request status early.

@vjpai vjpai added the release notes: no Indicates if PR should not be in release notes label Nov 5, 2018
@vjpai vjpai requested a review from ncteisen November 5, 2018 09:13
@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                         FILE SIZE
 ++++++++++++++ GROWING                                           ++++++++++++++

 -------------- SHRINKING                                         --------------
  -0.0%     -88 [None]                                               -328  -0.0%
  -0.3%     -48 src/core/ext/transport/inproc/inproc_transport.cc     -48  -0.3%
      -2.3%     -84 op_state_machine                                      -84  -2.3%

  -0.0%    -136 TOTAL                                                -376  -0.0%


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 2,016,505      Total (=)      2,016,505

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
11,123,076      Total (<)     11,123,077

 No significant differences in binary sizes


@grpc-testing
Copy link
Copy Markdown

Corrupt JSON data (indicates timeout or crash): 
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.new: 10
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.old: 10


[microbenchmarks] Performance differences noted:
Benchmark                                                                 locks_per_iteration
------------------------------------------------------------------------  ---------------------
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/0           -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/1           -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/2097152     -6%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/262144      -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/32768       -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/4096        -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/512         -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/64          -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/8           -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/0        -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/1        -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/2097152  -6%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/262144   -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/32768    -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/4096     -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/512      -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/64       -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/8        -7%

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE                                                         FILE SIZE
 ++++++++++++++ GROWING                                           ++++++++++++++
  +0.1%     +16 src/core/ext/transport/inproc/inproc_transport.cc     +16  +0.1%
      +1.2%     +32 perform_stream_op                                     +32  +1.2%
      +1.8%      +4 [Unmapped]                                             +4  +1.8%

 -+-+-+-+-+-+-+ MIXED                                             +-+-+-+-+-+-+-
  -0.0%     -88 [None]                                               +560  +0.0%

  -0.0%     -72 TOTAL                                                +576  +0.0%


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 2,016,505      Total (=)      2,016,505

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
11,123,085      Total (=)     11,123,085

 No significant differences in binary sizes


@grpc-testing
Copy link
Copy Markdown

Corrupt JSON data (indicates timeout or crash): 
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.new: 10
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.old: 10


[microbenchmarks] Performance differences noted:
Benchmark                                                                 locks_per_iteration
------------------------------------------------------------------------  ---------------------
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/0           -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/1           -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/2097152     -4%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/262144      -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/32768       -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/4096        -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/512         -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/64          -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/8           -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/0        -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/1        -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/2097152  -5%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/262144   -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/32768    -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/4096     -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/512      -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/64       -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/8        -7%

@ncteisen
Copy link
Copy Markdown
Contributor

ncteisen commented Nov 5, 2018

"If it doesn't come with a test, is it a real PR?" --Vijay Pai, 2018

@vjpai
Copy link
Copy Markdown
Contributor Author

vjpai commented Nov 5, 2018

Sometimes I wish I could just keep my mouth shut....

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++

 -+-+-+-+-+-+-+ MIXED  +-+-+-+-+-+-+-
  -0.0%     -64 [None]    +552  +0.0%

  -0.0%     -64 TOTAL     +552  +0.0%


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@vjpai
Copy link
Copy Markdown
Contributor Author

vjpai commented Nov 5, 2018

Commit a3b803c adds a new test case. I have confirmed that without the inproc_transport.cc fix in place, this test fails, but with it in place, the test succeeds.

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++

 -+-+-+-+-+-+-+ MIXED  +-+-+-+-+-+-+-
  -0.0%     -64 [None]    +552  +0.0%

  -0.0%     -64 TOTAL     +552  +0.0%


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



1 similar comment
@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE              FILE SIZE
 ++++++++++++++ GROWIN ++++++++++++++

 -+-+-+-+-+-+-+ MIXED  +-+-+-+-+-+-+-
  -0.0%     -64 [None]    +552  +0.0%

  -0.0%     -64 TOTAL     +552  +0.0%


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 2,020,616      Total (=)      2,020,616

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
11,180,937      Total (<)     11,180,946

 No significant differences in binary sizes


@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

Corrupt JSON data (indicates timeout or crash): 
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.new: 10
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.old: 10


[microbenchmarks] Performance differences noted:
Benchmark                                                                 locks_per_iteration
------------------------------------------------------------------------  ---------------------
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/0           -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/1           -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/2097152     -6%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/262144      -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/32768       -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/4096        -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/512         -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/64          -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/8           -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/0        -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/1        -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/2097152  -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/262144   -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/32768    -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/4096     -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/512      -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/64       -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/8        -7%

@grpc-testing
Copy link
Copy Markdown

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 2,020,616      Total (=)      2,020,616

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
11,180,940      Total (>)     11,180,939

 No significant differences in binary sizes


@grpc-testing
Copy link
Copy Markdown

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 2,020,616      Total (=)      2,020,616

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
11,180,947      Total (>)     11,180,946

 No significant differences in binary sizes


@grpc-testing
Copy link
Copy Markdown

Corrupt JSON data (indicates timeout or crash): 
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.new: 10
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.old: 10


[microbenchmarks] Performance differences noted:
Benchmark                                                                 locks_per_iteration
------------------------------------------------------------------------  ---------------------
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/0           -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/1           -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/2097152     -6%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/262144      -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/32768       -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/4096        -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/512         -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/64          -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/8           -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/0        -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/1        -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/2097152  -6%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/262144   -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/32768    -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/4096     -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/512      -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/64       -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/8        -7%

@grpc-testing
Copy link
Copy Markdown

Corrupt JSON data (indicates timeout or crash): 
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.new: 10
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.old: 10


[microbenchmarks] Performance differences noted:
Benchmark                                                                 locks_per_iteration
------------------------------------------------------------------------  ---------------------
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/0           -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/1           -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/2097152     -6%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/262144      -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/32768       -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/4096        -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/512         -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/64          -7%
BM_StreamingPingPongMsgs<InProcess, NoOpMutator, NoOpMutator>/8           -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/0        -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/1        -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/2097152  -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/262144   -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/32768    -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/4096     -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/512      -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/64       -7%
BM_StreamingPingPongMsgs<MinInProcess, NoOpMutator, NoOpMutator>/8        -7%

@vjpai vjpai merged commit 605e3bf into grpc:master Nov 5, 2018
@vjpai vjpai deleted the inproc_fix branch November 5, 2018 20:58
@lock lock bot locked as resolved and limited conversation to collaborators Feb 3, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release notes: no Indicates if PR should not be in release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants