Skip to content
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

[WIP] deps: Remove opentracing #28851

Closed
wants to merge 1 commit into from
Closed

Conversation

phlax
Copy link
Member

@phlax phlax commented Aug 5, 2023

Fix #27401

Related to #28852

Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

@phlax phlax requested a review from wbpcode as a code owner August 5, 2023 12:12
@phlax phlax marked this pull request as draft August 5, 2023 12:12
@repokitteh-read-only repokitteh-read-only bot added api deps Approval required for changes to Envoy's external dependencies labels Aug 5, 2023
@repokitteh-read-only
Copy link

CC @envoyproxy/api-shepherds: Your approval is needed for changes made to (api/envoy/|docs/root/api-docs/).
envoyproxy/api-shepherds assignee is @lizan
CC @envoyproxy/api-watchers: FYI only for changes made to (api/envoy/|docs/root/api-docs/).
CC @envoyproxy/dependency-shepherds: Your approval is needed for changes made to (bazel/.*repos.*\.bzl)|(bazel/dependency_imports\.bzl)|(api/bazel/.*\.bzl)|(.*/requirements\.txt)|(.*\.patch).
envoyproxy/dependency-shepherds assignee is @RyanTheOptimist

🐱

Caused by: #28851 was opened by phlax.

see: more, trace.

@phlax
Copy link
Member Author

phlax commented Aug 5, 2023

cc @envoyproxy/dependency-shepherds im in favour of landing this immediately

we have given ample notice of intention to remove and the upstream project is now archived

not sure if there was something else we should have done in terms of formal deprecation, but i think the point is now moot

cc @Oberon00

@phlax phlax changed the title [WIP] deps: Remove opentracing deps: Remove opentracing Aug 5, 2023
@phlax phlax marked this pull request as ready for review August 5, 2023 14:21
@moderation
Copy link
Contributor

LGTM. Will be good to see this land from a dependency management view.

/lgtm deps

@repokitteh-read-only repokitteh-read-only bot removed the deps Approval required for changes to Envoy's external dependencies label Aug 6, 2023
@htuch
Copy link
Member

htuch commented Aug 6, 2023

@kyessenov @lizan can you confirm that this won't adversely impact Istio? LGTM if there is no impact on any major set of users.

@Oberon00
Copy link
Contributor

Oberon00 commented Aug 7, 2023

we have given ample notice of intention to remove and the upstream project is now archived

While I have been given notice as well as others who stumbled upon this issue, there was never any kind of official announcement or other visibility of this intention outside GitHub issues (please correct me if I'm wrong), nor a deprecation (which I would expect before removing such as feature especially since, as you wrote, this is not an emergency but something where ample time was (is) available to follow the full deprecation path).

So even for myself who knew that it was sooner or later going to be removed, I am surprised that this happens suddenly without following the usual way for such configuration items.

IMHO you should at least keep the configuration file from breaking, i.e. those who have OpenTracing configured in their bootstrap config should not get an aborted startup but rather a deprecation warning.

@phlax
Copy link
Member Author

phlax commented Aug 7, 2023

here was never any kind of official announcement or other visibility of this intention outside GitHub issues

im not sure what you are expecting

discussing this offline - i dont think there ever has been a more formal process

I am surprised that this happens suddenly

it can hardly be called suddenly at this point

IMHO you should at least keep the configuration file from breaking, i.e. those who have OpenTracing configured in their bootstrap config should not get an aborted startup but rather a deprecation warning.

im not clear the implications of that exactly, but given that there is no upstream support, i think we are passed deprecation

its time for "those who have OpenTracing configured" to update

@Oberon00
Copy link
Contributor

Oberon00 commented Aug 7, 2023

i dont think there ever has been a more formal process

I was referring to the normal "Breaking change policy": https://github.com/envoyproxy/envoy/blob/main/CONTRIBUTING.md#breaking-change-policy, so with "announcement" I just meant this: "All deprecations/breaking changes will be clearly listed in the version history."

Maybe this is a bit unclear in the PR since it just mentions "deps:", but IIUC, this is naturally not only removing the dependency, but introducing a breaking change that removes the feature and will cause configuration errors with configurations that enable this feature.

@phlax
Copy link
Member Author

phlax commented Aug 7, 2023

I was referring to the normal "Breaking change policy":

sure - we probably should have followed that - even if that is not how dep deprecation have been managed previously

to be fair tho - that is something you could have done when we discussed this previously and gave this dep a reprieve for another release cycle

as said - the point really is now moot - these deps are archived and need to be removed asap - so this is a lesson for the future

@Oberon00
Copy link
Contributor

Oberon00 commented Aug 7, 2023

to be fair tho - that is something you could have done when we discussed this previously and gave this dep a reprieve for another release cycle

Probably, but it would have required a lot of effort to find out how to do it. I'm sorry for not being able to put the cycles in.

as said - the point really is now moot - these deps are archived and need to be removed asap - so this is a lesson for the future

I don't really understand. The deps have been deprecated/archived already for quite a while (see opentracing/specification#163). I don't understand why this is so urgent now. Also note that the opentracing-cpp repository is not actually archived yet (but that might be just an oversight)

@phlax
Copy link
Member Author

phlax commented Aug 7, 2023

as explained previously these deps have been scheduled for removal for some time - there is now no functioning upstream project, and they are a maintenance headache

we agreed to a reprieve in the last release cycle (despite the ongoing headache) - til now

not sure there is much else to understand

@joaopgrassi
Copy link
Contributor

joaopgrassi commented Aug 7, 2023

@htuch about:

LGTM if there is no impact on any major set of users

I wanted to express that this change will have a large impact on Dynatrace customers using our integration with Envoy today.

We are working on an alternative solution, and will open a PR into Envoy once we are ready, that will leverage the existing OpenTelemetry components within Envoy + the OTLP/HTTP exporter being worked on in #28454. So, until that is not ready, customers will be impacted by this.

Copy link
Contributor

@RyanTheOptimist RyanTheOptimist left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description says that this is a deps change, but it seem like it's much more than than given that it remove code from source/extensions. Please update the PR description to include the full scope of the change.

In addition, from the conversation on this PR it seems like there was some previous communication about this issue. Can you please link to whatever communication/announcements previously took place?

@@ -19,6 +19,8 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;

// [#protodoc-title: Dynamically loadable OpenTracing tracer]

// [#not-implemented-hide:]
//
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor point: If I'm understanding correctly, we're keeping around this proto message for configuring OT even though we no longer have code to support it. Should we remove this proto message?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably yes - altho i wasnt 100% if we can just to that

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be great if the configuration file could keep working (with a deprecation warning maybe) even if it becomes no-op. Otherwise this will break the startup of envoys that configured the now dropped feature.

@phlax
Copy link
Member Author

phlax commented Aug 7, 2023

So, until that is not ready, customers will be impacted by this.

firstly im wondering why you have waited till now to start resolving given the extensive conversations that have been had previously

iiuc this is important to you in terms of released binaries - you want your customers to be able to use the latest envoy with your documented configs

so the proposal in this PR is to remove support from 1.28 onwards - that gives you (again - weve been here before) 2+ months to publish and publicise the change for anyone wanting to update to 1.28 when it comes out

if thats not the case and you are building a binary yourselves against whatever HEAD then i think you can just revert the pr in your build branch

if i do understand correctly then my question is how long do you expect us to maintain an upstream that:

  • has a replacement
  • has had no dev for years
  • will get no further dev
  • is not monitored/maintained for issues security or otherwise

as a maintainer its a headache, we worked around the various issues in the last release cycle, i have failing tests for this right now that i would rather not have to try and debug

surely there comes a point where you need to resolve the issue for your customers

@joaopgrassi
Copy link
Contributor

Hi @phlax

My comment wasn't geared towards blocking this deprecation/removal. I understand the reason behind this, so all the things you mentioned makes sense. Additionally, it is not news to us and we have been working on a solution for our customers for a while now :).

The point of my comment was to simply answer @htuch question if this would affect users. Since we do have this data, I thought of sharing it here.

@htuch
Copy link
Member

htuch commented Aug 8, 2023

I think we should follow the standard config deprecation process for this one due to acknowledged impact, but immediately transition the filter to unsupported from a security perspective, since there is no sensible way to support something with state as described in opentracing/specification#163.

@phlax
Copy link
Member Author

phlax commented Aug 8, 2023

wfm as long as we start the ball rolling now

as discussed offline its not entirely clear what the process should be, but im happy to pr or review

@Oberon00
Copy link
Contributor

Oberon00 commented Aug 8, 2023

As someone from outside the project, I would expect mostly the process from https://github.com/envoyproxy/envoy/blob/main/CONTRIBUTING.md#breaking-change-policy and also user-facing at https://www.envoyproxy.io/docs/envoy/latest/faq/configuration/deprecation, with the only addition that the implementation will immediately switch to be just no-op. I.e. you start with a release that just logs a deprecation warning when the option is used and increases that stat counter, then in the following release it will be a hard error to use the option, unless an override is also used (questionable if this phase makes sense if the feature is no-op, but in case the opentracing config is auto-generated somehow in a way that can't easily turned off by the user, it may be sensible as an escape hatch and a "unmissable" notice)

@RyanTheOptimist
Copy link
Contributor

So it sounds like we're not going to proceed with this PR in it's current form. Is that correct?
/wait

@phlax
Copy link
Member Author

phlax commented Aug 9, 2023

So it sounds like we're not going to proceed with this PR in it's current form. Is that correct?

we need to do something, and preferably as early before the next release as possible

im not 100% clear what the "formal" process should be, as i think its a path never trodden before for this kind of case.

@htuch if you can give me some guidance as to exactly what we can/not disable and how to add deprecations warnings im happy to update and/or create a new PR

when we started to look at that seemed non-trivial at least as suggested above - so i think if we are not going to land this now someone needs to propose an interim alternative

@RyanTheOptimist
Copy link
Contributor

Per https://github.com/envoyproxy/envoy/blob/main/CONTRIBUTING.md#breaking-change-policy, I think we need to:

  • mark the API as deprecated
  • include this deprecation in the version history
  • optionally announce this on envoy-announce

We could rework this PR to do this, or open a new PR.

@RyanTheOptimist
Copy link
Contributor

The PR description says that this is a deps change, but it seem like it's much more than than given that it remove code from source/extensions. Please update the PR description to include the full scope of the change.

In addition, from the conversation on this PR it seems like there was some previous communication about this issue. Can you please link to whatever communication/announcements previously took place?

ping

@phlax
Copy link
Member Author

phlax commented Aug 9, 2023

In addition, from the conversation on this PR it seems like there was some previous communication about this issue

See description

Fix #27401

re description i can update if/when its ready to land - for now i think we need to establish what happens and when

also #9958

@yanavlasov
Copy link
Contributor

I think given this discussion the deprecation policy needs to be updated to include Envoy extensions. I will take a stab at it and will post PR shortly. We can then follow it for the a bit more "official" deprecation of opentracing.

@RyanTheOptimist
Copy link
Contributor

I think given this discussion the deprecation policy needs to be updated to include Envoy extensions. I will take a stab at it and will post PR shortly. We can then follow it for the a bit more "official" deprecation of opentracing.

It currently says, "The breaking change policy also applies to source level extensions (e.g., filters)". @yanavlasov, is that insufficient.

@kyessenov
Copy link
Contributor

Istio does not have OpenTracing API in beta+ stage, so I think we have no concerns there. We'll announce the removal when we release Envoy since someone might be using break-through APIs to access it.

@phlax
Copy link
Member Author

phlax commented Aug 11, 2023

WIPping in favour of #28987

@phlax phlax marked this pull request as draft August 11, 2023 21:42
@phlax phlax changed the title deps: Remove opentracing [WIP] deps: Remove opentracing Aug 11, 2023
@phlax phlax added no stalebot Disables stalebot from closing an issue and removed waiting labels Aug 18, 2023
@RyanTheOptimist RyanTheOptimist removed their assignment Oct 2, 2023
@moderation
Copy link
Contributor

Final deprecation for opentracing-cpp just went out - opentracing/opentracing-cpp@6db1a50

@Oberon00
Copy link
Contributor

Oberon00 commented Jan 29, 2024

@moderation: Nothing changed in the support/maintenance status of the library, this notice was already in the GH repository description since a long time (see also opentracing/opentracing-cpp#144 (comment))

@phlax
Copy link
Member Author

phlax commented Jan 29, 2024

@Oberon00 my understanding is we should be gtg with this now - ill rebase this PR

@Oberon00
Copy link
Contributor

Oberon00 commented Jan 29, 2024

@phlax: Following the envoy project's deprecation policy at https://www.envoyproxy.io/docs/envoy/latest/faq/configuration/deprecation, in 1.30 the config would be annotated in the proto as (envoy.annotations.disallowed_by_default) = true and then removed only in 1.31. At least that would be my understanding.

(NB: From Dynatrace perspective, skipping this hard deprecation aka disallowed_by_default phase would not be a problem but in fact preferable, as you cannot check if a feature is hard-deprecated, but you can check if the binary is compiled with vs without opentracing)

@phlax
Copy link
Member Author

phlax commented Jan 29, 2024

in 1.30 the config would be annotated in the proto

i think that would be now in terms of dev HEAD

skipping this hard deprecation aka disallowed_by_default phase would not be a problem

probably we should stick to the deprecation cycle i think - not sure how we can improve that - ive added bubbling for warnings in ci partly with intention of catching issues like this

Signed-off-by: Ryan Northey <[email protected]>
@repokitteh-read-only repokitteh-read-only bot added the deps Approval required for changes to Envoy's external dependencies label Feb 15, 2024
@phlax
Copy link
Member Author

phlax commented Feb 15, 2024

ive added a PR with the hard deprecation here #32421

@phlax
Copy link
Member Author

phlax commented Jul 30, 2024

closing as completed

@phlax phlax closed this Jul 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api deps Approval required for changes to Envoy's external dependencies no stalebot Disables stalebot from closing an issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Deprecate/remove opentracing lib
9 participants