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

Colin Patrick McCabe commented on HTRACE-215:
---------------------------------------------

I've been thinking about this, and I don't think the {{Sampler<T>}} type 
provides any advantage over just plain old {{Sampler}}.  It seems like in 
practice pretty much every traced application and library uses the 
{{SamplerFactory}}, which just returns a {{Sampler<?>}}.  We don't have a 
single example of a {{Sampler}} which is anything other than 
{{Sampler<Object>}}, or a single example of one that uses the templated 
parameter.

The fundamental issue is that if you want to use a {{Sampler<Foo>}}, you have 
to change your code to call {{startSpan("spanName", mySampler, myFoo)}}.  If 
we're going to start hacking up the application code, we could easily do 
something like this:

{code}
startSpan("spanName", myFoo.saysItIsOk() ? AlwaysSampler.INSTANCE : 
NeverSampler.INSTANCE)
{code}

If this seems to cumbersome, we could always write a utility function wrapping 
it, similar to {{DFSClient#getPathTraceScope}}, which creates a new span with a 
"path" KV annotation.

So in summary, the generic type parameter seems to add no additional value, and 
it leads to a lot of ugly {{<?>}} boilerplate and findbugs warnings.  Let's zap 
it in 4.0.

> Simplify the Sampler type
> -------------------------
>
>                 Key: HTRACE-215
>                 URL: https://issues.apache.org/jira/browse/HTRACE-215
>             Project: HTrace
>          Issue Type: Sub-task
>    Affects Versions: 4.0
>            Reporter: Colin Patrick McCabe
>            Assignee: Colin Patrick McCabe
>
> The Sampler type currently is parameterized on another type, like 
> {{Sampler<T>}}.  However, this is not really useful now that we have moved to 
> a model of creating samplers from the {{SamplerFactory}}, since the 
> {{SamplerFactory}} returns a {{Sampler<?>}}.



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

Reply via email to