Re: JDK 19 - Virtual Threads Testing!

2022-05-20 Thread Rémy Maucherat
On Fri, May 20, 2022 at 9:35 AM Martin Grigorov  wrote:
>
> On Tue, May 17, 2022 at 4:23 PM Rémy Maucherat  wrote:
>
> > On Tue, May 17, 2022 at 12:27 PM Mark Thomas  wrote:
> > >
> > > On 16/05/2022 14:14, Martin Grigorov wrote:
> > > > Hello Tomcat devs,
> > > >
> > > > Some tests fail with JDK 19-ea+22-1598:
> > >
> > > 
> > >
> > > >[concat] Testsuites with failed tests:
> > > > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
> > > > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
> > >
> > > 
> > >
> > > > Here are the error types:
> > > >
> > > >
> > > > 1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
> > > > Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463
> > sec
> > > >
> > > > Testcase: testClassListsAreComplete took 0.444 sec
> > > >  FAILED
> > > > java.lang.Thread.Builder.OfPlatform
> > > > junit.framework.AssertionFailedError:
> > java.lang.Thread.Builder.OfPlatform
> > > >  at
> > > >
> > jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
> > > >  at
> > > >
> > java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> > > >  at
> > > >
> > java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> > > >  at
> > > >
> > java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> > >
> > > I've fixed this one. Looking at the others.
> >
> > Ok, so since we're now adding support for Java 19 and the current
> > trunk has the Panama preview API, I'll add a new "openssl-foreign"
> > module that targets it.
> >
>
> According to
> https://github.com/openjdk/jdk/commit/2c5d136260fa717afa374db8b923b7c886d069b7
> the FF & Memory API is added in b23.
> Above we were using b22.
>
> https://jdk.java.net/19/ has been just updated to b23.
>
> Do you want me to update JDK 19 at Buildbot (& Jenkins) to b23 ?

That's good news if you want to test the OpenSSL support with a more
final version. I don't really know what kind of API changes can be
expected following the preview, so we'll see how that goes. The API
itself is a lot cleaner than the one from Java 17.

One feature remaining that could be interesting depending on how it's
done is: https://bugs.openjdk.java.net/browse/JDK-8254693
Allowing to pass heap byte buffers (as long as this capability remains
flexible enough, if there's a surprise like "you can never deallocate
it" then it's not going to be useful ...) would be very significant
for Tomcat allowing to get rid of ugly memory copies and direct BB
allocations.

The full foreign task list is:
https://bugs.openjdk.java.net/Dashboard.jspa?selectPageId=18412

Rémy

>
>
> >
> > Rémy
> >
> > > Mark
> > >
> > > -
> > > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> > > For additional commands, e-mail: dev-h...@tomcat.apache.org
> > >
> >
> > -
> > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> > For additional commands, e-mail: dev-h...@tomcat.apache.org
> >
> >

-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



Re: JDK 19 - Virtual Threads Testing!

2022-05-20 Thread Martin Grigorov
On Tue, May 17, 2022 at 4:23 PM Rémy Maucherat  wrote:

> On Tue, May 17, 2022 at 12:27 PM Mark Thomas  wrote:
> >
> > On 16/05/2022 14:14, Martin Grigorov wrote:
> > > Hello Tomcat devs,
> > >
> > > Some tests fail with JDK 19-ea+22-1598:
> >
> > 
> >
> > >[concat] Testsuites with failed tests:
> > > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
> > > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
> >
> > 
> >
> > > Here are the error types:
> > >
> > >
> > > 1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
> > > Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463
> sec
> > >
> > > Testcase: testClassListsAreComplete took 0.444 sec
> > >  FAILED
> > > java.lang.Thread.Builder.OfPlatform
> > > junit.framework.AssertionFailedError:
> java.lang.Thread.Builder.OfPlatform
> > >  at
> > >
> jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
> > >  at
> > >
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> > >  at
> > >
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> > >  at
> > >
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> >
> > I've fixed this one. Looking at the others.
>
> Ok, so since we're now adding support for Java 19 and the current
> trunk has the Panama preview API, I'll add a new "openssl-foreign"
> module that targets it.
>

According to
https://github.com/openjdk/jdk/commit/2c5d136260fa717afa374db8b923b7c886d069b7
the FF & Memory API is added in b23.
Above we were using b22.

https://jdk.java.net/19/ has been just updated to b23.

Do you want me to update JDK 19 at Buildbot (& Jenkins) to b23 ?



>
> Rémy
>
> > Mark
> >
> > -
> > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> > For additional commands, e-mail: dev-h...@tomcat.apache.org
> >
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: dev-h...@tomcat.apache.org
>
>


Re: JDK 19 - Virtual Threads Testing!

2022-05-19 Thread Martin Grigorov
Hi David,

The issues in Apache Tomcat have been fixed and now everything is OK with
JDK 19-ea+22-1598!

Regards,
Martin

On Mon, May 16, 2022 at 4:14 PM Martin Grigorov 
wrote:

> Hello Tomcat devs,
>
> Some tests fail with JDK 19-ea+22-1598:
>
>   [concat] Testsuites with failed tests:
>[concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
>[concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO2.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1.NIO.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1.NIO2.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1023.NIO.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1023.NIO2.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1024.NIO.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1024.NIO2.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1025.NIO.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1025.NIO2.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite511.NIO.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite511.NIO2.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite512.NIO.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite512.NIO2.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite513.NIO.txt
>[concat]
> TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite513.NIO2.txt
>[concat]
> TEST-org.apache.catalina.loader.TestWebappClassLoaderExecutorMemoryLeak.NIO.txt
>[concat]
> TEST-org.apache.catalina.loader.TestWebappClassLoaderExecutorMemoryLeak.NIO2.txt
>
>
> Here are the error types:
>
>
> 1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
> Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463 sec
>
> Testcase: testClassListsAreComplete took 0.444 sec
> FAILED
> java.lang.Thread.Builder.OfPlatform
> junit.framework.AssertionFailedError: java.lang.Thread.Builder.OfPlatform
> at
> jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
> at
> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> at
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> at
> java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
>
>
> 2. TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO.txt
>
> 5-EndOfStream
>  expected:<-Header-[content-[length]-[0]]> but
> was:<-Header-[content-[type]-[text/plain;charset=UTF-8]]>
> at
> jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHeadHttp2(HttpServletDoHeadBaseTest.java:160)
> at
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
>
> Testcase: testDoHead[467: true 8,192 true 1,023 FULL 0 true] took 2.129 sec
> FAILED
> expected:<4> but was:<5>
> junit.framework.AssertionFailedError: expected:<4> but was:<5>
> at
> jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHead(HttpServletDoHeadBaseTest.java:94)
> at
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
>
> Testcase: testDoHeadHttp2[467: true 8,192 true 1,023 FULL 0 true] took
> 1.07 sec
> FAILED
> 3-HeadersStart
> 3-Header-[:status]-[200]
> 3-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
> 3-HeadersEnd
> 5-HeadersStart
> 5-Header-[:status]-[200]
> 5-Header-[content-type]-[text/plain;charset=UTF-8]
> 5-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
> 5-HeadersEnd
> 5-EndOfStream
>  expected:<-Header-[[date]-[Wed, 11 Nov 2015 19:18:42 GMT]]> but
> was:<-Header-[[content-type]-[text/plain;charset=UTF-8]]>
> junit.framework.AssertionFailedError: 3-HeadersStart
> 3-Header-[:status]-[200]
> 3-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
> 3-HeadersEnd
> 5-HeadersStart
> 5-Header-[:status]-[200]
> 5-Header-[content-type]-[text/plain;charset=UTF-8]
> 5-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
> 5-HeadersEnd
> 5-EndOfStream
>  expected:<-Header-[[date]-[Wed, 11 Nov 2015 19:18:42 GMT]]> but
> was:<-Header-[[content-type]-[text/plain;charset=UTF-8]]>
> at
> jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHeadHttp2(HttpServletDoHeadBaseTest.java:160)
> at
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
>
>
>
> 3. Testcase: testTimerThreadLeak took 2.609 sec
> FAILED
> null
> junit.framework.AssertionFailedError
> at
> 

Re: JDK 19 - Virtual Threads Testing!

2022-05-19 Thread Martin Grigorov
Hi Mark,

I confirm that all tests pass now!
Thank you!

Martin

On Wed, May 18, 2022 at 1:40 PM Mark Thomas  wrote:

> On 18/05/2022 10:25, Mark Thomas wrote:
> > Hi all,
> >
> > So of the three issues Martin identified, I've fixed 1 & 3 which were
> > the simple ones.
> >
> > For 1, the import handler needed updating to add the new classes added
> > to java.lang in Java 19.
> >
> > For 3, the memory leak protection code that stops executor threads
> > needed to be updated for some changes to Thread internals.
> >
> > The tricky one is 2.
> >
> > Prior to Java 19, the character -> byte encoders used an 8k buffer for
> > character data. This aligned with Tomcat's internals. This meant that
> > the new HEAD handling in the Servlet API had the same buffering
> > behaviour as Tomact's internals so GET and HEAD behaved the same way.
> >
> > In Java 19, the character -> byte encoders start with a 512 byte buffer
> > that may grow up to 8192 bytes. This means the buffering for HEAD
> > handling is different to the buffering for GET handling which in turn
> > means GET and HEAD see different headers (even accounting for allowed
> > differences).
> >
> > The issue is when responses are committed (and headers are fixed). The
> > HEAD tests examine the behaviour at the buffer boundaries including
> > reset behaviour. GET and HEAD effectively having different buffer sizes
> > triggers different behaviour for some of these resets which is why some
> > fail.
> >
> > I'm currently thinking about ways to tackle this but I don't yet have a
> > solution I'm completely happy with. Suggestions welcome.
>
> I found a solution. Since the issue was only with the legacy handling
> mode for HEAD requests, adjusting the response buffer size to compensate
> for the smaller char -> byte buffer addresses the issue.
>
> Mark
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: dev-h...@tomcat.apache.org
>
>


Re: JDK 19 - Virtual Threads Testing!

2022-05-18 Thread Mark Thomas

On 18/05/2022 10:25, Mark Thomas wrote:

Hi all,

So of the three issues Martin identified, I've fixed 1 & 3 which were 
the simple ones.


For 1, the import handler needed updating to add the new classes added 
to java.lang in Java 19.


For 3, the memory leak protection code that stops executor threads 
needed to be updated for some changes to Thread internals.


The tricky one is 2.

Prior to Java 19, the character -> byte encoders used an 8k buffer for 
character data. This aligned with Tomcat's internals. This meant that 
the new HEAD handling in the Servlet API had the same buffering 
behaviour as Tomact's internals so GET and HEAD behaved the same way.


In Java 19, the character -> byte encoders start with a 512 byte buffer 
that may grow up to 8192 bytes. This means the buffering for HEAD 
handling is different to the buffering for GET handling which in turn 
means GET and HEAD see different headers (even accounting for allowed 
differences).


The issue is when responses are committed (and headers are fixed). The 
HEAD tests examine the behaviour at the buffer boundaries including 
reset behaviour. GET and HEAD effectively having different buffer sizes 
triggers different behaviour for some of these resets which is why some 
fail.


I'm currently thinking about ways to tackle this but I don't yet have a 
solution I'm completely happy with. Suggestions welcome.


I found a solution. Since the issue was only with the legacy handling 
mode for HEAD requests, adjusting the response buffer size to compensate 
for the smaller char -> byte buffer addresses the issue.


Mark

-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



Re: JDK 19 - Virtual Threads Testing!

2022-05-18 Thread Mark Thomas

Hi all,

So of the three issues Martin identified, I've fixed 1 & 3 which were 
the simple ones.


For 1, the import handler needed updating to add the new classes added 
to java.lang in Java 19.


For 3, the memory leak protection code that stops executor threads 
needed to be updated for some changes to Thread internals.


The tricky one is 2.

Prior to Java 19, the character -> byte encoders used an 8k buffer for 
character data. This aligned with Tomcat's internals. This meant that 
the new HEAD handling in the Servlet API had the same buffering 
behaviour as Tomact's internals so GET and HEAD behaved the same way.


In Java 19, the character -> byte encoders start with a 512 byte buffer 
that may grow up to 8192 bytes. This means the buffering for HEAD 
handling is different to the buffering for GET handling which in turn 
means GET and HEAD see different headers (even accounting for allowed 
differences).


The issue is when responses are committed (and headers are fixed). The 
HEAD tests examine the behaviour at the buffer boundaries including 
reset behaviour. GET and HEAD effectively having different buffer sizes 
triggers different behaviour for some of these resets which is why some 
fail.


I'm currently thinking about ways to tackle this but I don't yet have a 
solution I'm completely happy with. Suggestions welcome.


Mark


On 17/05/2022 11:27, Mark Thomas wrote:

On 16/05/2022 14:14, Martin Grigorov wrote:

Hello Tomcat devs,

Some tests fail with JDK 19-ea+22-1598:





   [concat] Testsuites with failed tests:
    [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
    [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt





Here are the error types:


1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463 sec

Testcase: testClassListsAreComplete took 0.444 sec
 FAILED
java.lang.Thread.Builder.OfPlatform
junit.framework.AssertionFailedError: java.lang.Thread.Builder.OfPlatform
 at
jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77) 


 at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) 


 at
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) 


 at
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) 



I've fixed this one. Looking at the others.

Mark

-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



Re: JDK 19 - Virtual Threads Testing!

2022-05-17 Thread Rémy Maucherat
On Tue, May 17, 2022 at 12:27 PM Mark Thomas  wrote:
>
> On 16/05/2022 14:14, Martin Grigorov wrote:
> > Hello Tomcat devs,
> >
> > Some tests fail with JDK 19-ea+22-1598:
>
> 
>
> >[concat] Testsuites with failed tests:
> > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
> > [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
>
> 
>
> > Here are the error types:
> >
> >
> > 1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
> > Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463 sec
> >
> > Testcase: testClassListsAreComplete took 0.444 sec
> >  FAILED
> > java.lang.Thread.Builder.OfPlatform
> > junit.framework.AssertionFailedError: java.lang.Thread.Builder.OfPlatform
> >  at
> > jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
> >  at
> > java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> >  at
> > java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
> >  at
> > java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
>
> I've fixed this one. Looking at the others.

Ok, so since we're now adding support for Java 19 and the current
trunk has the Panama preview API, I'll add a new "openssl-foreign"
module that targets it.

Rémy

> Mark
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: dev-h...@tomcat.apache.org
>

-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



Re: JDK 19 - Virtual Threads Testing!

2022-05-17 Thread Mark Thomas

On 16/05/2022 14:14, Martin Grigorov wrote:

Hello Tomcat devs,

Some tests fail with JDK 19-ea+22-1598:





   [concat] Testsuites with failed tests:
[concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
[concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt





Here are the error types:


1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463 sec

Testcase: testClassListsAreComplete took 0.444 sec
 FAILED
java.lang.Thread.Builder.OfPlatform
junit.framework.AssertionFailedError: java.lang.Thread.Builder.OfPlatform
 at
jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
 at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
 at
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
 at
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)


I've fixed this one. Looking at the others.

Mark

-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



Re: JDK 19 - Virtual Threads Testing!

2022-05-16 Thread Martin Grigorov
Hello Tomcat devs,

Some tests fail with JDK 19-ea+22-1598:

  [concat] Testsuites with failed tests:
   [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO.txt
   [concat] TEST-jakarta.el.TestImportHandlerStandardPackages.NIO2.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO2.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1.NIO.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1.NIO2.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1023.NIO.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1023.NIO2.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1024.NIO.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1024.NIO2.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1025.NIO.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite1025.NIO2.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite511.NIO.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite511.NIO2.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite512.NIO.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite512.NIO2.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite513.NIO.txt
   [concat]
TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite513.NIO2.txt
   [concat]
TEST-org.apache.catalina.loader.TestWebappClassLoaderExecutorMemoryLeak.NIO.txt
   [concat]
TEST-org.apache.catalina.loader.TestWebappClassLoaderExecutorMemoryLeak.NIO2.txt


Here are the error types:


1. Testsuite: jakarta.el.TestImportHandlerStandardPackages
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.463 sec

Testcase: testClassListsAreComplete took 0.444 sec
FAILED
java.lang.Thread.Builder.OfPlatform
junit.framework.AssertionFailedError: java.lang.Thread.Builder.OfPlatform
at
jakarta.el.TestImportHandlerStandardPackages.lambda$checkPackageClassList$12(TestImportHandlerStandardPackages.java:77)
at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)


2. TEST-jakarta.servlet.http.TestHttpServletDoHeadValidWrite0.NIO.txt

5-EndOfStream
 expected:<-Header-[content-[length]-[0]]> but
was:<-Header-[content-[type]-[text/plain;charset=UTF-8]]>
at
jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHeadHttp2(HttpServletDoHeadBaseTest.java:160)
at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)

Testcase: testDoHead[467: true 8,192 true 1,023 FULL 0 true] took 2.129 sec
FAILED
expected:<4> but was:<5>
junit.framework.AssertionFailedError: expected:<4> but was:<5>
at
jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHead(HttpServletDoHeadBaseTest.java:94)
at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)

Testcase: testDoHeadHttp2[467: true 8,192 true 1,023 FULL 0 true] took 1.07
sec
FAILED
3-HeadersStart
3-Header-[:status]-[200]
3-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
3-HeadersEnd
5-HeadersStart
5-Header-[:status]-[200]
5-Header-[content-type]-[text/plain;charset=UTF-8]
5-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
5-HeadersEnd
5-EndOfStream
 expected:<-Header-[[date]-[Wed, 11 Nov 2015 19:18:42 GMT]]> but
was:<-Header-[[content-type]-[text/plain;charset=UTF-8]]>
junit.framework.AssertionFailedError: 3-HeadersStart
3-Header-[:status]-[200]
3-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
3-HeadersEnd
5-HeadersStart
5-Header-[:status]-[200]
5-Header-[content-type]-[text/plain;charset=UTF-8]
5-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]
5-HeadersEnd
5-EndOfStream
 expected:<-Header-[[date]-[Wed, 11 Nov 2015 19:18:42 GMT]]> but
was:<-Header-[[content-type]-[text/plain;charset=UTF-8]]>
at
jakarta.servlet.http.HttpServletDoHeadBaseTest.testDoHeadHttp2(HttpServletDoHeadBaseTest.java:160)
at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)



3. Testcase: testTimerThreadLeak took 2.609 sec
FAILED
null
junit.framework.AssertionFailedError
at
org.apache.catalina.loader.TestWebappClassLoaderExecutorMemoryLeak.testTimerThreadLeak(TestWebappClassLoaderExecutorMemoryLeak.java:63)
at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)


Regards,
Martin


On Mon, May 16, 2022 at 10:54 AM David Delabassee <
david.delabas...@oracle.com> wrote:

> Welcome to a new OpenJDK Quality Outreach update!
>
> This time, we have one update 

JDK 19 - Virtual Threads Testing!

2022-05-16 Thread David Delabassee

Welcome to a new OpenJDK Quality Outreach update!

This time, we have one update but a major one: JEP 425 (Virtual Threads 
preview) has been integrated into the OpenJDK mainline! JDK 19 
Early-Access builds 22 are the first mainline builds with Virtual 
Threads (preview) support. So, Project Loom is now getting closer and 
closer!


Please make sure to check the Heads-up below even if you don’t intend to 
use virtual threads in the short future.



## Heads-up - JEP 425 Virtual Threads (preview) testing

The goal of Project Loom is to introduce in the Java platform an 
easy-to-use, high-throughput lightweight concurrency model, and a 
related new concurrent programming model.


Developed in Project Loom, JEP 425 introduces virtual threads to the 
Java Platform. Virtual threads are lightweight threads that dramatically 
reduce the effort of writing, maintaining, and observing high-throughput 
concurrent applications. Note that virtual threads are a preview API in 
JDK 19. Please make sure to read 'JEP 425: Virtual Threads (Preview)' 
for a detailed explanation.


A lot of testing has already been done but we are asking, once again, 
your help to test your project(s) with the latest JDK 19 Early-Access 
builds, even if you don’t intend to use virtual threads any time soon.


There are two approaches to test your project:
1. Update your code to use virtual threads …or
2. Simply test your existing unchanged code with the preview feature 
enabled.


Both approaches should yield valuable feedback.

If you choose to adapt your application to use virtual threads (cf. 
JavaDoc [2]), be aware that in some cases it’s not just about updating 
your code to use virtual threads instead of platform threads; there are 
some additional considerations. For example, virtual threads shouldn’t 
be pooled [3], code that relies heavily on thread locals [4] will 
require some work to move to a world where there is a new thread for 
each task, etc.


Given that are some minor behavior changes and that `ThreadGroup` has 
been degraded, testing your code as-is, i.e., without using virtual 
threads but with the preview feature enabled at runtime, will also be 
useful. For more details, please check 'JEP 425 - Risks and Assumptions' 
[5].


One difference between to the EA builds published by Project Loom and 
the latest JDK 19 EA builds is that the `--enable-preview` flag is 
required at run-time to use the new APIs. It’s not possible to use the 
APIs with core reflection to avoid the need for `--enable-preview`.


Finally, some tools especially tools relying on JVM TI agents might not 
be fully ready for virtual threads.


Your help testing this important update is greatly appreciated, all 
feedback should be sent to the 'loom-dev' mailing list [6].


[1] https://openjdk.java.net/jeps/425
[2] 
https://download.java.net/java/early_access/jdk19/docs/api/java.base/java/lang/Thread.html

[3] https://openjdk.java.net/jeps/425#Do-not-pool-virtual-threads
[4] https://openjdk.java.net/jeps/425#Thread-local-variables
[5] https://openjdk.java.net/jeps/425#Risks-and-Assumptions
[6] https://mail.openjdk.java.net/pipermail/loom-dev/


## JDK 19 Early-Access builds

JDK 19 Early-Access builds 22 are now available [7], and are provided 
under the GNU General Public License v2, with the Classpath Exception. 
Make sure to check the Release Notes [8] and the JavaDoc [9].


[7] https://jdk.java.net/19/
[8] https://jdk.java.net/19/release-notes
[9] https://download.java.net/java/early_access/jdk19/docs/

### Current JDK 19 JEPs
- 405: Record Patterns (Preview) - Proposed to target
- 422: Linux/RISC-V Port - Integrated
- 424: Foreign Function & Memory API (Preview) - Integrated
- 425: Virtual Threads (Preview) - Integrated
- 426: Vector API (4th Incubator) - Targeted
- 427: Pattern Matching for switch (3rd Preview) - Targeted

### Recent changes that may be of interest:

Build 22:
- JDK-8284161: Implementation of Virtual Threads (Preview)
- JDK-8285947: Avoid redundant HashMap.containsKey calls in ZoneName
- JDK-8212136: Remove finalizer implementation in SSLSocketImpl
- JDK-8285872: JFR: Remove finalize() methods
- JDK-8285914: AppCDS crash when using shared archive with old class file
- JDK-8286163: micro-optimize Instant.plusSeconds
- JDK-8282420: JFR: Remove event handlers
- JDK-8282559: Allow multiple search terms in javadoc search

Build 21:
- JDK-822: Add DES/3DES/MD5 to jdk.security.legacyAlgorithms
- JDK-8278370: [win] Disable side-by-side installations of multiple JDK 
updates in Windows JDK installers
- JDK-8281010: [macos] Disable side-by-side installations of multiple 
JDK updates in macOS JDK installers

- JDK-8236128: Allow jpackage create installers for services
- JDK-8279598: provide adapter from RandomGenerator to Random

Build 20:
- JDK-8284553: Deprecate the DEFAULT static field of OAEPParameterSpec
- JDK-8283620: System.out does not use the encoding/charset specified in 
the Javadoc

- JDK-8285445: Enable Windows Alternate