Commit Graph

342 Commits

Author SHA1 Message Date
Vijay Pai 847b0155d9 Promise to call OnStarted and forbid Start* until after OnStarted 2019-03-27 16:30:07 -07:00
Karthik Ravi Shankar dc3a715be4 Fix clang format code errors. 2019-03-27 14:33:58 -07:00
Karthik Ravi Shankar c399349dad Merge branch 'master' into grpc_namespace_server 2019-03-27 14:32:10 -07:00
Karthik Ravi Shankar 7068560b2b Merge branch 'master' into grpc_namespace_server_credentials 2019-03-27 14:18:42 -07:00
Karthik Ravi Shankar 0f078898d5 Merge branch 'master' into revert-18502-revert-18242-grpc_namespace_serverbuilder 2019-03-27 12:50:49 -07:00
Vijay Pai abb991be25 Further clarify some APIs by removing their comments from internal:: 2019-03-27 09:46:08 -07:00
Vijay Pai 9169159f30 Comments for all callback API methods 2019-03-26 23:33:23 -07:00
Karthik Ravi Shankar 996da58667
Revert "Revert "Moving ::grpc::ServerBuilder to ::grpc_impl::ServerBuilder"" 2019-03-26 08:04:32 -07:00
Karthik Ravi Shankar e4bb7cb8bb
Revert "Moving ::grpc::ServerBuilder to ::grpc_impl::ServerBuilder" 2019-03-25 19:57:17 -07:00
Vijay Pai f4fdd829d7
Merge pull request #17892 from RohanTalip/HandlerParameter-doc
Renamed the param in the documentation for HandleParameter to match the actual parameter.
2019-03-25 16:46:17 -07:00
Karthik Ravi Shankar 88fc2a6a52
Merge pull request #18242 from grpc/grpc_namespace_serverbuilder
Moving ::grpc::ServerBuilder to ::grpc_impl::ServerBuilder
2019-03-25 15:59:01 -07:00
Soheil Hassas Yeganeh ad1b3e5094 Introduce grpc_byte_buffer_reader_peek and use it for Protobuf parsing.
grpc_byte_buffer_reader_next() copies and references the slice. This
is not always necessary since the caller will not use the slice
after destroying the byte buffer.

A prominent example is the protobuf parser, which
calls grpc_byte_buffer_reader_next() and immediately unrefs the slice
after the call. This ref() and unref() calls can be very expensive
in the hot path.

This commit introduces grpc_byte_buffer_reader_peek() which
essentialy return a pointer to the slice in the buffer, i.e.,
no copies, and no refs.

QPS of 1MiB 1 Channel callback benchmark increases by 5%.
More importantly insructions per cycle is increased by 10%.

Also add tests and benchmarks for byte_buffer_reader_peek()

This commit reaplies 509e77a5a3
2019-03-21 06:03:45 -04:00
Vijay Pai 50576179f8
Merge pull request #17978 from yashykt/interceptorcleanup1
Global Interceptor Registration allowed only once
2019-03-20 19:13:55 -07:00
Karthik Ravi Shankar 04af168cf8 Move Server into grpc_impl from grpc 2019-03-20 13:05:36 -07:00
Karthik Ravi Shankar 54171e276f Fold server credentials from grpc to grpc_impl namespace 2019-03-20 10:00:34 -07:00
Vijay Pai 7b3a120295 Address reviewer comments 2019-03-18 16:51:15 -07:00
Vijay Pai 93f0a3f653 Address reviewer comments 2019-03-18 15:37:35 -07:00
Vijay Pai 04a6b8467c Support callback on cancellation of server-side unary RPCs 2019-03-18 12:00:57 -07:00
Karthik Ravi Shankar 322e720fe6 Merge branch 'master' into grpc_namespace_serverbuilder 2019-03-18 10:39:38 -07:00
Vijay Pai 8c3d4a7dfd
Merge pull request #18072 from vjpai/client_streaming_hold
C++ callback API: Add support for client-side extra-reaction operations via Holds
2019-03-16 10:27:36 -07:00
Vijay Pai 48ce4ca939 Add support for extra-reaction operations via Holds 2019-03-15 16:17:01 -07:00
Norman Link 3d28761029 Fixing memory leak in interceptor by removing unsued send_status_ 2019-03-13 21:42:02 +01:00
Karthik Ravi Shankar 3b7a47cde6 Moving ::grpc::ServerBuilder to ::grpc_impl::ServerBuilder
This change moves ServerBuilder class from grpc namespace to grpc_impl
namespace.
2019-03-04 17:01:14 -08:00
Vijay Pai 05d8ddfc6e Support callback-based generic service 2019-03-04 13:13:12 -08:00
Soheil Hassas Yeganeh 509e77a5a3 Introduce grpc_byte_buffer_reader_peek and use it for Protobuf parsing.
grpc_byte_buffer_reader_next() copies and references the slice. This
is not always necessary since the caller will not use the slice
after destroying the byte buffer.

A prominent example is the protobuf parser, which
calls grpc_byte_buffer_reader_next() and immediately unrefs the slice
after the call. This ref() and unref() calls can be very expensive
in the hot path.

This commit introduces grpc_byte_buffer_reader_peek() which
essentialy return a pointer to the slice in the buffer, i.e.,
no copies, and no refs.

QPS of 1MiB 1 Channel callback benchmark increases by 5%.
More importantly insructions per cycle is increased by 10%.

Also add tests and benchmarks for byte_buffer_reader_peek()
2019-03-04 14:17:46 -05:00
Nicolas Noble 91ad888497
Revert "Revert "Folding the Channel class into the grpc_impl namespace."" 2019-02-27 16:53:23 -08:00
Vijay Pai 2eb25c871e Avoid build errors 2019-02-26 03:08:06 -08:00
Vijay Pai 857e622e6f
Merge pull request #18098 from vjpai/try_2
Reduce starting callback counter to exclude client-side StartCall
2019-02-22 19:52:29 -08:00
Vijay Pai 147c61b2a4 Exclude StartCall from starting callback counter value 2019-02-20 21:13:44 -08:00
Yuwei Huang 3cbf4f50ea Remove extra semicolons after function definitions
We are planning to enable -Wextra-semi flag in our project but some
header files in gRPC have extra semicolons that violates the check and
blocks us from enabling the flag.

This change removes unnecessary semicolons in the code. Note that having
semicolon after the GRPC_ABSTRACT macro technically also violates the
check, but it's fine for us since they are not used in public headers,
and it will be confusing to have lines ending only with GRPC_ABSTRACT,
so I keep them as-is.
2019-02-20 17:58:30 -08:00
Nicolas Noble 2ad245cb0c
Revert "Folding the Channel class into the grpc_impl namespace." 2019-02-15 09:52:15 -08:00
Nicolas "Pixel" Noble 035442b086 Fixing header guard. 2019-02-14 21:40:31 +01:00
Nicolas "Pixel" Noble 5847c3a87a Reformat. 2019-02-14 20:05:59 +01:00
Nicolas "Pixel" Noble 12b0db3e57 Folding CompletionQueue and ServerCompletionQueue. 2019-02-14 20:01:14 +01:00
Yash Tibrewal 73353ad281 Merge branch 'master' into interceptorcleanup1 2019-02-13 12:47:47 -08:00
Yash Tibrewal 50497c2317 Reviewer comments 2019-02-13 12:46:07 -08:00
Nicolas "Pixel" Noble 63db582516 Merge branch 'master' of https://github.com/grpc/grpc into channel 2019-02-13 00:19:23 +01:00
Yash Tibrewal c71b2f4fb7 Global Interceptor Registration allowed only once 2019-02-07 19:36:51 -08:00
Yash Tibrewal 89ee1a8b10 Improved interception docs 2019-02-07 19:18:40 -08:00
Rohan Talip d68c0d29d9 Renamed the param in the documentation for HandleParameter to match the actual parameter.
This should prevent warnings like the following:

=== BUILD TARGET FirebaseFirestore OF PROJECT Pods WITH CONFIGURATION Debug ===
In file included from $PROJECT_DIR/platforms/ios/Pods/FirebaseFirestore/Firestore/core/src/firebase/firestore/remote/stream.mm:17:
In file included from $PROJECT_DIR/platforms/ios/Pods/FirebaseFirestore/Firestore/core/src/firebase/firestore/remote/stream.h:27:
In file included from $PROJECT_DIR/platforms/ios/Pods/FirebaseFirestore/Firestore/core/src/firebase/firestore/remote/grpc_connection.h:28:
In file included from $PROJECT_DIR/platforms/ios/Pods/FirebaseFirestore/Firestore/core/src/firebase/firestore/remote/grpc_stream.h:35:
In file included from $PROJECT_DIR/platforms/ios/build/emulator/grpcpp.framework/Headers/generic/generic_stub.h:24:
In file included from $PROJECT_DIR/platforms/ios/build/emulator/grpcpp.framework/Headers/support/async_stream.h:22:
In file included from $PROJECT_DIR/platforms/ios/build/emulator/grpcpp.framework/Headers/impl/codegen/async_stream.h:26:
In file included from $PROJECT_DIR/platforms/ios/build/emulator/grpcpp.framework/Headers/impl/codegen/service_type.h:24:
$PROJECT_DIR/platforms/ios/build/emulator/grpcpp.framework/Headers/impl/codegen/rpc_service_method.h:49:16: warning: parameter 'rpc_requester' not found in the function declaration
      [-Wdocumentation]
    /// \param rpc_requester : used only by the callback API. It is a function
               ^~~~~~~~~~~~~
$PROJECT_DIR/platforms/ios/build/emulator/grpcpp.framework/Headers/impl/codegen/rpc_service_method.h:49:16: note: did you mean 'requester'?
    /// \param rpc_requester : used only by the callback API. It is a function
               ^~~~~~~~~~~~~
               requester
1 warning generated.
2019-02-01 12:56:56 -08:00
Yash Tibrewal 5e2e61b6e5 Note on conditions of usage 2019-01-28 16:37:02 -08:00
Yash Tibrewal 3a2cfe50ec Rever copyright changes 2019-01-28 16:18:49 -08:00
Yash Tibrewal 786598a6ff Merge branch 'master' into interceptorcqavalanching 2019-01-28 11:54:39 -08:00
Yash Tibrewal 9dd8a13439 Restructure code to handle cases exposed by the callback api 2019-01-24 19:03:55 -08:00
Nicolas "Pixel" Noble cabbd35014 Reformat. 2019-01-24 23:42:12 +01:00
Yash Tibrewal 4dcb14ec9e Fix codegen_test_minimal 2019-01-24 13:05:05 -08:00
Yash Tibrewal d347ec7ce0 Register for cq avalanching when interceptors are going to be run 2019-01-23 19:11:51 -08:00
Nicolas "Pixel" Noble 2fd079ff7c Channel folding. 2019-01-23 21:40:07 +01:00
Yash Tibrewal 73b1a918e4 Slight update to grammar. Can probably be improved more 2019-01-08 09:28:09 -08:00
Yash Tibrewal b8a542cd23 Update Send message interception methods docs 2019-01-08 09:20:15 -08:00
Vijay Pai 1730c06c48
Merge pull request #17655 from yashykt/callbackwriteoptions
Use the WriteOptions in Client Callback API
2019-01-08 08:15:43 -08:00
Yash Tibrewal 361acdbed1 Use the WriteOptions in Client Callback API 2019-01-07 17:33:16 -08:00
Yash Tibrewal b35b449166 Update docs according to #17630 2019-01-07 17:20:58 -08:00
Yash Tibrewal 34d77aae5e Always nullify serializer to free memory 2019-01-07 14:12:03 -08:00
Yash Tibrewal dd067fd390 Merge branch 'master' into nocopyinterception 2019-01-07 10:09:06 -08:00
Yash Tibrewal 7d1491d64c Address reviewer comments 2019-01-07 09:23:35 -08:00
Yash Tibrewal 059459a9ee Merge branch 'master' into failhijackedrecv 2019-01-04 17:28:25 -08:00
Yash Tibrewal b05ca9697b Merge branch 'master' into failhijackedrecv 2019-01-04 11:30:03 -08:00
Yash Tibrewal 9b9ef64027 Add more information on the usage of FailHijackedRecvMessage 2019-01-04 11:29:57 -08:00
Yash Tibrewal 2b4781ca52 Use Status() instead of Status::OK to avoid issues with codegen_test_minimal 2019-01-03 18:32:10 -08:00
Yash Tibrewal 7eeda22d9e s/two/three 2019-01-03 18:23:15 -08:00
Yash Tibrewal df49204b97 Remove unused variable 2019-01-03 18:10:21 -08:00
Yash Tibrewal 4224384d39 Modifying semantics for GetSendMessage and GetSerializedSendMessage.
Also adding ModifySendMessage
2019-01-03 18:01:58 -08:00
Yash Tibrewal bac79bdabe Merge branch 'master' into failhijackedsend 2019-01-03 15:51:43 -08:00
Yash Tibrewal 50c60f03ba Rename GetSendMessage to GetSerializedSendMessage and GetOriginalSendMessage to GetSendMessage 2019-01-03 12:21:19 -08:00
Yash Tibrewal c6261f4b91 Rename new SendMessage types to SendMessagePtr 2019-01-02 14:46:52 -08:00
Yash Tibrewal 4aeba42528 Provide GetOriginalSendMessage for some APIs 2018-12-28 17:27:38 -08:00
Yash Tibrewal 24e37e249a Merge branch 'master' into failhijackedrecv 2018-12-26 15:10:41 -08:00
Yash Tibrewal 5a6183f1bd Merge branch 'master' into failhijackedsend 2018-12-26 13:33:06 -08:00
Vijay Pai 8cd1c0e379
Merge pull request #17552 from vjpai/interceptor_comments
Document purpose and validity of interception API
2018-12-18 22:43:49 -08:00
Vijay Pai cfe08f35f3 Add comments explaining purpose and validity of interception API 2018-12-18 14:53:56 -08:00
Yash Tibrewal 3c3876a5da
Merge pull request #17544 from yashykt/factorydocs
Allow interceptor creators to return nullptr
2018-12-18 14:48:43 -08:00
hcaseyal e51a28636f
Merge pull request #17512 from hcaseyal/update_md_doc
Improve metadata documentation for the user
2018-12-18 14:14:57 -08:00
Yash Tibrewal 31a775b425 Add missing argument 2018-12-18 12:52:14 -08:00
Yash Tibrewal d590583456 Allow interceptor creators to return nullptr 2018-12-18 12:10:20 -08:00
Hope Casey-Allen 233123ae3f Improve metadata documentation for the user 2018-12-18 11:50:17 -08:00
Yash Tibrewal bb303513dc Merge master 2018-12-18 11:40:52 -08:00
Vijay Pai f2324e1c05 Reset the SendMessage pointer before post-interception 2018-12-16 16:01:14 -08:00
Vijay Pai a8688d3bd3
Merge pull request #17510 from vjpai/bb_api
Add API comments indicating that byte buffer copy is size-independent
2018-12-14 15:18:01 -08:00
Vijay Pai b0b4c0d9c3 Add API comments indicating that byte buffer copy is size-independent 2018-12-14 13:52:25 -08:00
Vijay Pai 23817e1738
Merge pull request #17434 from vjpai/delete
Delete unwanted constructor/assignment
2018-12-14 13:12:00 -08:00
Vijay Pai e7be6223d8 Delete unwanted constructor/assignment 2018-12-06 17:10:03 -08:00
Vijay Pai 97de30d7b3 Allow the interceptor to know the method type 2018-12-06 15:51:31 -08:00
Vijay Pai 13a4977c23 Treat StartCall like a reserved callback since it is required 2018-12-06 09:02:03 -08:00
Vijay Pai eb0b39df3d Do OnDone as the actual last thing so that the reactor can be reused. 2018-12-05 16:04:26 -08:00
Vijay Pai 606177bbc8 Document that ClientContext must remain alive for duration of RPC 2018-12-03 20:00:08 -08:00
Vijay Pai 2a0c0d7ad6 Streaming API for callback servers 2018-11-30 16:14:21 -08:00
Vijay Pai 2b5d45ab38 Fix clang-tidy and golden file issues 2018-11-30 04:13:41 -08:00
Vijay Pai 28dd7981d6 clang-format 2018-11-30 04:13:40 -08:00
Vijay Pai ea1156da3f Stop exposing streaming object class 2018-11-30 04:13:40 -08:00
Vijay Pai dac2066a1c Make StartCall() a releasing operation so that you can pile up ops 2018-11-30 04:13:40 -08:00
Vijay Pai fa45ffd418 Address reviewer comments 2018-11-30 04:13:40 -08:00
Vijay Pai d7eb26648d Client callback streaming 2018-11-30 04:13:40 -08:00
Yash Tibrewal 8fb11e6d5e Apply the conversion on the status irrespective of whether Pluck returned true 2018-11-21 14:11:59 -08:00
Yash Tibrewal 544f2a5abb Necessary change after #17219 2018-11-21 14:00:16 -08:00
Yash Tibrewal 00c9c40004 Remove extraneous logging statements 2018-11-15 16:01:14 -08:00
Yash Tibrewal d4ebd30eb2 Add method to get status of send message op on POST_SEND_MESSAGE 2018-11-15 15:57:43 -08:00
Yash Tibrewal 0911e489e3 Add a method to check whether the message was received successfully 2018-11-15 13:55:56 -08:00
Yash Tibrewal a9bee9b7ed Make Pluck use the changes made in FinalizeResult 2018-11-14 17:48:35 -08:00
Yash Tibrewal 5d7d6c0fbd Add method to fail hijacked send messages 2018-11-14 17:35:26 -08:00
Vijay Pai 0e29d7b9bc Properly clear metadata and other structs when reusing ServerContext 2018-11-13 12:44:56 -08:00
Yash Tibrewal 565edf5297 Add safety checks 2018-11-09 19:51:11 -08:00
Yash Tibrewal 699c10386d Add method to fail recv msg for hijacked rpcs 2018-11-09 19:43:00 -08:00
Yash Tibrewal a803f96e5a Add comment on cancellation being forever alone in the batch 2018-11-06 15:32:05 -08:00
Yash Tibrewal 193b4b57ec
Merge pull request #17072 from yashykt/interceptor_cancellation
Interceptors should see a Cancellation notification
2018-11-06 14:56:24 -08:00
Vijay Pai 1e850944e9 Release the CallbackWithSuccessTag from a server context completionop 2018-11-06 11:49:17 -08:00
Vijay Pai 526d2e6004 Refactoring of CallbackWithSuccessTag 2018-11-06 11:20:50 -08:00
Yash Tibrewal f055c1cfd2 Remove unnecessary header 2018-11-05 14:35:55 -08:00
Yash Tibrewal f240af0cb8 Add GPR_CODEGEN_DEBUG_ASSERT 2018-11-05 13:56:06 -08:00
Yash Tibrewal 6faa17c6ca s/new/post-1.0 2018-11-02 11:46:10 -07:00
Yash Tibrewal 3ac7f2d24c
Merge pull request #17053 from yashykt/global_interceptor
Add global client interceptor factory
2018-11-02 08:56:16 -07:00
Yash Tibrewal ded9434e4c Add array header for complaining compiler 2018-11-01 18:36:40 -07:00
Yash Tibrewal 382fe4b475 Add override back to GetInterceptedChannel 2018-11-01 18:17:02 -07:00
Yash Tibrewal ddcadad5b5 Add note on hijacking 2018-11-01 16:26:04 -07:00
Yash Tibrewal b732e9c403 Make client interceptors see notification even if Cancel was done before the RPC was issued. Also add tests 2018-11-01 16:14:40 -07:00
Yash Tibrewal fd88dcaf55 Add cancellation notification 2018-11-01 11:58:46 -07:00
Yash Tibrewal 3ece34d45c Let us clean a few things before getting started 2018-10-31 15:29:26 -07:00
Yash Tibrewal 857e79ce00 Improve documentation 2018-10-31 14:35:54 -07:00
Vijay Pai 932abf48a3 Address reviewer comments. 2018-10-31 01:02:07 -07:00
Vijay Pai 2f47137a6e Add support for IsCancelled check 2018-10-30 23:15:59 -07:00
Vijay Pai b460622c2d Address reviewer comments 2018-10-30 12:35:56 -07:00
Vijay Pai 47d0d5bf1f Merge branch 'master' into server_callback 2018-10-30 12:29:35 -07:00
Yash Tibrewal 0390b29e15 Register global interceptors functionality 2018-10-30 02:43:01 -07:00
Yash Tibrewal 3c1ca6bf39
Merge pull request #17034 from yashykt/interceptorcleanup
Get ClientContext included with ChannelInterface, and slight more cle…
2018-10-30 00:12:55 -07:00
Vijay Pai 84e763f10a Experimental C++ server callback unary API 2018-10-29 13:41:25 -07:00
Vijay Pai 371b1d99d5 Add call as param to MethodHandler::Deserialize to allow arena use 2018-10-29 02:10:00 -07:00
Yash Tibrewal bfd1935afc Add note on the experimental nature of the additional method in ServerInterface 2018-10-29 01:56:12 -07:00
Yash Tibrewal 85ddf5c713 Get ClientContext included with ChannelInterface, and slight more cleanup 2018-10-29 00:14:05 -07:00
Yash Tibrewal 01313976e1
Merge pull request #16842 from yashykt/interceptors
Experimental API for Client and Server Interception
2018-10-28 23:36:59 -07:00
Yash Tibrewal 395edbfa24 Replace size_t initialization from false to 0 2018-10-27 20:14:06 -07:00
Yash Tibrewal 2475744c75 Change index to size_t 2018-10-26 18:14:55 -07:00
Yash Tibrewal 005eb29298 Missed reviewer comments 2018-10-26 16:52:18 -07:00
Yash Tibrewal 1ea195b6f3 Reviewer comments except for void * fixed 2018-10-26 16:11:48 -07:00
Yash Tibrewal 6a5f39db3c Separate out interceptorbatchmethodimpl to a different file 2018-10-26 15:47:16 -07:00
Yash Tibrewal c2e3fde9b5 Rename call.h to call_op_set.h and call_wrapper.h to call.h 2018-10-26 15:15:48 -07:00
Sree Kuchibhotla 91faa8e8f0
Fix an outdated comment
Fix the outdated commment in ServerCompletionQueue constructor
2018-10-26 10:49:52 -07:00
Yash Tibrewal cc21d32c77 Some cleanup 2018-10-26 00:13:55 -07:00
Yash Tibrewal 312feb4202 Adding generic rpc and unimplemented rpc test for server interceptors 2018-10-25 21:43:49 -07:00
Yash Tibrewal 3896dabb85 Merge branch 'master' into interceptors 2018-10-25 19:50:10 -07:00
Yash Tibrewal a094b7b312 Added server async tests 2018-10-25 19:24:30 -07:00
Vijay Pai 63921c7f63
Merge pull request #16992 from morganchen12/warnings
Fix warnings in doc comments
2018-10-25 17:04:42 -07:00
Vijay Pai 56f1d3d697 clang-format 2018-10-25 11:06:32 -07:00
ncteisen 4fa389b137 Unifying grpc build hacks 2018-10-24 17:25:51 -07:00
ncteisen 482641501c Revert "Revert "Refactor Channelz Service to Support Internal Build""
This reverts commit 2eafaccba6.
2018-10-24 17:22:22 -07:00
Yash Tibrewal 281de1bb30 Solve memory leak due to double setting of set_server_rpc_info 2018-10-24 15:54:08 -07:00
Noah Eisen 2eafaccba6
Revert "Refactor Channelz Service to Support Internal Build" 2018-10-24 15:44:50 -07:00
Morgan Chen 6f4f17a3d0 Fix documentation warnings 2018-10-24 15:29:19 -07:00
Vijay Pai 22dc39ae66 Change CatchingCallback function to be varargs for broader use 2018-10-24 02:28:57 -07:00
Yash Tibrewal 62280b42c7 Add client streaming, server streaming and bidi streaming tests 2018-10-23 21:08:39 -07:00
Yash Tibrewal 66cc56bb03 Another server side test 2018-10-23 15:33:08 -07:00