aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/src/main/java/io/opencensus/trace/samplers/ProbabilitySampler.java10
-rw-r--r--exporters/trace/stackdriver/src/main/java/io/opencensus/exporter/trace/stackdriver/StackdriverV2ExporterHandler.java12
-rw-r--r--exporters/trace/zipkin/src/main/java/io/opencensus/exporter/trace/zipkin/ZipkinExporterHandler.java15
3 files changed, 26 insertions, 11 deletions
diff --git a/api/src/main/java/io/opencensus/trace/samplers/ProbabilitySampler.java b/api/src/main/java/io/opencensus/trace/samplers/ProbabilitySampler.java
index d6247344..21d4d6ca 100644
--- a/api/src/main/java/io/opencensus/trace/samplers/ProbabilitySampler.java
+++ b/api/src/main/java/io/opencensus/trace/samplers/ProbabilitySampler.java
@@ -83,10 +83,12 @@ abstract class ProbabilitySampler extends Sampler {
if (parentContext != null && parentContext.getTraceOptions().isSampled()) {
return true;
}
- // If any parent link is sampled keep the sampling decision.
- for (Span parentLink : parentLinks) {
- if (parentLink.getContext().getTraceOptions().isSampled()) {
- return true;
+ if (parentLinks != null) {
+ // If any parent link is sampled keep the sampling decision.
+ for (Span parentLink : parentLinks) {
+ if (parentLink.getContext().getTraceOptions().isSampled()) {
+ return true;
+ }
}
}
// Always sample if we are within probability range. This is true even for child spans (that
diff --git a/exporters/trace/stackdriver/src/main/java/io/opencensus/exporter/trace/stackdriver/StackdriverV2ExporterHandler.java b/exporters/trace/stackdriver/src/main/java/io/opencensus/exporter/trace/stackdriver/StackdriverV2ExporterHandler.java
index 7c15ec9f..d3ade520 100644
--- a/exporters/trace/stackdriver/src/main/java/io/opencensus/exporter/trace/stackdriver/StackdriverV2ExporterHandler.java
+++ b/exporters/trace/stackdriver/src/main/java/io/opencensus/exporter/trace/stackdriver/StackdriverV2ExporterHandler.java
@@ -114,9 +114,15 @@ final class StackdriverV2ExporterHandler extends SpanExporter.Handler {
.setStartTime(toTimestampProto(spanData.getStartTimestamp()))
.setAttributes(toAttributesProto(spanData.getAttributes()))
.setTimeEvents(
- toTimeEventsProto(spanData.getAnnotations(), spanData.getNetworkEvents()))
- .setStatus(toStatusProto(spanData.getStatus()))
- .setEndTime(toTimestampProto(spanData.getEndTimestamp()));
+ toTimeEventsProto(spanData.getAnnotations(), spanData.getNetworkEvents()));
+ io.opencensus.trace.Status status = spanData.getStatus();
+ if (status != null) {
+ spanBuilder.setStatus(toStatusProto(status));
+ }
+ Timestamp end = spanData.getEndTimestamp();
+ if (end != null) {
+ spanBuilder.setEndTime(toTimestampProto(end));
+ }
if (spanData.getParentSpanId() != null && spanData.getParentSpanId().isValid()) {
spanBuilder.setParentSpanId(encodeSpanId(spanData.getParentSpanId()));
diff --git a/exporters/trace/zipkin/src/main/java/io/opencensus/exporter/trace/zipkin/ZipkinExporterHandler.java b/exporters/trace/zipkin/src/main/java/io/opencensus/exporter/trace/zipkin/ZipkinExporterHandler.java
index 00a8c9ee..5f33c1ab 100644
--- a/exporters/trace/zipkin/src/main/java/io/opencensus/exporter/trace/zipkin/ZipkinExporterHandler.java
+++ b/exporters/trace/zipkin/src/main/java/io/opencensus/exporter/trace/zipkin/ZipkinExporterHandler.java
@@ -128,9 +128,12 @@ final class ZipkinExporterHandler extends SpanExporter.Handler {
spanData.getAttributes().getAttributeMap().entrySet()) {
spanBuilder.putTag(label.getKey(), attributeValueToString(label.getValue()));
}
- spanBuilder.putTag(STATUS_CODE, spanData.getStatus().getCanonicalCode().toString());
- if (spanData.getStatus().getDescription() != null) {
- spanBuilder.putTag(STATUS_DESCRIPTION, spanData.getStatus().getDescription());
+ Status status = spanData.getStatus();
+ if (status != null) {
+ spanBuilder.putTag(STATUS_CODE, status.getCanonicalCode().toString());
+ if (status.getDescription() != null) {
+ spanBuilder.putTag(STATUS_DESCRIPTION, status.getDescription());
+ }
}
for (TimedEvent<Annotation> annotation : spanData.getAnnotations().getEvents()) {
@@ -196,7 +199,11 @@ final class ZipkinExporterHandler extends SpanExporter.Handler {
try {
sender.sendSpans(encodedSpans).execute();
} catch (IOException e) {
- tracer.getCurrentSpan().setStatus(Status.UNKNOWN.withDescription(e.getMessage()));
+ tracer
+ .getCurrentSpan()
+ .setStatus(
+ Status.UNKNOWN.withDescription(
+ e.getMessage() == null ? e.getClass().getSimpleName() : e.getMessage()));
throw new RuntimeException(e); // TODO: should we instead do drop metrics?
}
} finally {