-
Notifications
You must be signed in to change notification settings - Fork 344
0.31.0 Release Candidate #189
Comments
@tedsuo can we enumerate breaking API changes and migration steps people need to go through (if any)? For example, the time stamp format change sounds breaking but iirc it's backwards compatible via deprecation. The scope change probably requires migration. |
@yurishkuro good suggestion; we need to flush out release notes and migration steps as part of this process.
|
For the record, there is no tag for Release script @carlosalberto thought that the build failed so he removed tags. |
I just noticed that release commits were also removed, which is not good. I think we cannot release Or we can release RC2. Or just leave it as it is for now. |
@pavolloffay What would you suggest at this point? For the record: I know we will be trying to get |
Two issues currently:
|
@objectiser For the first item: correct, that's what usually would need to be done for async scenarios: |
the "log object" methods have been deprecated for quite some time. e.g. https://github.com/opentracing/opentracing-java/blob/release-0.22.0/opentracing-api/src/main/java/io/opentracing/Span.java#L171 |
If #203 is merged then |
Default auto-finishing on
|
for me here default value is confusing. I try to avoid it and explicit specify true/false. Who knows what default value will be in next release. |
It definitely shouldn't be changed once 1.0 is out, it would break existing code |
The initial approach of Ben, when creating this new API, was to have the default to not-finish-Span. So it could as well be changed back to that. For me, one of the interesting things is how often this not-finish-Span scenario happens outside asynchronous frameworks: if it happens enough outside them, then we may as well do it as @pavolloffay suggests. |
@malafeev @pavolloffay Agreed on that - once this is released, it shouldn't change as it would break stuff around. |
that's why it started confusing me: my testing instrumentation became broken. And I'm not sure what |
If we don't know which way is the right way, it's better not to force that decision via the API and let the user decide. We can always add a method with default behavior later; we can't take one away or change its behavior. |
@tedsuo @yurishkuro @bhs I am absent about 0.31.0 for a long time, because too many things for releasing new versions of skywalking. And I jump back to OT-java 0.31.0, so forgive me if asking the questions if you discussed before. Feedbacks at high level:
From my quick codes review: Just an option: if you truly want to remove the ActiveSpan, and support the cross-thread propagation, we can consider to add @bhs Also should consider the concepts in Spec Level about how to propagate cross thread, since Java is not the only language has thread models, right? I always felt that IMHO, we should keep the API consistency if possible since we are so near for 1.0. We should keep the Java-API like the OT spec said. CC @adriancole |
Being most of the way through writing an integration - please don't make 0.31 incompatible with 0.30 without really clear docs:
ideally a thunk layer that implements the 0.30 API would be useful too. I realise that as a pre < 1.0 adopter, we're taking some risk, but given the goal of being the lingua franca of tracing, you're going to depend on folk keeping up with your changes to be successful: changes that add upgrade pain and no new capabilities are just overhead IMO. |
Hi all, I find the I just had a comment on the actual Java API : public interface ScopeManager {
default Scope activate(Span span) {
return activate(span, true);
}
Scope activate(Span span, boolean finishSpanOnClose);
Scope active();
} Even if the documentation says so, it makes really clear that default span activation will finish the span on scope closing. What do you think ? Thanks all |
it won't be compatible with Java 1.6 |
@yurishkuro indeed I was just thinking of that. Also won't work in java 7. |
About default auto-finishing - IMHO SpanBuilder.startActive() should finish-on-close by default (like it does now), but It would be better to remove Additionally I'm not a fan of boolean parameters, it's hard to read: SpanManager.activate(span, true) <- what does it do? This would be better: SpanManager.activate(span) // does not finish on close
SpanManager.activateWithFinish(span) |
I personally like removing the |
Can we elaborate what are the steps/decisions that are required before this issue can be closed? We ideally don't want to maintain the separate release candidate branches in tracers/instrumentation for too long. |
Hi @objectiser, we're going to discuss next steps on the OTSC call this friday. I believe we can approve the release candidate at this point. But we should discuss what other steps should be taken before we merge it in. |
Where / when is this OTSC call? The RC docs still refer to the refcount based activeSpan model - https://github.com/opentracing/opentracing-java/tree/v0.31.0 - I'd expect at least the documentation updated as a minimum before having an RC :) I went looking there to get an overview of the new API, so that I can reason about how it will be integrated into our framework. Is there a good source of updated docs for it? |
@rbtcollins the call is this Friday 11:30 EST. There is a document linked from https://github.com/opentracing/specification/blob/master/project_organization.md with minutes, agenda, call details, etc. |
@rbtcollins Sorry about that. Now that we have a more solid/tested approach we will definitely update the documentation (definitely important for the second RC). Part of the lack of it was in part due to the fact we didn't know how much the API could it still change at (that's why the referenced #182 includes notes about it, i.e. https://gist.github.com/tedsuo/16977473e6808773736f784b56e93d73) |
I'm late to the party :( Anyway I was thinking about code like : If we want the default to be not auto finishing : I'm not sure but it seems a bit more idiomatic since not-auto-finishing spans are mostly used in async code. Thanks ! |
Thanks @hypnoce. I believe that would be too high-level an API. At any rate, the current candidate has been thoroughly vetted, I don't think there's appetite for a radical change at this point. But! Once the API settles, it should be considered a "low level" API. Personally, I'm interested to see what kinds of "higher order" APIs people can build on top of OT to provide convenience, without having to worry about getting all of the edge cases correct. |
We at https://github.com/instana are ready for 0.31: instana/instana-java-opentracing#4 |
Thanks @CodingFabian! There is one last minute change: we have dropped the new BINARY format, in favor of a longer discussion and a separate release. |
Huzzah, |
This issue tracks the final push for releasing the new 0.31 API for OpenTracing-Java.
After six months of research and exploration, the next version of the Java edition of OpenTracing is now available. This represents a significant effort on the part of a large group of people. The OpenTracing community has grown substantially in the last year, and that diversity is reflected in the quality of this work.
RC Branch: https://github.com/opentracing/opentracing-java/tree/v0.31.0
Current Status
Finalized Changes
Scopes
The core motivating issue for this release was the simplification of context-propagation mechanism introduced in 0.30, and removal of reference-counting and lifecycle-management for spans.
Backwards Compatibility
The current proposal is to retain the v0.30 interfaces and related objects by moving them to the
io.opentracing.v_030
namespace, and create a "shim" to allowv0.31
tracers to be wrapped in thev0.30
interface.Repo: https://github.com/opentracing/opentracing-java-v030
Proposal: https://docs.google.com/document/d/1JIEBn0K0vQgMvyNhcJr57utizeWZ5Vf5cwmUr2GzwYc
Initial compatibility PR (no shim yet): #215
Compatibility Goals
v0.30
without having to maintain both av0.30
and av0.31
API.v0.30
API while still consuming tracer implementation updates.v0.31
.Release Process
0.31.0
branch.master
will continue to point at the latest patch version of the0.30
branch, until0.31
is officially released.0.31.0.RC1
,0.31.0.RC2
, etc.Current RC snapshots
Delayed until 0.32
Improved Binary format
The current binary format requires predetermined memory allocation, which requires a size calculation of baggage. A variable sized binary format would be preferable.
Previous API proposals for 0.31
The text was updated successfully, but these errors were encountered: