Skip to content

@violetagg violetagg released this May 10, 2019 · 16 commits to 0.8.x since this release

This is the 9th release of Reactor Netty 0.8, part of Californium-SR8 Release Train.

This is a recommended update for all Reactor Netty 0.8.x users.

❗️ With HTTP, chaining multiple send operations is discouraged and will not work as expected when send involves scalar or mono publishers. For instance send(flux).send(mono) or send(flux).sendObject(message) will ignore send(flux). This is an anticipation of an API simplification moving forward 0.9.x version where send will not return NettyOutbound anymore.

New features and improvements

  • Depending on Reactor Core v3.2.9.RELEASE, see release notes (060f6b1)
  • Updated Netty version to 4.1.36.Final (#632, a81b4b1)
  • Add API for passing HttpHeaders to the proxy configuration. (#702)
  • Add API for configuring the HTTP response decoder used by the HttpClient. (#531, #704, #709)
  • Add proxy protocol support. (#697, #716, 396525e)
  • Performance improvements (#457, #572, #654):
    • When possible obtain the connection once from the channel attributes. (#705)
    • When creating HttpServerOperations directly set a header Transfer-Encoding: chunked, there is no need to check whether the headers were sent. (#707, b67c63d)
    • Use an adaptation of Spring Framework UriTemplate for resolving path parameters. (#708)
    • Reduce ChannelOperations#get invocations. (#713)
    • Revisit write/flush operations. (#725)
    • Change default server/client ChannelOption values. (#725)
    • Add fusion support to send(Publisher). (#725)
    • Filter the empty buffers emitted by the Publisher. (#719, #720, #725)
    • Defer mark as sent to the subscribe time for the single HTTP send operation. (dac270c)
    • HTTPOperations send fallback to simple channel.write when the headers have been already sent. (8b33b6d)
    • Remove Transfer-Encoding header when the size is known (in case of FullHttpRequest). (e56c2b0)
    • Fix regression with MonoSendManyInner:isVoid:true and send(Publisher). (#735, a55c667)

🐞 Bug fixes

  • Ensure DISCONNECTING event (in case of TCP/HTTP server) is sent when the channel is closed. (#688, #690)
  • Ensure PooledConnectionProvider.Pool#inactiveConnections is correct when TimeoutException occurs (in case of fixed ConnectionProvider). (#673, #691)
  • When a channel is acquired and closed immediately, attempt to acquire again. If the second attempt also fails, return an error and let the user decide to retry
    or not. (#653, #692)
  • Ensure HttpClientOperations#send(Publisher) does not leak when GET request. (#694, #695)
  • Do not attempt any writing if the connection is closed. (#698)
  • Introduce a cleanup mechanism for messages that are dropped (when using sendObject(Object)). (#585, #699, #711)
  • Fix NullPointerException in BootstrapHandlers#removeConfiguration(ServerBootstrap, String). (#703)
  • Ensure HttpClient#doOnRequest is invoked before the actual request. (#558, #701)
  • Apply TcpServer#selectorOption as ServerBootstrap#option. (#706)
  • Correctly calculate ProxyProvider#equals/hashCode when nonProxyHosts is specified. (#728, #729)
  • HttpClient should ignore malformed cookies. (#726)
  • Use collectList instead of collect for aggregating client GET/HEAD. (#700, 8e80029, c6aa625, 6ebb133)
  • Fix to not log instead bubbling fatal exceptions. Wrap possible singleton ClosedChannelException. (d850804)
  • Internal Netty errors wrapping. (5059f86, 5ee6151)

📖 Documentation, Tests and Build

  • Upgrade Gradle version to 5.4. (#725)

👍 Thanks to the following contributors that also participated to this release

@yuusaku-t, @aftersss, @shrykull, @fred84, @dave-fl, Spring community (gateway, framework) and the many realtime reports from our Gitter channel !

Assets 2
You can’t perform that action at this time.