Skip to content

Commit 04600fe

Browse files
authored
Merge branch 'master' into alejandro.gonzalez/rc-waf-rules-dup-bug
2 parents 59e693b + cce064e commit 04600fe

File tree

1,430 files changed

+5227
-4590
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,430 files changed

+5227
-4590
lines changed

.github/CODEOWNERS

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@
5151
/dd-java-agent/appsec/appsec-test-fixtures/ @DataDog/asm-java
5252
/dd-java-agent/instrumentation/*iast* @DataDog/asm-java
5353
/dd-java-agent/instrumentation/*appsec* @DataDog/asm-java
54-
/dd-java-agent/instrumentation/json/ @DataDog/asm-java
55-
/dd-java-agent/instrumentation/snakeyaml/ @DataDog/asm-java
56-
/dd-java-agent/instrumentation/velocity/ @DataDog/asm-java
54+
/dd-java-agent/instrumentation/org-json-20230227/ @DataDog/asm-java
55+
/dd-java-agent/instrumentation/snakeyaml-1.33/ @DataDog/asm-java
56+
/dd-java-agent/instrumentation/velocity-1.5/ @DataDog/asm-java
5757
/dd-java-agent/instrumentation/freemarker/ @DataDog/asm-java
5858
/dd-smoke-tests/iast-util/ @DataDog/asm-java
5959
/dd-smoke-tests/spring-security/ @DataDog/asm-java
@@ -77,18 +77,17 @@
7777

7878
# @DataDog/ci-app-libraries-java
7979
/dd-java-agent/agent-ci-visibility/ @DataDog/ci-app-libraries-java
80-
/dd-java-agent/instrumentation/cucumber/ @DataDog/ci-app-libraries-java
81-
/dd-java-agent/instrumentation/jacoco/ @DataDog/ci-app-libraries-java
80+
/dd-java-agent/instrumentation/cucumber-5.4/ @DataDog/ci-app-libraries-java
81+
/dd-java-agent/instrumentation/jacoco-0.8.9/ @DataDog/ci-app-libraries-java
8282
/dd-java-agent/instrumentation/junit @DataDog/ci-app-libraries-java
8383
/dd-java-agent/instrumentation/karate/ @DataDog/ci-app-libraries-java
84-
/dd-java-agent/instrumentation/scalatest/ @DataDog/ci-app-libraries-java
84+
/dd-java-agent/instrumentation/scalatest-3.0.8/ @DataDog/ci-app-libraries-java
8585
/dd-java-agent/instrumentation/selenium/ @DataDog/ci-app-libraries-java
8686
/dd-java-agent/instrumentation/testng/ @DataDog/ci-app-libraries-java
8787
/dd-java-agent/instrumentation/gradle/ @DataDog/ci-app-libraries-java
8888
/dd-java-agent/instrumentation/gradle-testing/ @DataDog/ci-app-libraries-java
8989
/dd-java-agent/instrumentation/maven @DataDog/ci-app-libraries-java
90-
/dd-java-agent/instrumentation/maven-surefire/ @DataDog/ci-app-libraries-java
91-
/dd-java-agent/instrumentation/weaver/ @DataDog/ci-app-libraries-java
90+
/dd-java-agent/instrumentation/weaver-0.9/ @DataDog/ci-app-libraries-java
9291
/dd-smoke-tests/gradle/ @DataDog/ci-app-libraries-java
9392
/dd-smoke-tests/junit-console/ @DataDog/ci-app-libraries-java
9493
/dd-smoke-tests/maven/ @DataDog/ci-app-libraries-java
@@ -114,6 +113,23 @@
114113
/internal-api/src/test/groovy/datadog/trace/api/datastreams @DataDog/data-streams-monitoring
115114
**/datastreams/ @DataDog/data-streams-monitoring
116115
**/DataStreams* @DataDog/data-streams-monitoring
116+
**/dsmTest/** @DataDog/data-streams-monitoring
117+
118+
/dd-java-agent/instrumentation/confluent-schema-registry/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
119+
/dd-java-agent/instrumentation/avro/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
120+
/dd-java-agent/instrumentation/protobuf-3.0/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
121+
/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
122+
/dd-java-agent/instrumentation/google-pubsub/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
123+
/dd-java-agent/instrumentation/kafka/kafka-streams-0.11/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
124+
/dd-java-agent/instrumentation/aws-java/aws-java-sns-1.0/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
125+
/dd-java-agent/instrumentation/aws-java/aws-java-sns-2.0/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
126+
/dd-java-agent/instrumentation/kafka/kafka-clients-0.11/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
127+
/dd-java-agent/instrumentation/kafka/kafka-clients-3.8/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
128+
/dd-java-agent/instrumentation/kafka/kafka-connect-0.11/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
129+
/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
130+
/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
131+
/dd-java-agent/instrumentation/grpc-1.5/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
132+
/dd-java-agent/instrumentation/armeria/armeria-grpc-0.84/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
117133

118134
# @DataDog/feature-flagging-and-experimentation-sdk
119135
/dd-smoke-tests/openfeature/ @DataDog/feature-flagging-and-experimentation-sdk
@@ -138,6 +154,9 @@ dd-java-agent/agent-llmobs/ @DataDog/ml-observability
138154
dd-trace-core/src/main/java/datadog/trace/llmobs/ @DataDog/ml-observability
139155
dd-trace-core/src/test/groovy/datadog/trace/llmobs/ @DataDog/ml-observability
140156

157+
# @DataDog/database-monitoring
158+
datadog/trace/bootstrap/instrumentation/dbm @DataDog/database-monitoring @DataDog/apm-idm-java
159+
141160
# @DataDog/rum
142161
/internal-api/src/main/java/datadog/trace/api/rum/ @DataDog/rum
143162
/internal-api/src/test/groovy/datadog/trace/api/rum/ @DataDog/rum

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ out/
5050
##########
5151
.cursor
5252

53+
# Vim #
54+
#######
55+
*.sw[nop]
56+
5357
# Others #
5458
##########
5559
/logs/*

.gitlab-ci.yml

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,21 @@ default:
117117
- .gitlab/cgroup-info.sh
118118
- gitlab_section_end "cgroup-info"
119119

120+
.container_info: &container_info
121+
- |
122+
# Containers and processes are limited to a 1-hour window, and expire after 36 hours
123+
if [ -n "$CI_JOB_STARTED_AT" ]; then
124+
FROM_EPOCH_MS=$(date -d "$CI_JOB_STARTED_AT" +%s)000
125+
TO_EPOCH_MS=$((FROM_EPOCH_MS + 3600000))
126+
TIME_PARAMS="from_ts=${FROM_EPOCH_MS}&to_ts=${TO_EPOCH_MS}&"
127+
else
128+
TIME_PARAMS=""
129+
fi
130+
131+
echo -e "${TEXT_BOLD}${TEXT_YELLOW}Runner dashboard, these are live (limited to a 1-hour window, and expire after 36 hours)${TEXT_CLEAR}"
132+
echo -e "${TEXT_BOLD}${TEXT_YELLOW} Containers:${TEXT_CLEAR} https://app.datadoghq.com/containers?${TIME_PARAMS}query=image_name%3A%2A%2Fdatadog%2Fdd-trace-java-docker-build%20AND%20pod_name%3A${POD_NAME}&live=false"
133+
echo -e "${TEXT_BOLD}${TEXT_YELLOW} Processes:${TEXT_CLEAR} https://app.datadoghq.com/process?${TIME_PARAMS}query=image_name%3A%2A%2Fdatadog%2Fdd-trace-java-docker-build%20AND%20pod_name%3A${POD_NAME}&live=false"
134+
120135
.gitlab_base_ref_params: &gitlab_base_ref_params
121136
- |
122137
export GIT_BASE_REF=$(.gitlab/find-gh-base-ref.sh)
@@ -165,6 +180,7 @@ default:
165180
unprotect: true
166181
before_script:
167182
- source .gitlab/gitlab-utils.sh
183+
- *container_info
168184
# Akka token added to SSM from https://account.akka.io/token
169185
- export ORG_GRADLE_PROJECT_akkaRepositoryToken=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-java.akka_repo_token --with-decryption --query "Parameter.Value" --out text)
170186
- export ORG_GRADLE_PROJECT_mavenRepositoryProxy=$MAVEN_REPOSITORY_PROXY
@@ -195,6 +211,7 @@ default:
195211
- gitlab_section_end "gradle-dance"
196212
after_script:
197213
- *cgroup_info
214+
- *container_info
198215

199216
# Check and fail early if maven central credentials are incorrect. When a new token is generated
200217
# on the central publisher portal, it invalidates the old one. This check prevents going further.
@@ -419,6 +436,7 @@ test_published_artifacts:
419436
- ./gradlew --version
420437
- ./gradlew $GRADLE_TARGET -x spotlessCheck $GRADLE_PARAMS -PskipTests -PrunBuildSrcTests -Pslot=$CI_NODE_INDEX/$CI_NODE_TOTAL $GRADLE_ARGS
421438
after_script:
439+
- *container_info
422440
- *cgroup_info
423441
- source .gitlab/gitlab-utils.sh
424442
- gitlab_section_start "collect-reports" "Collecting reports"
@@ -487,6 +505,7 @@ muzzle:
487505
- ./gradlew --version
488506
- ./gradlew :runMuzzle -Pslot=$CI_NODE_INDEX/$CI_NODE_TOTAL $GRADLE_ARGS
489507
after_script:
508+
- *container_info
490509
- *cgroup_info
491510
- source .gitlab/gitlab-utils.sh
492511
- gitlab_section_start "collect-reports" "Collecting reports"
@@ -509,6 +528,7 @@ muzzle-dep-report:
509528
- ./gradlew --version
510529
- ./gradlew generateMuzzleReport muzzleInstrumentationReport $GRADLE_ARGS
511530
after_script:
531+
- *container_info
512532
- *cgroup_info
513533
- .gitlab/collect_muzzle_deps.sh
514534
artifacts:
@@ -565,12 +585,13 @@ muzzle-dep-report:
565585
export PROFILER_COMMAND="-XX:StartFlightRecording=settings=profile,filename=/tmp/${CI_JOB_NAME_SLUG}.jfr,dumponexit=true";
566586
fi
567587
- *prepare_test_env
568-
- export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEM -Xmx$GRADLE_MEM $PROFILER_COMMAND -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp' -Ddatadog.forkedMaxHeapSize=1024M -Ddatadog.forkedMinHeapSize=128M"
588+
- export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms$GRADLE_MEM -Xmx$GRADLE_MEM $PROFILER_COMMAND -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djava.util.prefs.userRoot=/tmp/.java/.userPrefs-${CI_JOB_ID}' -Ddatadog.forkedMaxHeapSize=1024M -Ddatadog.forkedMinHeapSize=128M"
569589
- ./gradlew --version
570590
- ./gradlew $GRADLE_TARGET $GRADLE_PARAMS -PtestJvm=$testJvm -Pslot=$CI_NODE_INDEX/$CI_NODE_TOTAL $GRADLE_ARGS --continue || $CONTINUE_ON_FAILURE
571591
after_script:
572592
- *restore_pretest_env
573593
- *set_datadog_api_keys
594+
- *container_info
574595
- *cgroup_info
575596
- source .gitlab/gitlab-utils.sh
576597
- gitlab_section_start "collect-reports" "Collecting reports"

build.gradle.kts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ plugins {
1212
id("dd-trace-java.ci-jobs")
1313

1414
id("com.diffplug.spotless") version "8.1.0"
15-
id("com.github.spotbugs") version "6.4.7"
15+
id("me.champeau.gradle.japicmp") version "0.4.3"
16+
id("com.github.spotbugs") version "6.4.8"
1617
id("de.thetaphi.forbiddenapis") version "3.10"
1718
id("io.github.gradle-nexus.publish-plugin") version "2.0.0"
1819
id("com.gradleup.shadow") version "8.3.6" apply false
@@ -156,3 +157,29 @@ testAggregate(
156157
":dd-java-agent:agent-debugger"
157158
)
158159
)
160+
161+
// JApiCmp configuration example
162+
// Usage: ./gradlew japicmp -Partifact=groupId:artifactId -Pbaseline=1.0.0 -Ptarget=2.0.0
163+
tasks.register<me.champeau.gradle.japicmp.JapicmpTask>("japicmp") {
164+
val artifact = providers.gradleProperty("artifact").orNull
165+
val baseline = providers.gradleProperty("baseline").orNull
166+
val target = providers.gradleProperty("target").orNull
167+
168+
if (artifact != null && baseline != null && target != null) {
169+
oldClasspath.from(
170+
configurations.detachedConfiguration(
171+
dependencies.create("$artifact:$baseline")
172+
)
173+
)
174+
newClasspath.from(
175+
configurations.detachedConfiguration(
176+
dependencies.create("$artifact:$target")
177+
)
178+
)
179+
onlyModified.set(true)
180+
failOnModification.set(false)
181+
ignoreMissingClasses.set(true)
182+
txtOutputFile.set(layout.buildDirectory.file("reports/japicmp.txt"))
183+
htmlOutputFile.set(layout.buildDirectory.file("reports/japicmp.html"))
184+
}
185+
}

buildSrc/build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ gradlePlugin {
4747
id = "dd-trace-java.config-inversion-linter"
4848
implementationClass = "datadog.gradle.plugin.config.ConfigInversionLinter"
4949
}
50+
51+
create("instrumentation-naming") {
52+
id = "dd-trace-java.instrumentation-naming"
53+
implementationClass = "datadog.gradle.plugin.naming.InstrumentationNamingPlugin"
54+
}
5055
}
5156
}
5257

buildSrc/src/main/kotlin/datadog/gradle/plugin/config/ConfigInversionLinter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ private fun registerLogEnvVarUsages(target: Project, extension: SupportedTracerC
8383
include("**/src/main/java/**/*.java")
8484
exclude("**/build/**", "**/dd-smoke-tests/**")
8585
// Undertow uses DD_UNDERTOW_CONTINUATION as a legacy key to store an AgentScope. It is not related to an environment variable
86-
exclude("dd-java-agent/instrumentation/undertow/src/main/java/datadog/trace/instrumentation/undertow/UndertowDecorator.java")
86+
exclude("dd-java-agent/instrumentation/undertow/undertow-common/src/main/java/datadog/trace/instrumentation/undertow/UndertowDecorator.java")
8787
}
8888
inputs.files(javaFiles)
8989
outputs.upToDateWhen { true }
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package datadog.gradle.plugin.naming
2+
3+
import org.gradle.api.provider.Property
4+
import org.gradle.api.provider.SetProperty
5+
6+
/**
7+
* Extension for configuring instrumentation naming convention checks.
8+
*
9+
* Example usage:
10+
* ```
11+
* instrumentationNaming {
12+
* instrumentationsDir.set(file("dd-java-agent/instrumentation"))
13+
* exclusions.set(setOf("http-url-connection", "sslsocket"))
14+
* suffixes.set(setOf("-common", "-stubs"))
15+
* }
16+
* ```
17+
*/
18+
abstract class InstrumentationNamingExtension {
19+
/**
20+
* The directory containing instrumentation modules.
21+
* Defaults to "dd-java-agent/instrumentation".
22+
*/
23+
abstract val instrumentationsDir: Property<String>
24+
25+
/**
26+
* Set of module names to exclude from naming convention checks.
27+
* These modules will not be validated against the naming rules.
28+
*/
29+
abstract val exclusions: SetProperty<String>
30+
31+
/**
32+
* Set of allowed suffixes for module names (e.g., "-common", "-stubs").
33+
* Module names must end with either one of these suffixes or a version number.
34+
* Defaults to ["-common", "-stubs"].
35+
*/
36+
abstract val suffixes: SetProperty<String>
37+
38+
init {
39+
instrumentationsDir.convention("dd-java-agent/instrumentation")
40+
exclusions.convention(emptySet())
41+
suffixes.convention(setOf("-common", "-stubs"))
42+
}
43+
}

0 commit comments

Comments
 (0)