1466 Commits

Author SHA1 Message Date
Joakim Erdfelt
7cc461b8f3
Fixing javadoc build errors (#8173)
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2022-06-16 15:53:25 +02:00
Ludovic Orban
66de7ba618
Improve ssl buffers handling (#8165)
* Fixes #8161 improve SSLConnection buffers handling

Added memory heuristic to ArrayRetainableByteBufferPool

Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2022-06-15 15:10:50 +02:00
Simone Bordet
4037861668
Fixes #7514 - Adding InheritedListeners to already-started components… (#7522)
* Fixes #7514 - Adding InheritedListeners to already-started components can cause IllegalStateException

Removed the unnecessary check-and-throw statements from SelectorManager.
Use COW array for listeners that can be modified whilst selector is running.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Co-authored-by: Greg Wilkins <gregw@webtide.com>
2022-02-03 09:51:37 +01:00
Sebastian Lövdahl
a8a6020ab2
Fix log class name in ArrayByteBufferPool
Signed-off-by: Sebastian Lövdahl <slovdahl@hibox.fi>
(cherry picked from commit dcaf3f2d78e7ca2d8b38725d96fe0412f2a0c24d)
2022-02-02 11:59:06 +01:00
Joakim Erdfelt
cb127793e5
Happy New Year 2022 (#7459)
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2022-01-27 10:42:30 -06:00
Simone Bordet
3d6578deee Issue #6728 - QUIC and HTTP/3
Updates after merge of #7100.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Simone Bordet
c879358777 Issue #6728 - QUIC and HTTP/3
- QPACK exceptions now use long instead of int, to be consistent with other error codes.
- Fixed ManagedSelector to count down the stop latches in finally blocks, so that they are always counted down even in case of exceptions.
- Improved exception handling in case of closes.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-20 09:33:38 +01:00
Ludovic Orban
b8f39b5b2c get rid of HttpClientTransportOverQuic and IClientConnector
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban
fe5c65820d introduce IClientConnector interface
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban
fc25540331 align ServerDatagramEndPoint with SocketChannelEndPoint
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban
9d0b7f71ac add licenses + fix checkstyle + modularize
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban
e1cd6956f4 encode address into buffers
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban
340eb46b43 cleanups
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban
45e45e6cf2 kinda sorta working datagram connector
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-20 09:33:38 +01:00
Ludovic Orban
4068901c14 #7243 ByteBufferPool and RetainableByteBufferPool now reset the buffer's endianness on release
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-12-09 12:44:12 +01:00
Lachlan
9b501022d5
Merge pull request #7166 from eclipse/jetty-10.0.x-6974-ByteBufferPool
Issue #6974 - improvements & fixes to ByteBufferPool implementations (#7017)
2021-12-03 14:46:16 +11:00
Simone Bordet
cb25a83667
Issue #6728 - Prepare for QUIC and HTTP/3 (#7100)
* Issue #6728 - QUIC and HTTP/3

Modifications to Jetty to prepare for QUIC/HTTP3.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-12-01 09:39:51 +01:00
Lachlan Roberts
74785dd023 Issue #6974 - improve testMaxMemory for Array & Mapped ByteBufferPools
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-11-29 14:41:51 +11:00
Lachlan Roberts
aa09b8b7bd Issue #6974 - allow empty buffers to be pooled
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-11-29 14:06:20 +11:00
Lachlan Roberts
377d0d131e Issue #6974 - fix bug in ByteBufferPool implementations
If an allocation size of 0 was requested bucketFor would throw.

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-11-26 17:30:14 +11:00
Lachlan
c19921e60f Issue #6974 - improvements & fixes to ByteBufferPool implementations (#7017)
- WebSocket should user server ByteBufferPool if possible
- fix various bugs ByteBufferPool implementations
- add heuristic for maxHeapMemory and maxDirectMemory
- Add dump for ByteBufferPools
- add LogArrayByteBufferPool that does exponential scaling of bucket size.
- ByteBufferPools should default to use maxMemory heuristic
- Add module jetty-bytebufferpool-logarithmic

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2021-11-25 10:42:47 +11:00
Simone Bordet
0412bdc3d9 Fixes #6938 - module-info.java file do not use the canonical order for the elements
Changed order of entries in module-info.java to be canonical

(cherry picked from commit 02691171d500175ac47fedf00a712eeb62dff67c)
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-10-01 09:25:55 +02:00
Greg Wilkins
aa793eeafe
Jetty 10.0.x 6497 alias checkers alt (#6681)
* Issue #6497 - Replace the Alias checkers with new implementation.

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Co-authored-by: Lachlan Roberts <lachlan@webtide.com>
2021-09-21 18:35:51 +10:00
Simone Bordet
e2690cc420
Fixes #6603 - HTTP/2 max local stream count exceeded (#6639) (#6682)
* Fixes #6603 - HTTP/2 max local stream count exceeded (#6639)

Made MAX_CONCURRENT_STREAMS setting work on a per-connection basis.
Updated Pool javadocs.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Signed-off-by: Greg Wilkins <gregw@webtide.com>
Co-authored-by: Greg Wilkins <gregw@webtide.com>
(cherry picked from commit 525fcb31194c62c44c912504ded177e30ff78c52)
2021-09-01 10:27:40 +02:00
Lachlan Roberts
763820e111 ByteBufferCallbackAccumulator.writeTo should do buffer flipping
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-08-30 14:58:16 +10:00
Lachlan Roberts
b2657f1376 fix broken tests: use buffer.remaining() instead of BufferUtil.space()
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-08-30 12:45:32 +10:00
Lachlan Roberts
7569e4b07a Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-6566-WebSocketMessageSinks 2021-08-27 17:21:53 +10:00
Lachlan Roberts
1dce9df48d Issue #6566 - cleanups of ByteBufferCallbackAccumulator
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-08-27 11:49:18 +10:00
Lachlan Roberts
83f2265653 Issue #6642 - never shutdown output after generating a request.
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-08-26 14:18:28 +10:00
Joakim Erdfelt
54edcefd66 Issue #6661 - Make ServerConnector socket options setting optional 2021-08-24 16:45:06 -05:00
Lachlan Roberts
bd396f867b Fix some more unstable tests.
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-08-19 20:43:13 +10:00
Lachlan Roberts
026261f482 Issue #6566 - use counter in BufferCallbackAccumulator, fix InputStreamMessageSinkTest failures
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-08-18 17:10:12 +10:00
Lachlan Roberts
5236e47c42 Issue #6566 - utilise the demand interface in the websocket MessageSinks
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-08-18 11:04:14 +10:00
Lachlan Roberts
cc3a75937c Issue #6566 - Create BufferCallbackAccumulator to accumulate buffers with their callbacks
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-08-18 10:57:46 +10:00
Simone Bordet
dbc0ce7c13
Fixes #6372 - Review socket options configuration (#6610)
* Fixes #6372 - Review socket options configuration

Introduced in ClientConnector:

* tcpNoDelay
* reusePort
* receiveBufferSize
* sendBufferSize

Reworked configuration of socket options in ClientConnector.
JMX-ified ClientConnector.

Introduced reusePort in ServerConnector.
Updated server modules with the new reusePort property.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-08-13 17:39:52 +02:00
Ludovic Orban
c818581185 #6327 more latches, less sleeps
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-08-12 10:47:24 +02:00
Ludovic Orban
6881ee9a6a #6327 make SelectorManagerTest.testConnectTimeoutBeforeSuccessfulConnect always enabled, using latches and less wasteful timeouts
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-08-12 10:47:24 +02:00
Simone Bordet
49a08450c2
Fixes #6043 - Reimplement UnixSocket support based on Java 16. (#6522)
Fixes #6043 - Reimplement UnixSocket support based on Java 16.

* Introduced new module "jetty-server-unixdomain".
It uses reflection to access the Java 16 Unix-Domain classes to keep compatibility with the other modules and the build.
* Added Jetty module with only HTTP/1.1 support for now (requires review of the modules to reuse them with various connectors).
* Updated documentation to mention UnixDomainServerConnector.
* Updated client libraries to support Unix-Domain.
* Updated PROXY protocol implementation to support Unix-Domain.
* Replaced unix.socket.tmp with better named jetty.unixdomain.dir property.
Defaulted jetty.unixdomain.dir property to system property user.home under Windows.
Simplified code that runs Unix-Domain tests.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-08-05 10:04:37 +02:00
Greg Wilkins
d781ec3546
Improve #6322 extensible ArrayRetainableByteBufferPool (#6538)
Add a exponential bucket size impl to test ArrayRetainableByteBufferPool extensibility

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2021-07-26 10:43:50 +10:00
Ludovic Orban
c9a5d8df58 #6322 Use RetainableByteBuffer and write a new pool for it
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-07-24 11:14:21 +02:00
Simone Bordet
b8d6e3f010
Fixes #6410 - Use SocketAddress instead of InetSocketAddress. (#6414)
* Fixes #6410 - Use SocketAddress instead of InetSocketAddress.

Removed usages of InetSocketAddress in method signatures where possible.
Deprecated old methods, and added new methods with SocketAddress.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-06-17 10:18:08 +02:00
Greg Wilkins
a415606e01
Rename EWYK The AdaptiveExecutionStrategy (#6353)
Rename EWYK to AdaptiveExecutionStrategy, which better represents the nature of the strategy.

Updated the documentation 
Refactored substrategy selection for code clarity.
Added notes about chaining strategies and thread starvation

Signed-off-by: Greg Wilkins <gregw@webtide.com>
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2021-06-16 17:22:08 +10:00
Ludovic Orban
33c1b14ada #6379: requeue at the tail to reduce contention + use a simpler concurrent queue implementation
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2021-06-10 15:45:11 +02:00
Simone Bordet
21aba4a724 Fixes #6323 - HttpClient requests with redirects gets stuck/never calls onComplete()
* Reworked the total timeout handling.
* Now a CyclicTimeouts handles the exchanges in each HttpDestination,
and a CyclicTimeouts handles the exchanges in each HttpConnection
(rather than in HttpChannel).
* Now adjusting the total timeout for copied requests generated by
redirects and authentication.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
(cherry picked from commit 2e7d17400f44097b95f2110ba5b595ec90fbe03f)
2021-06-04 12:12:40 +02:00
Simone Bordet
c151b04535 Fixes #5931 - SslConnection should implement getBytesIn()/getBytesOut(). (#6335)
Updated ConnectionStatistics to report both the stats of all connections,
and the stats grouped by connection class.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
(cherry picked from commit f902d12fe8b7a69d7f697db0ce8ff4495c9e2141)
2021-06-03 15:16:12 +02:00
Simone Bordet
67e2b4af2f
Fixes #5306 - Default jetty.*.acceptors should be 1. (#6236)
* Fixes #5306 - Default jetty.*.acceptors should be 1.

Changed the acceptor default to 1, with -1 calculating a value based on the number of cores.
Updated documentation.
Fixed a glitch in ManagedSelector.getMaxSelectedKeys() to return long, not double.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-05-20 09:34:07 +02:00
Simone Bordet
27db8ed65b
Fixes #6251 - Use CyclicTimeout for HTTP2Streams. (#6267)
* Fixes #6251 - Use CyclicTimeout for HTTP2Streams.

Introduced CyclicTimeouts to manage many entities that may timeout.
Rewritten HttpDestination request timeouts using CyclicTimeouts.
HTTP2Stream does not inherit from IdleTimeout anymore; now a
CyclicTimeouts in HTTP2Session manages the stream timeouts.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2021-05-16 20:37:33 +02:00
Simone Bordet
de2d764290 Fixes #6254 - Total timeout not enforced for queued requests.
Fixed logic in HttpDestination.RequestTimeouts, where now a timeout
is scheduled only when the expiration time is less than the existing one.
Various code cleanups.
Renamed HttpDestination.TimeoutTask to RequestTimeouts for clarity.
Improved javadocs, code comments and logging.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
(cherry picked from commit 5f23689aa7f44c0660ba2ad92c7c6a15d7c4af15)
(cherry picked from commit da50e06b640d448d42e642c842cf9bc647797a49)
(cherry picked from commit 88ac10439a8b5ec1c34aaab4ccbf0f590aee33f8)
2021-05-12 10:19:11 +02:00
Lachlan
4c98990cd9
Create FileBufferedResponseHandler to buffer responses into a file. (#6010)
FileBufferedResponseHandler adds an HttpOutput.Interceptor to buffer all responses into a file until the output is closed. This allows the commit to be delayed until the response is complete and thus headers and response status can be changed while writing the body.

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2021-04-19 11:02:44 +10:00
Greg Wilkins
20fae6485c
Jetty 10.0.x #5684 disabled tests (#6081)
* Fixes for #5684
Simplified CyclicTimeoutTest#testBusy
InclusiveByteRange clears range list on errors
InclusiveByteRange is forgiving of tab separators and leading 0s

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2021-03-30 22:24:56 +02:00