-
Notifications
You must be signed in to change notification settings - Fork 893
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
[For 1.0] Mark TraceIdRatioBased experimental. #1412
[For 1.0] Mark TraceIdRatioBased experimental. #1412
Conversation
This will mean that any language that has implemented this as a part of their SDK will need to pull it out of the SDK and move out to an experimental package before they can release 1.0. |
I think that would be the cleanest solution, yes. But it might be impractical / not worth it at this point already (especially since I don't think there will be fitting existing packages for most SIGs). I don't have a strong opinion on which option would be best, which is why also suggested the alternatives incl "do nothing". |
We already don't know if the languages work together as advertised with the ratio based sampler. At the very least it needs to be documented. |
I would prefer alternative 2 given how close we are to the release. It should be clearly documented for the reason @dyladan pointed out. Ideally it would not only say so in the spec but also in the doc for each language implementation ("configuration/creation interface is stable but underlying algorithm is unspecified and subject to change"). |
Let's go with 2) definitely. |
#1414 should implement alternative 2. |
How about |
There was already a PR for this (#331) that was rejected long ago. Sounds fine for me. |
Another alternative: Leave the algorithm unspecified forever. The name |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this PR is a fair representation of a current state of a spec. I'd also vote for having a defined algorithm for better interoperability. But definitely a separate discussion.
+1 If there is no spec for the algorithm, then there is no point in mentioning this sampler in the spec, since SDKs either won't know how to implement it or do it inconsistently. |
I am fine to declare as experimental, there were PRs to define the algorithm, I will make sure to do that this week (proposed that PR). So I think we can leave it and be experimental |
@Oberon00 Sorry, I was reading 2 PRs at the same time, got confused which one I was reviewing. I think Option #2 is the right one. A few notes I didn't have time to say in the Specification meeting (had a computer crash due to memory thrashing right in the middle of the discussion).
I'm still in favor of removing the TODO on the algorithm. I think you need to NO MORE here, as the requirements for an algorithm are clearly stated and any adjustments to existing implementations can be considered bug-fixes to those requirements. Side Note: Is there an efficient way to ask SDKs for inputs measure their compliance to the requirements around ratio sampling between upstream downstream processes? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removing my approval. Sorry, my vote is for #2 which was a separate PR I was looking at.
There are still several implementations possible that are inconsistent with each other (e.g. Python might sample a particular trace ID while Java might not at the same ratio). Whether we want this or not is another question, but probably not a trivial one, see #1413 |
Requirements are not specification. "all wifi devices MUST interop" is a requirement, but it's not helpful to implementors. For this sampler to be in the spec, the spec needs to clearly describe how it is supposed to work, e.g. what hashing algorithm all languages must use, etc. An "Experimental" label to me means: here's a specification of how a thing should work, try to implement it, ok if you don't, it's not mandatory. The spec part is still required even for experimental, otherwise there's absolutely no guarantee that implementations across languages will be compatible with the stated requirements. |
Actually not. The implementations between servers need to be consistent per the requirement, so any inconsistent in SDKs would NOT be according to specification. It's a nuance that's not worth it I guess, but I think while there's MANY possible implementations specified, only ONE can be implemented across all SDKs to be compliant. I.e. we already specify everyone uses the same algorithm, just not exactly which one. I'd love to understand if there ARE inconsistencies today or if we can just remove the TODO, and then write up the specification of what everyone implemented in the next spec release rather than churn the experimental tag here. |
Required for #1373.
See #1372 (comment)
TraceIdRatioBased is only vaguely specified and has a TODO in it. We should not mark it stable now.
Alternative temporary solutions:
Alternative permanent solution:
Follow-up to find some proper solution is in #1413.