You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Aleksey Plekhanov (JIRA)" <ji...@apache.org> on 2019/02/27 15:18:00 UTC

[jira] [Created] (IGNITE-11437) Start grid in remote JVM in test framework fails if TDE is enabled

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)