Re: JDK 19 - Virtual Threads Testing!
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!
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!
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!
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!
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!
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!
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!
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!
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!
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