Skip to content

Releases: grpc/grpc-java

v1.6.1 Release

31 Aug 22:02
Compare
Choose a tag to compare

v1.6.0 was mistagged and has been deleted. The binaries of v1.6.0 are effectively the same as v1.6.1.

Important Changes

  • Android users should no longer need -keeps in their ProGuard configuration (#2633)
  • gRPC is no longer using the current Thread’s “context ClassLoader” when searching for transport Providers (#2375). Instead it is using the current class’s ClassLoader. This should not break existing users and work out-of-the-box in a larger number of environments
  • Fix support for Google AppEngine Java 8 (#3296)
  • Log netty connection errors at FINE instead of SEVERE (#1768)
  • Update netty to 4.1.14 and tcnative to 2.0.5 (#3307)
  • Channel state API is now implemented via ManagedChannel.getState/notifyWhenStateChanged. This requires LoadBalancer support; custom LoadBalancers should be updated to call updateBalancingState() instead of updatePicker()
  • Referencing CallCredentials is now stable API (#3289). Implementing or consuming CallCredentials is still ExperimentalApi
  • New method ClientCallStreamObserver.cancel() allows clients to cancel RPCs without requiring using an interceptor or Context (#3115)

Features

  • Census trace tags propagation is now enabled by default, but only if the Census Impl is available in the classpath (#3294)
  • Update google-auth-library-oauth2-http to 0.7.0 (#3188)
  • Update io.opencensus:opencensus-api to 0.5.1 (#3204)
  • CallOptions now passed to ClientStreamTracer.newClientStreamTracer (#3276)
  • Allow custom hostname verifiers for OkHttp via OkHttpChannelBuilder.hostnameVerifier() (#3205)

Bug Fixes

  • Calls should no longer fail with the message “Channel requested transport to shut down” when Channel.shutdown() was not called. The calls may still fail, but will have a more accurate message (#3351)
  • Clean up Context class initialization to avoid circular class loading issues (#3203, #3191)
  • Fix keepalive bug that sent too many pings (#3274)
  • Fixed “onStreamAllocated was not called, but it seems the stream is active” warning (#3007)

Incompatible Changes

  • Pseudo headers (headers that begin with “:”) can no longer be set or retrieved (#3114). This has been the documented API, but now is being enforced
  • The object returned by Context.attach() must be the one passed into detach() (#3292)
  • When NameResolver returns >= 1 balancer GRPCLB policy will be forced (grpc/grpc#10258)

1.5.0 Release

18 Jul 18:29
Compare
Choose a tag to compare

Major

  • Licence changes from BSD to Apache 2.0
  • Bazel is now supported

API Changes:

  • ServerInterceptor can be installed server-wide (#3118)

Minor

  • Calls that exceed their deadline include how long they waited in the Status
  • Updated to Netty TCNative. This should make it possible to use Apache Tomcat with gRPC
  • SSL configuration errors are reported sooner
  • Server side cancellations can take place even if the application is blocking the inbound thread (#2963)
  • Servers always return Status.UNKNOWN for internal errors. Added an optional interceptor to bring back the old behavior (#3064)
  • MethodDescriptor.create is now deprecated

Bug Fixes

  • Reduce logspam by using FINE instead of INFO for deadline narrowing events
  • Netty throughput speed increased 2x for very high throughput (#3038)
  • OverrideAuthorityNameResolverFactory now correctly forwards refresh() (#3062)

v1.3.1 Release

06 Jul 16:06
Compare
Choose a tag to compare

Backports from 1.4.0:

  • OkHttp now ignores unknown SETTINGS (#3032). This resolves an important incompatibility with C-wrapped language instances of gRPC
  • Fixed dependency specification to avoid wildcards, which are not universally supported (#2961)
  • Fixed server keepalive not initialized bug (#2982)

1.4.0 Release

07 Jun 01:21
Compare
Choose a tag to compare

API Changes

  • LoadBalancers can now update addresses for a channel in-place, allowing the channel to re-use existing connections
  • The previously deprecated affinity API is now deleted. (#3026)

Bug fixes

  • Overly large messages now return RESOURCE_EXHAUSTED (#2906)
  • Netty-tcnative load failures may now be detected earlier and cause an exception during build() instead of creating a hung channel (#2599)
  • OkHttp now ignores unknown SETTINGS (#3032). This resolves an important incompatibility with C-wrapped language instances of gRPC
  • Fixed dependency specification to avoid wildcards, which are not universally supported (#2961)
  • Channel.authority() should return the value of overrideAuthority (#2682)

Other

  • gRPC now does TXT record lookups for implementing service config. Android users will need to add proguard configs to ignore javax.naming.** classes (#2912)
  • Protobuf bumped to 3.3.0
  • Disconnect messages have been silenced as non errors (#2960)
  • Netty has been upgraded to 4.1.11 and Netty TC Native 2.0.1
  • More work to support HTTP GET method. This work is considered experimental and known to have future incompatible wire changes
  • Fixed support for the AppEngine development sandbox

1.3.0 Release

27 Apr 22:57
Compare
Choose a tag to compare

New Features

  • Netty client: Connection Keepalives now work.
  • Keepalives in Netty and OkHttp now allow sending pings without outstanding RPCs. The minimum keepalive time was also reduced from 1 minute to 10 seconds. Clients must get permission from the services they use before enabling keepalive.
  • Netty server: now detects overly aggressive keepalives from clients, with configurable limits. Defaults to permitting keepalives every 5 minutes only while there are outstanding RPCs, but clients must not depend on this value.
  • Netty server: can now use keepalives to detect dead connections
  • Netty server: can now enforce a maximum connection age. This is useful when using pick-first or behind a L4 load balancer
  • Netty client: can now use HTTP GET for safe and idempotent RPCs. Netty server does not yet accept these RPCs. This is experimental with planned incompatible wire format changes
  • Added io.grpc.protobuf.StatusProto for working with com.google.rpc.Status, which can include additional error details
  • Introduced StreamTracers on client- and server-side. These can be used by tracing frameworks and LoadBalancers to be notified of relevant RPC events and details. OkHttp and Netty support the tracers, but InProcess does not

API Changes

  • MethodDescriptor.Builder is now non-experimental
  • The alias from LoadBalancer2 to LoadBalancer was removed as planned
  • LoadBalancer.SubchannelPicker.pickSubchannel(Attributes, Metadata) was deleted as planned in favor of the more extensible LoadBalancer.SubchannelPicker.pickSubchannel(PickSubchannelArgs)
  • CallOptions.withAffinity is now deprecated in favor of withOption and will be removed in the next release
  • NettyChannelBuilder. and OkHttpChannelBuilder.enableKeepAlive is now deprecated in favor of keepAliveTime and keepAliveTimeout and will be removed in the next release
  • ResolvedServerInfoGroup and ResolvedServerInfo are deprecated and are planned for deletion in the next release

Bug fixes

  • The Netty transport now handles the Netty Channel failing to be constructed by cleanly reporting the error. Previously this would cause a NullPointerException. This is generally useful for debugging broken shading configuration
  • OkHttp: Fix compatibility issue with newer versions of Conscrypt

1.2.0 Release

16 Mar 00:07
Compare
Choose a tag to compare

New

  • The new Load Balancer API (and ManagedChannelImpl) is now default; the previous one is removed (#2656)
  • The authority header is now included when looking up methods in the HandlerRegistry (#2709)

Changes

  • Downgraded Guava to 19. This should help avoid ABI problems with older versions of Guava
  • Fixed a bug with connections dropped due to HTTP/2 settings frames (#2820)
  • Upgraded to Protobuf 3.2
  • Fixed an error when using keep alives with Netty (#2729) Edit: the feature is still broken (#2828)
  • SETTINGS_MAX_HEADER_LIST_SIZE is now sent in the initial HTTP/2 settings (#2350)
  • Fixed a race in the server start and shutdown when using Netty (#2672)
  • Indexes for server reflection are consistent for the duration of the RPC. (#2767)

1.1.2 Release

07 Feb 21:17
Compare
Choose a tag to compare

This is a patch release to the 1.1 gRPC branch that fixes two minor issues:

  • Fixed an accidental dependency from the grpc-all artifact on the yet to be released grpc-thrift artifact
  • Make the new load balancer API non abstract as to not break existing ManagedChannelBuilder implementations.

1.1.1 Release

01 Feb 01:50
Compare
Choose a tag to compare

I am pleased to announce availability of gRPC Java 1.1.1, the next minor release of gRPC. This includes several months of changes made since 1.0.3. There are many bug fixes, API improvements, and performance changes in this release.

Major Changes

  • Preview of New Load Balancer API The previous API for implementing a new load balancer had several structural issues (#1600 #2209 #2301 #2302) that made it difficult to assign load intelligently to backends. The V2 API is available for trial use in this release. The classes are suffixed with a "2". They will be renamed in the next release of gRPC, and the the current implementations will be removed. Note that these APIs are still considered experimental and not guaranteed to be stable yet. See the notice.
  • Server Reflection It is now possible to enable server side reflection when using Protobuf generated stubs. This allows remote clients to inquire as to which supported services and methods the server can process. It is currently opt in, by adding ProtoReflectionService to an existing server.
  • New Context Artifact Context, the means by which deadlines and cancellation are propagated across API boundaries is now in its own package in grpc-context. It can (and will) be used for implementing cross RPC state, such as for stats and tracing.
  • Wait For Ready Also known as "fail fast", wait for ready has been implemented as an option in gRPC stubs. This can be used to indicate that an RPC should fail immediately if there are no healthy servers available.
  • Proxy Support It is now possible to use basic HTTP CONNECT style proxy support (23f5a6f)
  • _Service_ImplBase.bindService() is now final. The grpc-io mailing list was notified of our intentions and reasoning. This is a breaking change but is not expected to impact production code. If a test breaks, typically you can just remove the line resembling Mockito.when(service.bindService()).thenCallRealMethod();. If this change causes you pain, please file an issue and we may revisit it.

Minor Changes

  • Many classes have been made final. These classes were previously uninstantiable due to having private constructors, but were possible to use with a mocking framework (such as Mockito). These classes have been made final, and special testing utility classes have been provided for use instead.
  • The generated stub classes have several new methods for indicating max message size.
  • Stub classes also lazily load classes whenever possible. If a stub is generated from a very large proto file, or has many dependencies, this avoids loading them all when possible.
  • Many more examples have been added and clarified. See the examples/ directory.
  • Multiple performance optimizations. gRPC is now more memory efficient, less lock contentious, and less CPU overhead. (24de243, 35c3f81, ca5a402, f78644d, 6d28a93, ea3f506, 8c18a0d, 8b745d9, 6907d81, 1623063, 141eed5, ef4e0f4, 8702185, 496a621, cb1ba5b)
  • Guava collection classes are removed from the library, making it easier for Android users to lower their method count and binary size.
  • Dependencies are upgraded to Guava 20, Netty 4.1.8, and Protobuf 3.1.0
  • Status error messages have been made more clear, and should be easier to diagnose.
  • Numerous small bug fixes
  • Numerous small API changes.

Note that all classes marked @ExperimentalApi and @Internal aren't guaranteed to be API stable, and may be changed without notice. Classes and methods marked @Deprecated should be avoided and may be removed in a later release. Of note is ClientAuthInterceptor, which should be avoided in favor of MoreCallCredentials.

v1.0.3 Release

22 Dec 17:09
Compare
Choose a tag to compare

The v1.0.3 release has a small bugfix and experimental support for forward proxies. Only users of InProcess transport in tests or users wanting to test the forward proxy support benefit from the update.

  • Remove a usage of an executor which was just to avoid lock ordering issues. Now the work is done on the same thread, but after locks are released. This fixes non-determinism when "connecting" with the InProcess transport (#2444)
  • Add experimental support for http forward proxies via CONNECT to both Netty and OkHttp transports. Proxy authentication is unsupported. To enable, use the GRPC_PROXY_EXP environment variable and set to a host:port-formatted string. Error handling is known to be weak when negotiating with the proxy; most proxy failures will result in a generic error. Errors after negotiation completes are unaffected.

v1.0.2 Release

28 Nov 22:36
Compare
Choose a tag to compare

The v1.0.2 release is a bug fix release with no new features. The following specific fixes were backported from the master branch:

  • Make the OkHTTP transport AppEngine friendly f52b4e5
  • core: Fix a bug for exception handling at messageRead abb4a2a
  • netty: Upgrade to 4.1.6 and tcnative Fork23 6fa63a6
  • core: Update HTTP status to gRPC status mapping 78107a6
  • core: fix bug when stream listener not set before stream closed 0e27eef
  • core,netty: quick patch for setListener regression 0d694c8