Skip to content

Commit 17fccd9

Browse files
authored
Merge branch 'master' into andrea.marziali/remove-jctools-queues
2 parents 438a50b + b9fde86 commit 17fccd9

File tree

1,214 files changed

+23162
-28945
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,214 files changed

+23162
-28945
lines changed

.github/CODEOWNERS

Lines changed: 24 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
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
issuer: https://token.actions.githubusercontent.com
2+
3+
subject_pattern: repo:DataDog/dd-trace-java:ref:refs/heads/(master|release/v.+)
4+
5+
claim_pattern:
6+
event_name: (create|workflow_dispatch)
7+
ref: refs/heads/(master|release/v.+)
8+
job_workflow_ref: DataDog/dd-trace-java/\.github/workflows/pin-system-tests\.yaml@refs/heads/(master|release/v.+)
9+
10+
permissions:
11+
contents: write
12+
pull_requests: write
13+
workflows: write
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
name: Pin system tests
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
release-branch-name:
7+
description: 'The minor release branch name (e.g. release/v1.54.x)'
8+
required: true
9+
type: string
10+
# run workflow when a release branch is created
11+
create:
12+
13+
jobs:
14+
pin-system-tests:
15+
name: "Pin system tests"
16+
if: github.event_name != 'create' || startsWith(github.ref, 'refs/heads/release/v')
17+
runs-on: ubuntu-latest
18+
permissions:
19+
contents: write
20+
id-token: write # required for OIDC token federation
21+
steps:
22+
- uses: DataDog/dd-octo-sts-action@acaa02eee7e3bb0839e4272dacb37b8f3b58ba80 # v1.0.3
23+
id: octo-sts
24+
with:
25+
scope: DataDog/dd-trace-java
26+
policy: self.pin-system-tests.create-pr
27+
28+
- name: Define base branch
29+
id: define-base-branch
30+
run: |
31+
if [[ -n "${{ github.event.inputs.release-branch-name }}" ]]; then
32+
BASE_BRANCH=${{ github.event.inputs.release-branch-name }}
33+
else
34+
BASE_BRANCH=${GITHUB_REF#refs/heads/}
35+
fi
36+
echo "base_branch=${BASE_BRANCH}" >> $GITHUB_OUTPUT
37+
38+
- name: Checkout the repository
39+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
40+
with:
41+
ref: ${{ steps.define-base-branch.outputs.base_branch }}
42+
43+
- name: Get latest commit SHA of base branch
44+
id: get-latest-commit-sha
45+
run: |
46+
echo "sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
47+
48+
- name: Define branch name
49+
id: define-branch
50+
run: echo "branch=ci/pin-system-tests-$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
51+
52+
- name: Check if branch already exists
53+
id: check-branch
54+
run: |
55+
BRANCH=${{ steps.define-branch.outputs.branch }}
56+
if git ls-remote --heads origin "$BRANCH" | grep -q "$BRANCH"; then
57+
echo "ERROR: Branch $BRANCH already exists - please delete it and re-run the workflow."
58+
exit 1
59+
else
60+
echo "Branch $BRANCH does not exist - creating it now."
61+
fi
62+
63+
- name: Update system-tests references to latest commit SHA on main
64+
run: ./tooling/update_system_test_reference.sh
65+
66+
- name: Check if changes should be committed
67+
id: check-changes
68+
run: |
69+
if [[ -z "$(git status -s)" ]]; then
70+
echo "ERROR: No changes to commit - the system-tests reference was not updated."
71+
exit 1
72+
else
73+
echo "Changes to commit:"
74+
git status -s
75+
fi
76+
77+
- name: Commit changes
78+
id: create-commit
79+
run: |
80+
git config user.name "github-actions[bot]"
81+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
82+
git commit -m "chore: Pin system-tests for release branch" .github/workflows/run-system-tests.yaml
83+
echo "commit=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
84+
85+
- name: Push changes
86+
uses: DataDog/commit-headless@5a0f3876e0fbdd3a86b3e008acf4ec562db59eee # action/v2.0.1
87+
with:
88+
token: "${{ steps.octo-sts.outputs.token }}"
89+
branch: "${{ steps.define-branch.outputs.branch }}"
90+
head-sha: "${{ steps.get-latest-commit-sha.outputs.sha }}"
91+
create-branch: true
92+
command: push
93+
commits: "${{ steps.create-commit.outputs.commit }}"
94+
95+
- name: Create pull request
96+
env:
97+
GH_TOKEN: ${{ steps.octo-sts.outputs.token }}
98+
run: |
99+
gh pr create --title "Pin system tests for release branch" \
100+
--base ${{ steps.define-base-branch.outputs.base_branch }} \
101+
--head ${{ steps.define-branch.outputs.branch }} \
102+
--label "tag: dependencies" \
103+
--label "tag: no release notes" \
104+
--body "This PR pins the system-tests reference for the release branch." \

.gitlab-ci.yml

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -109,17 +109,29 @@ default:
109109
.normalize_node_index: &normalize_node_index
110110
- if [ "$CI_NO_SPLIT" == "true" ] ; then CI_NODE_INDEX=1; CI_NODE_TOTAL=1; fi # A job uses parallel but doesn't intend to split by index
111111
- if [ -n "$CI_SPLIT" ]; then CI_NODE_INDEX="${CI_SPLIT%%/*}"; CI_NODE_TOTAL="${CI_SPLIT##*/}"; fi
112-
- echo "CI_NODE_TOTAL=${CI_NODE_TOTAL}, CI_NODE_INDEX=$CI_NODE_INDEX"
113-
- export NORMALIZED_NODE_TOTAL=${CI_NODE_TOTAL:-1}
114-
- ONE_INDEXED_NODE_INDEX=${CI_NODE_INDEX:-1}; export NORMALIZED_NODE_INDEX=$((ONE_INDEXED_NODE_INDEX - 1))
115-
- echo "NORMALIZED_NODE_TOTAL=${NORMALIZED_NODE_TOTAL}, NORMALIZED_NODE_INDEX=$NORMALIZED_NODE_INDEX"
112+
- echo "CI_NODE_INDEX=$CI_NODE_INDEX, CI_NODE_TOTAL=${CI_NODE_TOTAL}"
116113

117114
.cgroup_info: &cgroup_info
118115
- source .gitlab/gitlab-utils.sh
119116
- gitlab_section_start "cgroup-info" "cgroup info"
120117
- .gitlab/cgroup-info.sh
121118
- gitlab_section_end "cgroup-info"
122119

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+
123135
.gitlab_base_ref_params: &gitlab_base_ref_params
124136
- |
125137
export GIT_BASE_REF=$(.gitlab/find-gh-base-ref.sh)
@@ -168,6 +180,7 @@ default:
168180
unprotect: true
169181
before_script:
170182
- source .gitlab/gitlab-utils.sh
183+
- *container_info
171184
# Akka token added to SSM from https://account.akka.io/token
172185
- 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)
173186
- export ORG_GRADLE_PROJECT_mavenRepositoryProxy=$MAVEN_REPOSITORY_PROXY
@@ -198,6 +211,7 @@ default:
198211
- gitlab_section_end "gradle-dance"
199212
after_script:
200213
- *cgroup_info
214+
- *container_info
201215

202216
# Check and fail early if maven central credentials are incorrect. When a new token is generated
203217
# on the central publisher portal, it invalidates the old one. This check prevents going further.
@@ -420,8 +434,9 @@ test_published_artifacts:
420434
script:
421435
- *gitlab_base_ref_params
422436
- ./gradlew --version
423-
- ./gradlew $GRADLE_TARGET $GRADLE_PARAMS -PskipTests -PrunBuildSrcTests -PskipSpotless -PtaskPartitionCount=$NORMALIZED_NODE_TOTAL -PtaskPartition=$NORMALIZED_NODE_INDEX $GRADLE_ARGS
437+
- ./gradlew $GRADLE_TARGET -x spotlessCheck $GRADLE_PARAMS -PskipTests -PrunBuildSrcTests -Pslot=$CI_NODE_INDEX/$CI_NODE_TOTAL $GRADLE_ARGS
424438
after_script:
439+
- *container_info
425440
- *cgroup_info
426441
- source .gitlab/gitlab-utils.sh
427442
- gitlab_section_start "collect-reports" "Collecting reports"
@@ -488,8 +503,9 @@ muzzle:
488503
script:
489504
- export SKIP_BUILDSCAN="true"
490505
- ./gradlew --version
491-
- ./gradlew :runMuzzle -PtaskPartitionCount=$NORMALIZED_NODE_TOTAL -PtaskPartition=$NORMALIZED_NODE_INDEX $GRADLE_ARGS
506+
- ./gradlew :runMuzzle -Pslot=$CI_NODE_INDEX/$CI_NODE_TOTAL $GRADLE_ARGS
492507
after_script:
508+
- *container_info
493509
- *cgroup_info
494510
- source .gitlab/gitlab-utils.sh
495511
- gitlab_section_start "collect-reports" "Collecting reports"
@@ -512,6 +528,7 @@ muzzle-dep-report:
512528
- ./gradlew --version
513529
- ./gradlew generateMuzzleReport muzzleInstrumentationReport $GRADLE_ARGS
514530
after_script:
531+
- *container_info
515532
- *cgroup_info
516533
- .gitlab/collect_muzzle_deps.sh
517534
artifacts:
@@ -542,8 +559,8 @@ muzzle-dep-report:
542559
needs: [ build_tests ]
543560
stage: tests
544561
variables:
545-
KUBERNETES_MEMORY_REQUEST: 17Gi
546-
KUBERNETES_MEMORY_LIMIT: 17Gi
562+
KUBERNETES_MEMORY_REQUEST: 20Gi
563+
KUBERNETES_MEMORY_LIMIT: 20Gi
547564
KUBERNETES_CPU_REQUEST: 10
548565
GRADLE_WORKERS: 4
549566
GRADLE_MEM: 3G
@@ -568,12 +585,13 @@ muzzle-dep-report:
568585
export PROFILER_COMMAND="-XX:StartFlightRecording=settings=profile,filename=/tmp/${CI_JOB_NAME_SLUG}.jfr,dumponexit=true";
569586
fi
570587
- *prepare_test_env
571-
- 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"
572589
- ./gradlew --version
573-
- ./gradlew $GRADLE_TARGET $GRADLE_PARAMS -PtestJvm=$testJvm -PtaskPartitionCount=$NORMALIZED_NODE_TOTAL -PtaskPartition=$NORMALIZED_NODE_INDEX $GRADLE_ARGS --continue || $CONTINUE_ON_FAILURE
590+
- ./gradlew $GRADLE_TARGET $GRADLE_PARAMS -PtestJvm=$testJvm -Pslot=$CI_NODE_INDEX/$CI_NODE_TOTAL $GRADLE_ARGS --continue || $CONTINUE_ON_FAILURE
574591
after_script:
575592
- *restore_pretest_env
576593
- *set_datadog_api_keys
594+
- *container_info
577595
- *cgroup_info
578596
- source .gitlab/gitlab-utils.sh
579597
- gitlab_section_start "collect-reports" "Collecting reports"
@@ -728,7 +746,7 @@ test_smoke:
728746
GRADLE_PARAMS: "-PskipFlakyTests"
729747
CACHE_TYPE: "smoke"
730748
parallel:
731-
matrix: *test_matrix_6
749+
matrix: *test_matrix_8
732750

733751
test_ssi_smoke:
734752
extends: .test_job
@@ -739,7 +757,7 @@ test_ssi_smoke:
739757
DD_INJECT_FORCE: "true"
740758
DD_INJECTION_ENABLED: "tracer"
741759
parallel:
742-
matrix: *test_matrix_6
760+
matrix: *test_matrix_8
743761

744762
test_smoke_graalvm:
745763
extends: .test_job

.gitlab/macrobenchmarks.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,4 +143,4 @@ notify-slo-breaches:
143143
when: never
144144
- when: always
145145
variables:
146-
CHANNEL: "apm-java"
146+
CHANNEL: "apm-java-ops-bot"

.gitlab/one-pipeline.locked.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# DO NOT EDIT THIS FILE MANUALLY
22
# This file is auto-generated by automation.
33
include:
4-
- remote: https://gitlab-templates.ddbuild.io/libdatadog/one-pipeline/ca/04f6a88e3db67cb88821632d138a2a5c3105ba59760bd3dfc60b54733501ecc3/one-pipeline.yml
4+
- remote: https://gitlab-templates.ddbuild.io/libdatadog/one-pipeline/ca/58b2e8d06c714848c8577c8ac9b460b7413823d75ee96d068ebff547d109f5d0/one-pipeline.yml

build.gradle.kts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import com.diffplug.gradle.spotless.SpotlessExtension
22
import datadog.gradle.plugin.ci.testAggregate
33

44
plugins {
5+
kotlin("jvm") version libs.versions.kotlin.plugin apply false
6+
57
id("dd-trace-java.gradle-debug")
68
id("dd-trace-java.dependency-locking")
79
id("dd-trace-java.tracer-version")
@@ -10,13 +12,13 @@ plugins {
1012
id("dd-trace-java.ci-jobs")
1113

1214
id("com.diffplug.spotless") version "8.1.0"
15+
id("me.champeau.gradle.japicmp") version "0.4.3"
1316
id("com.github.spotbugs") version "6.4.7"
1417
id("de.thetaphi.forbiddenapis") version "3.10"
1518
id("io.github.gradle-nexus.publish-plugin") version "2.0.0"
1619
id("com.gradleup.shadow") version "8.3.6" apply false
1720
id("me.champeau.jmh") version "0.7.3" apply false
1821
id("org.gradle.playframework") version "0.13" apply false
19-
kotlin("jvm") version libs.versions.kotlin.plugin apply false
2022
}
2123

2224
description = "dd-trace-java"
@@ -155,3 +157,29 @@ testAggregate(
155157
":dd-java-agent:agent-debugger"
156158
)
157159
)
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+
}

0 commit comments

Comments
 (0)