Commit Graph

2906 Commits

Author SHA1 Message Date
Joakim Erdfelt a6b88c6ef2
Allow spec port stripping of 80/443 on websocket too.
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2024-02-08 09:39:52 -06:00
Gary Gregory 0efee0bf95 Use String#isEmpty() 2023-11-28 17:46:42 -05:00
Lachlan caddfb5a41
Merge pull request #10675 from OlexYarm/jetty-10.0.x
Fixed issue 10305 Embedded Jetty server fails to start when requests path contains not existed directory
2023-10-18 15:34:50 +11:00
Joakim Erdfelt 909e99ec37
Add configuration to allow deferring the initial Deployment until after Server is started (#10667)
* Delayed Deployment configuration until after Server is started.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-10-17 06:25:01 -05:00
OlexYarm 4b6627ae0c Update RolloverFileOutputStreamTest.java
more simplification
2023-10-16 18:48:09 -04:00
OlexYarm 40a31b8394 Update RolloverFileOutputStreamTest.java
Simplified test class as suggested
2023-10-16 18:26:59 -04:00
OlexYarm c338c1a153 Fixed issue 10305 Embedded Jetty server fails to start when requests log path in RequestLogWriter contains not existed directory
Changed error message when requests log path in RequestLogWriter contains not existed directory.
2023-10-06 12:07:44 -04:00
Ludovic Orban b5124fd7c9 handle review comments
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-09-26 18:16:23 +02:00
Ludovic Orban 0928204db7 allow configuring a custom ScheduledExecutorService into ScheduledExecutorScheduler
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-09-26 18:16:23 +02:00
Joakim Erdfelt 900f50f513
Issue #10271 - new jetty-home `pid` module (#10272)
* Issue #10271 - new jetty-home module `pid`

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-08-25 09:12:49 -05:00
Greg Wilkins 3aaf39dff5
Fix #10397 CharsetStringBuilder end vs length (#10399)
Fix #10397 CharsetStringBuilder needs to convert length parameter to an end index.

Signed-off-by: gregw <gregw@webtide.com>
2023-08-25 14:50:53 +10:00
Lachlan c55363d43f
cleanups of DateCache (#10176)
* improve the formatting for precise ms in DateCache
* return original format string with DateCache.getFormatString
* calculate index in tick constructor because format strings can be different size
* use two ticks so that switching between seconds is less likely going to have cache miss
* use boolean instead of index to denote if sub second is needed
* remove formatWithoutCache and replace with doFormat as it doesn't work with sub second time
* allow the option of not having sub second precision
* use two separate formatters for the prefix/suffix around the SSS format code
* use a simple class to store both ticks in DateCache
* rename DateCache.Tick.getString(long) to format()

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-08-24 18:43:46 +02:00
Simone Bordet 9e16d81cf8 Improvements on suggested PR.
* Made HttpChannel Dispatchable fields for REQUEST and ASYNC dispatches.
* Made AdaptiveExecutionStrategy implement Runnable to remove lambda/anonymous field.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-07-17 23:21:55 +02:00
Steven Schlansker 5db0c7b552 HttpChannel, AdaptiveExecutionStrategy: improve profiler-friendliness
In an application with multiple Jetty instances in one JVM (e.g. integration test)
when examining stack frames using the debugger or profiler, most samples
that involve user code will have these two frames in their stack.

Unfortunately, with a lambda, the different Jetty instances actually have different class names
for different lambdas, which causes stack analysis to falsely think the frames are different.

It's a little uglier, but by replacing these two specific lambdas with anonymous classes with a stable name,
the profiler is able to see that the frames are in fact the same and collapse them, improving observability.
2023-07-17 23:21:55 +02:00
Joakim Erdfelt a9c596e3d7
Updating various old/moved URL references found across project (`jetty-10.0.x`) (#10098)
* Now that the migration of `https://eclipse.org/jetty/` to `https://eclipse.dev/jetty/` has occurred, it is time to review the URI use in our project

+ Updated URLs in poms
+ Added more URIs to XmlConfiguration
+ Updated URLs in module files
+ Updated URLs in documentation
+ Updated URLs in HTML
+ Correcting bad double-scheme URLs (eg: `http://https://www.eclipse...`)
+ Updating text in *.mod files
+ Removing `/current/` from path `/jetty/documentation/current/`
+ Fixing mailing list URL

---------

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-07-14 12:38:45 -05:00
Greg Wilkins 9041527f94
Fix #9476 IteratingCallback multiple onCompleteFailure calls (#9940)
Change state to FAILED from PENDING state
2023-06-21 11:18:43 +02:00
Alexey Markevich 33976b30eb jetty-util: don't override Enumeration methods in QuotedStringTokenizer
There is no code difference in base implementation

Signed-off-by: Alexey Markevich <a_markevich@itos.eu.org>
2023-06-01 10:26:35 +02:00
Lachlan Roberts 2d935efe4d Issue #9554 - changes from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-05-04 09:26:31 +10:00
Lachlan Roberts c3b6b47915 Use ISO-8859-1 for encoding/decoding in huffman/hpack/qpack
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2023-04-17 17:11:14 +10:00
Simone Bordet 2c61011de1
Fixes #6184 - JEP-411 will deprecate/remove the SecurityManager from … (#9616)
* Fixes #6184 - JEP-411 will deprecate/remove the SecurityManager from the JVM.

Removed usages of `SecurityManager` and `AccessControlller.doPrivileged()`.
In places where they are still necessary, now using reflection via newly introduced `SecurityUtils` class.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-04-06 10:59:02 +02:00
Joakim Erdfelt 3e42cbfd7b
Fixes #9556 - Better prompt for input on Password (#9557)
* Fixes #9556 - Better prompt for input on Password
* Allow blank username (results in no CRYPT output)
* Error on blank password during input
* Fixing PasswordTest.testCommandLineUsage
* Changes from review

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-04-05 16:02:01 -05:00
Ludovic Orban 9ff24ea443 #9622 replace wait loops with awaitility and ensure the tested values are stable for a certain duration
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2023-04-05 18:52:05 +02:00
Simone Bordet 278ec1be69
Fixes #9237 - Decouple QTP idleTimeout from pool shrink rate. (#9498)
Introduced `QueuedThreadPool.maxEvictCount` to be the number of idle threads that are evicted in one idle timeout.

When set to 1 (the default), the old behavior is reproduced: expiring 1 thread every idle timeout.
When set to larger values, allows to keep around the threads for the idle timeout (in case of further load spikes), but allows to quickly recover OS memory when they are truly idle.

For example, with 2000 threads, 30 seconds idle timeout and idleTimeoutMaxShrinkCount=1, it will take 995 minutes (about 16.5 hrs) to shrink the pool back to 10 threads.
By setting idleTimeoutMaxShrinkCount=100, the thread pool can be shrunk to 10 threads in about 10 minutes.

Note also that the new algorithm is more aggressive at shrinking the thread pool.
Previously, a small load might have been sufficient to never evict any thread, because all threads could take turns at executing jobs so that threads were mostly idle but would never really idle time out.
The new algorithm is more aggressive even in presence of a small load, so that if `minThreads` are sufficient to cope with the small load, then the other threads are evicted.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Signed-off-by: gregw <gregw@webtide.com>
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
Co-authored-by: gregw <gregw@webtide.com>
Co-authored-by: Ludovic Orban <lorban@bitronix.be>
2023-03-31 15:36:34 +02:00
gregw 7a7d69a69f Happy no year
Remove modification date from copyright notice and instead just have the
project inception year.

Signed-off-by: gregw <gregw@webtide.com>
2023-02-15 15:22:32 +11:00
Dominik Zöchbauer 40f7fc8510
Issue #7650 - Fix race condition when stopping QueuedThreadPool (#9325)
* Issue #7650 - Fix race condition when stopping QueuedThreadPool

Signed-off-by: Dominik Zöchbauer <dominik@zoechbauer.info>
Co-authored-by: Greg Wilkins <gregw@webtide.com>
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2023-02-08 10:27:14 +01:00
Joakim Erdfelt 016de2faeb
Jetty 10 - Configurable Unsafe Host Header (#9283)
* Adding HttpCompliance.DUPLICATE_HOST_HEADERS
  + Optional compliance that allowance duplicate host headers.
* Adding HttpCompliance.UNSAFE_HOST_HEADER
  + Optional compliance that allows unsafe host headers.
* Adding warning logging for bad Host / authority situations

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2023-02-03 08:30:07 -06:00
Joakim Erdfelt b01bcdc4bd
Improve `IncludeExcludeSet` testing (#9071)
* Improve IncludeExcludeSet testing

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2022-12-20 11:43:07 -06:00
Greg Wilkins d24a521930
Serialize onCompleteFailure for #9059 (#9062)
Serialize onCompleteFailure for #9059

* Fixed case where process() throws an exception.
   Before, exiting the processing loop would always skip to invoke onCompleteFailure(), causing the callback to not be completed.
   Now we fall through and possibly invoke onCompleteFailure() if it was not already invoked.

* Updated javadocs.

* Code cleanups.

Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2022-12-17 09:43:07 +11:00
Joakim Erdfelt 7e1de8b1e2
Issue #8973 - Rework KeyStoreScanner handling for symlink related changes (#9014)
* Issue #8973 - Rework KeyStoreScanner handling for symlink related changes

+ Removed changes from #8786 and #8787
+ More test cases
+ revert jetty.sslContext.reload.followLinks boolean
+ Scanner should follow its own linkOptions setting
+ remove bad documentation in module-ssl-reload.adoc

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
Co-authored-by: Lachlan Roberts <lachlan@webtide.com>
2022-12-07 09:24:19 -06:00
Simone Bordet 83154b4ffe
Fixes #8863 - Provide a possibility to name virtual threads (#8903)
* Fixes #8863 - Provide a possibility to name virtual threads

Reworked the VirtualThreads APIs to be based on `Executor` rather than just `boolean`.
Introduced Jetty module `threadpool-virtual-preview`.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-11-21 15:39:54 +01:00
Simone Bordet 051588d45b
Fixed javadoc typo.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-11-10 16:21:24 +01:00
Lachlan 690220fc40
Merge pull request #8787 from eclipse/jetty-10.0.x-8786-KeyStoreScanner-Symlink
Issue #8786 - add configuration for KeyStoreScanner to not resolve aliases
2022-11-10 17:17:59 +11:00
Joakim Erdfelt 793bee9e14
Issue #8716 - Handle bad host/authority headers better (#8717)
* Issue #8716 - Handle bad host/authority headers better
* Remove extra `Host` header in testcase that doesn't deal with bad Host headers
* Create URIUtil.isRegName
* Correcting HostPortTest.testValidAuthority
* Correcting RequestTest.testInvalidHostHeader
* Remove clonable, set to final

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2022-11-08 18:08:20 -06:00
Lachlan Roberts 0a14cca307 changes from review - rename resolveAlias to followLinks
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-11-03 20:37:55 +11:00
Lachlan Roberts 8607e3ef15 changes to ssl-reload module & documentation from review
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-11-03 18:54:53 +11:00
Lachlan Roberts 4d15593d63 Issue #8786 - add configuration for KeyStoreScanner to not resolve aliases
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-10-31 14:39:32 +11:00
Simone Bordet 77ad0189ba
Fixes #8532 - Review System.nanoTime() usages. (#8535)
* Fixes #8532 - Review System.nanoTime() usages.

Introduced o.e.j.util.NanoTime class to deal with nanoTimes.

Now NanoTime.now() should be used instead of System.nanoTime(),
and various <unit>[elapsed|since|until]() methods to calculate nanoTimes.

Furthermore, comparing 2 nanoTimes should be done via isBefore(),
rather than using the < operator, which is wrong as specified in
the System.nanoTime() javadocs.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-09-06 09:30:02 +02:00
Ludovic Orban de13ceff36 Fixes #8493: RemoveIdleDestinations's race condition and improve logging.
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2022-09-01 14:45:41 +02:00
Simone Bordet 6f0623f48d
Fixes #8007 - Support Loom. (#8465)
Now using Executors.newVirtualThreadPerTaskExecutor() to execute
tasks, so the executor is tracked by the runtime for thread dumps, etc.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-08-15 17:17:35 +02:00
Simone Bordet be3d16bdbb
Fixes #8007 - Support Loom. (#8360)
Implemented support for virtual threads for HTTP/1.1, HTTP/2 and HTTP/3.

The virtual thread support is in AdaptiveExecutionStrategy.
When virtual threads are supported and enabled, reserved threads are disabled and
blocking tasks are run in a virtual thread instead that being executed by the Executor.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2022-08-10 14:31:04 +02:00
Ludovic Orban 110896b4d1 #8414: fix drainTo when head == tail but the queue isn't empty
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
2022-08-08 10:28:31 +02:00
Lachlan 998bc8c7e8
Merge pull request #8315 from eclipse/jetty-10.0.x-8296-AliasChecking
Issue #8296 and #8259 -  AllowedResourceAliasChecker improvements
2022-08-08 13:23:02 +10:00
Lachlan Roberts 7d7dd41dee add javadoc for Resource.resolveAlias
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-07-28 18:00:56 +10:00
Lachlan Roberts 99cb930d78 changes from review PR #8315
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-07-27 10:21:35 +10:00
Joakim Erdfelt cbed42491a
Excluding Stress/Slow tests from normal CI builds. (#8314)
Nightly CI builds still run them.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2022-07-21 02:40:26 -05:00
Greg Wilkins 2b817f06c6
Combined ByteBufferPool (#8171)
All `ByteBufferPool` can now be accessed as `RetainableByteBufferPools`.

Users now need to configure only a single buffer pool and there is just the additional retained parameter that needs consideration.
Default buffer pool has been changed to logarithmic, but we may wish to review that before next release.
Default factor size has been increased to 4096.
2022-07-04 10:38:30 +10:00
Greg Wilkins cb918212f2
Fixed #8206 interrupted QTP.stop (#8220)
Made QTP stop resilient to spurious and self interrupts

Signed-off-by: Greg Wilkins <gregw@webtide.com>
2022-06-30 16:34:21 +10:00
Lachlan 0699bc5326
Use static exceptions for closing websocket flushers and in ContentProducer (#8155)
* Use StaticException class in jetty-util for websocket flushers.
* Use StaticException class for ContentProducer recycle and consumeAll

Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
Co-authored-by: Ludovic Orban <lorban@bitronix.be>
2022-06-13 14:11:31 +02:00
Lachlan Roberts 5a24f90064 Improve cleanup of deflater/inflater pools for PerMessageDeflateExtension
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-06-07 18:52:48 +10:00
Lachlan Roberts 1c24238352 mark deprecated ReadLineInputStream for removal
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
2022-05-25 16:56:34 +10:00