-
Notifications
You must be signed in to change notification settings - Fork 107
Watchdog is internal but uses aren't #829
Comments
This is blocked on refactoring of ClientContext. I think ClientContext is supposed form the core of an autogenerated stub and contains stateful things like channels, credentials, executor, and the watchdog. This class is currently part of the public api, so unless that class becomes internal or another mechanism is introduced to store internal state, I don't really have a way forward. |
Everything related to the watchdog is either internal or beta, so we are pretty safe. However I don't think that this is p1 bug, as I mentioned earlier, the cleanup does happen by side effect. |
I agree that this should be fixed before we remove the Beta api labels. However since no one has expressed time pressure for removing the labels and since this doesn't have negative effects on current users, I don't think fixing this should pre-empt existing priorities. |
Hi Hanzhen, can you please take a look at this? Thanks! |
Okay this is an awkward situation here... Ideally as what @elharo has described we should have marked How bad would it be if we change Or rather, @igorbernstein2 how is |
End users should not interact with the Watchdog directly. End users are supposed to configure settings for the Watchdog via StubSettings#setStreamWatchdogCheckInterval. And the Watchdog is created internally by the client. I don't really see how you can remove the watchdog methods from ClientContext since the watchdog is needed by GrpcCallableFactory to create callable chains and there should be only 1 instance of the Watchdog per client. ClientContext encapsulates client scoped objects. The watchdog is not Bigtable specific and is used for all server streaming grpc calls: Classes like FixedWatchdogProvider should be definitely marked Internal as well. I also think that ClientContext should also be marked Internal since it's only role is encapsulate internal client state. |
Thanks @igorbernstein2 . Can we get away with marking these classes as internal without a major bump? Or, is there any formal process for such breaking changes as making a public stable class internal (like deprecating a method or class) until we are ready for the next major version? |
You can mark the WatchdogProvider implementations as Internal since they are BetaApi. However ClientContext is GA, so I don't think you can change that. Also, please note that I don't have decision powers on the gax changes. I think someone from the actools team would be a better candidate for discussing the direction of the api surface. I'm mainly a consumer of the library for bigtable. |
Hey @vam-google can you weigh in? |
…ns `@InternalApi` This is to address googleapis#829. Also add grpclb lib to bazel dependencies, as its absence was failing some of the tests well executing from bazel.
Watchdog is marked internal but various places that use it aren't. e.g.
gax/src/main/java/com/google/api/gax/rpc/FixedWatchdogProvider.java
Internal APIs should only appear on the surface of other internal APIs.
The text was updated successfully, but these errors were encountered: