Commit Graph

728 Commits

Author SHA1 Message Date
Simone Bordet c35b832251 Fixes #2088 - Recycle HTTP/2 channels on the client.
Recycled channels also for FCGI.
Small improvements to HTTP/2 too.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-01-05 17:19:06 +01:00
Simone Bordet 48c77b8608
Fixes #2088 - Recycle HTTP/2 channels on the client. (#2089)
Removed the distinction between pushed and non-pushed channels; only
non-pushed channels are released and recycled if they're not failed.

Properly resetting HttpReceiverOverHTTP2.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-01-04 07:09:08 -08:00
Greg Wilkins 41050cd8a4
Issue #2081 No idle timeout exception when dispatch is delayed (#2083)
Issue #2081 No idle timeout exception when dispatch is delayed
* Delegate the readtimeout handling to HttpChannel so that a delayed dispatch can be ended.
* Added unit test for delayed dispatch idle
* Now using HttpInput.onIdleTimeout() to fail the HttpInput, and then dispatching the request in case it has not been dispatched yet. This ensure consistent behavior independently of the value of HttpConfiguration.delayDispatchUntilContent.
* Fixed for both HTTP/1.1 and HTTP/2.
* Added tests for non-blocking reads.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-01-04 13:26:31 +01:00
Simone Bordet 1cad36969f Made test more robust.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-01-03 10:46:02 +01:00
Simone Bordet e86e8a752c Issue #1973 - Implement minimum response data rate (#2012)
* Code cleanups.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>

* Improved test case handler.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>

* Improved exception message.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>

* Issue #1973 - Implement minimum response data rate.

Implemented response content data rate control in HttpOutput.

Introduced a WriteFlusher.Listener interface that produces events
for every flush(). These events are forwarded to the Connection
and from there to the HttpOutput so that the data rate control can
be enforced.

Both HTTP/1.1 and HTTP/2 are implemented.
Data rate control for HTTP/1.1 is approximate because it will count
also headers bytes and the chunk bytes, while for HTTP/2 is precise.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>

* Issue #1973 - Implement minimum response data rate.

Addressed review comments.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2017-12-27 15:07:32 +01:00
Simone Bordet d3db89d7e3 Fixes #2019 - Expose HttpClientTransport in JMX.
Added missing @ManagedObject annotation to AbstractConnectorHttpClientTransport.

Also exported to JMX the "multiplexed" attribute for the FCGI transport
and the "useALPN" attribute for the HTTP/2 transport.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2017-12-14 12:28:46 +01:00
Simone Bordet f30c02fa45 Issue #2037 - HTTP/2 stream reset leaves stream frames in the flusher.
Simplified stream staleness checks.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2017-12-11 11:50:18 +01:00
Simone Bordet d88e2b767f Fixes #2037 - HTTP/2 stream reset leaves stream frames in the flusher.
Now waking up the flusher via iterate() after a reset has been received.
This ensures that frames that may have stalled are removed from the
flusher queue.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2017-12-11 10:57:13 +01:00
Simone Bordet 6b7f906f9d Fixes #2034 - Improve HTTP2Session dump.
Now the session also dumps the flusher and all the streams.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2017-12-07 22:40:57 +01:00
Simone Bordet 22308e3c1d Fixes #2035 - FlowControlStrategy keeps around reset streams.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2017-12-07 22:40:57 +01:00
Simone Bordet 158f90bc9e Fixes #2033 - Improve HTTP/2 session and stream stall times report.
Now including both the past and the current stall times.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2017-12-07 19:21:47 +01:00
Joakim Erdfelt ff53002fac Updating to version 9.4.9-SNAPSHOT 2017-11-21 13:11:31 -07:00
Joakim Erdfelt 82b8fb23f7 Updating to version 9.4.8.v20171121 2017-11-21 12:33:52 -07:00
Simone Bordet 4236f14955 Fixes #1891 - Make HTTP/2 async error notifications configurable.
Introduced HttpConfiguration.notifyRemoteAsyncErrors, true by default.
2017-10-12 12:13:02 +02:00
Greg Wilkins 35d0b59434 Issue #215 Conscrypt module for SSL and ALPN
Upgraded to RC11
2017-09-26 10:09:30 +10:00
Greg Wilkins 5edb2b6f4f Issue#215 fixed tests dependencies 2017-09-21 09:35:18 +10:00
Greg Wilkins 687561e1c9 Issue#215 fixed tests dependencies 2017-09-21 09:02:24 +10:00
Greg Wilkins 817dabe873 Issue#215 fixed tests dependencies 2017-09-21 08:07:56 +10:00
Joakim Erdfelt d9865a02ba Updating to version 9.4.8-SNAPSHOT 2017-09-14 08:44:27 -07:00
Joakim Erdfelt 80fb788d0c Updating to version 9.4.7.v20170914 2017-09-14 07:35:18 -07:00
Simone Bordet 006dee439f Code cleanups.
Added TODOs to remember the link between the HTTP2Connection
fill callback and HTTP2ConnectionFactory.reservedThreads.
2017-09-08 10:52:40 +02:00
Simone Bordet 7e764bad3e Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2017-08-22 19:33:46 +02:00
Simone Bordet f9ff9e1226 Issue #1759 - HTTP/2 producer can block in onReset.
Because now the failures are asynchronous, code that was executed after
invoking the failure listener must be now executed after the
asynchronous processing done by the listener and therefore Callbacks
are introduced.
2017-08-22 15:54:40 +02:00
Simone Bordet cd08d2502f Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2017-08-21 17:00:05 +02:00
Simone Bordet 154824049b Issue #1759 - HTTP/2 producer can block in onReset.
Now both failures and timeouts, when they must call the application,
do so by dispatching a Runnable to avoid to block the caller thread.
2017-08-21 15:53:56 +02:00
Simone Bordet f7925aebd2 Removed debug logging. 2017-08-21 12:12:26 +02:00
Simone Bordet 64d5131a2a Issue #1719 - Improve handling of HTTP/2 queued requests.
Since for HTTP/2 EWYK has been forced to run in PEC mode, we need the
onFillable() callback to be non blocking.
2017-08-14 11:08:57 +02:00
Simone Bordet 829fa4fe9b Improved logging. 2017-08-11 16:48:06 +02:00
Simone Bordet 87d090e062 Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2017-08-11 16:42:21 +02:00
Simone Bordet d3d02f227e Fixes #1719 - Improve handling of HTTP/2 queued requests.
Idle timeout have a special meaning in that they become a no-operation
if the application is dispatched but idle (neither reading nor writing).

HttpChannelOverHTTP2 now forwards the idle timeout to HttpInput, which
will only change its state if it is interested in reading.

HttpInput.consumeAll() has been modified to consume all input even if
it's already failed.

Failures caused by the other peer (e.g. I/O failures or stream resets)
are now retained and will eagerly consumed any queued data to free up
the flow control windows.
2017-08-09 16:21:53 +02:00
Simone Bordet 93e8af1db5 Refactored isRequestHandled() logic to use HttpChannelState. 2017-08-09 10:25:47 +02:00
Joakim Erdfelt 1311052b15 Cleaning up state of branch to match the original jetty-9.4.x
+ Does not include changes to /jetty-cdi/
+ Does not include changes to /jetty-websocket/ for javax.websocket-1.1
2017-08-08 09:47:04 -07:00
Joakim Erdfelt 585f126b48 Merge remote-tracking branch 'origin/jetty-9.3.x' into jetty-9.4.x-clean 2017-08-08 09:24:41 -07:00
Simone Bordet f04f486f94 Fixes #1687 - Missing callback notification when channel not found. 2017-08-08 09:15:20 -07:00
Simone Bordet 191b6e044f Fixes #1656 - Improve configurability of ConnectionPools.
Introduced ConnectionPool.Factory and HttpClientTransport.connectionPoolFactory.
This allows applications to create a ConnectionPool given the HttpDestination.
2017-08-08 09:14:19 -07:00
Greg Wilkins a105be95e4 Issue #1637 Thread per HTTP/2 Connection
This fix simplifies the EWYK scheduler by factoring out the preallocated producer into a
ReservedThreadExecutor class.   A shared ReservedThreadExecutor can then be used by multiple
EWYK instances to avoid over allocation of threads.

Squashed commit of the following:

commit c435dc20e25bd274d69423be1be7b0565925f249
Merge: 58a5a9a 90e5b56
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Jun 21 10:48:22 2017 +0200

    Merge branch 'jetty-9.4.x' into jetty-9.4.x-ewyk3

commit 58a5a9a655ee1a72a66f54ac8c95d7c9d73afe85
Author: Simone Bordet <simone.bordet@gmail.com>
Date:   Wed Jun 14 15:56:43 2017 +0200

    Code cleanups.

commit 4e5296216b52948523572352cba391438ff6b494
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Jun 14 07:34:58 2017 +0200

    refixed Producing to Reproducing

commit a1f8682f86d1f0803121162e3f14d7768286d3ed
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Jun 14 07:26:29 2017 +0200

    fixed Producing to Reproducing

commit 9468932e062d2271d8dc1d43a78544757732fff5
Author: Greg Wilkins <gregw@webtide.com>
Date:   Tue Jun 13 16:33:44 2017 +0200

    fixed javadoc

commit 9d4941eb97638fec09b3fe34d423538d17943b6f
Author: Greg Wilkins <gregw@webtide.com>
Date:   Tue Jun 13 16:05:27 2017 +0200

    Renamed Preallocated to ReservedThread

commit 6d3379ab64c6dcc2a7aa8ec7088afd77863816c2
Author: Greg Wilkins <gregw@webtide.com>
Date:   Tue Jun 13 12:28:52 2017 +0200

    Added configuration in modules

commit 1bd1adea4682538e1546c2ae53f4c9340dafb3bb
Merge: 83418a9 6702248
Author: Greg Wilkins <gregw@webtide.com>
Date:   Tue Jun 13 10:09:29 2017 +0200

    Merge branch 'jetty-9.4.x' into jetty-9.4.x-ewyk3

commit 83418a91320c8bfc54465ca02efdce0d2c874a0e
Author: Greg Wilkins <gregw@webtide.com>
Date:   Tue Jun 13 10:08:35 2017 +0200

    javadoc

commit 62918fd39189fed3414fec4a7c8380c21e90a4b8
Author: Greg Wilkins <gregw@webtide.com>
Date:   Sat Jun 10 00:04:06 2017 +0200

    Improved EatWhatYouKill implementation

    Simplified by abstracting out PreallocatedExecutor
    Removed invocation execution
    HTTP2 now uses a shared PreallocationExcecutor between connection
2017-08-08 09:13:44 -07:00
stephane martin b078485d63 HTTP/2 :authority: declaration should omit default ports in jetty-client (#1611)
Change-Id: I2b4f8e8373e3ba16361a37fd1f6549a4a2d97d60
Signed-off-by: Stéphane Martin <stephane.martin@neotys.com>
2017-08-08 09:13:33 -07:00
Simone Bordet 88617b9233 Fixes #1595 - Avoid sending unnecessary stream WINDOW_UPDATE frames.
Now the flow control strategy checks whether the stream is already
remotely closed, and if so it does not send the window update.
2017-08-08 09:10:24 -07:00
Joakim Erdfelt a7bcac6d75 Updating to version 9.3.20.v20170531 2017-08-08 09:07:35 -07:00
Joakim Erdfelt 11a544d6ac Updating to version 9.3.22-SNAPSHOT 2017-08-01 11:26:37 -07:00
Joakim Erdfelt bb1d69ca52 Updating to version 9.3.21.M0 2017-08-01 10:47:04 -07:00
Simone Bordet bfecc82ad1 Fixes #1687 - Missing callback notification when channel not found. 2017-07-24 11:35:41 +02:00
stephane martin 4f1e583b85 HTTP/2 :authority: declaration should omit default ports in jetty-client (#1611)
Change-Id: I2b4f8e8373e3ba16361a37fd1f6549a4a2d97d60
Signed-off-by: Stéphane Martin <stephane.martin@neotys.com>
2017-06-13 19:26:19 +02:00
Joakim Erdfelt 6a3c40e935 Updating to version 9.4.7-SNAPSHOT 2017-05-31 17:26:34 -07:00
Joakim Erdfelt 8ba0f2d95d Updating to version 9.4.6.v20170531 2017-05-31 16:22:52 -07:00
Joakim Erdfelt 429380d36a Updating to version 9.3.21-SNAPSHOT 2017-05-31 16:10:04 -07:00
Joakim Erdfelt 0f3b1cbe36 Updating to version 9.3.20.v20170531 2017-05-31 15:24:57 -07:00
Christoph Dreis e9f398cf41 Deprecate ConcurrentHashSet (#1570)
Signed-off-by: dreis2211 <christoph.dreis@freenet.de>
2017-05-30 21:46:11 +02:00
Simone Bordet 1ac103b6ce Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2017-05-17 13:16:21 +02:00
Simone Bordet d53af5d737 Fixes #523 - TLS close behaviour breaking session resumption.
Since requests cannot be connection delimited, don't call
sslEngine.closeInbound() on the server.

On the client, added a configuration parameter to allow missing
TLS Close Message, since many servers do that.

Introduced SslConnection.allowMissingCloseMessage so that it
throws in case of truncation attacks.
2017-05-17 13:07:21 +02:00