Re: JDK 20 Rampdown Phase 1 & Valhalla LW4 Early-Access builds

2022-12-20 Thread Rick Hillegas

Hi David,

Open JDK build 20-ea+27-2213 introduces another problem. I see the 
following error when unmarshalling an object on behalf of an MBean:


  java.io.InvalidClassException: filter status: REJECTED

I do not see this problem under build 19+36-2238.

Can you point me at the experts who can advise me on how to address this 
issue?


Thanks,
-Rick


On 12/12/22 2:07 AM, David Delabassee wrote:

Welcome to the final OpenJDK Quality Outreach update for 2022!

JDK 20, scheduled for General Availability on March 21 2023, is now in 
Rampdown Phase One (RDP1) [1]. At this point, the overall JDK 20 [2] 
feature set is frozen (see below the final list of JEPs integrated 
into JDK 20) and only low-risk enhancements might still be considered. 
The coming weeks should be used to identify and resolve as many issues 
as possible, i.e. before JDK 20 enters the Release Candidates phase in 
early February 2023.



## JDK 20 Early-Access builds

The latest Early-Access (builds 27) are available [2] with the Release 
Notes here [3]. Those builds are provided under the GNU GPL v2, with 
the Classpath Exception.


### JEPs integrated into JDK 20:

JEP 429: Scoped Values (Incubator)
JEP 432: Record Patterns (2nd Preview)
JEP 433: Pattern Matching for switch (4th Preview)
JEP 434: Foreign Function & Memory API (2nd Preview)
JEP 436: Virtual Threads (2nd Preview)
JEP 437: Structured Concurrency (2nd Incubator)

[1] https://mail.openjdk.org/pipermail/jdk-dev/2022-December/007233.html
[2] https://jdk.java.net/20/
[3] https://jdk.java.net/20/release-notes


### Changes in recent JDK 20 builds that may be of interest:

 Build 27:
- JDK-8297794: Deprecate JMX Management Applets for Removal
- JDK-8297118: Change IncompatibleClassChangeError to MatchException 
for exhaustive switch statements and switch expressions

- JDK-8294047: HttpResponseInputStream swallows interrupts
- JDK-8281236: (D)TLS key exchange named groups
- JDK-8280798: com.sun.jdi.ObjectReference::setValue spec should 
prohibit any final field modification

- JDK-8295350: JFR: Add stop methods for recording streams
- JDK-8295044: Implementation of Foreign Function and Memory API (2nd 
Preview)

- JDK-8296896: Change virtual Thread.yield to use external submit
- JDK-8297804: (tz) Update Timezone Data to 2022g
- JDK-8295803: Console should be usable in jshell and other environments
- JDK-828: Implementation of Scoped Values (Incubator)
- JDK-8296672: Implementation of Virtual Threads (2nd Preview)

 Build 26:
- JDK-8297276: Remove thread text from Subject.current
- JDK-8297030: Reduce Default Keep-Alive Timeout Value for httpclient
- JDK-8247645: ChaCha20 Intrinsics

 Build 25:
- JDK-8296472: Remove ObjectLocker around 
appendToClassPathForInstrumentation call
- JDK-8290313: Produce warning when user specified java.io.tmpdir 
directory doesn't exist
- JDK-8288717: Add a means to close idle connections in HTTP/2 
connection pool

- JDK-8288047: Accelerate Poly1305 on x86_64 using AVX512 instructions
- JDK-8059632: Method reference compilation uses incorrect qualifying 
type
- JDK-8297161: Add additional Service Attributes to Standard Algorithm 
Names guide

- JDK-8294073: Performance improvement for message digest implementations

 Build 24:
- JDK-8294731: Improve multiplicative inverse for secp256r1 
implementation

- JDK-8296715: CLDR v42 update for tzdata 2022f
- JDK-8296958: [JVMCI] add API for retrieving ConstantValue attributes

 Build 23:
- JDK-8296226: Add constructors (String,Throwable) and (Throwable) to 
InvalidParameterException
- JDK-8295673: Deprecate and disable legacy parallel class loading 
workaround for non-parallel-capable class loaders

- JDK-8294241: Deprecate URL public constructors
- JDK-8289689: (fs) Re-examine the need for normalization to Unicode 
Normalization Format D (macOS)

- JDK-8279164: Disable TLS_ECDH_* cipher suites
- JDK-8178355: IdentityHashMap uses identity-based comparison for 
values everywhere except remove(K,V) and replace(K,V,V)

- JDK-8296108: (tz) Update Timezone Data to 2022f


## Heads-up - JDK 21: First Early-Access Builds

When JDK 20 entered RDP1 [4], the JDK mainline [5] was (a) forked into 
a JDK 20 stabilization repository [6], and (b) set to JDK 21. As a 
consequence, the first JDK 21 Early-Access builds have been published 
[7].


[4] https://mail.openjdk.org/pipermail/jdk-dev/2022-December/007233.html
[5] https://github.com/openjdk/jdk
[6] https://github.com/openjdk/jdk20
[7] https://jdk.java.net/21/


## Heads-up - Valhalla: LW4 Early-Access Builds

Valhalla LW4 early-access builds have been published [8], those builds 
are primarily focused on implementing the Value Objects JEP draft [9]. 
For additional details on those EA builds, make sure to read these LW4 
release notes [10]. For a more hands-on introduction to Value Object, 
you can watch the latest JEP Café: Java Value Objects in Action [11]. 
Interested developers are encouraged to explore the performance and 
migration impact

[jira] [Commented] (DERBY-7149) Make it possible to build and test Derby cleanly with JDK 20

2022-12-20 Thread Richard N. Hillegas (Jira)


[ 
https://issues.apache.org/jira/browse/DERBY-7149?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17650044#comment-17650044
 ] 

Richard N. Hillegas commented on DERBY-7149:


Attaching derby-7149-01-ac-deprecateURLconstructor.diff. This patch addresses 
the following issues encountered when building and testing with Open JDK build 
20-ea+27-2213:

1) The deprecation of public URL constructors (JDK-8294241).

2) New javadoc warnings.

I fixed the URL-related test problems in the previous patch by adding catch 
blocks for IllegalArgumentException. Oddly enough, the 0-arg method URI.toURL() 
raises that exception.

I backed out changes related to the deprecation (with intent to remove) of the 
java.lang.ThreadDeath class. That, in turn, relates to the deprecation (with 
intent to remove) of the Thread.stop() method. I need to ask the experts about 
how we should handle the disappearance of Thread.stop().

Tests passed cleanly with this patch with both the classpath and the module 
path except for the problems seen in CacheManagerMBeanTest.

Touches the following files:

{noformat}
M   
java/build/org/apache/derbyBuild/lastgoodjarcontents/insane.derbyTesting.jar.lastcontents
M   
java/build/org/apache/derbyBuild/lastgoodjarcontents/sane.derbyTesting.jar.lastcontents
A   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jdk120.java

Added a new JVM testing type to represent JDK 20.


M   java/build/org/apache/derbyBuild/JiraConnector.java
M   java/build/org/apache/derbyBuild/ReleaseNotesGenerator.java
M   
java/org.apache.derby.engine/org/apache/derby/iapi/services/io/FileUtil.java
M   java/org.apache.derby.engine/org/apache/derby/impl/io/URLFile.java
M   
java/org.apache.derby.engine/org/apache/derby/impl/load/ImportReadData.java
M   
java/org.apache.derby.engine/org/apache/derby/impl/sql/execute/JarUtil.java
M   
java/org.apache.derby.engine/org/apache/derby/impl/store/raw/RawStore.java
M   
java/org.apache.derby.engine/org/apache/derby/impl/store/raw/log/LogToFile.java
M   java/org.apache.derby.engine/org/apache/derby/vti/XmlVTI.java
M   
java/org.apache.derby.optionaltools/org/apache/derby/optional/api/SimpleJsonUtils.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbcapi/CallableTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/upgradeTests/UpgradeClassLoader.java
M   
java/org.apache.derby.tools/org/apache/derby/impl/tools/sysinfo/Main.java

Changes for (1).


M   
java/org.apache.derby.engine/org/apache/derby/iapi/jdbc/InternalDriver.java
M   
java/org.apache.derby.engine/org/apache/derby/iapi/security/SecurityUtil.java
M   
java/org.apache.derby.engine/org/apache/derby/impl/jdbc/InternalClob.java
M   
java/org.apache.derby.engine/org/apache/derby/impl/jdbc/LOBStoredProcedure.java
M   
java/org.apache.derby.engine/org/apache/derby/impl/sql/compile/GroupByNode.java
M   
java/org.apache.derby.engine/org/apache/derby/impl/sql/compile/UpdateNode.java
M   
java/org.apache.derby.engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
M   
java/org.apache.derby.engine/org/apache/derby/impl/sql/execute/GroupedAggregateResultSet.java
M   
java/org.apache.derby.engine/org/apache/derby/impl/sql/execute/RowTriggerExecutor.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbc4/Derby3650Test.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbc4/ResultSetTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbcapi/BLOBDataModelSetup.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbcapi/BlobClob4BlobTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbcapi/BlobStoredProcedureTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbcapi/ClobStoredProcedureTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbcapi/DataSourceReferenceTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbcapi/StatementPoolingTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/management/JDBCMBeanTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/managemen/NetworkServerMBeanTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/management/VersionMBeanTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/store/BaseTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/store/OnlineCompressTest.java
M   
java/org.apache.derby.tests/org/apache/derbyTesting/functionTests

[jira] [Updated] (DERBY-7149) Make it possible to build and test Derby cleanly with JDK 20

2022-12-20 Thread Richard N. Hillegas (Jira)


 [ 
https://issues.apache.org/jira/browse/DERBY-7149?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Richard N. Hillegas updated DERBY-7149:
---
Attachment: derby-7149-01-ac-deprecateURLconstructor.diff

> Make it possible to build and test Derby cleanly with JDK 20
> 
>
> Key: DERBY-7149
> URL: https://issues.apache.org/jira/browse/DERBY-7149
> Project: Derby
>  Issue Type: Task
>  Components: Build tools
>Affects Versions: 10.17.0.0
>Reporter: Richard N. Hillegas
>Assignee: Richard N. Hillegas
>Priority: Major
> Attachments: derby-7149-01-aa-deprecateURLconstructor.diff, 
> derby-7149-01-ac-deprecateURLconstructor.diff
>
>




--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Commented] (DERBY-7149) Make it possible to build and test Derby cleanly with JDK 20

2022-12-20 Thread Richard N. Hillegas (Jira)


[ 
https://issues.apache.org/jira/browse/DERBY-7149?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17650037#comment-17650037
 ] 

Richard N. Hillegas commented on DERBY-7149:


Open JDK build 20-ea+27-2213 introduces another problem. It breaks 
CacheManagerMBeanTest. The test runs cleanly on Open JDK build 19+36-2238. But 
the test fails with the following two errors on build 20-ea+27-2213:

{noformat}
...E.E
Time: 19.671
There were 2 errors:
1) 
testPageCache(org.apache.derbyTesting.functionTests.tests.management.CacheManagerMBeanTest)java.io.InvalidClassException:
 filter status: REJECTED
at 
java.base/java.io.ObjectInputStream.filterCheck(ObjectInputStream.java:1437)
at 
java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:2069)
at 
java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1925)
at 
java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2248)
at 
java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1760)
at 
java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:538)
at 
java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:496)
at java.rmi/java.rmi.MarshalledObject.get(MarshalledObject.java:183)
at 
java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.unwrap(RMIConnectionImpl.java:1590)
at 
java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.unwrap(RMIConnectionImpl.java:1632)
at 
java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.setAttribute(RMIConnectionImpl.java:709)
at 
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at 
java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:714)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at 
java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:598)
at 
java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:844)
at 
java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:721)
at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at 
java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:720)
at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1623)
at 
java.rmi/sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:304)
at 
java.rmi/sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:280)
at java.rmi/sun.rmi.server.UnicastRef.invoke(UnicastRef.java:166)
at jdk.remoteref/jdk.jmx.remote.internal.rmi.PRef.invoke(Unknown Source)
at 
java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl_Stub.setAttribute(RMIConnectionImpl_Stub.java:556)
at 
java.management.rmi/javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.setAttribute(RMIConnector.java:960)
at 
org.apache.derbyTesting.functionTests.tests.management.MBeanTest.setAttribute(MBeanTest.java:352)
at 
org.apache.derbyTesting.functionTests.tests.management.CacheManagerMBeanTest.testPageCache(CacheManagerMBeanTest.java:171)
at 
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at 
org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:104)
at 
org.apache.derbyTesting.junit.BaseJDBCTestCase.runBareOverridable(BaseJDBCTestCase.java:440)
at 
org.apache.derbyTesting.junit.BaseJDBCTestCase.runBare(BaseJDBCTestCase.java:457)
at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
at junit.extensions.TestSetup.run(TestSetup.java:25)
at 
org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:45)
at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
at junit.extensions.TestSetup.run(TestSetup.java:25)
at 
org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:45)
at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
at junit.extensions.TestSetup$1.protect