Commit Graph

1057 Commits

Author SHA1 Message Date
Greg Wilkins f4e37b1adb
Issue #2014 - Unix Socket Client (#2025)
There are still problems with this impl (some client tests ignored) and there is still a work around for the JNR bug 50, however this impl is already much better than the unix socket support that is already in the release.  So will merge for now and put more effort in once there is a JNR fix.

* WIP add unix domain sockets support in HttpClient
* move unix socket client part to unix socket module #2014
* some cleanup #2014
* add missing headers #2014
* add TODO
* UnixSocket client refactor
* cleanup test and pom
* minor changes, use LOG.isDebugEnabled() before using debug method
* add UNIX SOCKET http client test with all other tests, push this to see what happen on Jenkins
* fix some unit tests
* fix more tests
* fix load test
* UnixSocket client
* Demonstrate JNR bug
* Worked around JNR bug 50
* close channel on client side as well
* more details in log
* log file path as well
* #2014 disable test per default as doesn't work on some environement
* Revert "#2014 disable test per default as doesn't work on some environement"
* test only on unix
* Allow test of specific transport(s)
* Move unix socket to /tmp
* move test socket to /tmp
* move test socket to /tmp
* ignore failing tests for now
* fix bean name and possible to use sys prop org.eclipse.jetty.http.client.AbstractTest.Transports with mvn cli
* test isBlank as surefire props is not null
* correctly create tmp file with @Before
* do not delete file
* use /tmp as build directory doesn't seem to work within docker...
* do not delete sock file on client as it is own by the server
* file must not exist when binding unix socket
* #2014 fix license header
* network specific tests assumed
* Fixed to handle null selector keys
* add assume for tests that assume a network connector

Signed-off-by: olivier lamy <olamy@webtide.com>
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-01-13 11:59:47 +01:00
Greg Wilkins de7e3001ef cleanup temp fix for #2046 2018-01-11 17:01:05 +01:00
Greg Wilkins 385ba7d70d Remove graceful handling from ManagedSelector stop #2046
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-01-11 10:29:27 +01:00
Greg Wilkins 7d9f2d7e64 Added info to TimeoutException
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-01-10 21:16:41 +01:00
Greg Wilkins db3891f3d2 removed jmh dependency
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-01-10 17:00:07 +01:00
Greg Wilkins 7138dc3828
Jetty 9.4.x #1918 scalable scheduler3 (#2101)
* Scalable scheduler changes for #1918
* Added HttpChannel.destroy to destroy CyclicTimer
* fixed rebase with HttpConnectionOverFCGI
* renamed to acquire
* Destroying the HttpChannel consistently in all transports.
* updated headers
* cleanup after final review

Signed-off-by: Greg Wilkins <gregw@webtide.com>
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-01-10 16:56:41 +01:00
Greg Wilkins 356bf2e06f
Issue #2046 - Graceful stop of connections (#2100)
* Clean up of actions (now updates) prior to #2046 fix
* prevent exceptions from termincating lifecycle doStop or destroy
* Refactored ManagedSelector stop to always close endpoints
* Fixed NPE if SelectorManager is already stopped
* refactored after review
* further simplifications after review
* Wait only for oshut endpoints
* Cleanup from review

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-01-09 20:36:41 +01:00
Joakim Erdfelt 21365234f8 Issue #2108 - Updating license headers for year 2018 2018-01-09 09:44:41 -06:00
Joakim Erdfelt 41ed9f29f4 Merge remote-tracking branch 'origin/jetty-9.3.x' into jetty-9.4.x 2018-01-09 09:37:25 -06:00
Joakim Erdfelt fa4c7b0ca9 Issue #2108 - Updating license headers for year 2018 2018-01-09 08:39:37 -06:00
Joakim Erdfelt 067fc5d2d8 Issue #2108 - Upgrade licenses for 2018 2018-01-09 07:42:06 -06: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
Greg Wilkins 54c55b602f
ManagedSelector dump improvements from #1970 (#2062)
* ManagedSelector dump improvements from #1970

ManagedSelector dump improvements from #1970:
 + DumpKeys is now prepended to actions list so it is less likely to be delayed by a stuck/busy selector
 + Timestamps are included for actions and keys which may be separated by time
 + Race removed race for updating dumpKey list while it is being added to.

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* moved utility timestamp format method to Log

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* updates after review

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* changes after review

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* Issue #1970 - ManagedSelector dump improvements.

Code cleanups.

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

* Revert "Issue #1970 - ManagedSelector dump improvements."

This reverts commit 4febaf10dc.

* Fixed imports and other review feedback

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2018-01-02 11:13:24 +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 2067eac701 Issue #2003 - Do not submit blocking tasks as managed selector actions.
CreateEndPoint and DestroyEndPoint are now submitted directly to
the Executor, rather than being submitted as selector actions.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2017-12-02 00:28:20 +01:00
Greg Wilkins 6ac4e770a6 Issue #1983 Warn on connection failures
Signed-off-by: Greg Wilkins <gregw@webtide.com>
2017-11-22 11:08:20 +01:00
Simone Bordet 131f46df64 Improved dump of ManagedSelector.
Now also dumping the actions.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2017-11-16 11:35:18 +01:00
Simone Bordet 0f07c6518e
Issue #1970 - ManagedSelector loses selector thread (#1971)
* Issue #1970 - ManagedSelector loses selector thread.

Removed broken data structure ConcurrentStack (ABA problem).

Made ReservedThreadExecutor use a ConcurrentLinkedDeque
instead of ConcurrentStack.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2017-11-14 10:48:33 +01:00
Greg Wilkins 47d46ec60e
Issue #1924 - ManagedSelector livelock. (#1963)
* Issue #1924 - ManagedSelector livelock.

Alternate implementation that is count based rather than time based.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2017-11-14 10:27:04 +01:00
Simone Bordet 761dccd10c Now dumping also SelectionKeys that throw when accessed. 2017-11-08 22:47:16 +01:00
Simone Bordet d1e5883ad4 Issue #1920 - Connect Timeouts with NonBlocking CreateEndPoint.
Made CreateEndPoint and DestroyEndPoint blocking.
2017-11-08 16:28:40 +01:00
Greg Wilkins 6fb7c9ec2e
Issue #1939 fair selector choice (#1937)
* Issue #1939 fair selector choice

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* Issue #1939 removed address based heuristic for choosing selector

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* Issue #1939 removed println

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* Issue #1939 use lambda syntax sugar

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2017-11-04 00:22:45 +11:00
Simone Bordet 6f8baff07d Fixes #1928 - Backport #1705 to jetty-9.3.x. 2017-10-30 12:56:34 +01:00
Simone Bordet 0142509975 Issue #1920 - Connect Timeouts with NonBlocking CreateEndPoint.
Reverted CreateEndPoint to be non-blocking, as
the real issue was determined to be #1924 instead.
2017-10-30 00:42:53 +01:00
Simone Bordet 333c22d670 Issue #1924 - ManagedSelector livelock.
* Actually using the MAX_ACTION_PERIOD value rather than a harcoded one.
* Waking up the selector outside the sync block.
2017-10-30 00:36:01 +01:00
Greg Wilkins ab849e8cc5 Issue #1920 - Connect Timeouts with NonBlocking CreateEndPoint.
Added a LiveLock (BusyBlocking) test.
Modified ManagedSelector to fair share between actions and selecting
2017-10-28 14:55:40 +11:00
Simone Bordet 9fd47fd383 Improved logging. 2017-10-26 10:01:49 +02:00
Simone Bordet bfaa2d536b Fixes #1920 - Connect Timeouts with NonBlocking CreateEndPoint.
Made CreateEndPoint a blocking task, because it calls into application
code via Connection.Listener, and for safety we assume it may be
blocking code, avoiding to stall the processing of NIO selected keys.
2017-10-26 00:21:51 +02:00
Greg Wilkins 2bd39c897d Issue #1912 refixed onOpen call for SSL leak 2017-10-26 09:08:21 +11:00
Simone Bordet ce39d50a55 Fixes #1920 - Connect Timeouts with NonBlocking CreateEndPoint.
Only for the client having a non-blocking CreateEndPoint was a problem,
because it was sending requests from onOpen().
For a busy client with always queued requests, CreateEndPoint.run()
did never return, causing the NIO selection to stall.
2017-10-25 09:21:22 +02:00
Greg Wilkins ce5993bc6f Issue #1920 Connect timeout
Improved the ManagedSelector Dump
Reverted CreateEndPoint to be a blocking task
2017-10-25 15:59:51 +11:00
Simone Bordet 0519372382 Dumping the SelectionKeys is a non-blocking action. 2017-10-23 16:57:12 +02:00
Greg Wilkins 71c78db60e Merge remote-tracking branch 'origin/jetty-9.3.x' into jetty-9.4.x 2017-10-20 09:48:01 +11:00
Greg Wilkins 06e00355a2 Fixed #1912 2017-10-20 09:41:47 +11:00
Simone Bordet bc7d53b43f Fixes #1696 - WriteFlusher debug of onFail does not log stacktraces.
Fixed logging of exceptions.
2017-10-06 17:08:30 +02:00
Simone Bordet 2b43e668a3 Cosmetics. 2017-10-02 17:18:10 +02:00
Simone Bordet 807233771d Removed unnecessary field _maxSize. 2017-10-02 17:17:50 +02:00
Simone Bordet 3b98a6c000 Issue #1851 - Improve insufficient thread warnings/errors.
ThreadBudget -> ThreadPoolBudget.
Added selectors to the leased threads.
2017-10-02 13:40:31 +02:00
Simone Bordet 17a1484143 Code cleanups.
Removed unnecessary imports and fixed typos.
2017-10-02 11:43:45 +02:00
Greg Wilkins 7d98cbb870 Issue #1851 Improve insufficient thread warnings/errors
Squashed commit of the following:

commit 1d9e8e4b4d53898cb6435f67529347bd2ba82cf0
Merge: 7280594 55b0f10
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Sep 28 07:20:37 2017 +1000

    Merge branch 'jetty-9.4.x' into jetty-9.4.x-1851-ThreadBudget

commit 7280594a0058538b603ad35625713a79830e9b93
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 27 22:48:58 2017 +1000

    fixed headers

commit f962f18e5b098ae40846ee3832736ee4650aed84
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 27 18:12:33 2017 +1000

    Issue #1851 added reset

commit a63894de284c8d8dc5ed031f1f6e0fccaf6c7715
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 27 18:08:53 2017 +1000

    Issue #1851 improved test

commit 8bcc460dc63273165305a7adcb88e991e30de4b7
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 27 18:03:47 2017 +1000

    Issue #1851 Improve insufficient thread warnings/errors

    Refactor approach to use Leases, to handle multiple executors

commit fe4be5f56594f342ab5c2e6c886397d9b4fe9c14
Merge: abc5eac a248d38
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 27 15:37:56 2017 +1000

    Merge branch 'jetty-9.4.x' into jetty-9.4.x-1851-ThreadBudget

commit abc5eac2b73d306a91b28ef4db778455095a5bdb
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 27 12:20:03 2017 +1000

    Issue #1851 Improve insufficient thread warnings/errors

    Created a ThreadBudget class that can be used to warn/error for
    registered and unregistered allocations of threads.

    The server on doStart does an unregistered check of all its components that
    implement the Allocation interface.

    The client will register itself as an Allocation if a shared Executor is used.
2017-09-28 07:35:05 +10:00
Greg Wilkins ab85e010b6 Fixed #1849 sizing selectors 2017-09-27 09:02:59 +10:00
Greg Wilkins 31a9b6f2e8 Issue #215 Conscrypt module for SSL and ALPN
Squash of the following commits:

commit 53e503b48d290e2ff83b214fd81572bf4cacd9ab
Merge: cc4ed73 d77ba82
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Sep 21 07:27:45 2017 +1000

    Merge remote-tracking branch 'origin/jetty-9.4.x' into jetty-9.4.x-215-conscrypt-alpn

commit cc4ed73ae45e69addbb31221a860dd0984d92ac5
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Sep 21 07:26:45 2017 +1000

    Issue #215 Conscrypt module debug

commit f640693f7ef61f8012d1454b2ed364740b330a6e
Author: Simone Bordet <simone.bordet@gmail.com>
Date:   Wed Sep 20 18:23:51 2017 +0200

    Issue #215 - Consider native ALPN/SSL provider.

    Fixed server-side ALPN negotiation for Conscrypt.

commit 669e992624a0f8f23103c70ba895b877dcec2404
Author: Simone Bordet <simone.bordet@gmail.com>
Date:   Wed Sep 20 16:56:20 2017 +0200

    Issue #215 - Consider native ALPN/SSL provider.

    Fixed client-side ALPN negotiation for Conscrypt.

commit aa873263d73c19461890bd1f9a417c796412b3d2
Author: Simone Bordet <simone.bordet@gmail.com>
Date:   Wed Sep 20 15:26:45 2017 +0200

    Issue #215 - Consider native ALPN/SSL provider.

    Code cleanups.

    Changed ALPNProcessor.init(boolean) to init().
    Removed unnecessary try/catches and simplified exception handling.

commit db9b169c35da956bcc42013f9bb8acddd7238d14
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 20 18:07:30 2017 +1000

    Issue #215 Conscrypt SSL pom cleanups

commit 096572e029352428275e86a964fa92dbeee19a65
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 20 15:57:20 2017 +1000

    Issue #215 Conscrypt SSL ALPN cleanups

commit b3c1bcb1fa9a7e15517a348270738e24c7b0a820
Merge: c836708 effec06
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 20 15:46:13 2017 +1000

    Merge branch 'jetty-9.4.x' into jetty-9.4.x-215-conscrypt-alpn

commit c836708a9bcd5fb61ed26302eb7d71b618cce329
Merge: de039d4 d9ecd5e
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 20 14:56:06 2017 +1000

    Merge remote-tracking branch 'origin/jetty-9.4.x' into jetty-9.4.x-215-conscrypt-alpn

commit de039d42f23f9caa239e5ddee0242b9a83a45441
Author: Greg Wilkins <gregw@webtide.com>
Date:   Tue Sep 19 17:19:49 2017 +1000

    Fix #1823 MimeTypes for ResourceHandler mp4

commit ff1e08434415cd6d909715547c2a54dbd0fc5dee
Author: Greg Wilkins <gregw@webtide.com>
Date:   Tue Sep 19 14:21:39 2017 +1000

    Issue #215

commit 3bb63147ebf4967698f51a65f009d80010038b20
Author: Greg Wilkins <gregw@webtide.com>
Date:   Tue Sep 19 14:08:05 2017 +1000

    Issue #215

    Use conscrypt 1.0.0.RC10 uber jar

commit 8b18099fde67f12d0e98d0b414568c9b76835459
Merge: 06f6530 eee4117
Author: Greg Wilkins <gregw@webtide.com>
Date:   Tue Sep 19 10:35:43 2017 +1000

    Merge branch 'jetty-9.4.x' into jetty-9.4.x-conscrypt-alpn

commit 06f65305d536250c5dfa2aaa84ffacdac113c8fc
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Sep 14 16:04:05 2017 +1000

    Issue #215 Conscrypt ALPN provider

    First attempt at client support

commit 32d77461935263da86fb363233af0aa5a159d1fc
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Sep 14 09:48:43 2017 +1000

    Issue #215 Conscrypt ALPN provider

commit bc051dca5e3ea7fed6ddb3a25ba5cecbd1c5b18b
Merge: 573c9f0 6c47126
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Sep 14 08:49:10 2017 +1000

    Merge branch 'jetty-9.4.x' into jetty-9.4.x-conscrypt-alpn

commit 573c9f060172b2863b0b0a94c1ec2fb9a8762fa2
Merge: 47e22fe 3399fd3
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 13 15:24:27 2017 +1000

    Merge branch 'jetty-9.4.x' into jetty-9.4.x-conscrypt-alpn

commit 47e22fe2e4f8e3cc71f3117ad7d789dc3ea56675
Merge: 63ffa2b 187f37d
Author: Greg Wilkins <gregw@webtide.com>
Date:   Wed Sep 13 11:04:24 2017 +1000

    Merge branch 'jetty-9.4.x' into jetty-9.4.x-conscrypt-alpn

commit 63ffa2bdc13fa85d02459855a3f8e0de4f4b4f1b
Merge: cf1443d a0cb424
Author: Greg Wilkins <gregw@webtide.com>
Date:   Tue Sep 12 09:04:45 2017 +1000

    Merge remote-tracking branch 'origin/jetty-9.4.x' into jetty-9.4.x-conscrypt-alpn

commit cf1443d3ab71ac1aec7f153c233e869a3d6f783f
Author: Greg Wilkins <gregw@webtide.com>
Date:   Tue Sep 12 09:03:52 2017 +1000

    Issue #215 Conscrypt ALPN provider

commit a37aec327274042e1007f4146a3c3ec06fb424d9
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Sep 7 21:19:28 2017 +1000

    Issue #215 Conscrypt ALPN provider

commit 6d7f39b2b0e53570afa61be5abfef2a352f80cf3
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Sep 7 18:22:19 2017 +1000

    Issue #215 Conscrypt ALPN provider

commit a7d0f46b57091550724242693559d786180896ff
Author: Greg Wilkins <gregw@webtide.com>
Date:   Thu Sep 7 18:16:35 2017 +1000

    Issue #215 Conscrypt ALPN provider
2017-09-21 07:34:25 +10:00
Simone Bordet 8d03e97205 Fixes #1816 - HttpClientTest.testClientCannotValidateServerCertificate() hangs with JDK 9.
Now upgrading the connection also in cased of filled=-1, so that the
new nested connection attempts to read/write and will see a failure
(although not the SslHandshakeException).
2017-09-13 15:26:44 +02:00
Simone Bordet 930f5e0b09 Rearranged inner classes at the end of the file. 2017-09-08 10:52:40 +02:00
Simone Bordet 5b31e17aa5 Fixes #1804 - Make EndPoint creation and destroy a non-blocking task.
Now both tasks extends NonBlockingAction.
2017-09-08 10:52:40 +02:00
Greg Wilkins dd20272c48 Issue #1732 Connection Limit (#1745)
* Issue #1732 Connection Limit

Added a listener to stop accepting when a limit is reached

Update LowResourceMonitor to not accept in low resources
2017-09-05 15:21:51 +10:00
Simone Bordet daeb84481b Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2017-09-04 15:56:38 +02:00
Simone Bordet 9c03e66670 Issue #1790 - SSL 100% CPU for HTTP/2.
DecryptedEndPoint.isInputShutdown() now also testing the raw EndPoint
for input shutdown, not only the SSLEngine.
2017-09-04 15:55:12 +02:00
Greg Wilkins 3c3d05f722 Issue #1721 async read failure on big POST
Modified isReady to not fillAndParseContent if known to be isReady()==false already.
Added mutex on produceContent
2017-08-15 10:08:08 +10:00
Greg Wilkins 5197ce4f54 Issue #1732 Stop accepting new connections 2017-08-12 10:26:17 +10:00