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

[META] How to support breaking changes prior to 2.0.0 #811

Closed
black-adder opened this issue May 8, 2018 · 7 comments
Closed

[META] How to support breaking changes prior to 2.0.0 #811

black-adder opened this issue May 8, 2018 · 7 comments

Comments

@black-adder
Copy link
Contributor

We have a couple of "breaking" changes in the pipeline #793 and #776

The former requires a c* schema update and the latter requires users to setup their metrics anew.

I feel hesitant landing them in master in case we have bug fixes that we want to release. What do people think about having a branch for 2.0.0 and doing the unenviable job of keeping master and 2.0.0 in sync?

@jpkrohling @pavolloffay @objectiser @yurishkuro @vprithvi @tiffon @isaachier

@objectiser
Copy link
Contributor

Why not do a final release, e.g. 1.4.2 or 1.5.0 whichever is more appropriate, and then all further work on master will be for 2.0.0.

If there are any bug fixes required to the 1.x version, we create a 1.x branch from the last release and only apply the fixes.

@yurishkuro
Copy link
Member

My personal view is that these changes are not that significant to warrant a major rev.

@jpkrohling
Copy link
Contributor

I agree with @yurishkuro about the metric names change, but not sure about the other one. Would using a newer code with an older schema cause problems?

@vprithvi
Copy link
Contributor

vprithvi commented May 8, 2018

I agree with @yurishkuro as well.

The dependencies schema change isn't backward compatible, and users are expected to run a migration script to move to the new schema. They will also need to use a newer version of the spark job to write dependencies. As such, these are internal details of jaeger, and I don't think it warrants a major rev.

@benley
Copy link
Contributor

benley commented May 8, 2018

Regarding the metrics naming changes, here is a partial set of prometheus metrics relabel rules to transform 1.3 / 1.4 metrics into the new naming scheme:

- action: replace
  regex: jaeger_collector:(?:.+:)?[^:]+_by_svc:([^:]+)
  replacement: $1
  source_labels: ["__name__"]
  target_label: service
- action: replace
  regex: (jaeger_collector:(?:.+:)?[^:]+_by_svc):[^:]+
  replacement: $1
  source_labels: ["__name__"]
  target_label: __name__
- action: replace
  regex: jaeger_collector:([^:]+):((?:debug_)?(?:spans|traces)(?:_recd|_rejected|_saved)?(?:_by_svc)?)
  replacement: $1
  source_labels: ["__name__"]
  target_label: format
- action: replace
  regex: jaeger_collector:([^:]+):((?:debug_)?(?:spans|traces)(?:_recd|_rejected|_saved)?(?:_by_svc)?)
  replacement: jaeger_collector:$2
  source_labels: ["__name__"]
  target_label: __name__
- regex: jaeger_collector:([^:]+)
  replacement: jaeger_collector_$1
  source_labels: ["__name__"]
  target_label: __name__

This doesn't touch the :cassandra:.* metrics, just the core jaeger ones. I haven't touched jaeger-agent or jaeger-query yet, but those are equally doable if anyone would find it useful.

@benley benley mentioned this issue May 8, 2018
2 tasks
@jpkrohling
Copy link
Contributor

This is awesome, @benley! One would just need to swap the source/target in order to get the future 1.5 to report under the same name as 1.4, right?

@benley
Copy link
Contributor

benley commented May 9, 2018

More or less, yeah. You would need to adjust the rules to match the new labels and add them back into the metric names, and tweak the regexes to match underscores and replace them with colons again. It's definitely doable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants