Skip to content

v3 dogfooding #2798

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 5 commits into
base: tvaleev/feature/RUM-9899_2
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ object AndroidConfig {
const val MIN_SDK_FOR_AUTO = 29
const val BUILD_TOOLS_VERSION = "36.0.0"

val VERSION = Version(2, 26, 0, Version.Type.Snapshot)
val VERSION = Version(3, 0, 0, Version.Type.Snapshot)
}

// TODO RUM-628 Switch to Java 17 bytecode
Expand Down
519 changes: 26 additions & 493 deletions ci/pipelines/default-pipeline.yml

Large diffs are not rendered by default.

20 changes: 16 additions & 4 deletions features/dd-sdk-android-logs/api/apiSurface
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,17 @@ data class com.datadog.android.log.LogsConfiguration
fun setEventMapper(com.datadog.android.event.EventMapper<com.datadog.android.log.model.LogEvent>): Builder
fun build(): LogsConfiguration
data class com.datadog.android.log.model.LogEvent
constructor(Device, Os, Status, kotlin.String, kotlin.String, kotlin.String, Logger, Usr? = null, Account? = null, Network? = null, Error? = null, kotlin.String? = null, kotlin.String, kotlin.collections.MutableMap<kotlin.String, kotlin.Any?> = mutableMapOf())
constructor(LogEventDevice, Os, Status, kotlin.String, kotlin.String, kotlin.String, Logger, Dd, Usr? = null, Account? = null, Network? = null, Error? = null, kotlin.String? = null, kotlin.String, kotlin.collections.MutableMap<kotlin.String, kotlin.Any?> = mutableMapOf())
fun toJson(): com.google.gson.JsonElement
companion object
fun fromJson(kotlin.String): LogEvent
fun fromJsonObject(com.google.gson.JsonObject): LogEvent
data class Device
data class LogEventDevice
constructor(Type? = null, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.collections.List<kotlin.String>? = null, kotlin.String? = null, kotlin.Number? = null, kotlin.Boolean? = null, kotlin.Number? = null)
fun toJson(): com.google.gson.JsonElement
companion object
fun fromJson(kotlin.String): Device
fun fromJsonObject(com.google.gson.JsonObject): Device
fun fromJson(kotlin.String): LogEventDevice
fun fromJsonObject(com.google.gson.JsonObject): LogEventDevice
data class Os
constructor(kotlin.String, kotlin.String, kotlin.String? = null, kotlin.String)
fun toJson(): com.google.gson.JsonElement
Expand All @@ -58,6 +58,12 @@ data class com.datadog.android.log.model.LogEvent
companion object
fun fromJson(kotlin.String): Logger
fun fromJsonObject(com.google.gson.JsonObject): Logger
data class Dd
constructor(DdDevice)
fun toJson(): com.google.gson.JsonElement
companion object
fun fromJson(kotlin.String): Dd
fun fromJsonObject(com.google.gson.JsonObject): Dd
data class Usr
constructor(kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.collections.MutableMap<kotlin.String, kotlin.Any?> = mutableMapOf())
fun toJson(): com.google.gson.JsonElement
Expand All @@ -82,6 +88,12 @@ data class com.datadog.android.log.model.LogEvent
companion object
fun fromJson(kotlin.String): Error
fun fromJsonObject(com.google.gson.JsonObject): Error
data class DdDevice
constructor(kotlin.String)
fun toJson(): com.google.gson.JsonElement
companion object
fun fromJson(kotlin.String): DdDevice
fun fromJsonObject(com.google.gson.JsonObject): DdDevice
data class Client
constructor(SimCarrier? = null, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.String)
fun toJson(): com.google.gson.JsonElement
Expand Down
132 changes: 87 additions & 45 deletions features/dd-sdk-android-logs/api/dd-sdk-android-logs.api

Large diffs are not rendered by default.

26 changes: 26 additions & 0 deletions features/dd-sdk-android-logs/src/main/json/log/log-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,31 @@
],
"readOnly": true
},
"_dd": {
"type": "object",
"description": "Datadog internal information",
"properties": {
"device": {
"type": "object",
"description": "Information about the device that produced this log.",
"properties": {
"architecture": {
"type": "string",
"description": "The CPU architecture of the device",
"readOnly": true
}
},
"required": [
"architecture"
],
"readOnly": true
}
},
"required": [
"device"
],
"readOnly": true
},
"usr": {
"type": "object",
"description": "User properties",
Expand Down Expand Up @@ -239,6 +264,7 @@
"date",
"service",
"logger",
"_dd",
"ddtags",
"device",
"os"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,11 @@ internal class DatadogLogGenerator(
buildId = datadogContext.appBuildId,
error = error,
logger = loggerInfo,
dd = LogEvent.Dd(
device = LogEvent.DdDevice(
architecture = deviceInfo.architecture
)
),
usr = usr,
account = account,
network = network,
Expand All @@ -210,7 +215,7 @@ internal class DatadogLogGenerator(
versionMajor = deviceInfo.osMajorVersion
)

private fun resolveDeviceInfo(deviceInfo: DeviceInfo) = LogEvent.Device(
private fun resolveDeviceInfo(deviceInfo: DeviceInfo) = LogEvent.LogEventDevice(
type = resolveDeviceType(deviceInfo.deviceType),
name = deviceInfo.deviceName,
model = deviceInfo.deviceModel,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,18 @@ internal class LogEventForgeryFactory : ForgeryFactory<LogEvent> {
version = forge.aStringMatching("[0-9]\\.[0-9]\\.[0-9]"),
threadName = forge.aNullable { forge.anAlphabeticalString() }
),
device = LogEvent.Device(
device = LogEvent.LogEventDevice(
type = resolveDeviceType(deviceInfo.deviceType),
name = deviceInfo.deviceName,
model = deviceInfo.deviceModel,
brand = deviceInfo.deviceBrand,
architecture = deviceInfo.architecture
),
dd = LogEvent.Dd(
device = LogEvent.DdDevice(
architecture = deviceInfo.architecture
)
),
os = LogEvent.Os(
name = deviceInfo.osName,
version = deviceInfo.osVersion,
Expand Down
1 change: 1 addition & 0 deletions features/dd-sdk-android-trace-api/api/apiSurface
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ object com.datadog.android.trace.api.DatadogTracingConstants
const val PROPAGATION_STYLE_EXTRACT: String
const val PROPAGATION_STYLE_INJECT: String
const val SERVICE_NAME: String
const val SDK_V2_COMPATIBILITY_FLAG: String
const val URL_AS_RESOURCE_NAME: String
const val TAGS: String
object LogAttributes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ public final class com/datadog/android/trace/api/DatadogTracingConstants$TracerC
public static final field PARTIAL_FLUSH_MIN_SPANS Ljava/lang/String;
public static final field PROPAGATION_STYLE_EXTRACT Ljava/lang/String;
public static final field PROPAGATION_STYLE_INJECT Ljava/lang/String;
public static final field SDK_V2_COMPATIBILITY_FLAG Ljava/lang/String;
public static final field SERVICE_NAME Ljava/lang/String;
public static final field SPAN_TAGS Ljava/lang/String;
public static final field TAGS Ljava/lang/String;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,8 @@ object DatadogTracingConstants {
const val TRACE_RATE_LIMIT: String = "trace.rate.limit"

/**
* A configuration key used to set the minimum number of spans required to trigger a partial flush of trace data.
* A configuration key used to set the minimum number of spans
* required to trigger a partial flush of trace data.
*/
const val PARTIAL_FLUSH_MIN_SPANS: String = "trace.partial.flush.min.spans"

Expand All @@ -144,6 +145,16 @@ object DatadogTracingConstants {
*/
const val SERVICE_NAME: String = "service.name"

/**
* A constant flag used to toggle compatibility with SDK version 2 for the tracer.
*
* When this flag is enabled (set to "true"), the SDK adjusts its behavior of a sampler factory,
* making it same sampler as in SDK v2.*.*.
*
* This flag only being used by OTel tracer implementation and disabled by default.
*/
const val SDK_V2_COMPATIBILITY_FLAG: String = "v2.compatibility.enabled"

/**
* A constant representing the configuration key for enabling or disabling the rule
* that uses URLs as resource names in tracing.
Expand All @@ -166,7 +177,8 @@ object DatadogTracingConstants {
const val ERROR_KIND: String = "error.kind"

/**
* The actual Throwable/Exception/Error object instance itself. E.g., a [UnsupportedOperationException] instance.
* The actual Throwable/Exception/Error object instance itself.
* E.g., a [UnsupportedOperationException] instance.
*/
const val ERROR_OBJECT: String = "error.object"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ public class com/datadog/trace/api/Config {
public fun isTracePropagationExtractFirst ()Z
public fun isTracePropagationStyleB3PaddingEnabled ()Z
public fun isTraceStrictWritesEnabled ()Z
public fun isV2CompatibilityEnabled ()Z
public static fun jmxFetchIntegrationEnabled (Ljava/util/SortedSet;Z)Z
public fun toString ()Ljava/lang/String;
public static fun traceAnalyticsIntegrationEnabled (Ljava/util/SortedSet;Z)Z
Expand Down Expand Up @@ -867,6 +868,7 @@ public final class com/datadog/trace/api/config/TracerConfig {
public static final field SCOPE_INHERIT_ASYNC_PROPAGATION Ljava/lang/String;
public static final field SCOPE_ITERATION_KEEP_ALIVE Ljava/lang/String;
public static final field SCOPE_STRICT_MODE Ljava/lang/String;
public static final field SDK_V2_COMPATIBILITY_FLAG Ljava/lang/String;
public static final field SECURE_RANDOM Ljava/lang/String;
public static final field SERVICE_MAPPING Ljava/lang/String;
public static final field SPAN_SAMPLING_RULES Ljava/lang/String;
Expand Down Expand Up @@ -996,12 +998,12 @@ public abstract interface class com/datadog/trace/api/interceptor/MutableSpan {
public abstract fun getOperationName ()Ljava/lang/CharSequence;
public abstract fun getResourceName ()Ljava/lang/CharSequence;
public abstract fun getRootSpan ()Lcom/datadog/trace/api/interceptor/MutableSpan;
public abstract fun getSamplingPriority ()Ljava/lang/Integer;
public abstract fun getServiceName ()Ljava/lang/String;
public abstract fun getSpanType ()Ljava/lang/String;
public abstract fun getStartTime ()J
public fun getTag (Ljava/lang/String;)Ljava/lang/Object;
public abstract fun getTags ()Ljava/util/Map;
public abstract fun getTraceSamplingPriority ()Ljava/lang/Integer;
public abstract fun isError ()Z
public abstract fun setError (Z)Lcom/datadog/trace/api/interceptor/MutableSpan;
public abstract fun setMetric (Ljava/lang/CharSequence;D)Lcom/datadog/trace/api/interceptor/MutableSpan;
Expand Down Expand Up @@ -1639,10 +1641,11 @@ public abstract interface class com/datadog/trace/bootstrap/instrumentation/api/
public abstract interface class com/datadog/trace/bootstrap/instrumentation/api/AgentSpan$Context {
public abstract fun baggageItems ()Ljava/lang/Iterable;
public abstract fun getPathwayContext ()Lcom/datadog/trace/bootstrap/instrumentation/api/PathwayContext;
public abstract fun getSamplingPriority ()I
public abstract fun getSpanId ()J
public abstract fun getSpanSamplingPriority ()I
public abstract fun getTrace ()Lcom/datadog/trace/bootstrap/instrumentation/api/AgentTrace;
public abstract fun getTraceId ()Lcom/datadog/trace/api/DDTraceId;
public abstract fun getTraceSamplingPriority ()I
public fun mergePathwayContext (Lcom/datadog/trace/bootstrap/instrumentation/api/PathwayContext;)V
}

Expand Down Expand Up @@ -1729,7 +1732,6 @@ public final class com/datadog/trace/bootstrap/instrumentation/api/AgentTracer$N
public fun getResourceNamePriority ()B
public synthetic fun getRootSpan ()Lcom/datadog/trace/api/interceptor/MutableSpan;
public fun getRootSpan ()Lcom/datadog/trace/bootstrap/instrumentation/api/AgentSpan;
public fun getSamplingPriority ()Ljava/lang/Integer;
public fun getServiceName ()Ljava/lang/String;
public fun getSpanId ()J
public synthetic fun getSpanName ()Ljava/lang/CharSequence;
Expand All @@ -1739,6 +1741,7 @@ public final class com/datadog/trace/bootstrap/instrumentation/api/AgentTracer$N
public fun getTag (Ljava/lang/String;)Ljava/lang/Object;
public fun getTags ()Ljava/util/Map;
public fun getTraceId ()Lcom/datadog/trace/api/DDTraceId;
public fun getTraceSamplingPriority ()Ljava/lang/Integer;
public fun hasResourceName ()Z
public fun isError ()Z
public fun isSameTrace (Lcom/datadog/trace/bootstrap/instrumentation/api/AgentSpan;)Z
Expand Down Expand Up @@ -1802,11 +1805,12 @@ public final class com/datadog/trace/bootstrap/instrumentation/api/AgentTracer$N
public fun getForwarded ()Ljava/lang/String;
public fun getForwardedFor ()Ljava/lang/String;
public fun getPathwayContext ()Lcom/datadog/trace/bootstrap/instrumentation/api/PathwayContext;
public fun getSamplingPriority ()I
public fun getSpanId ()J
public fun getSpanSamplingPriority ()I
public fun getTerminatedContextLinks ()Ljava/util/List;
public fun getTrace ()Lcom/datadog/trace/bootstrap/instrumentation/api/AgentTrace;
public fun getTraceId ()Lcom/datadog/trace/api/DDTraceId;
public fun getTraceSamplingPriority ()I
public fun getTrueClientIp ()Ljava/lang/String;
public fun getUserAgent ()Ljava/lang/String;
public fun getXClientIp ()Ljava/lang/String;
Expand Down Expand Up @@ -2133,13 +2137,14 @@ public class com/datadog/trace/bootstrap/instrumentation/api/TagContext : com/da
public fun getPropagationStyle ()Lcom/datadog/trace/api/TracePropagationStyle;
public final fun getRequestContextDataAppSec ()Ljava/lang/Object;
public final fun getRequestContextDataIast ()Ljava/lang/Object;
public final fun getSamplingPriority ()I
public fun getSpanId ()J
public fun getSpanSamplingPriority ()I
public final fun getTags ()Ljava/util/Map;
public fun getTerminatedContextLinks ()Ljava/util/List;
public final fun getTrace ()Lcom/datadog/trace/bootstrap/instrumentation/api/AgentTrace;
public fun getTraceConfig ()Lcom/datadog/trace/api/TraceConfig;
public fun getTraceId ()Lcom/datadog/trace/api/DDTraceId;
public final fun getTraceSamplingPriority ()I
public fun getTrueClientIp ()Ljava/lang/String;
public fun getUserAgent ()Ljava/lang/String;
public fun getXClientIp ()Ljava/lang/String;
Expand Down Expand Up @@ -2376,6 +2381,8 @@ public class com/datadog/trace/common/sampling/PrioritySampling {
public class com/datadog/trace/common/sampling/RateByServiceTraceSampler : com/datadog/trace/common/sampling/PrioritySampler, com/datadog/trace/common/sampling/Sampler, com/datadog/trace/common/writer/RemoteResponseListener {
public static final field SAMPLING_AGENT_RATE Ljava/lang/String;
public fun <init> ()V
public fun <init> (Ljava/lang/Double;)V
public fun getSampleRate ()D
public fun onResponse (Ljava/lang/String;Ljava/util/Map;)V
public fun sample (Lcom/datadog/trace/core/CoreSpan;)Z
public fun setSamplingPriority (Lcom/datadog/trace/core/CoreSpan;)V
Expand Down Expand Up @@ -2577,6 +2584,7 @@ public abstract interface class com/datadog/trace/core/CoreSpan {
public abstract fun getResourceName ()Ljava/lang/CharSequence;
public abstract fun getServiceName ()Ljava/lang/String;
public abstract fun getSpanId ()J
public abstract fun getSpanSamplingPriority ()I
public abstract fun getStartTime ()J
public abstract fun getTag (Ljava/lang/CharSequence;)Ljava/lang/Object;
public abstract fun getTag (Ljava/lang/CharSequence;Ljava/lang/Object;)Ljava/lang/Object;
Expand All @@ -2588,7 +2596,6 @@ public abstract interface class com/datadog/trace/core/CoreSpan {
public abstract fun isTopLevel ()Z
public abstract fun processTagsAndBaggage (Lcom/datadog/trace/core/MetadataConsumer;)V
public abstract fun removeTag (Ljava/lang/String;)Lcom/datadog/trace/core/CoreSpan;
public abstract fun samplingPriority ()I
public abstract fun setErrorMessage (Ljava/lang/String;)Lcom/datadog/trace/core/CoreSpan;
public abstract fun setFlag (Ljava/lang/CharSequence;Z)Lcom/datadog/trace/core/CoreSpan;
public abstract fun setMeasured (Z)Lcom/datadog/trace/core/CoreSpan;
Expand Down Expand Up @@ -2735,10 +2742,10 @@ public class com/datadog/trace/core/DDSpan : com/datadog/trace/api/profiling/Tra
public fun getResourceNamePriority ()B
public synthetic fun getRootSpan ()Lcom/datadog/trace/api/interceptor/MutableSpan;
public fun getRootSpan ()Lcom/datadog/trace/bootstrap/instrumentation/api/AgentSpan;
public fun getSamplingPriority ()Ljava/lang/Integer;
public fun getServiceName ()Ljava/lang/String;
public fun getSpanId ()J
public fun getSpanName ()Ljava/lang/CharSequence;
public fun getSpanSamplingPriority ()I
public fun getSpanType ()Ljava/lang/String;
public fun getStartTime ()J
public fun getStartTimeNano ()J
Expand All @@ -2747,6 +2754,7 @@ public class com/datadog/trace/core/DDSpan : com/datadog/trace/api/profiling/Tra
public fun getTag (Ljava/lang/String;)Ljava/lang/Object;
public fun getTags ()Ljava/util/Map;
public fun getTraceId ()Lcom/datadog/trace/api/DDTraceId;
public fun getTraceSamplingPriority ()Ljava/lang/Integer;
public fun getType ()Ljava/lang/CharSequence;
public fun getWrapper ()Ljava/lang/Object;
public fun hasResourceName ()Z
Expand All @@ -2764,7 +2772,6 @@ public class com/datadog/trace/core/DDSpan : com/datadog/trace/api/profiling/Tra
public final fun publish ()V
public synthetic fun removeTag (Ljava/lang/String;)Lcom/datadog/trace/core/CoreSpan;
public fun removeTag (Ljava/lang/String;)Lcom/datadog/trace/core/DDSpan;
public fun samplingPriority ()I
public synthetic fun setBaggageItem (Ljava/lang/String;Ljava/lang/String;)Lcom/datadog/trace/bootstrap/instrumentation/api/AgentSpan;
public final fun setBaggageItem (Ljava/lang/String;Ljava/lang/String;)Lcom/datadog/trace/core/DDSpan;
public fun setEndpointTracker (Lcom/datadog/trace/api/EndpointTracker;)V
Expand Down Expand Up @@ -2884,14 +2891,15 @@ public class com/datadog/trace/core/DDSpanContext : com/datadog/trace/api/gatewa
public fun getResourceName ()Ljava/lang/CharSequence;
public fun getResourceNamePriority ()B
public fun getRootSpanId ()J
public fun getSamplingPriority ()I
public fun getServiceName ()Ljava/lang/String;
public fun getSpanId ()J
public fun getSpanSamplingPriority ()I
public fun getSpanType ()Ljava/lang/CharSequence;
public fun getTags ()Ljava/util/Map;
public synthetic fun getTrace ()Lcom/datadog/trace/bootstrap/instrumentation/api/AgentTrace;
public fun getTrace ()Lcom/datadog/trace/core/PendingTrace;
public fun getTraceId ()Lcom/datadog/trace/api/DDTraceId;
public fun getTraceSamplingPriority ()I
public fun getTraceSegment ()Lcom/datadog/trace/api/internal/TraceSegment;
public fun getTracer ()Lcom/datadog/trace/core/CoreTracer;
public fun hasResourceName ()Z
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1803,6 +1803,10 @@ public boolean isSamplingMechanismValidationDisabled() {
return configProvider.getBoolean(TracerConfig.SAMPLING_MECHANISM_VALIDATION_DISABLED, false);
}

public boolean isV2CompatibilityEnabled() {
return configProvider.getBoolean(TracerConfig.SDK_V2_COMPATIBILITY_FLAG, false);
}

/**
* @param integrationNames
* @param defaultEnabled
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ public final class TracerConfig {
public static final String TRACE_SAMPLING_OPERATION_RULES = "trace.sampling.operation.rules";
// JSON rules
public static final String TRACE_SAMPLING_RULES = "trace.sampling.rules";
public static final String SDK_V2_COMPATIBILITY_FLAG = "v2.compatibility.enabled";
public static final String SPAN_SAMPLING_RULES = "span.sampling.rules";
public static final String SPAN_SAMPLING_RULES_FILE = "span.sampling.rules.file";
// a global rate used for all services (that don’t have a dedicated rule defined).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public interface MutableSpan {
MutableSpan setResourceName(final CharSequence resourceName);

@Nullable
Integer getSamplingPriority();
Integer getTraceSamplingPriority();

/**
* @param newPriority
Expand Down
Loading
Loading