Revise null values for AttributeValue (#1026)
This commit is contained in:
parent
e4e648e435
commit
73e671d8f1
|
|
@ -17,8 +17,6 @@
|
||||||
package io.opentelemetry.sdk.trace;
|
package io.opentelemetry.sdk.trace;
|
||||||
|
|
||||||
import io.opentelemetry.common.AttributeValue;
|
import io.opentelemetry.common.AttributeValue;
|
||||||
import io.opentelemetry.common.AttributeValue.Type;
|
|
||||||
import io.opentelemetry.internal.StringUtils;
|
|
||||||
import io.opentelemetry.internal.Utils;
|
import io.opentelemetry.internal.Utils;
|
||||||
import io.opentelemetry.sdk.common.Clock;
|
import io.opentelemetry.sdk.common.Clock;
|
||||||
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
|
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
|
||||||
|
|
@ -169,12 +167,27 @@ final class SpanBuilderSdk implements Span.Builder {
|
||||||
@Override
|
@Override
|
||||||
public Span.Builder setAttribute(String key, AttributeValue value) {
|
public Span.Builder setAttribute(String key, AttributeValue value) {
|
||||||
Utils.checkNotNull(key, "key");
|
Utils.checkNotNull(key, "key");
|
||||||
Utils.checkNotNull(value, "value");
|
if (isRemovedValue(value)) {
|
||||||
if (value.getType() == Type.STRING && StringUtils.isNullOrEmpty(value.getStringValue())) {
|
attributes.remove(key);
|
||||||
|
} else {
|
||||||
|
attributes.putAttribute(key, value);
|
||||||
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
attributes.putAttribute(key, value);
|
|
||||||
return this;
|
private static boolean isRemovedValue(AttributeValue value) {
|
||||||
|
if (value == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
switch (value.getType()) {
|
||||||
|
case STRING:
|
||||||
|
return value.getStringValue() == null;
|
||||||
|
case BOOLEAN:
|
||||||
|
case LONG:
|
||||||
|
case DOUBLE:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -180,6 +180,29 @@ public class SpanBuilderSdkTest {
|
||||||
spanBuilder.setAttribute("nullStringAttributeValue", AttributeValue.stringAttributeValue(null));
|
spanBuilder.setAttribute("nullStringAttributeValue", AttributeValue.stringAttributeValue(null));
|
||||||
spanBuilder.setAttribute("emptyStringAttributeValue", AttributeValue.stringAttributeValue(""));
|
spanBuilder.setAttribute("emptyStringAttributeValue", AttributeValue.stringAttributeValue(""));
|
||||||
RecordEventsReadableSpan span = (RecordEventsReadableSpan) spanBuilder.startSpan();
|
RecordEventsReadableSpan span = (RecordEventsReadableSpan) spanBuilder.startSpan();
|
||||||
|
assertThat(span.toSpanData().getAttributes().size()).isEqualTo(2);
|
||||||
|
spanBuilder.setAttribute("emptyString", (String) null);
|
||||||
|
spanBuilder.setAttribute("emptyStringAttributeValue", (String) null);
|
||||||
|
assertThat(span.toSpanData().getAttributes()).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setAttribute_nullAttributeValue() throws Exception {
|
||||||
|
Span.Builder spanBuilder = tracerSdk.spanBuilder(SPAN_NAME);
|
||||||
|
spanBuilder.setAttribute("emptyString", "");
|
||||||
|
spanBuilder.setAttribute("nullString", (AttributeValue) null);
|
||||||
|
spanBuilder.setAttribute("nullStringAttributeValue", AttributeValue.stringAttributeValue(null));
|
||||||
|
spanBuilder.setAttribute("emptyStringAttributeValue", AttributeValue.stringAttributeValue(""));
|
||||||
|
spanBuilder.setAttribute("longAttribute", 0L);
|
||||||
|
spanBuilder.setAttribute("boolAttribute", false);
|
||||||
|
spanBuilder.setAttribute("doubleAttribute", 0.12345f);
|
||||||
|
RecordEventsReadableSpan span = (RecordEventsReadableSpan) spanBuilder.startSpan();
|
||||||
|
assertThat(span.toSpanData().getAttributes().size()).isEqualTo(5);
|
||||||
|
spanBuilder.setAttribute("emptyString", (AttributeValue) null);
|
||||||
|
spanBuilder.setAttribute("emptyStringAttributeValue", (AttributeValue) null);
|
||||||
|
spanBuilder.setAttribute("longAttribute", (AttributeValue) null);
|
||||||
|
spanBuilder.setAttribute("boolAttribute", (AttributeValue) null);
|
||||||
|
spanBuilder.setAttribute("doubleAttribute", (AttributeValue) null);
|
||||||
assertThat(span.toSpanData().getAttributes()).isEmpty();
|
assertThat(span.toSpanData().getAttributes()).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue