Merge pull request #15392 from vjpai/shutdown_comment

Add useful comment on ServerInterface::Shutdown
pull/15725/head
Vijay Pai 7 years ago committed by GitHub
commit 9baa91bd9e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 29
      include/grpcpp/impl/codegen/server_interface.h

@ -49,12 +49,35 @@ class ServerInterface : public internal::CallHook {
public:
virtual ~ServerInterface() {}
/// Shutdown the server, blocking until all rpc processing finishes.
/// Forcefully terminate pending calls after \a deadline expires.
/// \a Shutdown does the following things:
///
/// 1. Shutdown the server: deactivate all listening ports, mark it in
/// "shutdown mode" so that further call Request's or incoming RPC matches
/// are no longer allowed. Also return all Request'ed-but-not-yet-active
/// calls as failed (!ok). This refers to calls that have been requested
/// at the server by the server-side library or application code but that
/// have not yet been matched to incoming RPCs from the client. Note that
/// this would even include default calls added automatically by the gRPC
/// C++ API without the user's input (e.g., "Unimplemented RPC method")
///
/// 2. Block until all rpc method handlers invoked automatically by the sync
/// API finish.
///
/// 3. If all pending calls complete (and all their operations are
/// retrieved by Next) before \a deadline expires, this finishes
/// gracefully. Otherwise, forcefully cancel all pending calls associated
/// with the server after \a deadline expires. In the case of the sync API,
/// if the RPC function for a streaming call has already been started and
/// takes a week to complete, the RPC function won't be forcefully
/// terminated (since that would leave state corrupt and incomplete) and
/// the method handler will just keep running (which will prevent the
/// server from completing the "join" operation that it needs to do at
/// shutdown time).
///
/// All completion queue associated with the server (for example, for async
/// serving) must be shutdown *after* this method has returned:
/// See \a ServerBuilder::AddCompletionQueue for details.
/// They must also be drained (by repeated Next) after being shutdown.
///
/// \param deadline How long to wait until pending rpcs are forcefully
/// terminated.
@ -63,7 +86,7 @@ class ServerInterface : public internal::CallHook {
ShutdownInternal(TimePoint<T>(deadline).raw_time());
}
/// Shutdown the server, waiting for all rpc processing to finish.
/// Shutdown the server without a deadline and forced cancellation.
///
/// All completion queue associated with the server (for example, for async
/// serving) must be shutdown *after* this method has returned:

Loading…
Cancel
Save