diff --git a/opencensus/exporters/stats/stackdriver/internal/stackdriver_exporter.cc b/opencensus/exporters/stats/stackdriver/internal/stackdriver_exporter.cc index 4db283b3..93b5d93f 100644 --- a/opencensus/exporters/stats/stackdriver/internal/stackdriver_exporter.cc +++ b/opencensus/exporters/stats/stackdriver/internal/stackdriver_exporter.cc @@ -24,6 +24,7 @@ #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" #include "absl/synchronization/mutex.h" +#include "absl/time/time.h" #include "google/monitoring/v3/metric_service.grpc.pb.h" #include "google/protobuf/empty.pb.h" #include "opencensus/common/internal/grpc/status.h" @@ -107,6 +108,8 @@ void Handler::ExportViewData( for (int i = rpc_index * kTimeSeriesBatchSize; i < batch_end; ++i) { *request.add_time_series() = time_series[i]; }; + responses[rpc_index].second.set_deadline( + absl::ToChronoTime(absl::Now() + opts_.rpc_deadline)); auto rpc(stub_->AsyncCreateTimeSeries(&responses[rpc_index].second, request, &cq)); rpc->Finish(&response, &responses[rpc_index].first, @@ -145,6 +148,7 @@ bool Handler::MaybeRegisterView( SetMetricDescriptor(project_id_, descriptor, request.mutable_metric_descriptor()); ::grpc::ClientContext context; + context.set_deadline(absl::ToChronoTime(absl::Now() + opts_.rpc_deadline)); google::api::MetricDescriptor response; ::grpc::Status status = stub_->CreateMetricDescriptor(&context, request, &response); diff --git a/opencensus/exporters/stats/stackdriver/stackdriver_exporter.h b/opencensus/exporters/stats/stackdriver/stackdriver_exporter.h index f889ba1c..bbe70ac6 100644 --- a/opencensus/exporters/stats/stackdriver/stackdriver_exporter.h +++ b/opencensus/exporters/stats/stackdriver/stackdriver_exporter.h @@ -19,6 +19,7 @@ #include "absl/base/macros.h" #include "absl/strings/string_view.h" +#include "absl/time/time.h" namespace opencensus { namespace exporters { @@ -32,6 +33,9 @@ struct StackdriverOptions { // The recommended format is "{LANGUAGE}-{PID}@{HOSTNAME}". If PID is not // available, a random number may be used. std::string opencensus_task; + + // The RPC deadline to use when exporting to Stackdriver. + absl::Duration rpc_deadline = absl::Seconds(5); }; // Exports stats for registered views (see opencensus/stats/stats_exporter.h) to