RFR: 6364: Improvements to the Thread Graph

Alex Macdonald aptmac at openjdk.java.net
Fri Jan 10 15:13:12 UTC 2020

This patch addresses JMC-6364 [[0]](https://bugs.openjdk.java.net/browse/JMC-6364), the epic for tracking Improvements to the JFR Thread Graph. This RFR is also a follow-up to an RFC [[1]](http://mail.openjdk.java.net/pipermail/jmc-dev/2019-October/001454.html) 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., `jmc/pull/23`) to this repo, so to avoid accidental noise (sorry about that) on other PRs I've just folded them away. If anyone is interested in the individual commits that got to this point, I've kept them around in the old repo [[2]](https://github.com/aptmac/jmc-old/commits/jfr-threads-page).

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 [[3]](https://gist.github.com/aptmac/61808c89bfcf1888080884fc8a61bd36) that provides information and images/gifs of the new components and intended functionality.

Gist: https://gist.github.com/aptmac/61808c89bfcf1888080884fc8a61bd36

Summary of changes:
- Introduction of canvases to display the thread names (left) and timeline (bottom)
- Scrolled composites to house the text and chart canvases, for vertical scrolling of the chart area
- Timeline canvas (bottom) is draggable for panning the chart
- Current threads table has been re-located to a popup table
- New filter bar (top) which alters the chart view based on time ranges and desired visible activity lanes
- New display bar (right) which houses the zoom mechanics
- New zoom pan component for easily navigating the chart
- Introduction of a colour palette to increase contrast between neighbouring activity lanes
- Controls to change the height of the thread lanes
- updated and new uitests



Let me know if you have any questions about the design & functionality.

[0] https://bugs.openjdk.java.net/browse/JMC-6364
[1] http://mail.openjdk.java.net/pipermail/jmc-dev/2019-October/001454.html
[2] https://github.com/aptmac/jmc-old/commits/jfr-threads-page
[3] https://gist.github.com/aptmac/61808c89bfcf1888080884fc8a61bd36


 - 5dc0e35f: re-ran mvn spotless:apply with the uitest profile active
 - 8b53fd7d: cleaned up formatting issues by running mvn spotless:apply
 - 157a98ab: 6364: Improvements to the Thread Graph

Changes: https://git.openjdk.java.net/jmc/pull/27/files
 Webrev: https://webrevs.openjdk.java.net/jmc/27/webrev.00
  Issue: https://bugs.openjdk.java.net/browse/JMC-6364
  Stats: 4087 lines in 43 files changed: 3943 ins; 38 del; 106 mod
  Patch: https://git.openjdk.java.net/jmc/pull/27.diff
  Fetch: git fetch https://git.openjdk.java.net/jmc pull/27/head:pull/27

PR: https://git.openjdk.java.net/jmc/pull/27

More information about the jmc-dev mailing list