You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@spark.apache.org by willb <gi...@git.apache.org> on 2014/07/15 05:41:34 UTC

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

GitHub user willb opened a pull request:

    https://github.com/apache/spark/pull/1413

    SPARK-2486: Utils.getCallSite is now resilient to bogus frames

    When running Spark under certain instrumenting profilers,
    Utils.getCallSite could crash with an NPE.  This commit
    makes it more resilient to failures occurring while inspecting
    stack frames.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/willb/spark spark-2486

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/1413.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1413
    
----
commit 0f0c1ae825d53d773ef12a02d74072b88f65d91a
Author: William Benton <wi...@redhat.com>
Date:   2014-07-15T03:40:51Z

    Utils.getCallSite is now resilient to bogus frames
    
    When running Spark under certain instrumenting profilers,
    Utils.getCallSite could crash with an NPE.  This commit
    makes it more resilient to failures occurring while inspecting
    stack frames.

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:

    https://github.com/apache/spark/pull/1413#issuecomment-48991839
  
    QA results for PR 1413:<br>- This patch PASSES unit tests.<br>- This patch merges cleanly<br>- This patch adds no public classes<br><br>For more information see test ouptut:<br>https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/16653/consoleFull


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by mateiz <gi...@git.apache.org>.
Github user mateiz commented on a diff in the pull request:

    https://github.com/apache/spark/pull/1413#discussion_r14916295
  
    --- Diff: core/src/main/scala/org/apache/spark/util/Utils.scala ---
    @@ -809,7 +809,11 @@ private[spark] object Utils extends Logging {
        */
       def getCallSite: CallSite = {
         val trace = Thread.currentThread.getStackTrace()
    -      .filterNot(_.getMethodName.contains("getStackTrace"))
    +      .filterNot((ste:StackTraceElement) => 
    +        // When running under some profilers, the current stack trace might contain some bogus 
    +        // frames. This Try is intended to ensure that we don't crash in these situations by
    +        // ignoring any frames that we can't examine.
    +        Try(ste.getMethodName.contains("getStackTrace")).getOrElse(true))
    --- End diff --
    
    If the only problem was nulls, it's better to filter on null than to add a Try here. There's no way String.contains can crash, so it's weird to be using Try.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by aarondav <gi...@git.apache.org>.
Github user aarondav commented on a diff in the pull request:

    https://github.com/apache/spark/pull/1413#discussion_r14917387
  
    --- Diff: core/src/main/scala/org/apache/spark/util/Utils.scala ---
    @@ -809,7 +809,11 @@ private[spark] object Utils extends Logging {
        */
       def getCallSite: CallSite = {
         val trace = Thread.currentThread.getStackTrace()
    -      .filterNot(_.getMethodName.contains("getStackTrace"))
    +      .filterNot((ste:StackTraceElement) => 
    --- End diff --
    
    nit, but we'd typically format this kind of multi-line transform like so:
    
    ```scala
    .filterNot { ste: StackTraceElement =>
        // When running under some profilers, the current stack trace might contain some bogus 
        // frames. This is intended to ensure that we don't crash in these situations by
        // ignoring any frames that we can't examine.
        (ste == null || ste.getMethodName == null || ste.getMethodName.contains("getStackTrace")))
    }
    ```


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by pwendell <gi...@git.apache.org>.
Github user pwendell commented on the pull request:

    https://github.com/apache/spark/pull/1413#issuecomment-48992131
  
    Seems totally reasonable to me


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by aarondav <gi...@git.apache.org>.
Github user aarondav commented on the pull request:

    https://github.com/apache/spark/pull/1413#issuecomment-48990700
  
    To confirm, with this fix you are now able to do full profiling on a Spark application?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:

    https://github.com/apache/spark/pull/1413#issuecomment-48987508
  
    QA tests have started for PR 1413. This patch merges cleanly. <br>View progress: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/16653/consoleFull


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by pwendell <gi...@git.apache.org>.
Github user pwendell commented on the pull request:

    https://github.com/apache/spark/pull/1413#issuecomment-48998126
  
    @willb @aarondav my bad guys, I thought all outstanding issues were addressed here but I realize that's not the case. Feel free to submit another patch to clean up the brackets.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by pwendell <gi...@git.apache.org>.
Github user pwendell commented on the pull request:

    https://github.com/apache/spark/pull/1413#issuecomment-48994041
  
    LGTM - I'll merge this.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by willb <gi...@git.apache.org>.
Github user willb commented on a diff in the pull request:

    https://github.com/apache/spark/pull/1413#discussion_r14916362
  
    --- Diff: core/src/main/scala/org/apache/spark/util/Utils.scala ---
    @@ -809,7 +809,11 @@ private[spark] object Utils extends Logging {
        */
       def getCallSite: CallSite = {
         val trace = Thread.currentThread.getStackTrace()
    -      .filterNot(_.getMethodName.contains("getStackTrace"))
    +      .filterNot((ste:StackTraceElement) => 
    +        // When running under some profilers, the current stack trace might contain some bogus 
    +        // frames. This Try is intended to ensure that we don't crash in these situations by
    +        // ignoring any frames that we can't examine.
    +        Try(ste.getMethodName.contains("getStackTrace")).getOrElse(true))
    --- End diff --
    
    So I was thinking that either `ste` or the result of `ste.getMethodName` could be `null` when running under instrumentation.  I'll rewrite to use checks instead of `Try`, though.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:

    https://github.com/apache/spark/pull/1413#issuecomment-48992276
  
    QA results for PR 1413:<br>- This patch PASSES unit tests.<br>- This patch merges cleanly<br>- This patch adds no public classes<br><br>For more information see test ouptut:<br>https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/16654/consoleFull


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by willb <gi...@git.apache.org>.
Github user willb commented on the pull request:

    https://github.com/apache/spark/pull/1413#issuecomment-49023679
  
    @aarondav @pwendell Yes, with this patch I'm able to enable the YourKit features that were causing crashes before.  I'll submit an update to fix the bracket style and cc you both.  Thanks for the quick review!


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/spark/pull/1413


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] spark pull request: SPARK-2486: Utils.getCallSite is now resilient...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:

    https://github.com/apache/spark/pull/1413#issuecomment-48987971
  
    QA tests have started for PR 1413. This patch merges cleanly. <br>View progress: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/16654/consoleFull


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---