RFR: 8333796: Add missing serialization functionality to sun.reflect.ReflectionFactory [v11]

David M. Lloyd duke at openjdk.org
Thu Nov 14 18:19:21 UTC 2024


On Thu, 14 Nov 2024 15:10:37 GMT, David M. Lloyd <duke at openjdk.org> wrote:

>> Issue [JDK-8164908](https://bugs.openjdk.org/browse/JDK-8164908) added support for functionality required to continue to support IIOP and custom serializers in light of additional module-based restrictions on reflection. It was expected that these libraries would use `sun.misc.Unsafe` in order to access fields of serializable classes. However, with JEP 471, the methods necessary to do this are being removed.
>> 
>> To allow these libraries to continue to function, it is proposed to add two methods to `sun.reflect.ReflectionFactory` which will allow serialization libraries to acquire a method handle to generated `readObject`/`writeObject` methods which set or get the fields of the serializable class using the serialization `GetField`/`PutField` mechanism. These generated methods should be used by serialization libraries to serialize and deserialize classes which do not have a `readObject`/`writeObject` method or which use `ObjectInputStream.defaultReadObject`/`ObjectOutputStream.defaultWriteObject` to supplement default serialization.
>> 
>> It is also proposed to add methods which allow for the reading of serialization-specific private static final fields from classes which have them.
>> 
>> With the addition of these methods, serialization libraries no longer need to rely on `Unsafe` for serialization/deserialization activities.
>> cc: @AlanBateman
>
> David M. Lloyd has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 40 commits:
> 
>  - Merge remote-tracking branch 'upstream-jdk/master' into serialization
>  - Address review feedback
>  - Merge remote-tracking branch 'upstream-jdk/master' into serialization
>  - Merge remote-tracking branch 'upstream-jdk/master' into serialization
>  - Round out the documentation of the new methods to explain the supported and unsupported cases
>  - Move `serialPersistentFields` for a degree of method order consistency
>  - Address review feedback
>  - Test fixes and finish renaming
>  - Address review feedback
>  - Address review comment
>  - ... and 30 more: https://git.openjdk.org/jdk/compare/752e1629...8b83bd70

Test failure again seems unrelated. Including the specific error here though, for completeness:


2024-11-14T17:47:36.4324360Z ACTION: main -- Error. Program `/Users/runner/work/jdk/jdk/bundles/jdk/jdk-24.jdk/Contents/Home/bin/java' timed out (timeout set to 480000ms, elapsed time including timeout handling was 708638ms).
2024-11-14T17:47:36.4327170Z REASON: User specified action: run main/othervm GetStackTraceALotWhenBlocking 500000 
2024-11-14T17:47:36.4328300Z TIME:   708.661 seconds
2024-11-14T17:47:36.4328770Z messages:
2024-11-14T17:47:36.4329310Z command: main GetStackTraceALotWhenBlocking 500000
2024-11-14T17:47:36.4330560Z reason: User specified action: run main/othervm GetStackTraceALotWhenBlocking 500000 
2024-11-14T17:47:36.4331740Z started: Thu Nov 14 17:35:47 UTC 2024
2024-11-14T17:47:36.4332550Z Mode: othervm [/othervm specified]
2024-11-14T17:47:36.4333480Z Additional options from @modules: --add-modules jdk.management
2024-11-14T17:47:36.4334350Z Timeout information:
2024-11-14T17:47:36.4334890Z --- Timeout information end.
2024-11-14T17:47:36.4335460Z finished: Thu Nov 14 17:47:36 UTC 2024
2024-11-14T17:47:36.4336100Z elapsed time (seconds): 708.661
2024-11-14T17:47:36.4336660Z configuration:
2024-11-14T17:47:36.4337320Z Boot Layer
2024-11-14T17:47:36.4338200Z   add modules: jdk.management
2024-11-14T17:47:36.4338680Z 
2024-11-14T17:47:36.4338990Z STDOUT:
2024-11-14T17:47:36.4358660Z 2024-11-14T17:38:27.326795Z => 10000 of 500000
2024-11-14T17:47:36.4360180Z 2024-11-14T17:38:41.640658Z => 20000 of 500000
2024-11-14T17:47:36.4361400Z 2024-11-14T17:38:49.756549Z => 30000 of 500000
2024-11-14T17:47:36.4362630Z 2024-11-14T17:38:57.493942Z => 40000 of 500000
2024-11-14T17:47:36.4363870Z 2024-11-14T17:39:08.010237Z => 50000 of 500000
2024-11-14T17:47:36.4365080Z 2024-11-14T17:39:16.328399Z => 60000 of 500000
2024-11-14T17:47:36.4366280Z 2024-11-14T17:39:24.093577Z => 70000 of 500000
2024-11-14T17:47:36.4367490Z 2024-11-14T17:39:32.249028Z => 80000 of 500000
2024-11-14T17:47:36.4369570Z 2024-11-14T17:39:40.332657Z => 90000 of 500000
2024-11-14T17:47:36.4370770Z 2024-11-14T17:39:48.896585Z => 100000 of 500000
2024-11-14T17:47:36.4371980Z 2024-11-14T17:39:56.202818Z => 110000 of 500000
2024-11-14T17:47:36.4373300Z 2024-11-14T17:40:03.124551Z => 120000 of 500000
2024-11-14T17:47:36.4374380Z 2024-11-14T17:40:09.787697Z => 130000 of 500000
2024-11-14T17:47:36.4375350Z 2024-11-14T17:40:18.527866Z => 140000 of 500000
2024-11-14T17:47:36.4376150Z 2024-11-14T17:40:25.597202Z => 150000 of 500000
2024-11-14T17:47:36.4376920Z 2024-11-14T17:40:33.003481Z => 160000 of 500000
2024-11-14T17:47:36.4377700Z 2024-11-14T17:40:41.028630Z => 170000 of 500000
2024-11-14T17:47:36.4378480Z 2024-11-14T17:40:47.934187Z => 180000 of 500000
2024-11-14T17:47:36.4379260Z 2024-11-14T17:40:55.464061Z => 190000 of 500000
2024-11-14T17:47:36.4380040Z 2024-11-14T17:41:02.558836Z => 200000 of 500000
2024-11-14T17:47:36.4380950Z 2024-11-14T17:41:09.825570Z => 210000 of 500000
2024-11-14T17:47:36.4382430Z 2024-11-14T17:41:17.577988Z => 220000 of 500000
2024-11-14T17:47:36.4383210Z 2024-11-14T17:41:26.589768Z => 230000 of 500000
2024-11-14T17:47:36.4383980Z 2024-11-14T17:41:33.137518Z => 240000 of 500000
2024-11-14T17:47:36.4384760Z 2024-11-14T17:41:42.334781Z => 250000 of 500000
2024-11-14T17:47:36.4385530Z 2024-11-14T17:41:51.968771Z => 260000 of 500000
2024-11-14T17:47:36.4386300Z 2024-11-14T17:41:58.428868Z => 270000 of 500000
2024-11-14T17:47:36.4387970Z 2024-11-14T17:42:09.241304Z => 280000 of 500000
2024-11-14T17:47:36.4389480Z 2024-11-14T17:42:15.361728Z => 290000 of 500000
2024-11-14T17:47:36.4390860Z 2024-11-14T17:42:21.300814Z => 300000 of 500000
2024-11-14T17:47:36.4392280Z 2024-11-14T17:42:28.007759Z => 310000 of 500000
2024-11-14T17:47:36.4393110Z 2024-11-14T17:42:34.121006Z => 320000 of 500000
2024-11-14T17:47:36.4393920Z 2024-11-14T17:42:41.597375Z => 330000 of 500000
2024-11-14T17:47:36.4394720Z 2024-11-14T17:42:47.815044Z => 340000 of 500000
2024-11-14T17:47:36.4395540Z 2024-11-14T17:42:53.644225Z => 350000 of 500000
2024-11-14T17:47:36.4396340Z 2024-11-14T17:42:59.640370Z => 360000 of 500000
2024-11-14T17:47:36.4397140Z 2024-11-14T17:43:05.704448Z => 370000 of 500000
2024-11-14T17:47:36.4397940Z 2024-11-14T17:43:11.992982Z => 380000 of 500000
2024-11-14T17:47:36.4398750Z 2024-11-14T17:43:18.333571Z => 390000 of 500000
2024-11-14T17:47:36.4399560Z 2024-11-14T17:43:24.272030Z => 400000 of 500000
2024-11-14T17:47:36.4400900Z 2024-11-14T17:43:30.751238Z => 410000 of 500000
2024-11-14T17:47:36.4402380Z 2024-11-14T17:43:37.258332Z => 420000 of 500000
2024-11-14T17:47:36.4403200Z 2024-11-14T17:43:43.632902Z => 430000 of 500000
2024-11-14T17:47:36.4403920Z Timeout signalled after 480 seconds
2024-11-14T17:47:36.4404660Z 2024-11-14T17:43:57.423379Z => 440000 of 500000
2024-11-14T17:47:36.4405470Z 2024-11-14T17:44:28.892592Z => 450000 of 500000
2024-11-14T17:47:36.4406120Z STDERR:
2024-11-14T17:47:36.4406480Z rerun:
2024-11-14T17:47:36.4407780Z cd /Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/scratch/0 && \
2024-11-14T17:47:36.4409270Z DOCS_JDK_IMAGE_DIR= \
2024-11-14T17:47:36.4409780Z HOME=/Users/runner \
2024-11-14T17:47:36.4410300Z LANG=en_US.UTF-8 \
2024-11-14T17:47:36.4410750Z LC_ALL=C \
2024-11-14T17:47:36.4411230Z LC_CTYPE=en_US.UTF-8 \
2024-11-14T17:47:36.4411750Z PATH=/bin:/usr/bin:/usr/sbin \
2024-11-14T17:47:36.4412500Z TEST_IMAGE_DIR=/Users/runner/work/jdk/jdk/bundles/tests \
2024-11-14T17:47:36.4419930Z CLASSPATH=/Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/classes/1/java/lang/Thread/virtual/stress/GetStackTraceALotWhenBlocking_id0.d:/Users/runner/work/jdk/jdk/test/jdk/java/lang/Thread/virtual/stress:/Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/classes/1/test/lib:/Users/runner/work/jdk/jdk/test/lib:/Users/runner/work/jdk/jdk/jtreg/installed/lib/javatest.jar:/Users/runner/work/jdk/jdk/jtreg/installed/lib/jtreg.jar \
2024-11-14T17:47:36.4428520Z     /Users/runner/work/jdk/jdk/bundles/jdk/jdk-24.jdk/Contents/Home/bin/java \
2024-11-14T17:47:36.4433500Z         -Dtest.vm.opts='-Xmx768m -XX:MaxRAMPercentage=12.5 -Dtest.boot.jdk=/Users/runner/work/jdk/jdk/bootjdk/jdk -Djava.io.tmpdir=/Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/tmp -ea -esa' \
2024-11-14T17:47:36.4440820Z         -Dtest.tool.vm.opts='-J-Xmx768m -J-XX:MaxRAMPercentage=12.5 -J-Dtest.boot.jdk=/Users/runner/work/jdk/jdk/bootjdk/jdk -J-Djava.io.tmpdir=/Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/tmp -J-ea -J-esa' \
2024-11-14T17:47:36.4444840Z         -Dtest.compiler.opts= \
2024-11-14T17:47:36.4446110Z         -Dtest.java.opts=-XX:-CreateCoredumpOnCrash \
2024-11-14T17:47:36.4448100Z         -Dtest.jdk=/Users/runner/work/jdk/jdk/bundles/jdk/jdk-24.jdk/Contents/Home \
2024-11-14T17:47:36.4450120Z         -Dcompile.jdk=/Users/runner/work/jdk/jdk/bundles/jdk/jdk-24.jdk/Contents/Home \
2024-11-14T17:47:36.4451380Z         -Dtest.timeout.factor=4.0 \
2024-11-14T17:47:36.4452670Z         -Dtest.nativepath=/Users/runner/work/jdk/jdk/bundles/tests/jdk/jtreg/native \
2024-11-14T17:47:36.4453960Z         -Dtest.root=/Users/runner/work/jdk/jdk/test/jdk \
2024-11-14T17:47:36.4455370Z         -Dtest.name=java/lang/Thread/virtual/stress/GetStackTraceALotWhenBlocking.java#id0 \
2024-11-14T17:47:36.4458490Z         -Dtest.file=/Users/runner/work/jdk/jdk/test/jdk/java/lang/Thread/virtual/stress/GetStackTraceALotWhenBlocking.java \
2024-11-14T17:47:36.4460760Z         -Dtest.src=/Users/runner/work/jdk/jdk/test/jdk/java/lang/Thread/virtual/stress \
2024-11-14T17:47:36.4463030Z         -Dtest.src.path=/Users/runner/work/jdk/jdk/test/jdk/java/lang/Thread/virtual/stress:/Users/runner/work/jdk/jdk/test/lib \
2024-11-14T17:47:36.4466620Z         -Dtest.classes=/Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/classes/1/java/lang/Thread/virtual/stress/GetStackTraceALotWhenBlocking_id0.d \
2024-11-14T17:47:36.4472620Z         -Dtest.class.path=/Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/classes/1/java/lang/Thread/virtual/stress/GetStackTraceALotWhenBlocking_id0.d:/Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/classes/1/test/lib \
2024-11-14T17:47:36.4481720Z         -Dtest.class.path.prefix=/Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/classes/1/java/lang/Thread/virtual/stress/GetStackTraceALotWhenBlocking_id0.d:/Users/runner/work/jdk/jdk/test/jdk/java/lang/Thread/virtual/stress:/Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/classes/1/test/lib \
2024-11-14T17:47:36.4486950Z         -Dtest.modules=jdk.management \
2024-11-14T17:47:36.4487740Z         --add-modules jdk.management \
2024-11-14T17:47:36.4488440Z         -Xmx768m \
2024-11-14T17:47:36.4489010Z         -XX:MaxRAMPercentage=12.5 \
2024-11-14T17:47:36.4490150Z         -Dtest.boot.jdk=/Users/runner/work/jdk/jdk/bootjdk/jdk \
2024-11-14T17:47:36.4492140Z         -Djava.io.tmpdir=/Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/tmp \
2024-11-14T17:47:36.4494970Z         -ea \
2024-11-14T17:47:36.4495720Z         -esa \
2024-11-14T17:47:36.4496690Z         -XX:-CreateCoredumpOnCrash \
2024-11-14T17:47:36.4498620Z         -Djava.library.path=/Users/runner/work/jdk/jdk/bundles/tests/jdk/jtreg/native \
2024-11-14T17:47:36.4504150Z         com.sun.javatest.regtest.agent.MainWrapper /Users/runner/work/jdk/jdk/build/run-test-prebuilt/test-support/jtreg_test_jdk_tier1_part1/java/lang/Thread/virtual/stress/GetStackTraceALotWhenBlocking_id0.d/main.0.jta 500000
2024-11-14T17:47:36.4507990Z 
2024-11-14T17:47:36.4511330Z TEST RESULT: Error. Program `/Users/runner/work/jdk/jdk/bundles/jdk/jdk-24.jdk/Contents/Home/bin/java' timed out (timeout set to 480000ms, elapsed time including timeout handling was 708638ms).
2024-11-14T17:47:36.4516420Z --------------------------------------------------

-------------

PR Comment: https://git.openjdk.org/jdk/pull/19702#issuecomment-2477111143


More information about the core-libs-dev mailing list