This is an automated email from the ASF dual-hosted git repository.

NSAmelchev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 0a4064e5ae3 IGNITE-28603 Fixed GridTestUtils.setFieldValue for JDK 17 
(#13074)
0a4064e5ae3 is described below

commit 0a4064e5ae3f255d363f582832e9129c45c646b7
Author: Dmitry Werner <[email protected]>
AuthorDate: Tue Apr 28 12:08:00 2026 +0500

    IGNITE-28603 Fixed GridTestUtils.setFieldValue for JDK 17 (#13074)
---
 .../java/org/apache/ignite/testframework/GridTestUtils.java  | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java 
b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
index 5896f7df677..a26ebb80d17 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
@@ -24,6 +24,8 @@ import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.annotation.Annotation;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.VarHandle;
 import java.lang.ref.ReferenceQueue;
 import java.lang.ref.SoftReference;
 import java.lang.reflect.Field;
@@ -105,7 +107,6 @@ import 
org.apache.ignite.internal.processors.cache.persistence.filename.NodeFile
 import org.apache.ignite.internal.processors.odbc.ClientListenerProcessor;
 import org.apache.ignite.internal.processors.port.GridPortRecord;
 import org.apache.ignite.internal.util.GridBusyLock;
-import org.apache.ignite.internal.util.GridUnsafe;
 import org.apache.ignite.internal.util.future.GridFutureAdapter;
 import org.apache.ignite.internal.util.lang.GridAbsClosure;
 import org.apache.ignite.internal.util.lang.GridAbsPredicate;
@@ -1814,14 +1815,13 @@ public final class GridTestUtils {
                 throw new IgniteException("Modification of static final field 
through reflection.");
 
             if (isFinal && U.majorJavaVersion(U.jdkVersion()) >= 12) {
-                long fieldOffset = GridUnsafe.objectFieldOffset(field);
+                MethodHandles.Lookup lookup = 
MethodHandles.privateLookupIn(Field.class, MethodHandles.lookup());
 
-                GridUnsafe.putObjectField(obj, fieldOffset, val);
+                VarHandle varHandle = lookup.findVarHandle(Field.class, 
"modifiers", int.class);
 
-                return;
+                varHandle.set(field, field.getModifiers() & ~Modifier.FINAL);
             }
-
-            if (isFinal) {
+            else if (isFinal) {
                 Field modifiersField = 
Field.class.getDeclaredField("modifiers");
 
                 modifiersField.setAccessible(true);

Reply via email to