-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
Fix hierarchical otlp props lookup, add Grafana traces check #42763
Conversation
/cc @brunobat (opentelemetry), @radcortez (opentelemetry) |
This comment has been minimized.
This comment has been minimized.
🎊 PR Preview 60994bf has been successfully built and deployed to https://quarkus-pr-main-42763-preview.surge.sh/version/main/guides/
|
This comment has been minimized.
This comment has been minimized.
@@ -46,7 +46,7 @@ public HierarchicalOTelConnectionConfigInterceptor() { | |||
|
|||
@Override | |||
public Iterator<String> iterateNames(final ConfigSourceInterceptorContext context) { | |||
Set<String> names = new HashSet<>(); | |||
Set<String> names = new LinkedHashSet<>(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The LinkedHashmap maintains a predictable iteration order... Can't remember why it is used here anymore.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added it now, before it was HashSet ... but the order wasn't the problem., so I guess we can go back to plain HashSet ... ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah, let's go back. This has a performance penalty.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A? With all 1M checks, this is the penalty? :-)
At least we know how they are ordered in the first place.
But yeah, np ... we can go back.
2905e76
to
7b2d5df
Compare
Status for workflow
|
Status for workflow
|
Status | Name | Step | Failures | Logs | Raw logs | Build scan |
---|---|---|---|---|---|---|
✖ | JVM Tests - JDK 17 | Build |
Failures | Logs | Raw logs | 🔍 |
✖ | JVM Tests - JDK 21 | Build |
Failures | Logs | Raw logs | 🔍 |
✖ | JVM Tests - JDK 17 Windows | Build |
Failures | Logs | Raw logs | 🔍 |
Full information is available in the Build summary check run.
You can consult the Develocity build scans.
Failures
⚙️ JVM Tests - JDK 17 #
- Failing: extensions/opentelemetry/deployment
! Skipped: extensions/liquibase-mongodb/deployment extensions/micrometer-registry-prometheus/deployment extensions/micrometer/deployment and 49 more
📦 extensions/opentelemetry/deployment
✖ io.quarkus.opentelemetry.deployment.exporter.otlp.OtlpExporterConfigTest.
- History - More details - Source on GitHub
java.lang.RuntimeException: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.test.QuarkusUnitTest.beforeAll(QuarkusUnitTest.java:708)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
at io.quarkus.runtime.Application.start(Application.java:101)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at io.quarkus.runner.bootstrap.StartupActionImpl.run(StartupActionImpl.java:305)
✖ io.quarkus.opentelemetry.deployment.exporter.otlp.OtlpExporterOverrideConfigTest.
- History - More details - Source on GitHub
java.lang.RuntimeException: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.test.QuarkusUnitTest.beforeAll(QuarkusUnitTest.java:708)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
at io.quarkus.runtime.Application.start(Application.java:101)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at io.quarkus.runner.bootstrap.StartupActionImpl.run(StartupActionImpl.java:305)
⚙️ JVM Tests - JDK 21 #
- Failing: extensions/opentelemetry/deployment
! Skipped: extensions/liquibase-mongodb/deployment extensions/micrometer-registry-prometheus/deployment extensions/micrometer/deployment and 49 more
📦 extensions/opentelemetry/deployment
✖ io.quarkus.opentelemetry.deployment.exporter.otlp.OtlpExporterConfigTest.
- History - More details - Source on GitHub
java.lang.RuntimeException: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.test.QuarkusUnitTest.beforeAll(QuarkusUnitTest.java:708)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
at io.quarkus.runtime.Application.start(Application.java:101)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.quarkus.runner.bootstrap.StartupActionImpl.run(StartupActionImpl.java:305)
✖ io.quarkus.opentelemetry.deployment.exporter.otlp.OtlpExporterOverrideConfigTest.
- History - More details - Source on GitHub
java.lang.RuntimeException: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.test.QuarkusUnitTest.beforeAll(QuarkusUnitTest.java:708)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
at io.quarkus.runtime.Application.start(Application.java:101)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.quarkus.runner.bootstrap.StartupActionImpl.run(StartupActionImpl.java:305)
⚙️ JVM Tests - JDK 17 Windows #
- Failing: extensions/opentelemetry/deployment
! Skipped: extensions/liquibase-mongodb/deployment extensions/micrometer-registry-prometheus/deployment extensions/micrometer/deployment and 49 more
📦 extensions/opentelemetry/deployment
✖ io.quarkus.opentelemetry.deployment.exporter.otlp.OtlpExporterConfigTest.
- History - More details - Source on GitHub
java.lang.RuntimeException: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.test.QuarkusUnitTest.beforeAll(QuarkusUnitTest.java:708)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
at io.quarkus.runtime.Application.start(Application.java:101)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at io.quarkus.runner.bootstrap.StartupActionImpl.run(StartupActionImpl.java:305)
✖ io.quarkus.opentelemetry.deployment.exporter.otlp.OtlpExporterOverrideConfigTest.
- History - More details - Source on GitHub
java.lang.RuntimeException: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.test.QuarkusUnitTest.beforeAll(QuarkusUnitTest.java:708)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
at io.quarkus.runtime.Application.start(Application.java:101)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at io.quarkus.runner.bootstrap.StartupActionImpl.run(StartupActionImpl.java:305)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you set a default for a particular property which also has a fallback name, the default does have priority. This may seem strange, but in reality, defaults are handled as any other source in terms of configuration. There are a few reasons for this, that we can discuss separately :)
Anyway, my understanding is that you have defaults for both ...otlp.endpoint
and ... otlp.traces.endpoint
for documentation purposes. The goal is to fallback to the general ...otlp.endpoint
if ... otlp.traces.endpoint
has no value. In that case a single default for ...otlp.endpoint
should be enough.
For documentation purposes, you can add a default for the expression equivalent ${...otlp.endpoint}
, or remove the default entirely and reference the fallback rule in the javadoc.
I'll leave it to your consideration.
No, that doesn't work -- that's the problem. |
Yes, that is expected. My suggestion was to remove all defaults from the specific endpoints and leave it in the general |
BTW, we should probably hold on these changes and look into: #42506 (comment). |
Exactly. I was looking into that piece of code as well. It evaluates every configuration present in the list of names because the mapping function returns the original name even if there is no fallback. We probably need to step back and gather the exact requirements of what we want here so we can think the best way to implement this. I believe I'vewritten the initial implementations of this piece, but that was when the relocate / fallback mechanism was missing some pieces. We need to evaluate if this code is still required. |
Ah, you reuse the same interface for global and specific. Ok, let me think about this, plus the performance stuff. |
Ideally, global 'otlp.endpoint' should be applied if 'otlp.traces.endpoint' was not set by the user. Same for the other global properties. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@alesj can you please check if Roberto's PR fixes the current problem or if we still need this PR?
@alesj should we close this one? |
Sure.
…On Mon, 9 Sep 2024 at 13:12, Bruno Baptista ***@***.***> wrote:
@alesj <https://github.com/alesj> should we close this one?
—
Reply to this email directly, view it on GitHub
<#42763 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AACRA6H65G4BOCMHJNSQ7Y3ZVV7CZAVCNFSM6AAAAABNEJ4WHOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMZXHAZDOMBUGM>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Hierarchy property lookup with DevServices is atm broken for OTLP / Observability,
since both - default and fallback - end-up with the same ordinal, hence default is used.
Where actually fallback should be used -- since it's defined (added to config) in the LgtmResource class.
e.g.
vs.