feat(java-agent): implement core release comparison engine (Phase 2)#504
feat(java-agent): implement core release comparison engine (Phase 2)#504Pittu-Sharma wants to merge 11 commits into
Conversation
✅ Deploy Preview for otel-ecosystem-explorer ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Hi @jaydeluca! Following up on your feedback from PR #343, I have completely restructured the Java Release Comparison feature to make it much easier to review. This new PR strictly covers Phase 2 (the core comparison engine and foundational UI). I made sure to implement all of your requested improvements:
All local checks (Vitest, integration tests, ESLint, Prettier, and copyright headers) are passing 100% green. Once you have a chance to review this baseline and this PR is merged , I will open a follow-up PR for Phase 3 (which will introduce the Premium Segmented Tabs and CSS micro-animations). Let me know if you need any adjustments made here! Thank you! |
|
Hey @Pittu-Sharma , thank you for contribution. I want to take this opportunity for a reminder of OpenTelemetry genAI policy, that can be found here. We want to hear directly from humans, so you should be reviewing all content being created by the LLM you're using, and then creating the PR description/issues yourself. For example, your first comment is very repetitive of the PR description itself, and LLMs tend to create a lot of content that don't add much. Just another tip, when you open a PR it already tags approvers automatically, so there is no need to tag people directly 😄 We know that contributors can be eager to have their contributions approved/merged, but in open source there is a lot of content and other tasks maintainers need to do, so things make take awhile to get reviewed. So don't worry, we will get to your PR, and if takes over a week with no reviews, you're free to tag someone and ask in Slack |
Thankyou, for you review, I will keep this in mind in the further issues. |
There was a problem hiding this comment.
Pull request overview
This PR implements the Java Agent release comparison feature UI and core diffing logic for comparing telemetry/configuration changes between Java agent versions.
Changes:
- Adds a
compareReleasesutility with unit tests for release-level instrumentation diffs. - Adds a release comparison hook plus selector/card components and wires them into
/java-agent/releases. - Updates generated Java agent global configuration data.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
ecosystem-explorer/src/features/java-agent/utils/release-diff.ts |
Adds release diff calculation and aggregate metrics output. |
ecosystem-explorer/src/features/java-agent/utils/release-diff.test.ts |
Adds basic unit coverage for added/removed/changed/unchanged modules. |
ecosystem-explorer/src/features/java-agent/hooks/use-release-comparison.ts |
Adds data-loading hook for comparing two Java agent versions. |
ecosystem-explorer/src/features/java-agent/java-release-comparison-page.tsx |
Replaces the skeleton page with URL-driven comparison UI, summary cards, tabs, and metrics table. |
ecosystem-explorer/src/features/java-agent/components/release-comparison/release-version-selector.tsx |
Adds version selection controls. |
ecosystem-explorer/src/features/java-agent/components/release-comparison/instrumentation-diff-card.tsx |
Adds expandable per-instrumentation diff cards. |
ecosystem-explorer/public/data/javaagent/global-configurations.json |
Includes generated Java agent configuration data changes. |
Comments suppressed due to low confidence (1)
ecosystem-explorer/src/features/java-agent/utils/release-diff.ts:95
- Removed instrumentations also omit
configDiff, so configuration options removed with the module are not surfaced in the configuration-change summary.
instrumentations.push({
id: name,
displayName: fromInstr.display_name || name,
status: "removed",
telemetryDiff: compareTelemetry(fromInstr, null),
});
|
Hi @maryliag, @lucacavenaghi97, I've addressed all of the feedback from your reviews and the Copilot issues, and updated the PR branch with the fixes. Here is a quick summary of what I changed:
Testing & Verification:
Let me know if this looks good to go now or if you spot anything else! |
Description
This PR introduces Phase 2 of the Java Release Comparison Tool, resolving the core logic and UI requirements for Issue #277.
Following the feedback on the previously closed combined PR (#343), this branch has been strictly scoped to include only the necessary frontend React components and utility hooks for the deep-comparison engine. Auto-generated database files and watcher scripts have been explicitly excluded to prevent diff pollution.
🚀 Key Features Implemented:
release-diff.ts): Accurately maps and diffsadded,removed, andchangedinstrumentations, along with their nested configurations, spans, and metrics.use-release-comparison.ts): Safely fetches and caches registry data for both targeted versions, falling back gracefully if data is missing.java-release-comparison-page.tsx): The active comparison is bound to URL search params (e.g.?from=2.26.1&to=2.27.0) to allow for deep linking.Invalid Comparisonwarning card rather than crashing.bg-muted/40in accordance withDESIGN.mdguidelines.Fixes / Addresses
✅ Verification & Quality Checks
bun run serve) with various version permutations.bun run test).bun run test:integration).How to Test
bun run serveinsideecosystem-explorer.http://localhost:5173/java-agent/releasesand manipulate the dropdowns to verify the metric cards update seamlessly.