Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.Sign up
6364: Improvements to the Thread Graph #27
This patch addresses JMC-6364 , the epic for tracking Improvements to the JFR Thread Graph. This RFR is also a follow-up to an RFC  that was posted to the jmc-dev list and incorporates the feedback that was brought up during discussion.
The new design and features was imagined in collaboration with our UX team, and the implementation has been a joint effort between myself and Jessye (@jessyec-s) - we had been originally collaborating on a fork of the old (unofficial) JMC GitHub repo. I've folded all the commits down into one because the older commits were merged using PRs with a similar format (e.g.,
This PR aims to improve the usability and functionality of the JFR Threads Page by extending and enhancing existing classes. In an attempt to not clutter this PR with lots of images and explanatory text, I've created a gist  that provides information and images/gifs of the new components and intended functionality.
Summary of changes:
Let me know if you have any questions about the design & functionality.
Neat, thanks for the heads up. I changed the commit description and force pushed them back here, but it looks like once a PR has been made with the invalid ID format it's the PR name change that gets jcheck to pass. This automation is nice, the
I actually liked the old behaviour of being able to see all thread states on one screen (given that you had sufficient pixels to display them). It gave a more helpful overview of the application state during the recording. I.e. the old view had a minimum lane height of 1 pixel. To do the same thing here you'd have to collapse the table, since 1 pixel isn't enough to render thread names.
The selection highlighter also seems to have taken a significant performance hit, so it's a bit harder to drag and select a region of threads.
Unless I'm missing something it also appears that I can't sort the thread table, and I'm uncertain what order the threads are shown in now.
I'm also a bit confused by why the scroll bar on the right hand side scrolls horizontally when it's rendered vertically, and the component now doesn't zoom through time with the scroll wheel, like all other pages do?
It would also be nice if the "Thread State Selection" toolbar button could do more of the "Edit Thread Activity Lanes" dialog, since they're doing very similar things?
Fair enough, or perhaps allowing the chart lanes to shrink to that size, but have the text lanes remain at a size that is readable? e.g., having the text lanes hit a min height of ~13px, so there will only be a difference in lane height for 1-12px, and everything above that they re-sync in terms of height?
It should be the same order as they are now, the current table has been moved to be like a modal instead, it's available to open via a button near the "edit thread activity lanes" button in the top-right of the page. It's the same table, so the existing sorting mechanics should apply.
Are you referring to the SWT spinner? That handles zooming in/out of the chart, and the scrollbar to the right of the chart (should) scroll vertically.
This has to do more with what the expected behaviour should be on a page that has scrollable content. In the cases of the other pages, the charts/graphs don't scroll vertically, so having JMC-specific defined controls with the scrollwheel to zoom should be fine. However, in many other applications where pages have scrollable content (e.g., internet browsers, photoshop, music editing software, etc.) the scrollwheel is reserved for vertically navigating the content.
I could take a look into that, the concern was that it's quite a bit of information/controls to fit into a dropdown of limited space without having it overlap too much of the chart content.
@aptmac this pull request can no longer be integrated into
git checkout jfr-threads-page-folded git fetch https://git.openjdk.java.net/jmc master git merge FETCH_HEAD # resolve conflicts and follow the instructions given by git merge git commit -m "Merge master" git push
Hi @thegreystone, I rebased the branch yesterday to be on top of master, and included a new commit based on the feedback that makes the dropdown lane filter act like the Edit Lanes Dialog (screenshot below). Does the outdated tag automatically remove itself what some criteria is met?
Edit: I also see that the checks failed, it looks like there's something wrong with the builds at the moment, I've been seeing similar errors on my travis builds as well