You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@htrace.apache.org by "Masatake Iwasaki (JIRA)" <ji...@apache.org> on 2015/02/28 05:30:04 UTC

[jira] [Comment Edited] (HTRACE-119) detach of NullScope singleton should not fail

    [ https://issues.apache.org/jira/browse/HTRACE-119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14341312#comment-14341312 ] 

Masatake Iwasaki edited comment on HTRACE-119 at 2/28/15 4:29 AM:
------------------------------------------------------------------

bq. Why allow double detach on NullScope, but not on other scopes? I guess one reason is so that you can turn off HTrace and not get exceptions from incorrect use of htrace.

The code below is not double detach. It is correct from user's perspective.
{code}
Span = Trace.startSpan("MySpan").detach();
...
{code}

Though it is correct, just passing this (or similar) code path more than twice may results in RuntimeException because startSpan returns NullSpan.INSTANCE always when there is no ongoing trace. {{detach}} of the singleton NullSpan instance may be called many times from completely independent and correct code paths.
{code}
  public static TraceScope startSpan(String description) {
    return startSpan(description, TrueIfTracingSampler.INSTANCE);
  }
{code}



was (Author: iwasakims):
bq. Why allow double detach on NullScope, but not on other scopes? I guess one reason is so that you can turn off HTrace and not get exceptions from incorrect use of htrace.

The code below is not double detach. It is correct from user's perspective.
{code}
Span = Trace.startSpan("MySpan").detach();
...
{code}

Though it is correct, just passing this (or similar) code path more than twice may results in RuntimeException because startSpan returns NullSpan.INSTANCE always when there is no ongoing trace. {{trace}} of the singleton NullSpan instance may be called many times from completely independent and correct code paths.
{code}
  public static TraceScope startSpan(String description) {
    return startSpan(description, TrueIfTracingSampler.INSTANCE);
  }
{code}


> detach of NullScope singleton should not fail
> ---------------------------------------------
>
>                 Key: HTRACE-119
>                 URL: https://issues.apache.org/jira/browse/HTRACE-119
>             Project: HTrace
>          Issue Type: Bug
>    Affects Versions: master
>            Reporter: Masatake Iwasaki
>            Assignee: Masatake Iwasaki
>         Attachments: HTRACE-119.001.patch
>
>
> The {{detach}} method of NullScope singleton is possible to be called multiple times by users avoiding conditionals by the assumption that NullScope#close and NullScope#detach results in no-op. Calling {{detach}} of NullScope singleton multiple times throws RuntimeException by HTRACE-101 now.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)