diff --git a/src/cpp/ext/filters/census/grpc_plugin.cc b/src/cpp/ext/filters/census/grpc_plugin.cc index a3bd061f5d5..09788a615eb 100644 --- a/src/cpp/ext/filters/census/grpc_plugin.cc +++ b/src/cpp/ext/filters/census/grpc_plugin.cc @@ -57,6 +57,8 @@ void RegisterOpenCensusPlugin() { ::opencensus::trace::Span GetSpanFromServerContext( grpc::ServerContext* context) { + if (context == nullptr) return opencensus::trace::Span::BlankSpan(); + return reinterpret_cast(context->census_context()) ->Span(); } diff --git a/src/cpp/server/server_context.cc b/src/cpp/server/server_context.cc index c7cad23741c..ba32f797a57 100644 --- a/src/cpp/server/server_context.cc +++ b/src/cpp/server/server_context.cc @@ -367,7 +367,7 @@ std::string ServerContextBase::peer() const { } const struct census_context* ServerContextBase::census_context() const { - return grpc_census_call_get_context(call_); + return call_ == nullptr ? nullptr : grpc_census_call_get_context(call_); } void ServerContextBase::SetLoadReportingCosts(