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

[SPARK-9516][UI] Improvement of Thread Dump Page #7910

Closed
wants to merge 14 commits into from

Conversation

CodingCat
Copy link
Contributor

https://issues.apache.org/jira/browse/SPARK-9516

  • new look of Thread Dump Page
  • click column title to sort
  • grep
  • search as you type

@squito @JoshRosen It's ready for the review now

@CodingCat
Copy link
Contributor Author

image

@CodingCat
Copy link
Contributor Author

image

@SparkQA
Copy link

SparkQA commented Aug 3, 2015

Test build #39606 has finished for PR 7910 at commit 635e696.

  • This patch fails Spark unit tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@SparkQA
Copy link

SparkQA commented Aug 4, 2015

Test build #39641 has finished for PR 7910 at commit 416aece.

  • This patch fails Spark unit tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@squito
Copy link
Contributor

squito commented Aug 4, 2015

Hi @CodingCat just a quick question from looking at the screenshot -- can you still click on one thread to expand the stack trace for just that? nothing looks like a hyperlink anymore. Again I'm not a UI expert by any means, so I'll defer to others opinions, but I wouldn't think they were clickable from the look of it.

@SparkQA
Copy link

SparkQA commented Aug 4, 2015

Test build #39721 has finished for PR 7910 at commit a62ee4b.

  • This patch fails Spark unit tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@SparkQA
Copy link

SparkQA commented Aug 4, 2015

Test build #39719 has finished for PR 7910 at commit 4d1211e.

  • This patch fails Spark unit tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@CodingCat
Copy link
Contributor Author

Hi, @squito , sorry for the late reply, here is the screenshot

image

the rows are still clickable...I will add onmouseover event tomorrow to make it more obvious...

@SparkQA
Copy link

SparkQA commented Aug 5, 2015

Test build #39799 has finished for PR 7910 at commit 5666ad8.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@CodingCat
Copy link
Contributor Author

image

added mouseover event

@SparkQA
Copy link

SparkQA commented Aug 5, 2015

Test build #39874 timed out for PR 7910 at commit 101e9a9 after a configured wait of 175m.

@SparkQA
Copy link

SparkQA commented Aug 5, 2015

Test build #39914 has finished for PR 7910 at commit 263d835.

  • This patch fails Spark unit tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@SparkQA
Copy link

SparkQA commented Aug 6, 2015

Test build #39944 has finished for PR 7910 at commit 8995d0c.

  • This patch fails Spark unit tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@squito
Copy link
Contributor

squito commented Aug 6, 2015

Jenkins, retest this please

if (!grepExp.isDefined) {
true
} else {
thread.stackTrace.filter(_ >= ' ').matches(grepExp.get)
Copy link
Contributor

Choose a reason for hiding this comment

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

The filter seems strange to me. Won't stripping out newlines etc. lead to some weird matches?

Also, I think String.matches may not be what we want -- that matches against the entire string, not against any contained substring. It would most likely mean that everyone would have to make their pattern ".*<pattern>.*". I think we'd rather use pattern.find(), since that is more like "grep". Should probably also be in multiline mode, so:

val grepExp = Option(request.getParamter("grepexp")).map(Pattern.compile(_, Pattern.MULTILINE))
...
grepExp.map { grep => grep.matcher(thread.stackTrace).find()}.getOrElse(true)

@SparkQA
Copy link

SparkQA commented Aug 6, 2015

Test build #40043 has finished for PR 7910 at commit 8995d0c.

  • This patch fails Spark unit tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@CodingCat
Copy link
Contributor Author

Grep with ForkJoinPool

image

@CodingCat
Copy link
Contributor Author

Thanks, @squito , I addressed your comments and uploaded the latest version of code

@SparkQA
Copy link

SparkQA commented Aug 6, 2015

Test build #255 has finished for PR 7910 at commit 8995d0c.

  • This patch fails Spark unit tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@SparkQA
Copy link

SparkQA commented Aug 6, 2015

Test build #40065 has finished for PR 7910 at commit 1e43da0.

  • This patch fails PySpark unit tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@CodingCat
Copy link
Contributor Author

-_-|||

@SparkQA
Copy link

SparkQA commented Aug 6, 2015

Test build #40073 has finished for PR 7910 at commit 837ed6e.

  • This patch fails Spark unit tests.
  • This patch merges cleanly.
  • This patch adds the following public classes (experimental):
    • class IsotonicRegression(override val uid: String) extends Estimator[IsotonicRegressionModel]

@CodingCat
Copy link
Contributor Author

it seems that Jenkins is very very unstable in these days

@SparkQA
Copy link

SparkQA commented Aug 7, 2015

Test build #40112 has finished for PR 7910 at commit d49e094.

  • This patch fails Spark unit tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@JoshRosen
Copy link
Contributor

Yeah, we've been combatting a really bad test flakiness issue over the past 48 hours :(

@JoshRosen
Copy link
Contributor

I just tested this out and noticed a few problems:

  • The full-text search doesn't seem to properly search all columns; I tried some queries and found that it returned fewer rows than expected.
  • The hover styling on the tables causes the width to jump around when the text becomes bold. I'd prefer to only highlight the background of the table cells.
  • It would be nice if the cursor changed to indicate that table cells are clickable; this should be fixable with CSS.
  • The new layout makes the thread dumps harder to read. Rather than adding an additional column when a thread-dump is displayed, I think it would make more sense to expand the table row so that the thread dump appears underneath the table columns in that row. This isn't trivial to implement, but I still think we should do it.

Given all of this, I don't think that this PR is ready to merge in its current form. @CodingCat, if you don't anticipate having time to make these changes, would you mind closing this in the meantime to help de-clutter the PR review queue? Thanks!

@CodingCat
Copy link
Contributor Author

I might work on this during the week and next week, so, I prefer to keeping this open

@SparkQA
Copy link

SparkQA commented Oct 22, 2015

Test build #44152 has finished for PR 7910 at commit c3dc9b7.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@CodingCat
Copy link
Contributor Author

image

image

image

@CodingCat
Copy link
Contributor Author

@JoshRosen @squito

I adjusted the patch according to Josh's suggestions,

now the search is covering all columns (I thought it only cares about stacktrace column)

the stacktrace is shown as a new row

For the StackTrace row, the current implementation is to add a new row following the row showing Thread ID, Name and State, instead of toggling on "hidden" class

the reason is that the hidden stacktrace row is a big trouble when you sort and then expand, or grep some lines.....

so....Welcome to review it.....

@SparkQA
Copy link

SparkQA commented Oct 22, 2015

Test build #44175 has finished for PR 7910 at commit e88f70d.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@CodingCat
Copy link
Contributor Author

@squito @JoshRosen just ping...

}

function onSearchStringChange() {
var searchString = $('#search').val()
Copy link
Contributor

Choose a reason for hiding this comment

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

add a toLowerCase here -- I tried searching for "RUNNABLE" first and it didn't find anything.

@squito
Copy link
Contributor

squito commented Oct 30, 2015

Hi @CodingCat, thanks for the reminder. This is looking great! I really like it. Just found a few minor things, and one design question about highlighting the task threads.

@CodingCat
Copy link
Contributor Author

@squito Thanks for the comments, just addressed the issues

@SparkQA
Copy link

SparkQA commented Nov 2, 2015

Test build #44780 has finished for PR 7910 at commit 8bfb4bc.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

function onSearchStringChange() {
var searchString = $('#search').val().toLowerCase();
//remove the stacktrace
collapseAllThreadStackTrace(false, false)
Copy link
Contributor

Choose a reason for hiding this comment

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

this only takes 1 arg now (crazy that this works in js ...)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

oops, my bad

@squito
Copy link
Contributor

squito commented Nov 2, 2015

thanks for the update @CodingCat , just one tiny nit, otherwise lgtm. @JoshRosen would you like to take another look?

@SparkQA
Copy link

SparkQA commented Nov 3, 2015

Test build #44861 has finished for PR 7910 at commit 6106c7f.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@CodingCat
Copy link
Contributor Author

Hi, @JoshRosen , since 1.6 has been cut, will we push this feature in the coming version?

@andrewor14
Copy link
Contributor

retest this please

@andrewor14
Copy link
Contributor

Looks great! I'm going to merge this in master if no one objects.

@SparkQA
Copy link

SparkQA commented Dec 15, 2015

Test build #47699 has finished for PR 7910 at commit 6106c7f.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@andrewor14
Copy link
Contributor

Merged into master. Thanks @CodingCat and everyone who reviewed this!

@asfgit asfgit closed this in a63d9ed Dec 16, 2015
@CodingCat CodingCat deleted the SPARK-9516 branch December 16, 2015 21:04
@CodingCat
Copy link
Contributor Author

thanks @JoshRosen and @squito for reviewing it

thanks for @andrewor14 for merging

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.

5 participants