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

core: disable stats and tracing when OpenCensus impls aren't present #5520

Closed
wants to merge 1 commit into from

Conversation

njhill
Copy link
Contributor

@njhill njhill commented Mar 29, 2019

The interceptors do nothing when the OpenCensus implementation classes aren't loadable, yet still have significant overhead. So this change should not break any existing users of opencensus. See #5510 for example of the performance benefit to other users.

Contributes to #5510.

The interceptors do nothing when the OpenCensus implementation classes aren't loadable, yet still have significant overhead. So this change should not break any existing users of opencensus. See grpc#5510 for example of the performance benefit to other users.

Contributes to grpc#5510.
static final boolean OPENCENSUS_IMPL_PRESENT;

static {
ClassLoader loader = io.opencensus.stats.StatsComponent.class.getClassLoader();
Copy link
Member

Choose a reason for hiding this comment

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

I'm wondering if this can be CensusStatsModule.class.getClassLoader(), and people who don't want census can remove runtime dependency of census completely, namely making census api as a compile-time-only dependency for grpc library.

Copy link
Contributor Author

@njhill njhill Mar 29, 2019

Choose a reason for hiding this comment

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

@dapengzhang0 you mean also remove the existing opencensus-api dependency? I don't think that would be possible without the options discussed in #5510 which both require some kind of breakage, at a minimum would need existing census users to amend their builds.

Copy link
Member

@dapengzhang0 dapengzhang0 Mar 29, 2019

Choose a reason for hiding this comment

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

I mean not removing opencensus-api transparenttransitive dependency from grpc library, but about the ability for people who don't want census to explicitly remove that dependency in their own project's classpath.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

oh I see what you mean, yes I think that should be possible, it would require a couple more changes than this though, for example io.opencensus.trace.Tracing is also referenced directly in the channel and server builder classes.

@ejona86
Copy link
Member

ejona86 commented Apr 1, 2019

@zhangkun83, how do you feel about this? I think I'm in favor. Although I think it also shows there is a problem that we lose 4µs per-RPC just by using the Census API. It might be worth finding someone to spend the time to figure out why the API is so expensive.

@zhangkun83
Copy link
Contributor

@bogdandrutu, do you have any concern about hard-coding the Census implementation class names in here? It may be better that OpenCensus had an API to indicate the availability of its implementation.

@ejona86
Copy link
Member

ejona86 commented Apr 19, 2019

@bogdandrutu, ping. I think it would be better to have an API exposed for this.

@ejona86
Copy link
Member

ejona86 commented Apr 19, 2019

Alternatively, we could kick census out of grpc-core and then have a grpc-census that has a hard dependency on an implementation. The "multi-implementation" part of census doesn't seem to be serving the OSS community; others aren't making their own implementations of the API, right?

@dapengzhang0
Copy link
Member

ping @bogdandrutu

@ejona86
Copy link
Member

ejona86 commented Jan 16, 2020

We moved census out of core with #6577. It does not currently depend on the census implementation, but we can still consider doing so.

@njhill njhill closed this Jan 16, 2020
@lock lock bot locked as resolved and limited conversation to collaborators Apr 15, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants