Skip to content
This repository was archived by the owner on Jul 31, 2023. It is now read-only.

Commit cc57869

Browse files
authored
Add configurable rpc_deadline to trace::StackdriverExporter. (#187)
1 parent ba3a683 commit cc57869

2 files changed

Lines changed: 11 additions & 16 deletions

File tree

opencensus/exporters/trace/stackdriver/internal/stackdriver_exporter.cc

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,6 @@ constexpr char kGoogleStackdriverTraceAddress[] = "cloudtrace.googleapis.com";
4040
constexpr char kAgentKey[] = "g.co/agent";
4141
constexpr char kAgentValue[] = "opencensus-cpp";
4242

43-
gpr_timespec ConvertToTimespec(absl::Time time) {
44-
gpr_timespec g_time;
45-
int64_t secs = absl::ToUnixSeconds(time);
46-
g_time.tv_sec = secs;
47-
g_time.tv_nsec = (time - absl::FromUnixSeconds(secs)) / absl::Nanoseconds(1);
48-
return g_time;
49-
}
50-
5143
bool Validate(const google::protobuf::Timestamp& t) {
5244
const auto sec = t.seconds();
5345
const auto ns = t.nanos();
@@ -245,29 +237,28 @@ void ConvertSpans(
245237

246238
class Handler : public ::opencensus::trace::exporter::SpanExporter::Handler {
247239
public:
248-
Handler(absl::string_view project_id,
240+
Handler(const StackdriverOptions& opts,
249241
const std::shared_ptr<grpc::Channel>& channel)
250-
: project_id_(project_id),
242+
: opts_(opts),
251243
stub_(::google::devtools::cloudtrace::v2::TraceService::NewStub(
252244
channel)) {}
253245

254246
void Export(const std::vector<::opencensus::trace::exporter::SpanData>& spans)
255247
override;
256248

257249
private:
258-
const std::string project_id_;
250+
const StackdriverOptions opts_;
259251
std::unique_ptr<google::devtools::cloudtrace::v2::TraceService::Stub> stub_;
260252
};
261253

262254
void Handler::Export(
263255
const std::vector<::opencensus::trace::exporter::SpanData>& spans) {
264256
::google::devtools::cloudtrace::v2::BatchWriteSpansRequest request;
265-
request.set_name(absl::StrCat("projects/", project_id_));
266-
ConvertSpans(spans, project_id_, &request);
257+
request.set_name(absl::StrCat("projects/", opts_.project_id));
258+
ConvertSpans(spans, opts_.project_id, &request);
267259
::google::protobuf::Empty response;
268260
grpc::ClientContext context;
269-
context.set_deadline(
270-
ConvertToTimespec(absl::Now() + absl::Milliseconds(3000)));
261+
context.set_deadline(absl::ToChronoTime(absl::Now() + opts_.rpc_deadline));
271262
grpc::Status status = stub_->BatchWriteSpans(&context, request, &response);
272263
if (!status.ok()) {
273264
std::cerr << "BatchWriteSpans failed: "
@@ -282,7 +273,7 @@ void StackdriverExporter::Register(const StackdriverOptions& opts) {
282273
auto creds = grpc::GoogleDefaultCredentials();
283274
auto channel = ::grpc::CreateChannel(kGoogleStackdriverTraceAddress, creds);
284275
::opencensus::trace::exporter::SpanExporter::RegisterHandler(
285-
absl::make_unique<Handler>(opts.project_id, channel));
276+
absl::make_unique<Handler>(opts, channel));
286277
}
287278

288279
// static, DEPRECATED

opencensus/exporters/trace/stackdriver/stackdriver_exporter.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
#include "absl/base/macros.h"
2121
#include "absl/strings/string_view.h"
22+
#include "absl/time/time.h"
2223

2324
namespace opencensus {
2425
namespace exporters {
@@ -27,6 +28,9 @@ namespace trace {
2728
struct StackdriverOptions {
2829
// The Stackdriver project ID to use.
2930
std::string project_id;
31+
32+
// The RPC deadline to use when exporting to Stackdriver.
33+
absl::Duration rpc_deadline = absl::Seconds(5);
3034
};
3135

3236
class StackdriverExporter {

0 commit comments

Comments
 (0)