Skip to content
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; don't merge] v2.0.0-rc #2427

Draft
wants to merge 1,019 commits into
base: main
Choose a base branch
from
Draft
Changes from 1 commit
Commits
Show all changes
1019 commits
Select commit Hold shift + click to select a range
47e30f8
internal/telemetry: fix flake in TestTelemetryEnabled (#3160)
hannahkm Feb 7, 2025
bf4638c
contrib/miekg/dns: use random port for test (#3164)
rarguelloF Feb 7, 2025
434ef7b
refactor(contrib/aws/aws-sdk-go-v2): move specific integrations into …
darccio Feb 10, 2025
c45e04f
Merge branch 'v2-dev' of github.com:DataDog/dd-trace-go into v2-dev
darccio Feb 10, 2025
12cb2c8
refactor(contrib/valyala/fasthttp): move instrumentation/fasthttptrac…
darccio Feb 10, 2025
f623d73
Merge remote-tracking branch 'origin' into v2-dev
darccio Feb 10, 2025
5cdc0a4
feat(contrib): add contrib/os package
darccio Feb 10, 2025
28e6c93
(fix) internal/civisibility/coverage: [APMLP-379] fix TestCollectCove…
tonyredondo Feb 11, 2025
8155fbb
fix(contrib/aws/aws-sdk-go-v2) add copyright header to internal/log.go
darccio Feb 11, 2025
2ee7495
fix(instrumentation): add back deprecated packages
darccio Feb 11, 2025
71d8ce2
fix(instrumentation): rename PackageGopkgJinZhuGorm
darccio Feb 11, 2025
aa9493b
fix(contrib/valkey-io/valkey-go): remove internal usages
darccio Feb 12, 2025
fbd2137
fix(contrib/valkey-io/valkey-go): rename WithServiceName
darccio Feb 12, 2025
aed6d16
fix(instrumentation/httptracemock): capture status code
darccio Feb 12, 2025
02ff4ea
chore(.github/workflows): don't run Orchestrion-related CI check
darccio Feb 12, 2025
d172093
fix(ddtrace/tracer): support new valkey-io/valkey-go contrib
darccio Feb 12, 2025
c93469f
fix(.github/workflows): avoid all CI linting checks
darccio Feb 12, 2025
daf046b
fix(ddtrace/tracer): align TestTracerOptionsDefaults with main
darccio Feb 12, 2025
1b61264
fix(instrumentation/httptrace): use ErrorMsg in tests
darccio Feb 12, 2025
7f64c9f
chore(contrib): go mod tidy
darccio Feb 12, 2025
ec4253e
fix(contrib/envoyproxy/go-control-plane/cmd): refactor API
darccio Feb 12, 2025
c1d53e9
fix(contrib/envoyproxy/go-control-plane/cmd): use string trace IDs
darccio Feb 12, 2025
791121e
internal: check for new majors in v2 (#3078)
quinna-h Feb 12, 2025
c6d3a80
fix(contrib/net/http): align with #3071
darccio Feb 12, 2025
6c4b701
Merge branch 'v2-dev' of github.com:DataDog/dd-trace-go into v2-dev
darccio Feb 12, 2025
22115e9
fix(ddtrace/tracer): set meta struct value holder value as tag
darccio Feb 12, 2025
65e6b8c
fix(instrumentation/appsec/emitter/waf): return RunAddressDataBuilder…
darccio Feb 12, 2025
9b962de
ddtrace/tracer: fix flake in TestTracerMetrics (#3172)
hannahkm Feb 12, 2025
38f1c18
cherry pick #2840
korECM Oct 25, 2024
731fa2f
port #3155 and resolve merge mistakes
hannahkm Feb 12, 2025
53e78d4
Merge branch 'main' into v2-dev
hannahkm Feb 12, 2025
e9d0a17
go mod tidy
hannahkm Feb 12, 2025
ab46d54
fix(instrumentation): add missing packages
darccio Feb 13, 2025
dbfd8bf
Merge branch 'v2-dev' of github.com:DataDog/dd-trace-go into v2-dev
darccio Feb 13, 2025
51d9326
fix(contrib/aws/aws-sdk-go-v2): refactor instrumentation into interna…
darccio Feb 13, 2025
f8b76f2
fix(internal/contrib/telemetrytest): skip known subpackages
darccio Feb 13, 2025
afa4a1d
fix(ddtrace/tracer): use localhost instead of made up hostname in Tes…
darccio Feb 13, 2025
225c71d
fix(internal/appsec): returned value from meta struct is the containe…
darccio Feb 13, 2025
2142ea5
fix(contrib/valkey-io/valkey-go): adapt tests to mocktracer v2 behaviour
darccio Feb 13, 2025
1c74472
fix(instrumentation/appsec): align RunAddressDataBuilder with main & …
darccio Feb 13, 2025
fd12b92
(fix) internal/civisibility: Fix test visibility on Go 1.24 - v2 (#3180)
tonyredondo Feb 13, 2025
4aa27ce
fix(ddtrace/tracer): use localhost as hostname TestTracerOptionsDefau…
darccio Feb 13, 2025
4a99d17
Merge branch 'main' into v2-dev
darccio Feb 13, 2025
6e035e0
(feat) internal/civisibility: add flaky test management features - V2…
tonyredondo Feb 13, 2025
ad80530
fix(internal/version): v2.0.0-rc.3
darccio Feb 13, 2025
a69e484
internal: update gen supported versions workflow for v2 (#3178)
quinna-h Feb 13, 2025
475f905
fix: revert references to v2.0.0-rc.3
darccio Feb 13, 2025
6cc1a6e
fix: add missing replace directives in some nested submodules
darccio Feb 13, 2025
0394783
contrib/segmentio/kafka-go: v2.0.0-rc.3
darccio Feb 13, 2025
7951234
contrib/go-chi/chi: v2.0.0-rc.3
darccio Feb 13, 2025
9388f74
contrib/cloud.google.com/go/pubsub.v1: v2.0.0-rc.3
darccio Feb 13, 2025
b9c005d
contrib/gocql/gocql: v2.0.0-rc.3
darccio Feb 13, 2025
62edce3
contrib/hashicorp/consul: v2.0.0-rc.3
darccio Feb 13, 2025
f42caf3
contrib/miekg/dns: v2.0.0-rc.3
darccio Feb 13, 2025
0418df0
contrib/confluentinc/confluent-kafka-go/kafka: v2.0.0-rc.3
darccio Feb 13, 2025
65de6ef
contrib/net/http: v2.0.0-rc.3
darccio Feb 13, 2025
95a3dd9
contrib/twitchtv/twirp: v2.0.0-rc.3
darccio Feb 13, 2025
f2a229b
contrib/go-chi/chi.v5: v2.0.0-rc.3
darccio Feb 13, 2025
9ff4d75
contrib/99designs/gqlgen: v2.0.0-rc.3
darccio Feb 13, 2025
e9e53ef
contrib/aws/aws-sdk-go-v2: v2.0.0-rc.3
darccio Feb 13, 2025
2dc5907
contrib/syndtr/goleveldb: v2.0.0-rc.3
darccio Feb 13, 2025
3981296
contrib/tidwall/buntdb: v2.0.0-rc.3
darccio Feb 13, 2025
fb9d0c2
contrib/urfave/negroni: v2.0.0-rc.3
darccio Feb 13, 2025
26ffeb7
contrib/IBM/sarama: v2.0.0-rc.3
darccio Feb 13, 2025
2ddf253
contrib/redis/go-redis.v9: v2.0.0-rc.3
darccio Feb 13, 2025
0987219
contrib/graphql-go/graphql: v2.0.0-rc.3
darccio Feb 13, 2025
3e710f6
contrib/go-pg/pg.v10: v2.0.0-rc.3
darccio Feb 13, 2025
159901f
contrib/gofiber/fiber.v2: v2.0.0-rc.3
darccio Feb 13, 2025
7f5b91d
contrib/go-redis/redis.v8: v2.0.0-rc.3
darccio Feb 13, 2025
60ae560
contrib/gomodule/redigo: v2.0.0-rc.3
darccio Feb 13, 2025
1fbf68e
contrib/emicklei/go-restful.v3: v2.0.0-rc.3
darccio Feb 13, 2025
b1d886d
contrib/valkey-io/valkey-go: v2.0.0-rc.3
darccio Feb 13, 2025
73eee90
contrib/gin-gonic/gin: v2.0.0-rc.3
darccio Feb 13, 2025
0d58538
contrib/globalsign/mgo: v2.0.0-rc.3
darccio Feb 13, 2025
2b4778d
contrib/graph-gophers/graphql-go: v2.0.0-rc.3
darccio Feb 13, 2025
aae81c5
contrib/go-redis/redis.v7: v2.0.0-rc.3
darccio Feb 13, 2025
a1587a0
contrib/olivere/elastic.v5: v2.0.0-rc.3
darccio Feb 13, 2025
4e75be6
contrib/aws/aws-sdk-go: v2.0.0-rc.3
darccio Feb 13, 2025
e5c945d
contrib/go-redis/redis: v2.0.0-rc.3
darccio Feb 13, 2025
31a9a0b
contrib/confluentinc/confluent-kafka-go/kafka.v2: v2.0.0-rc.3
darccio Feb 13, 2025
3f954d1
contrib/julienschmidt/httprouter: v2.0.0-rc.3
darccio Feb 13, 2025
438ace1
contrib/uptrace/bun: v2.0.0-rc.3
darccio Feb 13, 2025
91bba84
contrib/log/slog: v2.0.0-rc.3
darccio Feb 13, 2025
1745b3a
contrib/sirupsen/logrus: v2.0.0-rc.3
darccio Feb 13, 2025
8401ca1
instrumentation/testutils/grpc: v2.0.0-rc.3
darccio Feb 13, 2025
e2f4d56
contrib/go.mongodb.org/mongo-driver: v2.0.0-rc.3
darccio Feb 13, 2025
d4c7a78
contrib/Shopify/sarama: v2.0.0-rc.3
darccio Feb 13, 2025
020dbd1
contrib/database/sql: v2.0.0-rc.3
darccio Feb 13, 2025
4b6df22
contrib/elastic/go-elasticsearch.v6: v2.0.0-rc.3
darccio Feb 13, 2025
f62654b
contrib/bradfitz/gomemcache: v2.0.0-rc.3
darccio Feb 13, 2025
b4a2ecf
contrib/jackc/pgx.v5: v2.0.0-rc.3
darccio Feb 13, 2025
6aea465
contrib/labstack/echo.v4: v2.0.0-rc.3
darccio Feb 13, 2025
797e02f
internal/apps: v2.0.0-rc.3
darccio Feb 13, 2025
6473426
contrib/k8s.io/client-go: v2.0.0-rc.3
darccio Feb 13, 2025
2834934
contrib/google.golang.org/api: v2.0.0-rc.3
darccio Feb 13, 2025
38a2a4a
internal/setup-smoke-test: v2.0.0-rc.3
darccio Feb 13, 2025
b4110d5
contrib/gorilla/mux: v2.0.0-rc.3
darccio Feb 13, 2025
467e28d
contrib/valyala/fasthttp: v2.0.0-rc.3
darccio Feb 13, 2025
a5e67b9
contrib/dimfeld/httptreemux.v5: v2.0.0-rc.3
darccio Feb 13, 2025
62225ad
contrib/hashicorp/vault: v2.0.0-rc.3
darccio Feb 13, 2025
bc8a349
contrib/google.golang.org/grpc: v2.0.0-rc.3
darccio Feb 13, 2025
4ee74bd
contrib/jmoiron/sqlx: v2.0.0-rc.3
darccio Feb 13, 2025
64f3f11
contrib/gorm.io/gorm.v1: v2.0.0-rc.3
darccio Feb 13, 2025
a677de0
internal/exectracetest: v2.0.0-rc.3
darccio Feb 13, 2025
5acdbb0
internal/contrib/validationtest: v2.0.0-rc.3
darccio Feb 13, 2025
db983ee
contrib/envoyproxy/go-control-plane: v2.0.0-rc.3
darccio Feb 13, 2025
57c1cdc
internal/traceprof/traceproftest: v2.0.0-rc.3
darccio Feb 13, 2025
839b9bc
contrib/internal/httptrace: add inferred span identification tag (#3184)
zarirhamza Feb 13, 2025
be9ed24
Opentelemetry Baggage Propagation (#3126)
rachelyangdog Feb 14, 2025
1861caf
Merge remote-tracking branch 'origin' into v2-dev
hannahkm Feb 14, 2025
3877915
go mod tidy
hannahkm Feb 14, 2025
c340ca1
fix(instrumentation/httptrace): use float64 casting for checking tags
darccio Feb 17, 2025
61f9c87
(feat) internal/civisibility: Parallelize test optimization startup -…
tonyredondo Feb 17, 2025
c45dfc0
Merge branch 'v2-dev' of github.com:DataDog/dd-trace-go into v2-dev
darccio Feb 17, 2025
68ca924
fix(tools/v2check): publish with new module URL
darccio Feb 17, 2025
f14420a
fix(tools/v2check): document new module URL
darccio Feb 17, 2025
65ecd28
Merge remote-tracking branch 'origin' into v2-dev
darccio Feb 18, 2025
35e3631
[v2] all: upgrade minimum supported Go release to 1.23 (#3191)
darccio Feb 18, 2025
c2dd535
[LANGPLAT-87] Implement automated release tagging for dd-trace-go v2 …
kakkoyun Feb 18, 2025
5619e75
fix(contrib/aws/aws-sdk-go-v2): apply #3185
darccio Feb 18, 2025
c8c3aec
Merge branch 'v2-dev' of github.com:DataDog/dd-trace-go into v2-dev
darccio Feb 18, 2025
609d6f7
contrib: fix service extension tests (#3197)
e-n-0 Feb 19, 2025
5609680
Merge remote-tracking branch 'origin' into v2-dev
darccio Feb 19, 2025
8d0f86e
appsec: update ATO SDK (#3201)
RomainMuller Feb 19, 2025
c38f043
Merge remote-tracking branch 'origin' into v2-dev
darccio Feb 19, 2025
26103f3
Merge remote-tracking branch 'origin' into v2-dev
darccio Feb 19, 2025
482b45a
chore: update go.work.sum
darccio Feb 19, 2025
8f64400
compare inittime to appropriate type (float64)
hannahkm Feb 19, 2025
b395cd0
Merge remote-tracking branch 'origin' into v2-dev
darccio Feb 20, 2025
4179308
fix(tools/v2check): remove replace directive for dd-trace-go
darccio Feb 20, 2025
2ffd5b6
fix(contrib): stop using ext.Error in tests
darccio Feb 20, 2025
5ad4fed
contrib: add messaging.destination.name to kafka integrations (#3173)
rarguelloF Feb 17, 2025
0ae5db7
fix(ddtrace/tracer): use "_dd.span_links" to get the span links in mo…
darccio Feb 21, 2025
44ede56
all: replace telemetry with newtelemetry (cherry-pick v2) (#3214)
eliottness Feb 21, 2025
1317cd4
fix(ddtrace/opentelemetry): adapt OTEL's TestTelemetry to deprecated …
darccio Feb 21, 2025
e299e8a
fix(go.mod): allow SQL tests to run with a certificate with negative …
darccio Feb 21, 2025
e449be1
internal/newtelemetry: fix concurrency issue and data race (#3211)
eliottness Feb 20, 2025
9489a3e
fix(go.mod): allow SQL tests to run with a certificate with negative …
darccio Feb 21, 2025
05292d3
fix(internal/log): fix race condition on UseLogger
darccio Feb 21, 2025
f34e4f8
internal/telemetry: add a lock to prevent false positive in race dete…
eliottness Feb 21, 2025
fb0220f
chore(go.mod): update to opentelemetry-mapping-go/pkg/otlp/attributes…
darccio Feb 21, 2025
eca9780
fix(contrib/k8s.io/client-go): pin k8s.io/kube-client-go
darccio Feb 22, 2025
a1e1444
chore(go.work.sum): update go.work.sum
darccio Feb 24, 2025
18449da
test(.github/workflows): try GODEBUG setting for parsing x509 certifi…
darccio Feb 24, 2025
97581bf
feat(tools): add apiextractor tool to validate v1 shim against v1 cur…
darccio Feb 24, 2025
18c26d8
fix(tools/apiextractor): support struct/interfaces' methods, and sort…
darccio Feb 24, 2025
2a1a211
fix(tools/apiextractor): support pointer receivers
darccio Feb 24, 2025
a4712be
fix(tools/apiextractor): avoid panics for unexported types
darccio Feb 24, 2025
74bfb0d
fix(tools/apiextractor): skip internal packages; fix output format
darccio Feb 24, 2025
7e3e44c
refactor(tools/apiextractor): improve extractFromNode's readability
darccio Feb 24, 2025
debd13b
feat: add orchestrion integration definitions (#3212)
RomainMuller Feb 25, 2025
7d34300
appsec: re-introduce V1 of ATO API (#3227)
RomainMuller Feb 25, 2025
6b718a6
[v2] fix: CI review and all checks green (#3228)
darccio Feb 26, 2025
6f3810d
fix(net/http): finish the request span when RASP blocking triggers (#…
RomainMuller Feb 26, 2025
73d35e5
Merge remote-tracking branch 'origin' into v2-dev
darccio Feb 26, 2025
f33ce13
civisibility: add `civisibility` folder and fix a race condition - v2…
tonyredondo Feb 27, 2025
0eb3a9d
Enable 128bit trace ID logging by default (#3116)
mtoffl01 Feb 28, 2025
3ee45a7
(fix) internal/civisibility: fix missing failing tests due to the run…
tonyredondo Mar 3, 2025
bc1c684
(feat) internal/civisibility: adds the orchestrion integration for te…
tonyredondo Mar 4, 2025
063c99b
[v2] Orchestrion supports valkey (#3249)
keisku Mar 4, 2025
6242da9
[v2] contrib/database/sql: update documentation on WithCustomTags fun…
mtoffl01 Mar 4, 2025
7400b82
fix(appsec/gqlgen): recovered from an unexpected panic from an event …
RomainMuller Mar 5, 2025
9ca8f20
(feat) internal/civisibility: adds the test_session telemetry metric …
tonyredondo Mar 7, 2025
6567663
(feat) internal/civisibility: adds the telemetry metrics for the test…
tonyredondo Mar 7, 2025
087aac9
all: small drifts fixed
darccio Mar 7, 2025
b2e0a53
Merge remote-tracking branch 'origin' into dario.castane/v2.0.0-rc.4
darccio Mar 7, 2025
2548d0b
fix(go.work): ping against 1.23
darccio Mar 7, 2025
e6b97d5
refactor(tracer): remove duplicated health metrics reporting
darccio Mar 7, 2025
be1b2c2
fix(tests): update .gitignore and refine test script for better coverage
darccio Mar 7, 2025
7916782
fix(tests): cast integration values to string for consistency in asse…
darccio Mar 7, 2025
eeab992
fix(go.mod): update dependencies to v2.0.0-rc.4 and add rueidis integ…
darccio Mar 7, 2025
0653c00
contrib/tidwall/buntdb: v2.0.0-rc.4
darccio Mar 7, 2025
2ee2ad9
contrib/go-redis/redis.v7: v2.0.0-rc.4
darccio Mar 7, 2025
78780aa
contrib/syndtr/goleveldb: v2.0.0-rc.4
darccio Mar 7, 2025
70a96e2
contrib/cloud.google.com/go/pubsub.v1: v2.0.0-rc.4
darccio Mar 7, 2025
443e4f4
contrib/99designs/gqlgen: v2.0.0-rc.4
darccio Mar 7, 2025
8fd7d50
contrib/IBM/sarama: v2.0.0-rc.4
darccio Mar 7, 2025
506322e
contrib/urfave/negroni: v2.0.0-rc.4
darccio Mar 7, 2025
f83d12e
contrib/julienschmidt/httprouter: v2.0.0-rc.4
darccio Mar 7, 2025
bdaa5ac
contrib/gofiber/fiber.v2: v2.0.0-rc.4
darccio Mar 7, 2025
0c322cf
contrib/go-redis/redis.v8: v2.0.0-rc.4
darccio Mar 7, 2025
963fbcc
contrib/net/http: v2.0.0-rc.4
darccio Mar 7, 2025
ed5cb46
contrib/go-chi/chi: v2.0.0-rc.4
darccio Mar 7, 2025
fa638f9
contrib/bradfitz/gomemcache: v2.0.0-rc.4
darccio Mar 7, 2025
42ec6e5
contrib/valkey-io/valkey-go: v2.0.0-rc.4
darccio Mar 7, 2025
f145707
contrib/go-pg/pg.v10: v2.0.0-rc.4
darccio Mar 7, 2025
66371b7
contrib/aws/aws-sdk-go: v2.0.0-rc.4
darccio Mar 7, 2025
7abe780
contrib/uptrace/bun: v2.0.0-rc.4
darccio Mar 7, 2025
ed40c33
contrib/log/slog: v2.0.0-rc.4
darccio Mar 7, 2025
2c90d28
contrib/Shopify/sarama: v2.0.0-rc.4
darccio Mar 7, 2025
fed101f
contrib/redis/rueidis: v2.0.0-rc.4
darccio Mar 7, 2025
39acb69
contrib/globalsign/mgo: v2.0.0-rc.4
darccio Mar 7, 2025
5a374ab
instrumentation/testutils/grpc: v2.0.0-rc.4
darccio Mar 7, 2025
0bc9d0a
contrib/twitchtv/twirp: v2.0.0-rc.4
darccio Mar 7, 2025
93c6977
contrib/database/sql: v2.0.0-rc.4
darccio Mar 7, 2025
c9b62bd
contrib/go-chi/chi.v5: v2.0.0-rc.4
darccio Mar 7, 2025
acb57a8
contrib/sirupsen/logrus: v2.0.0-rc.4
darccio Mar 7, 2025
6a6f1d0
contrib/emicklei/go-restful.v3: v2.0.0-rc.4
darccio Mar 7, 2025
0118682
contrib/redis/go-redis.v9: v2.0.0-rc.4
darccio Mar 7, 2025
b97bfa3
contrib/confluentinc/confluent-kafka-go/kafka.v2: v2.0.0-rc.4
darccio Mar 7, 2025
bd44f6d
contrib/graphql-go/graphql: v2.0.0-rc.4
darccio Mar 7, 2025
b90a3f2
contrib/gocql/gocql: v2.0.0-rc.4
darccio Mar 7, 2025
bf29c6a
contrib/segmentio/kafka-go: v2.0.0-rc.4
darccio Mar 7, 2025
ba77878
contrib/go.mongodb.org/mongo-driver: v2.0.0-rc.4
darccio Mar 7, 2025
af10f58
contrib/hashicorp/consul: v2.0.0-rc.4
darccio Mar 7, 2025
bb5c223
contrib/miekg/dns: v2.0.0-rc.4
darccio Mar 7, 2025
2871b52
contrib/gin-gonic/gin: v2.0.0-rc.4
darccio Mar 7, 2025
51a0d8a
contrib/confluentinc/confluent-kafka-go/kafka: v2.0.0-rc.4
darccio Mar 7, 2025
24a01d4
contrib/olivere/elastic.v5: v2.0.0-rc.4
darccio Mar 7, 2025
be68eac
contrib/elastic/go-elasticsearch.v6: v2.0.0-rc.4
darccio Mar 7, 2025
9246f40
contrib/gomodule/redigo: v2.0.0-rc.4
darccio Mar 7, 2025
dce99c0
contrib/go-redis/redis: v2.0.0-rc.4
darccio Mar 7, 2025
1ad8d2e
contrib/jackc/pgx.v5: v2.0.0-rc.4
darccio Mar 7, 2025
2029b3a
contrib/graph-gophers/graphql-go: v2.0.0-rc.4
darccio Mar 7, 2025
0fa2d30
contrib/aws/aws-sdk-go-v2: v2.0.0-rc.4
darccio Mar 7, 2025
e6c2e61
contrib/valyala/fasthttp: v2.0.0-rc.4
darccio Mar 7, 2025
3cfad31
contrib/labstack/echo.v4: v2.0.0-rc.4
darccio Mar 7, 2025
25a67bb
contrib/dimfeld/httptreemux.v5: v2.0.0-rc.4
darccio Mar 7, 2025
b999fae
internal/setup-smoke-test: v2.0.0-rc.4
darccio Mar 7, 2025
2e7131d
contrib/hashicorp/vault: v2.0.0-rc.4
darccio Mar 7, 2025
9ca56f9
contrib/k8s.io/client-go: v2.0.0-rc.4
darccio Mar 7, 2025
228a1a9
internal/apps: v2.0.0-rc.4
darccio Mar 7, 2025
fee3b80
contrib/google.golang.org/api: v2.0.0-rc.4
darccio Mar 7, 2025
5b0f181
contrib/gorilla/mux: v2.0.0-rc.4
darccio Mar 7, 2025
531f72f
contrib/google.golang.org/grpc: v2.0.0-rc.4
darccio Mar 7, 2025
383f7e2
internal/exectracetest: v2.0.0-rc.4
darccio Mar 7, 2025
16bd45e
contrib/gorm.io/gorm.v1: v2.0.0-rc.4
darccio Mar 7, 2025
7405689
contrib/jmoiron/sqlx: v2.0.0-rc.4
darccio Mar 7, 2025
b521f1e
internal/contrib/validationtest: v2.0.0-rc.4
darccio Mar 7, 2025
2e62926
internal/traceprof/traceproftest: v2.0.0-rc.4
darccio Mar 7, 2025
8a3b064
contrib/envoyproxy/go-control-plane: v2.0.0-rc.4
darccio Mar 7, 2025
c22cf40
contrib/go-chi/chi.v5: v2.0.0-rc.4
darccio Mar 7, 2025
80e1d2c
contrib/hashicorp/consul: v2.0.0-rc.4
darccio Mar 7, 2025
f8c77b2
contrib/go-redis/redis: v2.0.0-rc.4
darccio Mar 7, 2025
abd5354
internal/orchestrion/_integration: v2.0.0-rc.4
darccio Mar 7, 2025
4af8267
fix(contrib/database/sql): update integration assertion to use string…
darccio Mar 8, 2025
b6a9b93
fix(deps): update dd-trace-go dependencies to v2.0.0-rc.4
darccio Mar 8, 2025
09c26a0
fix(contrib/redis/rueidis): remove default service name and update te…
darccio Mar 8, 2025
2d4aa08
fix(contrib/gorm.io/gorm.v1): update integration assertion to use str…
darccio Mar 8, 2025
ce694c5
fix(contrib/hashicorp/consul): update integration assertion to use st…
darccio Mar 8, 2025
ef07b6f
fix(deps): update dd-trace-go dependencies to v2.0.0-rc.4
darccio Mar 8, 2025
12d9c00
Merge remote-tracking branch 'origin' into v2-dev
darccio Mar 8, 2025
179ed64
fix(deps): downgrade aws-sdk-go-v2 dependencies to v1 versions
darccio Mar 10, 2025
7000662
Merge remote-tracking branch 'origin' into v2-dev
darccio Mar 10, 2025
9153724
fix(contrib/redis/rueidis): rename WithServiceName to WithService for…
darccio Mar 10, 2025
1d706c6
Merge branch 'main' into v2-dev
darccio Mar 10, 2025
33944c0
fix(orchestrion/all): update dependencies to v2.0.0-rc.5
darccio Mar 10, 2025
4be4631
Merge branch 'v2-dev' of github.com:DataDog/dd-trace-go into v2-dev
darccio Mar 10, 2025
34406f7
fix(internal/orchestrion/_integration): update dd-trace-go dependenci…
darccio Mar 10, 2025
0a39bf6
chore(internal/version): update version tag to v2.1.0-dev
darccio Mar 11, 2025
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
347 changes: 347 additions & 0 deletions .github/workflows/apps/gen_supported_versions_doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,347 @@
// Unless explicitly stated otherwise all files in this repository are licensed
// under the Apache License Version 2.0.
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2024 Datadog, Inc.

package main

import (
"context"
"encoding/json"
"fmt"
"log"
"os"
"os/exec"
"path/filepath"
"regexp"
"sort"
"strings"
"sync"
"time"

"github.com/DataDog/dd-trace-go/v2/instrumentation"
"golang.org/x/mod/modfile"
)

const outputPath = "./contrib/supported_versions.md"

// TODO: currently this is taken from the https://github.com/DataDog/orchestrion README, it will be fetched dynamically
// when Orchestrion aspects are moved to dd-trace-go.
var autoInstrumentedLibs = map[string]struct{}{
"database/sql": {},
"github.com/gin-gonic/gin": {},
"github.com/go-chi/chi/v5": {},
"github.com/go-chi/chi": {},
"github.com/go-redis/redis/v7": {},
"github.com/go-redis/redis/v8": {},
"github.com/gofiber/fiber/v2": {},
"github.com/gomodule/redigo/redis": {},
"github.com/gorilla/mux": {},
"github.com/jinzhu/gorm": {},
"github.com/labstack/echo/v4": {},
"google.golang.org/grpc": {},
"gorm.io/gorm": {},
"net/http": {},
"go.mongodb.org/mongo-driver/mongo": {},
"github.com/aws/aws-sdk-go": {},
"github.com/hashicorp/vault": {},
"github.com/IBM/sarama": {},
"github.com/Shopify/sarama": {},
"k8s.io/client-go": {},
"log/slog": {},
"os": {},
"github.com/aws/aws-sdk-go-v2": {},
"github.com/redis/go-redis/v9": {},
"github.com/gocql/gocql": {},
"cloud.google.com/go/pubsub": {},
"github.com/99designs/gqlgen": {},
"github.com/redis/go-redis": {},
"github.com/graph-gophers/graphql-go": {},
"github.com/graphql-go/graphql": {},
"github.com/jackc/pgx": {},
"github.com/elastic/go-elasticsearch": {},
"github.com/twitchtv/twirp": {},
"github.com/segmentio/kafka-go": {},
"github.com/confluentinc/confluent-kafka-go/kafka": {},
"github.com/confluentinc/confluent-kafka-go/kafka/v2": {},
"github.com/julienschmidt/httprouter": {},
"github.com/sirupsen/logrus": {},
}

// stdlibPackages are used to skip in version checking.
var stdlibPackages = map[string]struct{}{
"log/slog": {},
"os": {},
"net/http": {},
"database/sql": {},
}

type ModuleVersion struct {
Name string
MinVersion string
MaxVersion string
Repository string
isInstrumented bool
}

// modUpdate is the type returned by 'go list -m -u -json <module>'
type modUpdate struct {
Path string
Version string
Update struct {
Path string
Version string
}
}

func main() {
modules, err := processPackages()
if err != nil {
log.Fatalf("Error processing packages: %v\n", err)
}

// update with instrumented status
for i := range modules {
modules[i].isInstrumented = isModuleAutoInstrumented(modules[i].Repository)
}

modulesWithLatest := fetchAllLatestVersions(modules)

if err := writeMarkdownFile(modulesWithLatest, outputPath); err != nil {
fmt.Println(err)
}

fmt.Println("Version information written to", outputPath)
}

func fetchLatestVersion(module string) (string, error) {
if _, ok := stdlibPackages[module]; ok {
return "N/A", nil
}

ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
defer cancel()

// Run `go list -m -u -json <module>` to retrieve latest available upgrade
out, err := runCommand(ctx, "", "go", "list", "-m", "-u", "-json", module)
if err != nil {
return "", err
}

var m modUpdate
if err := json.Unmarshal(out, &m); err != nil {
return "", fmt.Errorf("unexpected 'go list -m -u -json' output: %v", err)
}

latest := m.Version
if m.Update.Version != "" {
latest = m.Update.Version
}
return latest, nil
}

// isModuleAutoInstrumented returns whether the module has automatic tracing supported (by Orchestrion)
func isModuleAutoInstrumented(moduleName string) bool {
for key := range autoInstrumentedLibs {
if isSubdirectory(moduleName, key) {
return true
}
}
return false
}

func isSubdirectory(url, pattern string) bool {
if strings.HasPrefix(url, pattern) {
// match is either exact or followed by a "/"
return len(url) == len(pattern) || url[len(pattern)] == '/'
}
return false
}

// getCurrentVersion parses the go.mod file for a package and extracts the version of a given repository.
func getCurrentVersion(integrationName, modName string) (ModuleVersion, error) {
if _, ok := stdlibPackages[integrationName]; ok {
return ModuleVersion{
Name: integrationName,
MinVersion: "N/A",
MaxVersion: "N/A",
Repository: modName,
isInstrumented: false,
}, nil
}

// Path to contrib/{packageName}
contribPath := filepath.Join("contrib", integrationName)
goModPath := filepath.Join(contribPath, "go.mod")

// Check if go.mod exists in directory
if _, err := os.Stat(goModPath); os.IsNotExist(err) {
return ModuleVersion{}, fmt.Errorf("go.mod not found in %s", contribPath)
}

// Read the go.mod
data, err := os.ReadFile(goModPath)
if err != nil {
return ModuleVersion{}, fmt.Errorf("failed to read go.mod: %w", err)
}

// Parse the go.mod
f, err := modfile.Parse(goModPath, data, nil)
if err != nil {
return ModuleVersion{}, fmt.Errorf("failed to parse go.mod: %w", err)
}

// match the repository name
repoPattern := fmt.Sprintf(`\b%s\b`, strings.ReplaceAll(modName, "/", `/`))
repoRegex, err := regexp.Compile(repoPattern)
if err != nil {
return ModuleVersion{}, fmt.Errorf("invalid repository regex pattern: %w", err)
}

// Iterate through require dependencies
for _, req := range f.Require {
if repoRegex.MatchString(req.Mod.Path) {
return ModuleVersion{
Name: integrationName,
MinVersion: req.Mod.Version,
MaxVersion: "",
Repository: req.Mod.Path,
isInstrumented: false,
}, nil
}
}
return ModuleVersion{}, fmt.Errorf("repository %s not found in go.mod", modName)
}

// fetchAllLatestVersions concurrently fetches the latest version of each module.
func fetchAllLatestVersions(modules []ModuleVersion) []ModuleVersion {
var wg sync.WaitGroup

updatedModules := make([]ModuleVersion, len(modules))

wg.Add(len(modules))
for i, mod := range modules {
go func(i int, mod ModuleVersion) {
defer wg.Done()
latestVersion, err := fetchLatestVersion(mod.Repository)
if err != nil {
fmt.Printf("Error fetching latest version for %s: %v\n", mod.Repository, err)
updatedModules[i] = ModuleVersion{mod.Name, mod.MinVersion, "Error", mod.Repository, mod.isInstrumented}
return
}

updatedModules[i] = ModuleVersion{
Name: mod.Name,
MinVersion: mod.MinVersion,
MaxVersion: latestVersion,
Repository: mod.Repository,
isInstrumented: mod.isInstrumented,
}
}(i, mod)
}

wg.Wait()
return updatedModules
}

func writeMarkdownFile(modules []ModuleVersion, filePath string) error {
// Sort modules by name
sort.Slice(modules, func(i, j int) bool {
return modules[i].Name < modules[j].Name
})

maxColumnLength := []int{0, 0, 0, 0, 0}

rows := [][]string{
{"Module", "Datadog Integration", "Minimum Tested Version", "Maximum Tested Version", "Auto-Instrumented"},
{"-", "-", "-", "-", "-"},
}
for _, mod := range modules {
rows = append(rows, []string{
modWithPkgDevURL(mod.Repository, mod.Repository),
integrationWithPackageURL(mod.Name),
fmt.Sprintf("`%s`", mod.MinVersion),
fmt.Sprintf("`%s`", mod.MaxVersion),
boolToMarkdown(mod.isInstrumented),
})
}
for _, row := range rows {
for i, col := range row {
if len(col) > maxColumnLength[i] {
maxColumnLength[i] = len(col)
}
}
}
for _, row := range rows {
for i, col := range row {
char := " "
if col == "-" {
char = "-"
}
if len(col) < maxColumnLength[i] {
row[i] = row[i] + strings.Repeat(char, maxColumnLength[i]-len(col))
}
row[i] = char + row[i] + char
}
}

file, err := os.Create(filePath)
if err != nil {
return fmt.Errorf("error creating file: %w", err)
}
defer func() {
if err := file.Close(); err != nil {
log.Printf("failed to closed file: %v\n", err)
}
}()

for _, row := range rows {
if _, err := fmt.Fprintln(file, "|"+strings.Join(row, "|")+"|"); err != nil {
return fmt.Errorf("failed to write line: %w", err)
}
}
return nil
}

func processPackages() ([]ModuleVersion, error) {
var modules []ModuleVersion
for integrationName, mod := range instrumentation.GetPackages() {
module, err := getCurrentVersion(string(integrationName), mod)
if err != nil {
return nil, err
}
modules = append(modules, module)
}
return modules, nil

}

func runCommand(ctx context.Context, dir string, commandAndArgs ...string) ([]byte, error) {
log.Printf("running command: %q\n", strings.Join(commandAndArgs, " "))

cmd := exec.CommandContext(ctx, commandAndArgs[0], commandAndArgs[1:]...)
cmd.Stderr = os.Stderr
cmd.Dir = dir

b, err := cmd.Output()
if err != nil {
return nil, fmt.Errorf("failed to run command %q: %v", strings.Join(commandAndArgs, " "), err)
}
return b, nil
}

func integrationWithPackageURL(integrationName string) string {
modURL := fmt.Sprintf("github.com/DataDog/dd-trace-go/contrib/%s/v2", integrationName)
return modWithPkgDevURL("contrib/"+integrationName, modURL)
}

func modWithPkgDevURL(name, modURL string) string {
return fmt.Sprintf("[%s](https://pkg.go.dev/%s)", name, modURL)
}

func boolToMarkdown(val bool) string {
if val {
return ":white_check_mark:"
}
return " "
}
Loading