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

Composite Samplers prototype #1443

Merged
merged 18 commits into from
Sep 16, 2024
Merged

Conversation

PeterF778
Copy link
Contributor

This PR modifies the Consistent Probability Samplers to make them conform to the proposed Composite Samplers at open-telemetry/oteps#250

More work is planned: The classes ConsistentSampler and ComposableSampler should be probably merged into one.

This PR modifies the Consistent Probability Samplers to make them conform to the proposed Composite Samplers at open-telemetry/oteps#250
@PeterF778 PeterF778 requested a review from a team August 30, 2024 00:29
@github-actions github-actions bot requested a review from oertl August 30, 2024 00:29
@PeterF778 PeterF778 marked this pull request as draft August 30, 2024 14:43
@PeterF778 PeterF778 marked this pull request as ready for review September 3, 2024 21:07
PeterF778 and others added 14 commits September 5, 2024 15:02
…pler/consistent56/ComposableSampler.java

Co-authored-by: Otmar Ertl <[email protected]>
…pler/consistent56/SamplingIntent.java

Co-authored-by: Otmar Ertl <[email protected]>
…pler/consistent56/SamplingIntent.java

Co-authored-by: Otmar Ertl <[email protected]>
…pler/consistent56/SamplingIntent.java

Co-authored-by: Otmar Ertl <[email protected]>
…pler/consistent56/UseCaseTest.java

Co-authored-by: Otmar Ertl <[email protected]>
…pler/consistent56/ConsistentRuleBasedSampler.java

Co-authored-by: Otmar Ertl <[email protected]>
…pler/consistent56/ConsistentAnyOf.java

Co-authored-by: Otmar Ertl <[email protected]>
…pler/consistent56/ConsistentRuleBasedSampler.java

Co-authored-by: Otmar Ertl <[email protected]>
…pler/consistent56/ConsistentRuleBasedSampler.java

Co-authored-by: Otmar Ertl <[email protected]>
…pler/consistent56/CoinFlipSampler.java

Co-authored-by: Otmar Ertl <[email protected]>
…pler/consistent56/ConsistentAnyOf.java

Co-authored-by: Otmar Ertl <[email protected]>
…pler/consistent56/ConsistentAnyOf.java

Co-authored-by: Otmar Ertl <[email protected]>
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.context.Context;
import io.opentelemetry.sdk.trace.data.LinkData;
import java.util.List;

public class ConsistentFixedThresholdSampler extends ConsistentSampler {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks and feels like what the OTel Trace SDK TraceIdRatioBased sampler wants to be. 👍

Comment on lines +60 to +62
if (threshold == getMaxThreshold()) {
return getInvalidThreshold();
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please comment, I had to go review https://github.com/open-telemetry/opentelemetry-java-contrib/blob/main/consistent-sampling/src/main/java/io/opentelemetry/contrib/sampler/consistent56/ConsistentSamplingUtil.java to understand that getMaxThreshold() is what I was expecting getInvalidThreshold() to be.

Why does the Util package distinguish Max and Invalid? (Why aren't they a single value, maybe?)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This probably requires a cleanup. The prototype currently uses long rather than hex String to represent the thresholds, but the proposed specs allow both implementations. I'd love to see the same logic and behavior for all the new samplers regardless of the choice of the threshold representation. However, the issue is with the MaxThreshold, which is really an out-of-range value. Representing the maximum threshold as a hex string is not useful, as it would be a 15-character string and it would break lexicographical comparisons.
Therefore I opted into requiring that getSamplingIntent always provides a valid threshold (which is smaller than 2^56), or an invalid one, which is a special value easy to test for.

@@ -27,19 +35,40 @@ final class ConsistentParentBasedSampler extends ConsistentSampler {
*
* @param rootSampler the root sampler
*/
ConsistentParentBasedSampler(ConsistentSampler rootSampler) {
ConsistentParentBasedSampler(ComposableSampler rootSampler) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Likewise, the OTel ParentBased sampler should be updated to this behavior, I think.

Comment on lines 192 to 195
oldState.effectiveWindowCount + 1,
oldState.effectiveWindowNanos,
oldState.lastNanoTime,
oldState.effectiveDelegateProbability);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think a comment will help -- what's this branch doing?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll revisit this part, and add a unit test to cover it.

* of its two delegates. Used by unit tests.
*/
@Immutable
final class CoinFlipSampler extends ConsistentSampler {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

* could be also offered as a general utility.
*/
@Immutable
final class MarkingSampler implements ComposableSampler {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@trask trask merged commit 711f617 into open-telemetry:main Sep 16, 2024
14 checks passed
robsunday pushed a commit to robsunday/opentelemetry-java-contrib that referenced this pull request Sep 17, 2024
SylvainJuge added a commit to SylvainJuge/opentelemetry-java-contrib that referenced this pull request Sep 17, 2024
commit b84a73e
Merge: 352202f 7df9862
Author: SylvainJuge <[email protected]>
Date:   Tue Sep 17 11:13:11 2024 +0200

    Merge pull request #2 from SylvainJuge/jmx-scraper-it

    basic JMX client implementation + tests

commit 7df9862
Author: Sylvain Juge <[email protected]>
Date:   Tue Sep 17 11:11:50 2024 +0200

    fix bad merge again

commit e4a8f83
Author: Sylvain Juge <[email protected]>
Date:   Tue Sep 17 11:10:26 2024 +0200

    fix bad merge again

commit dad197b
Author: Sylvain Juge <[email protected]>
Date:   Tue Sep 17 11:09:18 2024 +0200

    fix bad merge

commit f8a73d7
Author: Sylvain Juge <[email protected]>
Date:   Tue Sep 17 11:08:42 2024 +0200

    spotless

commit eab01e9
Author: Sylvain Juge <[email protected]>
Date:   Tue Sep 17 11:01:47 2024 +0200

    spotless

commit f6667dd
Merge: 5b3ef9d 352202f
Author: Sylvain Juge <[email protected]>
Date:   Tue Sep 17 10:55:34 2024 +0200

    Merge branch 'jmx-scrapper' of github.com:SylvainJuge/opentelemetry-java-contrib into jmx-scraper-it

commit 5b3ef9d
Author: Sylvain Juge <[email protected]>
Date:   Tue Sep 17 10:51:11 2024 +0200

    add TODOs

commit 352202f
Merge: 5a82aac 40a2591
Author: SylvainJuge <[email protected]>
Date:   Tue Sep 17 10:50:50 2024 +0200

    Merge pull request #1 from robsunday/jmx-scrapper

    Initial commit of JmxScraper code.

commit 40a2591
Author: jack-berg <[email protected]>
Date:   Mon Sep 16 16:05:50 2024 -0500

    Add declarative config support for RuleBasedRoutingSampler (open-telemetry#1440)

commit 6d39e93
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date:   Mon Sep 16 10:40:16 2024 -0700

    Update dependency com.uber.nullaway:nullaway to v0.11.3 (open-telemetry#1457)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

commit eb5dc6f
Author: Bruno Baptista <[email protected]>
Date:   Mon Sep 16 18:26:53 2024 +0100

    Fix native mode error cause by static init of random (open-telemetry#862)

commit 5ffa348
Author: jack-berg <[email protected]>
Date:   Mon Sep 16 12:23:41 2024 -0500

    Add declarative config support for aws xray propagators (open-telemetry#1442)

commit 151b744
Author: SylvainJuge <[email protected]>
Date:   Mon Sep 16 19:23:19 2024 +0200

    add span stacktrace config option (open-telemetry#1414)

    Co-authored-by: jackshirazi <[email protected]>

commit 9ee5fb1
Author: Yury Bubnov <[email protected]>
Date:   Mon Sep 16 10:18:51 2024 -0700

    Issue-1034 Short XRay Trace (open-telemetry#1036)

commit 11a2e1a
Author: Jeffrey Chien <[email protected]>
Date:   Mon Sep 16 13:18:10 2024 -0400

    Fix Tomcat metric definitions to aggregate multiple MBeans. (open-telemetry#1366)

commit 9fa44be
Author: Pranav Sharma <[email protected]>
Date:   Mon Sep 16 11:22:32 2024 -0400

    Fix incorrect cloud.platform value for GCF (open-telemetry#1454)

commit 11f2111
Author: Peter Findeisen <[email protected]>
Date:   Mon Sep 16 08:21:46 2024 -0700

    Composite Samplers prototype (open-telemetry#1443)

    Co-authored-by: Otmar Ertl <[email protected]>

commit b3386de
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date:   Mon Sep 16 08:20:44 2024 -0700

    Update plugin com.squareup.wire to v5.1.0 (open-telemetry#1452)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

commit 27b631d
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date:   Mon Sep 16 08:20:21 2024 -0700

    Update errorProneVersion to v2.32.0 (open-telemetry#1453)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

commit 791df4b
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date:   Mon Sep 16 09:50:03 2024 -0500

    Update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.8.0-alpha (open-telemetry#1456)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    Co-authored-by: Jack Berg <[email protected]>

commit 19357e6
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date:   Tue Sep 10 15:20:46 2024 -0700

    Update dependency com.gradle.enterprise:com.gradle.enterprise.gradle.plugin to v3.18.1 (open-telemetry#1450)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

commit 460470b
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date:   Tue Sep 10 15:20:23 2024 -0700

    Update plugin com.gradle.develocity to v3.18.1 (open-telemetry#1451)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

commit b45cdab
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date:   Tue Sep 10 12:32:56 2024 +0300

    Update dependency com.linecorp.armeria:armeria-bom to v1.30.1 (open-telemetry#1449)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

commit d36106e
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date:   Tue Sep 10 09:11:26 2024 +0300

    Update micrometer packages to v1.13.4 (open-telemetry#1448)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

commit fb25c79
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date:   Mon Sep 9 15:44:53 2024 +0300

    Update dependency gradle to v8.10.1 (open-telemetry#1447)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

commit f847561
Author: robsunday <[email protected]>
Date:   Tue Sep 17 09:22:21 2024 +0200

    Code review changes:
    Argument parsing moved to the main class.
    Argument validation now throw exception.
    More tests added for config factory.
    Created unit tests for JmxScraper class.

commit 03788ff
Author: Sylvain Juge <[email protected]>
Date:   Mon Sep 16 17:26:12 2024 +0200

    add TODO for testing server SSL support

commit a3fbeb5
Author: Sylvain Juge <[email protected]>
Date:   Mon Sep 16 17:08:16 2024 +0200

    add TODO to enable server-side SSL

commit 1619595
Author: Sylvain Juge <[email protected]>
Date:   Mon Sep 16 16:59:17 2024 +0200

    wip

commit 164679f
Author: robsunday <[email protected]>
Date:   Wed Sep 11 12:34:12 2024 +0200

    Cleanup of config.
    Refactoring of JmxScraperConfigFactory.
    Added first unit tests.

commit 165fcb8
Author: robsunday <[email protected]>
Date:   Tue Sep 10 12:36:29 2024 +0200

    Initial commit of JmxScraper code. Application compiles and runs as standalone and can read config file.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants