This is an automated email from the ASF dual-hosted git repository.
ivandasch 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 040ca42779a IGNITE-20698 Fix compatibility tests on JDK 11 and 17
(#11006)
040ca42779a is described below
commit 040ca42779a7ecd5c9810d3b67d6a984d0055eeb
Author: Ivan Daschinskiy <[email protected]>
AuthorDate: Thu Oct 26 17:34:22 2023 +0300
IGNITE-20698 Fix compatibility tests on JDK 11 and 17 (#11006)
---
bin/include/jvmdefaults.bat | 2 +
bin/include/jvmdefaults.sh | 2 +
.../ignite/jdbc/thin/JdbcThinErrorsSelfTest.java | 2 +-
.../apache/ignite/jdbc/thin/JdbcThinTcpIoTest.java | 4 +-
.../compatibility/IgniteReleasedVersion.java | 18 +++++
.../clients/JavaThinCompatibilityTest.java | 12 ++++
.../clients/JdbcThinCompatibilityTest.java | 14 ++++
.../CompoundIndexCompatibilityTest.java | 2 +
.../persistence/FoldersReuseCompatibilityTest.java | 2 +
.../IgnitePKIndexesMigrationToUnwrapPkTest.java | 2 +
.../persistence/IndexTypesCompatibilityTest.java | 11 +++
.../InlineJavaObjectCompatibilityTest.java | 11 +++
.../persistence/MetaStorageCompatibilityTest.java | 2 +
...gratingToWalV2SerializerWithCompactionTest.java | 2 +
.../MoveBinaryMetadataCompatibility.java | 2 +
.../PersistenceBasicCompatibilityTest.java | 16 +++++
.../junits/IgniteCompatibilityAbstractTest.java | 9 ++-
.../testframework/junits/SkipTestIfIsJdkNewer.java | 33 +++++++++
.../junits/SkipTestIfJdkNewerRule.java | 43 ++++++++++++
.../util/CompatibilityTestsUtils.java | 18 ++---
.../ignite/internal/util/FeatureChecker.java | 3 +
.../internal/client/thin/ReliableChannelTest.java | 7 +-
...GridManagerMxBeanIllegalArgumentHandleTest.java | 82 ++++++----------------
.../apache/ignite/testframework/GridTestUtils.java | 9 +++
modules/platforms/cpp/core/src/ignition.cpp | 2 +
.../Apache.Ignite.Core/Impl/Unmanaged/Jni/Jvm.cs | 2 +
modules/tools/pom.xml | 6 ++
parent/pom.xml | 23 +++++-
28 files changed, 268 insertions(+), 73 deletions(-)
diff --git a/bin/include/jvmdefaults.bat b/bin/include/jvmdefaults.bat
index 13ebc69dfc7..896814ffa81 100644
--- a/bin/include/jvmdefaults.bat
+++ b/bin/include/jvmdefaults.bat
@@ -73,12 +73,14 @@ if %java_version% GEQ 15 (
--add-opens=java.base/jdk.internal.access=ALL-UNNAMED ^
--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED ^
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED ^
+ --add-opens=java.base/sun.util.calendar=ALL-UNNAME ^
--add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED ^
--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED ^
--add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED ^
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED ^
--add-opens=java.base/java.io=ALL-UNNAMED ^
--add-opens=java.base/java.nio=ALL-UNNAMED ^
+ --add-opens=java.base/java.net=ALL-UNNAMED ^
--add-opens=java.base/java.util=ALL-UNNAMED ^
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED ^
--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED ^
diff --git a/bin/include/jvmdefaults.sh b/bin/include/jvmdefaults.sh
index 962b10e4695..810b208e662 100644
--- a/bin/include/jvmdefaults.sh
+++ b/bin/include/jvmdefaults.sh
@@ -69,12 +69,14 @@ getJavaSpecificOpts() {
--add-opens=java.base/jdk.internal.access=ALL-UNNAMED \
--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED \
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
+ --add-opens=java.base/sun.util.calendar=ALL-UNNAME \
--add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED \
--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED \
--add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED \
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED \
--add-opens=java.base/java.io=ALL-UNNAMED \
--add-opens=java.base/java.nio=ALL-UNNAMED \
+ --add-opens=java.base/java.net=ALL-UNNAMED \
--add-opens=java.base/java.util=ALL-UNNAMED \
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED \
--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED \
diff --git
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinErrorsSelfTest.java
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinErrorsSelfTest.java
index c1677ddc4e9..89d2baa674e 100644
---
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinErrorsSelfTest.java
+++
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinErrorsSelfTest.java
@@ -50,7 +50,7 @@ public class JdbcThinErrorsSelfTest extends
JdbcErrorsAbstractSelfTest {
return null;
}
- }, "08001", "Failed to connect to server [host=unknown.host");
+ }, "08001", "Failed to connect to");
}
/**
diff --git
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinTcpIoTest.java
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinTcpIoTest.java
index f521c1fa8f1..b22842957a0 100644
---
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinTcpIoTest.java
+++
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinTcpIoTest.java
@@ -71,6 +71,8 @@ public class JdbcThinTcpIoTest extends GridCommonAbstractTest
{
assertEquals(java.net.SocketTimeoutException.class,
throwable.getCause().getClass());
- assertTrue(throwable.getCause().getMessage().contains("connect timed
out"));
+ String message = throwable.getCause().getMessage();
+
+ assertTrue(message.matches(".*[Cc]onnect timed out.*"));
}
}
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/IgniteReleasedVersion.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/IgniteReleasedVersion.java
index a8aa8c91062..b3573b28b13 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/IgniteReleasedVersion.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/IgniteReleasedVersion.java
@@ -17,9 +17,13 @@
package org.apache.ignite.compatibility;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Optional;
+import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.lang.IgniteProductVersion;
+import org.jetbrains.annotations.NotNull;
/** Released Ignite versions. */
@SuppressWarnings("unused")
@@ -100,6 +104,20 @@ public enum IgniteReleasedVersion {
IgniteReleasedVersion::toString);
}
+ /**
+ *
+ */
+ public static @NotNull IgniteReleasedVersion fromString(String ver) {
+ IgniteProductVersion productVer = IgniteProductVersion.fromString(ver);
+
+ Optional<IgniteReleasedVersion> res =
Arrays.stream(values()).filter(el -> el.ver.equals(productVer)).findFirst();
+
+ if (!res.isPresent())
+ throw new IgniteException("Provided version has been never
released [version=" + ver);
+
+ return res.get();
+ }
+
/** @return String representation of three-part version number. */
@Override public String toString() {
return ver.major() + "." + ver.minor() + "." + ver.maintenance();
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/JavaThinCompatibilityTest.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/JavaThinCompatibilityTest.java
index 030257f9714..ba14f2eeb02 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/JavaThinCompatibilityTest.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/JavaThinCompatibilityTest.java
@@ -103,6 +103,18 @@ public class JavaThinCompatibilityTest extends
AbstractClientCompatibilityTest {
);
}
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ super.beforeTest();
+
+ int majorJavaVersion = U.majorJavaVersion(U.jdkVersion());
+
+ if (majorJavaVersion > 11) {
+ Assume.assumeTrue("Skipped on jdk " + U.jdkVersion(),
+
VER_2_12_0.compareTo(IgniteProductVersion.fromString(verFormatted)) < 0);
+ }
+ }
+
/** {@inheritDoc} */
@Override protected void initNode(Ignite ignite) {
ignite.services().deployNodeSingleton("test_service", new
EchoService());
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/JdbcThinCompatibilityTest.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/JdbcThinCompatibilityTest.java
index 857df9f8a91..3c41d8180fb 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/JdbcThinCompatibilityTest.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/JdbcThinCompatibilityTest.java
@@ -24,7 +24,9 @@ import java.sql.Statement;
import org.apache.ignite.Ignite;
import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteProductVersion;
+import org.junit.Assume;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -47,6 +49,18 @@ public class JdbcThinCompatibilityTest extends
AbstractClientCompatibilityTest {
igniteEx.context().query().querySqlFields(new SqlFieldsQuery(sql),
false).getAll();
}
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ super.beforeTest();
+
+ int majorJavaVersion = U.majorJavaVersion(U.jdkVersion());
+
+ if (majorJavaVersion > 11) {
+ Assume.assumeTrue("Skipped on jdk " + U.jdkVersion(),
+
VER_2_12_0.compareTo(IgniteProductVersion.fromString(verFormatted)) < 0);
+ }
+ }
+
/** {@inheritDoc} */
@Override protected void initNode(Ignite ignite) {
IgniteEx igniteEx = (IgniteEx)ignite;
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/CompoundIndexCompatibilityTest.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/CompoundIndexCompatibilityTest.java
index 71d44135270..9bfd2e75740 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/CompoundIndexCompatibilityTest.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/CompoundIndexCompatibilityTest.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.ignite.Ignite;
import org.apache.ignite.cluster.ClusterState;
+import
org.apache.ignite.compatibility.testframework.junits.SkipTestIfIsJdkNewer;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.cache.query.index.IndexName;
import
org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndexImpl;
@@ -36,6 +37,7 @@ import org.junit.Test;
public class CompoundIndexCompatibilityTest extends
IndexAbstractCompatibilityTest {
/** */
@Test
+ @SkipTestIfIsJdkNewer(11)
public void testSecondaryIndexesMigration_2_7_6() throws Exception {
// 2.7.6 - version before _KEY unwrapping.
doTestStartupWithOldVersion("2.7.6", () -> {
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/FoldersReuseCompatibilityTest.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/FoldersReuseCompatibilityTest.java
index a2bbe924d8b..6883c724df9 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/FoldersReuseCompatibilityTest.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/FoldersReuseCompatibilityTest.java
@@ -25,6 +25,7 @@ import java.util.TreeSet;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteCheckedException;
+import
org.apache.ignite.compatibility.testframework.junits.SkipTestIfIsJdkNewer;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.MemoryConfiguration;
@@ -44,6 +45,7 @@ import static
org.apache.ignite.internal.processors.cache.persistence.filename.P
/**
* Test for new and old style persistent storage folders generation and
compatible startup of current ignite version
*/
+@SkipTestIfIsJdkNewer(8)
public class FoldersReuseCompatibilityTest extends
IgnitePersistenceCompatibilityAbstractTest {
/** Cache name for test. */
private static final String CACHE_NAME = "dummy";
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/IgnitePKIndexesMigrationToUnwrapPkTest.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/IgnitePKIndexesMigrationToUnwrapPkTest.java
index 5393eb96f4c..fc8741c134e 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/IgnitePKIndexesMigrationToUnwrapPkTest.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/IgnitePKIndexesMigrationToUnwrapPkTest.java
@@ -21,6 +21,7 @@ package org.apache.ignite.compatibility.persistence;
import java.util.List;
import org.apache.ignite.Ignite;
import org.apache.ignite.cluster.ClusterState;
+import
org.apache.ignite.compatibility.testframework.junits.SkipTestIfIsJdkNewer;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.lang.IgniteInClosure;
import org.junit.Test;
@@ -28,6 +29,7 @@ import org.junit.Test;
/**
* Test to check that starting node with PK index of the old format present
doesn't break anything.
*/
+@SkipTestIfIsJdkNewer(11)
public class IgnitePKIndexesMigrationToUnwrapPkTest extends
IndexAbstractCompatibilityTest {
/** */
private static final String TABLE_NAME = "TEST_IDX_TABLE";
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/IndexTypesCompatibilityTest.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/IndexTypesCompatibilityTest.java
index b855c22fbac..2184d641edf 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/IndexTypesCompatibilityTest.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/IndexTypesCompatibilityTest.java
@@ -36,13 +36,17 @@ import org.apache.ignite.IgniteCache;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.compatibility.IgniteReleasedVersion;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
+import org.junit.Assume;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import static org.apache.ignite.compatibility.IgniteReleasedVersion.VER_2_12_0;
import static org.apache.ignite.compatibility.IgniteReleasedVersion.VER_2_6_0;
import static org.apache.ignite.compatibility.IgniteReleasedVersion.since;
import static org.apache.ignite.testframework.GridTestUtils.cartesianProduct;
@@ -106,6 +110,13 @@ public class IndexTypesCompatibilityTest extends
IndexAbstractCompatibilityTest
/** */
@Test
public void testQueryOldIndex() throws Exception {
+ int majorJavaVersion = U.majorJavaVersion(U.jdkVersion());
+
+ if (majorJavaVersion > 11) {
+ Assume.assumeTrue("Skipped on jdk " + U.jdkVersion(),
+
VER_2_12_0.compareTo(IgniteReleasedVersion.fromString(igniteVer)) < 0);
+ }
+
doTestStartupWithOldVersion(igniteVer, new PostStartupClosure());
}
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/InlineJavaObjectCompatibilityTest.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/InlineJavaObjectCompatibilityTest.java
index 1becef246b9..e1b5aa60507 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/InlineJavaObjectCompatibilityTest.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/InlineJavaObjectCompatibilityTest.java
@@ -30,14 +30,18 @@ import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.compatibility.IgniteReleasedVersion;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
+import org.junit.Assume;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import static org.apache.ignite.compatibility.IgniteReleasedVersion.VER_2_12_0;
import static org.apache.ignite.compatibility.IgniteReleasedVersion.VER_2_6_0;
import static org.apache.ignite.compatibility.IgniteReleasedVersion.since;
import static org.apache.ignite.testframework.GridTestUtils.cartesianProduct;
@@ -77,6 +81,13 @@ public class InlineJavaObjectCompatibilityTest extends
IndexAbstractCompatibilit
/** */
@Test
public void testQueryOldInlinedIndex() throws Exception {
+ int majorJavaVersion = U.majorJavaVersion(U.jdkVersion());
+
+ if (majorJavaVersion > 11) {
+ Assume.assumeTrue("Skipped on jdk " + U.jdkVersion(),
+
VER_2_12_0.compareTo(IgniteReleasedVersion.fromString(igniteVer)) < 0);
+ }
+
PostStartupClosure closure = cfgInlineSize ? new
PostStartupClosureSized() : new PostStartupClosure();
String idxName = cfgInlineSize ? INDEX_SIZED_NAME : INDEX_NAME;
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MetaStorageCompatibilityTest.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MetaStorageCompatibilityTest.java
index 846864bfb2a..fce9b8a8ad2 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MetaStorageCompatibilityTest.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MetaStorageCompatibilityTest.java
@@ -23,6 +23,7 @@ import java.nio.file.OpenOption;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
+import
org.apache.ignite.compatibility.testframework.junits.SkipTestIfIsJdkNewer;
import org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -48,6 +49,7 @@ import static org.apache.ignite.cluster.ClusterState.ACTIVE;
/**
* Tests migration of metastorage.
*/
+@SkipTestIfIsJdkNewer(11)
public class MetaStorageCompatibilityTest extends
IgnitePersistenceCompatibilityAbstractTest {
/** Consistent id. */
private static final String CONSISTENT_ID_1 = "node1";
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MigratingToWalV2SerializerWithCompactionTest.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MigratingToWalV2SerializerWithCompactionTest.java
index 99c80675cfd..27e80d3801f 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MigratingToWalV2SerializerWithCompactionTest.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MigratingToWalV2SerializerWithCompactionTest.java
@@ -24,6 +24,7 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheWriteSynchronizationMode;
+import
org.apache.ignite.compatibility.testframework.junits.SkipTestIfIsJdkNewer;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
@@ -39,6 +40,7 @@ import org.junit.Test;
/**
* Saves data using previous version of ignite and then load this data using
actual version
*/
+@SkipTestIfIsJdkNewer(8)
public class MigratingToWalV2SerializerWithCompactionTest extends
IgnitePersistenceCompatibilityAbstractTest {
/** */
private static final String TEST_CACHE_NAME =
MigratingToWalV2SerializerWithCompactionTest.class.getSimpleName();
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MoveBinaryMetadataCompatibility.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MoveBinaryMetadataCompatibility.java
index 69f327b1125..94fe6130a03 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MoveBinaryMetadataCompatibility.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/MoveBinaryMetadataCompatibility.java
@@ -21,6 +21,7 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteBinary;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.binary.BinaryObject;
+import
org.apache.ignite.compatibility.testframework.junits.SkipTestIfIsJdkNewer;
import org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -30,6 +31,7 @@ import org.junit.Test;
/**
* Test for moving binary_meta and marshaller folders to PDS.
*/
+@SkipTestIfIsJdkNewer(11)
public class MoveBinaryMetadataCompatibility extends
IgnitePersistenceCompatibilityAbstractTest {
/** Test Ignite version. */
private static final String IGNITE_VERSION = "2.8.0";
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/PersistenceBasicCompatibilityTest.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/PersistenceBasicCompatibilityTest.java
index f14580fce5c..b23e57b38e2 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/PersistenceBasicCompatibilityTest.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/persistence/PersistenceBasicCompatibilityTest.java
@@ -29,6 +29,7 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheWriteSynchronizationMode;
+import org.apache.ignite.compatibility.IgniteReleasedVersion;
import org.apache.ignite.configuration.BinaryConfiguration;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.DataRegionConfiguration;
@@ -37,13 +38,17 @@ import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.PersistentStoreConfiguration;
import org.apache.ignite.internal.IgniteEx;
import
org.apache.ignite.internal.processors.cache.GridCacheAbstractFullApiSelfTest;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.junit.Assume;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import static org.apache.ignite.compatibility.IgniteReleasedVersion.VER_2_12_0;
import static org.apache.ignite.compatibility.IgniteReleasedVersion.VER_2_1_0;
+import static org.apache.ignite.compatibility.IgniteReleasedVersion.VER_2_3_0;
import static org.apache.ignite.compatibility.IgniteReleasedVersion.since;
import static org.apache.ignite.testframework.GridTestUtils.cartesianProduct;
@@ -97,6 +102,17 @@ public class PersistenceBasicCompatibilityTest extends
IgnitePersistenceCompatib
*/
@Test
public void testNodeStartByOldVersionPersistenceData() throws Exception {
+ int majorJavaVersion = U.majorJavaVersion(U.jdkVersion());
+
+ if (majorJavaVersion > 11) {
+ Assume.assumeTrue("Skipped on jdk " + U.jdkVersion(),
+
VER_2_12_0.compareTo(IgniteReleasedVersion.fromString(version)) < 0);
+ }
+ else if (majorJavaVersion > 8) {
+ Assume.assumeTrue("Skipped on jdk " + U.jdkVersion(),
+ VER_2_3_0.compareTo(IgniteReleasedVersion.fromString(version))
< 0);
+ }
+
doTestStartupWithOldVersion(version);
}
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java
index 384d17bde6f..49519e020bf 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java
@@ -40,6 +40,7 @@ import
org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.testframework.junits.multijvm.IgniteProcessProxy;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.junit.Rule;
import static
org.apache.ignite.compatibility.testframework.junits.Dependency.APACHE_IGNITE_GROUP_ID;
@@ -57,6 +58,10 @@ public abstract class IgniteCompatibilityAbstractTest
extends GridCommonAbstract
/** Waiting milliseconds of the join of a node to topology. */
protected static final int NODE_JOIN_TIMEOUT = 30_000;
+ /** */
+ @Rule
+ public SkipTestIfJdkNewerRule skipIfJdkNewerRule = new
SkipTestIfJdkNewerRule();
+
/** Local JVM Ignite node. */
protected transient Ignite locJvmInstance = null;
@@ -197,7 +202,9 @@ public abstract class IgniteCompatibilityAbstractTest
extends GridCommonAbstract
filteredJvmArgs.add("-ea");
for (String arg : U.jvmArgs()) {
- if (arg.startsWith("-Xmx") || arg.startsWith("-Xms"))
+ if (arg.startsWith("-Xmx") || arg.startsWith("-Xms") ||
arg.startsWith("--add-opens")
+ || arg.startsWith("--add-exports") ||
arg.startsWith("--add-modules")
+ || arg.startsWith("--patch-module") ||
arg.startsWith("--add-reads"))
filteredJvmArgs.add(arg);
}
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/SkipTestIfIsJdkNewer.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/SkipTestIfIsJdkNewer.java
new file mode 100644
index 00000000000..6528070c9a1
--- /dev/null
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/SkipTestIfIsJdkNewer.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.compatibility.testframework.junits;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+
+/** */
+@Retention( RetentionPolicy.RUNTIME )
+@Target({ METHOD, TYPE, ANNOTATION_TYPE })
+public @interface SkipTestIfIsJdkNewer {
+ /** Maximum JDK major version allowed. */
+ int value();
+}
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/SkipTestIfJdkNewerRule.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/SkipTestIfJdkNewerRule.java
new file mode 100644
index 00000000000..004b09804b4
--- /dev/null
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/SkipTestIfJdkNewerRule.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.compatibility.testframework.junits;
+
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.junit.Assume;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+/** */
+public class SkipTestIfJdkNewerRule implements TestRule {
+ /** */
+ private static final String jdkVersion = U.jdkVersion();
+
+ /** {@inheritDoc} */
+ @Override public Statement apply(Statement base, Description desc) {
+ Statement res = base;
+
+ SkipTestIfIsJdkNewer ann =
desc.getAnnotation(SkipTestIfIsJdkNewer.class);
+
+ if (ann == null)
+ ann =
desc.getTestClass().getAnnotation(SkipTestIfIsJdkNewer.class);
+
+ Assume.assumeTrue("Skipping test", ann == null ||
U.majorJavaVersion(jdkVersion) <= ann.value());
+
+ return res;
+ }
+}
diff --git
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/util/CompatibilityTestsUtils.java
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/util/CompatibilityTestsUtils.java
index 5e6be51acb0..15701ba4dd7 100644
---
a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/util/CompatibilityTestsUtils.java
+++
b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/util/CompatibilityTestsUtils.java
@@ -19,8 +19,10 @@ package org.apache.ignite.compatibility.testframework.util;
import java.io.File;
import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
import java.net.URL;
import java.net.URLClassLoader;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.jetbrains.annotations.Nullable;
/**
@@ -60,9 +62,11 @@ public class CompatibilityTestsUtils {
return ((URLClassLoader)clsLdr).getURLs();
else if (bltClsLdrCls != null && urlClsLdrField != null &&
bltClsLdrCls.isAssignableFrom(clsLdr.getClass())) {
try {
- return ((URLClassLoader)urlClsLdrField.get(clsLdr)).getURLs();
+ Object ucp = urlClsLdrField.get(clsLdr);
+
+ return
(URL[])ucp.getClass().getDeclaredMethod("getURLs").invoke(ucp);
}
- catch (IllegalAccessException e) {
+ catch (IllegalAccessException | NoSuchMethodException |
InvocationTargetException e) {
return EMPTY_URL_ARR;
}
}
@@ -82,14 +86,12 @@ public class CompatibilityTestsUtils {
/** */
@Nullable private static Field urlClassLoaderField() {
- try {
- Class cls = defaultClassLoaderClass();
+ Class cls = defaultClassLoaderClass();
- return cls == null ? null : cls.getDeclaredField("ucp");
- }
- catch (NoSuchFieldException e) {
+ if (cls == null)
return null;
- }
+
+ return U.findField(cls, "ucp");
}
/**
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
b/modules/core/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
index b53e52c183e..5922f1de997 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
@@ -29,6 +29,7 @@ public class FeatureChecker {
"--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED\n" +
"--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED\n"
+
"--add-opens=java.base/jdk.internal.access=ALL-UNNAMED\n" +
+ "--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED\n" +
"--illegal-access=permit";
/** Required Options to Run on Java 15 and higher. */
@@ -36,6 +37,7 @@ public class FeatureChecker {
"--add-opens=java.base/jdk.internal.access=ALL-UNNAMED\n" +
"--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED\n" +
"--add-opens=java.base/sun.nio.ch=ALL-UNNAMED\n" +
+ "--add-opens=java.base/sun.util.calendar=ALL-UNNAMED\n" +
"--add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED\n" +
"--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED\n" +
"--add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED\n" +
@@ -43,6 +45,7 @@ public class FeatureChecker {
"--add-opens=java.base/java.io=ALL-UNNAMED\n" +
"--add-opens=java.base/java.nio=ALL-UNNAMED\n" +
"--add-opens=java.base/java.util=ALL-UNNAMED\n" +
+ "--add-opens=java.base/java.net=ALL-UNNAMED\"" +
"--add-opens=java.base/java.util.concurrent=ALL-UNNAMED\n" +
"--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED\n" +
"--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED\n" +
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/client/thin/ReliableChannelTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/client/thin/ReliableChannelTest.java
index 5b9c88e79d7..6bed312375a 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/client/thin/ReliableChannelTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/client/thin/ReliableChannelTest.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.client.thin;
+import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -119,7 +120,9 @@ public class ReliableChannelTest {
rc.channelsInit();
-
usedChannels.add(F.first(rc.getChannelHolders().get(rc.getCurrentChannelIndex()).getAddresses()).toString());
+ InetSocketAddress addr =
F.first(rc.getChannelHolders().get(rc.getCurrentChannelIndex()).getAddresses());
+
+ usedChannels.add(addr.toString().replace("/<unresolved>", "")); //
Remove unnecessary part on JDK 17.
}
return usedChannels;
@@ -144,7 +147,7 @@ public class ReliableChannelTest {
ReliableChannel rc = new ReliableChannel(chFactory, ccfg, null);
Supplier<List<String>> holderAddresses = () ->
rc.getChannelHolders().stream()
- .map(h -> F.first(h.getAddresses()).toString())
+ .map(h ->
F.first(h.getAddresses()).toString().replace("/<unresolved>", "")) // Replace
unnecessary part on JDK 17.
.sorted()
.collect(Collectors.toList());
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerMxBeanIllegalArgumentHandleTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerMxBeanIllegalArgumentHandleTest.java
index 10e6f2da66f..766c0437ba1 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerMxBeanIllegalArgumentHandleTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerMxBeanIllegalArgumentHandleTest.java
@@ -20,14 +20,13 @@ package org.apache.ignite.internal.managers;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.spi.metric.noop.NoopMetricExporterSpi;
import org.jetbrains.annotations.NotNull;
-import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
@@ -43,29 +42,30 @@ import static org.mockito.Mockito.when;
* Test modifies static final field, used only for development
*/
public class GridManagerMxBeanIllegalArgumentHandleTest {
- /** Original value of {@link GridMetricManager#mem} to be restored after
test */
- private Object mxBeanToRestore;
-
- /** Mem mx bean field in {@link GridMetricManager#mem}, already set
accessible */
- private Field memMxBeanField;
-
- /** If we succeeded to set final field this flag is true, otherwise test
assertions will not be performed */
- private boolean correctSetupOfTestPerformed;
+ /** Patched {@code GridMetricManager}. */
+ private GridMetricManager mgr;
/** Changes field to always failing mock. */
@Before
public void setUp() throws Exception {
- try {
- final MemoryMXBean memoryMXBean = createAlwaysFailingMxBean();
- memMxBeanField = createAccessibleMemField();
- mxBeanToRestore = memMxBeanField.get(null);
- memMxBeanField.set(null, memoryMXBean);
+ IgniteConfiguration cfg = new IgniteConfiguration();
+ cfg.setMetricExporterSpi(new NoopMetricExporterSpi());
+
+ IgniteLogger log = Mockito.mock(IgniteLogger.class);
+
+ GridKernalContext ctx = Mockito.mock(GridKernalContext.class);
+ when(ctx.config()).thenReturn(cfg);
+ when(ctx.log(Mockito.anyString())).thenReturn(log);
+ when(ctx.log(Mockito.any(Class.class))).thenReturn(log);
+
+ mgr = new GridMetricManager(ctx);
- correctSetupOfTestPerformed = memMxBeanField.get(null) ==
memoryMXBean;
- }
- catch (Exception e) {
- e.printStackTrace();
- }
+ MemoryMXBean memoryMXBean = createAlwaysFailingMxBean();
+ Field memField = GridMetricManager.class.getDeclaredField("mem");
+ Object memMxBeanFieldBase = GridUnsafe.staticFieldBase(memField);
+ long memMxBeanFieldOffset = GridUnsafe.staticFieldOffset(memField);
+
+ GridUnsafe.putObjectField(memMxBeanFieldBase, memMxBeanFieldOffset,
memoryMXBean);
}
/** MX bean which is always failing to respond with metrics */
@@ -83,49 +83,13 @@ public class GridManagerMxBeanIllegalArgumentHandleTest {
return memoryMXBean;
}
-
- /** Reflections {@link GridMetricManager#mem} field which was made
accessible and mutable */
- @NotNull private Field createAccessibleMemField() throws
NoSuchFieldException, IllegalAccessException {
- final Field memField = GridMetricManager.class.getDeclaredField("mem");
- memField.setAccessible(true);
-
- final Field modifiersField = Field.class.getDeclaredField("modifiers");
- modifiersField.setAccessible(true);
- modifiersField.setInt(memField, memField.getModifiers() &
~Modifier.FINAL);
- return memField;
- }
-
- /**
- * Restores static field in {@link GridMetricManager#mem}
- *
- * @throws Exception if field set failed
- */
- @After
- public void tearDown() throws Exception {
- if (correctSetupOfTestPerformed)
- memMxBeanField.set(null, mxBeanToRestore);
- }
-
- /** Creates minimal disco manager mock, checks illegal state is not
propagated */
+ /** Checks illegal state is not propagated. */
@Test
public void testIllegalStateIsCatch() {
- final IgniteConfiguration cfg = new IgniteConfiguration();
- cfg.setMetricExporterSpi(new NoopMetricExporterSpi());
-
- final IgniteLogger log = Mockito.mock(IgniteLogger.class);
-
- final GridKernalContext ctx = Mockito.mock(GridKernalContext.class);
- when(ctx.config()).thenReturn(cfg);
- when(ctx.log(Mockito.anyString())).thenReturn(log);
- when(ctx.log(Mockito.any(Class.class))).thenReturn(log);
-
- final GridMetricManager mgr = new GridMetricManager(ctx);
final long nHeapMax = mgr.nonHeapMemoryUsage().getMax();
- if (correctSetupOfTestPerformed)
- assertEquals(0, nHeapMax);
+ assertEquals(0, nHeapMax);
final long heapMax = mgr.heapMemoryUsage().getMax();
- if (correctSetupOfTestPerformed)
- assertEquals(0, heapMax);
+ assertEquals(0, heapMax);
}
}
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 236aa0c8730..78bf347ec2e 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
@@ -104,6 +104,7 @@ import
org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDataba
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;
@@ -1799,6 +1800,14 @@ public final class GridTestUtils {
if (isFinal && isStatic)
throw new IgniteException("Modification of static final field
through reflection.");
+ if (isFinal && U.majorJavaVersion(U.jdkVersion()) >= 12) {
+ long fieldOffset = GridUnsafe.objectFieldOffset(field);
+
+ GridUnsafe.putObjectField(obj, fieldOffset, val);
+
+ return;
+ }
+
if (isFinal) {
Field modifiersField =
Field.class.getDeclaredField("modifiers");
diff --git a/modules/platforms/cpp/core/src/ignition.cpp
b/modules/platforms/cpp/core/src/ignition.cpp
index ccc5c7dbf13..0172984cda2 100644
--- a/modules/platforms/cpp/core/src/ignition.cpp
+++ b/modules/platforms/cpp/core/src/ignition.cpp
@@ -156,11 +156,13 @@ namespace ignite
opts.push_back(CopyChars("--add-opens=java.base/jdk.internal.access=ALL-UNNAMED"));
opts.push_back(CopyChars("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED"));
opts.push_back(CopyChars("--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"));
+
opts.push_back(CopyChars("--add-opens=java.base/sun.util.calendar=ALL-UNNAMED"));
opts.push_back(CopyChars("--add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED"));
opts.push_back(CopyChars("--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED"));
opts.push_back(CopyChars("--add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED"));
opts.push_back(CopyChars("--add-opens=java.base/java.io=ALL-UNNAMED"));
opts.push_back(CopyChars("--add-opens=java.base/java.nio=ALL-UNNAMED"));
+
opts.push_back(CopyChars("--add-opens=java.base/java.net=ALL-UNNAMED"));
opts.push_back(CopyChars("--add-opens=java.base/java.util=ALL-UNNAMED"));
opts.push_back(CopyChars("--add-opens=java.base/java.util.concurrent=ALL-UNNAMED"));
opts.push_back(CopyChars("--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED"));
diff --git
a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/Jvm.cs
b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/Jvm.cs
index 30f3fc669e7..69bbef8cf56 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/Jvm.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/Jvm.cs
@@ -55,11 +55,13 @@ namespace Apache.Ignite.Core.Impl.Unmanaged.Jni
"--add-opens=java.base/jdk.internal.access=ALL-UNNAMED",
"--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED",
"--add-opens=java.base/sun.nio.ch=ALL-UNNAMED",
+ "--add-opens=java.base/sun.util.calendar=ALL-UNNAMED",
"--add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED",
"--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED",
"--add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED",
"--add-opens=java.base/java.io=ALL-UNNAMED",
"--add-opens=java.base/java.nio=ALL-UNNAMED",
+ "--add-opens=java.base/java.net=ALL-UNNAMED",
"--add-opens=java.base/java.util=ALL-UNNAMED",
"--add-opens=java.base/java.util.concurrent=ALL-UNNAMED",
"--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED",
diff --git a/modules/tools/pom.xml b/modules/tools/pom.xml
index f333f9af0a7..c0db282de0a 100644
--- a/modules/tools/pom.xml
+++ b/modules/tools/pom.xml
@@ -179,6 +179,12 @@
<groupId>org.apache.maven.surefire</groupId>
<artifactId>maven-surefire-common</artifactId>
<version>${surefire.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
diff --git a/parent/pom.xml b/parent/pom.xml
index 396759836d9..a53fb05a30b 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -918,7 +918,18 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
-
<argLine>--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED
--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
--add-opens=java.base/jdk.internal.access=ALL-UNNAMED --illegal-access=permit</
[...]
+ <argLine>
+
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED
+ --add-exports=java.base/sun.nio.ch=ALL-UNNAMED
+
--add-exports=java.base/jdk.internal.loader=ALL-UNNAMED
+
--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
+
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
+
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
+
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
+
--add-opens=java.base/jdk.internal.access=ALL-UNNAMED
+
--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
+ --illegal-access=permit
+ </argLine>
</configuration>
</plugin>
@@ -986,8 +997,12 @@
<arg>--add-exports</arg>
<arg>java.base/jdk.internal.misc=ALL-UNNAMED</arg>
<arg>--add-exports</arg>
+
<arg>java.base/jdk.internal.loader=ALL-UNNAMED</arg>
+ <arg>--add-exports</arg>
<arg>java.base/sun.nio.ch=ALL-UNNAMED</arg>
<arg>--add-exports</arg>
+ <arg>java.base/sun.net.util=ALL-UNNAMED</arg>
+ <arg>--add-exports</arg>
<arg>java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED</arg>
<arg>--add-exports</arg>
<arg>jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED</arg>
@@ -1013,14 +1028,19 @@
<configuration>
<argLine>
--add-opens=java.base/jdk.internal.access=ALL-UNNAMED
+
--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED
+ --add-opens=java.base/sun.net.util=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
+ --add-opens=java.base/sun.nio.fs=ALL-UNNAMED
+
--add-opens=java.base/sun.util.calendar=ALL-UNNAMED
--add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
--add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
+ --add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED
@@ -1032,6 +1052,7 @@
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--add-opens=java.base/java.time=ALL-UNNAMED
--add-opens=java.base/java.text=ALL-UNNAMED
+ --add-opens=java.base/java.security=ALL-UNNAMED
--add-opens=java.management/sun.management=ALL-UNNAMED
--add-opens
java.desktop/java.awt.font=ALL-UNNAMED
</argLine>