Aleksey Plekhanov created IGNITE-11437: ------------------------------------------
Summary: Start grid in remote JVM in test framework fails if TDE is enabled Key: IGNITE-11437 URL: https://issues.apache.org/jira/browse/IGNITE-11437 Project: Ignite Issue Type: Bug Reporter: Aleksey Plekhanov When we start grid in remote JVM with enabled TDE, it fails with exception: {noformat} java.lang.NullPointerException at java.lang.ThreadLocal$SuppliedThreadLocal.initialValue(ThreadLocal.java:284) at java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:180) at java.lang.ThreadLocal.get(ThreadLocal.java:170) at org.apache.ignite.spi.encryption.keystore.KeystoreEncryptionSpi.encrypt(KeystoreEncryptionSpi.java:211){noformat} Test framework uses {{XStream}} to pass Ignite configuration to remote JVM. {{XStream}} cannot serialize lamda expression and replace lambda with {{null}}. So, after deserialization {{ThreadLocal}} object has {{supplier == null}}. Reproducer: {code:java} public class TdeTest extends GridCommonAbstractTest { /** {@inheritDoc} */ @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { IgniteConfiguration cfg = super.getConfiguration(gridName); cfg.setDataStorageConfiguration(new DataStorageConfiguration() .setDefaultDataRegionConfiguration(new DataRegionConfiguration().setPersistenceEnabled(true))); KeystoreEncryptionSpi encSpi = new KeystoreEncryptionSpi(); encSpi.setKeyStorePath(AbstractEncryptionTest.KEYSTORE_PATH); encSpi.setKeyStorePassword(AbstractEncryptionTest.KEYSTORE_PASSWORD.toCharArray()); cfg.setEncryptionSpi(encSpi); cfg.setCacheConfiguration(new CacheConfiguration().setName("cache").setEncryptionEnabled(true)); return cfg; } /** {@inheritDoc} */ @Override protected boolean isMultiJvm() { return true; } @Test public void testTdeMultiJvm() throws Exception { startGrids(2); } } {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)