Commit Graph

31 Commits

Author SHA1 Message Date
Anuraag Agrawal d8355c672d
Docs for writing new instrumentation... (#652)
* Docs for writing new instrumentation
2020-07-19 14:21:19 +09:00
Alexey Zhokhov f3421e91a0
Remove Lombok (#672)
* Gradle 6.5.1.

* Skip download javadoc and sources automatically in IntelliJ IDEA.

* Added mavenLocal to repositories.

* Removed Lombok usage.

* Removed duplicated idea config.

* Code format.

* Removed useless usage of Objects.requireNonNull.

* Use instanceof to comparing objects.

* Code format.

* Code format.

* Fixes after merge.

* Fixed sneakyThrow exception.

* Code format.
2020-07-18 15:52:55 +03:00
Trask Stalnaker 1434ea1628
Add anuraaga as a maintainer (#724) 2020-07-17 22:19:12 -07:00
Helen Y bbf5e75e63
Minor update to the contributing doc (#707)
* Minor update to the contributing doc

* Update CONTRIBUTING.md

Set core.autocrlf locally.

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>

* Update CONTRIBUTING.md

Add more clarity.

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>

* Use .gitattributes to make spotless respect line endings

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
2020-07-17 08:58:56 +09:00
Nikita Salnikov-Tarnovski 285d4b0f0e
Update docs for 0.6.0 release (#682)
* Update docs for 0.6.0 release

* Format
2020-07-13 19:50:53 +03:00
Tyler Benson 4a943c8411 Use Spotless for formatting (DataDog/dd-trace-java#1619) 2020-06-30 11:15:48 -07:00
Trask Stalnaker a4083c49aa
Update approvers list in CONTRIBUTING (#587) 2020-06-27 23:16:29 -07:00
Trask Stalnaker 4635f6ff46
Add iNikem as a maintainer (#537) 2020-06-17 10:05:17 -07:00
Nikita Salnikov-Tarnovski 58a2a3b0b4
Update documentation to point to new snapshot and release repositories (#516) 2020-06-15 17:45:37 -07:00
Trask Stalnaker 6bb31f5c54
Update save actions (#520)
Co-authored-by: Nikita Salnikov-Tarnovski <gnikem@gmail.com>
2020-06-15 07:46:12 +03:00
Nikita Salnikov-Tarnovski e61ff5bac2
Rename auto-exporters' artifacts names (#514) 2020-06-14 10:53:51 -07:00
Trask Stalnaker f0c7deb1a9
Use published MetricExporterFactory (#493) 2020-06-11 08:31:58 +03:00
Trask Stalnaker 359eb07445
Updates to reflect new repo name (#454) 2020-05-30 11:56:12 -07:00
Nikita Salnikov-Tarnovski 4acfeb9ddc
Fix brolen anchor link (#422) 2020-05-20 13:24:08 -07:00
Trask Stalnaker 46c0c087b3
Update CONTRIBUTING.md back to Java 11 (#419) 2020-05-19 15:27:17 -07:00
Steve Flanders abcaa7acc6
Update the README (#414)
* Move build and configure to top as getting started section
* Add manual instrumentation section
* Document `@WithSpan` annotation
* Move developer specific information to CONTRIBUTING.md
* Cleanup formatting and use consistent spacing
2020-05-18 21:03:39 -07:00
Nikita Salnikov-Tarnovski cd68061cb2
Update docs about needing java 11 to build (#412) 2020-05-18 14:17:32 -07:00
Nikita Salnikov-Tarnovski 67766fd13b
Add documentation about java agent structure and related classloaders (#380) 2020-05-06 10:28:35 -07:00
Nikita Salnikov-Tarnovski bae0b7b38c
Copy .editorconfig file and relevant sections in CONTRIBUTING.md from otel-java repo (#373) 2020-05-04 10:07:19 -04:00
Nikita Salnikov-Tarnovski a07d763e1a
Add requirement for java 8 and 9 into CONTRIBUTING.md (#367) 2020-04-29 10:59:17 -07:00
Nikita Salnikov-Tarnovski 6e1c0436da
Clarifications about various test tasks (#358)
In addition this commit replaces eager tasks generation for running tests using different java versions with rule based task created on-demand.
2020-04-28 18:11:17 -07:00
Trask Stalnaker 18c22fd8fd
Remove incorrect info from contributing doc (#353) 2020-04-28 14:25:47 -07:00
Trask Stalnaker b2db595430 Merge tag 'v0.45.0' into dd-merge 2020-03-05 21:49:39 -08:00
Laplie Anderson 52b5f611ea Add compiler settings for Intellij 2020-02-27 14:05:02 -05:00
Trask Stalnaker 852c00193c Merge commit 'f2d8c8e6b9967b204803a3744942582191266625' into dd-merge 2020-02-12 15:35:23 -08:00
Lev Priima 5265a43c6d Reduce use of Thread::setContextClassLoader 2020-02-06 22:53:04 -05:00
Trask Stalnaker 71d264fd00
Rename package to io.opentelemetry.auto (#54)
* Remove publishing info

* Remove Datadog-Meta-Lang handling

* Misc renames

* Rename DD_ constant field names

* Rename DDSpanTypes to SpanTypes

* Rename DDTags to MoreTags

* Rename DDSpecification to AgentSpecification

* Rename DDLocationStrategy to AgentLocationStrategy

* Rename DDCachingPoolStrategy to AgentCachingPoolStrategy

* Rename DDTransformers to AgentTransformers

* Script: rename datadog.trace to io.opentelemetry.auto

find -wholename */datadog/trace -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry/auto \;

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/datadog\.trace\./io.opentelemetry.auto./g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/datadog\/trace\//io\/opentelemetry\/auto\//g'

find -type f -name "*.gradle" | xargs sed -i 's/datadog\.trace\./io.opentelemetry.auto./g'
find -type f -name "*.gradle" | xargs sed -i 's/datadog\/trace\//io\/opentelemetry\/auto\//g'

* Script: rename more packages

find -wholename */datadog/test -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry \;
find -wholename */datadog/smoketest -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry \;
find -wholename */datadog/perftest -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry \;
find -wholename */datadog/benchmark -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry \;
find -wholename */datadog/loadgenerator -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry \;

# keep these outside of io.opentelemetry.auto for now at least (things under io.opentelemetry.auto are not instrumented)
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.test\b/io.opentelemetry.test/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.smoketest\b/io.opentelemetry.smoketest/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.perftest\b/io.opentelemetry.perftest/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.benchmark\b/io.opentelemetry.benchmark/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.loadgenerator\b/io.opentelemetry.loadgenerator/g'

# ok to move this into io.opentelemetry.auto
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.slf4j\b/io.opentelemetry.auto.slf4j/g'

find -type f -name "*.gradle" | xargs sed -i 's/datadog\.test\b/io.opentelemetry.test/g'
find -type f -name "*.gradle" | xargs sed -i 's/datadog\.smoketest\b/io.opentelemetry.smoketest/g'
find -type f -name "*.gradle" | xargs sed -i 's/datadog\.perftest\b/io.opentelemetry.perftest/g'
find -type f -name "*.gradle" | xargs sed -i 's/datadog\.benchmark\b/io.opentelemetry.benchmark/g'
find -type f -name "*.gradle" | xargs sed -i 's/datadog\.loadgenerator\b/io.opentelemetry.loadgenerator/g'

find -type f -name "*.gradle" | xargs sed -i 's/datadog\.slf4j\b/io.opentelemetry.auto.slf4j/g'

* Intellij: format and organize imports

* Script: More renaming

find -name *.xml | xargs sed -i 's/<logger name="datadog"/<logger name="io.opentelemetry.auto"/g'
find -name *.java | xargs sed -i 's/LoggerFactory.getLogger("datadog")/LoggerFactory.getLogger("io.opentelemetry.auto")/g'
find -name *.java | xargs sed -i 's/"datadog.span"/"opentelemetry.auto.span"/g'
find -name *.java -o -name *.groovy | xargs sed -i 's/"datadog.doesnotexist"/"io.opentelemetry.auto.doesnotexist"/g'

# keep this outside of io.opentelemetry.auto for now at least (things under io.opentelemetry.auto are not instrumented)
find -name *.yaml | xargs sed -i 's/"datadog.benchmark"/"io.opentelemetry.benchmark"/g'

find -type f -name "*.gradle" | xargs sed -i 's/datadog\.forked/io.opentelemetry.auto.forked/g'
find -name *.yml | xargs sed -i 's/datadog\.forked/io.opentelemetry.auto.forked/g'

* Improve comment

* Script: rename dd- modules

git mv dd-java-agent java-agent
git mv java-agent/dd-java-agent.gradle java-agent/java-agent.gradle
git mv dd-trace-api trace-api
git mv trace-api/dd-trace-api.gradle trace-api/trace-api.gradle
git mv dd-smoke-tests smoke-tests
git mv smoke-tests/dd-smoke-tests.gradle smoke-tests/smoke-tests.gradle

git mv dd-trace-java.gradle trace-java.gradle

find -type f -name "*.gradle" | xargs sed -i 's/\bdd-java-agent\b/java-agent/g'
find -type f -name "*.gradle" | xargs sed -i 's/\bdd-trace-api\b/trace-api/g'
find -type f -name "*.gradle" | xargs sed -i 's/\bdd-smoke-tests\b/smoke-tests/g'

find -type f -name "*.gradle" | xargs sed -i 's/\bdd-trace-java\b/trace-java/g'

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh -o -name *.yml | xargs sed -i 's/\bdd-java-agent\b/java-agent/g'
sed -i 's/\bdd-java-agent\b/java-agent/g' .gitignore

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh -o -name *.yml | xargs sed -i 's/\bdd-trace-api\b/trace-api/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh -o -name *.yml | xargs sed -i 's/\bdd-smoke-tests\b/smoke-tests/g'

* Remove unused config - service.name

* Remove unused config - writer.type

* Remove unused config - trace.partial.flush.min

* Script: rename dd. test packages

find -wholename */dd/trace/instrumentation -exec mkdir -p {}/../../io/opentelemetry/test \; -exec mv {} {}/../../io/opentelemetry/test \;
find -wholename */dd/test/trace/annotation -exec mkdir -p {}/../../io/opentelemetry/test \; -exec mv {} {}/../../io/opentelemetry/test \;

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/dd\.trace\.instrumentation\b/io.opentelemetry.test.instrumentation/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/dd\.test.trace\.annotation\b/io.opentelemetry.test.annotation/g'

* Script: rename dd properties

DD_PROP=opentelemetry.auto
DD_ENV=OPENTELEMETRY_AUTO
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\"dd\.\"/\"$DD_PROP.\"/g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\"DD_\"/\"${DD_ENV}_\"/g"

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.integration\./$DD_PROP.integration./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.integrations\./$DD_PROP.integrations./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDD_INTEGRATION_/${DD_ENV}_INTEGRATION_/g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDD_INTEGRATIONS_/${DD_ENV}_INTEGRATIONS_/g"

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.trace\./$DD_PROP.trace./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDdd\.trace\./D$DD_PROP.trace./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDD_TRACE_/${DD_ENV}_TRACE_/g"

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.logs\./$DD_PROP.logs./g"

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.trace_id\b/$DD_PROP.trace_id/g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.span_id\b/$DD_PROP.span_id/g"

find -type f -name "*.gradle" | xargs sed -i "s/\bdd\.trace\./$DD_PROP.trace./g"
find -type f -name "*.properties" | xargs sed -i "s/\bdd\.trace\./$DD_PROP.trace./g"

# test code
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.prop\./$DD_PROP.prop./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.float\./$DD_PROP.float./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.garbage\./$DD_PROP.garbage./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.negative\./$DD_PROP.negative./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDD_ENV_/${DD_ENV}_ENV_/g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDD_FLOAT_/${DD_ENV}_FLOAT_/g"

# test code
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\"is-dd-server\"/\"is-test-server\"/g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bisDDServer\b/isTestServer/g"

* Rename dd-java-tracer.properties to java-tracer.properties

* Rename DDTracingUtil to OpenTelemetryTracingUtil

* Codec.java was removed already

* Rename __datadog to __opentelemetry

* Misc renames

* Script: remove redundant sub-package

find -wholename */io/opentelemetry/auto/agent -exec bash -c "mv {}/* {}/.." \;
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/io\.opentelemetry\.auto\.agent\b/io.opentelemetry.auto/g'

find -type f -name "*.gradle" | xargs sed -i 's/io\.opentelemetry\.auto\.agent\b/io.opentelemetry.auto/g'

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/io\/opentelemetry\/auto\/agent\b/io\/opentelemetry\/auto/g'

* Shorten logging config keys
2020-01-14 13:57:01 -08:00
Luca Abbati ad3401b815
Apply suggestions from CR #827 2019-05-17 10:15:03 +02:00
Luca Abbati 3a6fedda14
Add context getter/setter methods to an object only if not already defined
Class `FieldBackedProvider` uses ByteBuddy to add a field and its respective getters and setters to store the context object.
Assuming that we have a class `A` that implements runnable and that we wrap with a `FieldBackedProvider`
`Runnable` interfaces, if later on we use a cglib's `Enancher` class on `A` then the our mechanism will kick in again and try
to add the methods again. This causes a `java.lang.ClassFormatError: Duplicate method name "get__datadogContext$java$lang$Runnable" with signature "()Ljava.lang.Object;"`
to be thrown because CGLIB already copied over those methods from the original class `A` to the newly created class.

With this commit we now check that method were not previously defined before adding them, and if they were then we avoid adding them
again.

The reason why it wasn't faiing before is that we only checked on context field existence, not methods and cglib do not copy over fields, it copies only methods. E.g.

```
public class Main {

    public static class A {
        private String name = "hey";
        public String getName() {
            return this.name;
        }
    }

    public static void main(String[] args) {
        System.out.println("----- 'A' declared fields -----");
        A s = new A();
        for (Field f : s.getClass().getDeclaredFields()) {
            System.out.println("field: " + f.getName());
        }
        for (Method m : s.getClass().getDeclaredMethods()) {
            System.out.println("method: " + m.getName());
        }

        System.out.println("----- Proxy declared fields -----");
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(A.class);
        enhancer.setCallback((FixedValue) () -> null);
        A proxy = (A) enhancer.create();
        for (Field f : proxy.getClass().getDeclaredFields()) {
            System.out.println("field: " + f.getName());
        }
        for (Method m : proxy.getClass().getDeclaredMethods()) {
            System.out.println("method: " + m.getName());
        }
    }
}
```

Results in:

```
----- 'A' declared fields -----
field: name
method: getName
----- Proxy declared fields -----
field: CGLIB$BOUND
field: CGLIB$FACTORY_DATA
field: CGLIB$THREAD_CALLBACKS
field: CGLIB$STATIC_CALLBACKS
field: CGLIB$CALLBACK_0
field: CGLIB$CALLBACK_FILTER
method: equals
method: toString
method: hashCode
method: clone
method: getName
method: newInstance
method: newInstance
method: newInstance
method: setCallbacks
method: CGLIB$SET_STATIC_CALLBACKS
method: CGLIB$SET_THREAD_CALLBACKS
method: getCallback
method: getCallbacks
method: CGLIB$STATICHOOK1
method: CGLIB$BIND_CALLBACKS
method: setCallback
```
2019-04-11 15:45:43 +02:00
Tyler Benson 9a71b6f389 Add import format and remove conditional reformat. 2018-07-31 11:48:26 +10:00
Tyler Benson 1124923cf1 Add contributing document 2018-07-31 11:48:26 +10:00