Merge pull request #19686 from gnossen/revert_breakage

Revert "Merge pull request #19673 from markdroth/channel_grpc_init"
pull/19690/head
Richard Belleville 5 years ago committed by GitHub
commit 1f2398b0d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 19
      src/core/lib/surface/channel.cc
  2. 6
      test/cpp/microbenchmarks/bm_call_create.cc

@ -235,23 +235,6 @@ grpc_channel* grpc_channel_create(const char* target,
grpc_channel_stack_type channel_stack_type,
grpc_transport* optional_transport,
grpc_resource_user* resource_user) {
// We need to make sure that grpc_shutdown() does not shut things down
// until after the channel is destroyed. However, the channel may not
// actually be destroyed by the time grpc_channel_destroy() returns,
// since there may be other existing refs to the channel. If those
// refs are held by things that are visible to the wrapped language
// (such as outstanding calls on the channel), then the wrapped
// language can be responsible for making sure that grpc_shutdown()
// does not run until after those refs are released. However, the
// channel may also have refs to itself held internally for various
// things that need to be cleaned up at channel destruction (e.g.,
// LB policies, subchannels, etc), and because these refs are not
// visible to the wrapped language, it cannot be responsible for
// deferring grpc_shutdown() until after they are released. To
// accommodate that, we call grpc_init() here and then call
// grpc_shutdown() when the channel is actually destroyed, thus
// ensuring that shutdown is deferred until that point.
grpc_init();
grpc_channel_stack_builder* builder = grpc_channel_stack_builder_create();
const grpc_core::UniquePtr<char> default_authority =
get_default_authority(input_args);
@ -485,8 +468,6 @@ static void destroy_channel(void* arg, grpc_error* error) {
gpr_mu_destroy(&channel->registered_call_mu);
gpr_free(channel->target);
gpr_free(channel);
// See comment in grpc_channel_create() for why we do this.
grpc_shutdown();
}
void grpc_channel_destroy(grpc_channel* channel) {

@ -686,12 +686,6 @@ static const grpc_channel_filter isolated_call_filter = {
class IsolatedCallFixture : public TrackCounters {
public:
IsolatedCallFixture() {
// We are calling grpc_channel_stack_builder_create() instead of
// grpc_channel_create() here, which means we're not getting the
// grpc_init() called by grpc_channel_create(), but we are getting
// the grpc_shutdown() run by grpc_channel_destroy(). So we need to
// call grpc_init() manually here to balance things out.
grpc_init();
grpc_channel_stack_builder* builder = grpc_channel_stack_builder_create();
grpc_channel_stack_builder_set_name(builder, "dummy");
grpc_channel_stack_builder_set_target(builder, "dummy_target");

Loading…
Cancel
Save