This is an automated email from the ASF dual-hosted git repository.
ibessonov 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 277fbb2234a IGNITE-17272 Fix logical recovery of encrypted caches
(#10122)
277fbb2234a is described below
commit 277fbb2234a86c14f5e660ec8dfbedcee1540bd2
Author: Alexander Polovtcev <[email protected]>
AuthorDate: Fri Jul 1 11:41:23 2022 +0300
IGNITE-17272 Fix logical recovery of encrypted caches (#10122)
---
.../internal/pagemem/wal/record/WALRecord.java | 4 +-
.../wal/serializer/RecordV2Serializer.java | 36 ++++---
.../cache/mvcc/CacheMvccTxFailoverTest.java | 4 +-
.../db/IgniteLogicalRecoveryEncryptionTest.java | 114 +++++++++++++++++++++
.../wal/AbstractWalDeltaConsistencyTest.java | 4 +-
.../cache/transactions/TxStateChangeEventTest.java | 4 +-
.../testframework/junits/GridAbstractTest.java | 36 +++----
.../H2DynamicColumnsAbstractBasicSelfTest.java | 22 ++--
.../IgnitePdsWithIndexingCoreTestSuite.java | 2 +
9 files changed, 174 insertions(+), 52 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/WALRecord.java
b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/WALRecord.java
index fe3f1965478..c726ee24766 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/WALRecord.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/WALRecord.java
@@ -205,7 +205,7 @@ public abstract class WALRecord {
MVCC_DATA_PAGE_NEW_TX_STATE_HINT_UPDATED_RECORD(51, PHYSICAL),
/** Encrypted WAL-record. */
- ENCRYPTED_RECORD(52, PHYSICAL),
+ ENCRYPTED_RECORD(52, MIXED),
/**
* Ecnrypted data record.
@@ -242,7 +242,7 @@ public abstract class WALRecord {
OUT_OF_ORDER_UPDATE(62, LOGICAL),
/** Encrypted WAL-record. */
- ENCRYPTED_RECORD_V2(63, PHYSICAL),
+ ENCRYPTED_RECORD_V2(63, MIXED),
/**
* Ecnrypted data record.
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordV2Serializer.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordV2Serializer.java
index 35a89477e68..f2c8b7f50d5 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordV2Serializer.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordV2Serializer.java
@@ -37,9 +37,12 @@ import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.lang.IgniteBiPredicate;
import static
org.apache.ignite.internal.pagemem.wal.record.WALRecord.RecordType;
+import static
org.apache.ignite.internal.pagemem.wal.record.WALRecord.RecordType.ENCRYPTED_RECORD;
+import static
org.apache.ignite.internal.pagemem.wal.record.WALRecord.RecordType.ENCRYPTED_RECORD_V2;
import static
org.apache.ignite.internal.pagemem.wal.record.WALRecord.RecordType.SWITCH_SEGMENT_RECORD;
import static
org.apache.ignite.internal.processors.cache.persistence.wal.serializer.RecordV1Serializer.CRC_SIZE;
import static
org.apache.ignite.internal.processors.cache.persistence.wal.serializer.RecordV1Serializer.REC_TYPE_SIZE;
+import static
org.apache.ignite.internal.processors.cache.persistence.wal.serializer.RecordV1Serializer.readRecordType;
/**
* Record V2 serializer.
@@ -72,15 +75,8 @@ public class RecordV2Serializer implements RecordSerializer {
private final boolean skipPositionCheck;
/** Thread-local heap byte buffer. */
- private final ThreadLocal<ByteBuffer> heapTlb = new
ThreadLocal<ByteBuffer>() {
- @Override protected ByteBuffer initialValue() {
- ByteBuffer buf = ByteBuffer.allocate(4096);
-
- buf.order(GridUnsafe.NATIVE_BYTE_ORDER);
-
- return buf;
- }
- };
+ private final ThreadLocal<ByteBuffer> heapTlb =
+ ThreadLocal.withInitial(() ->
ByteBuffer.allocate(4096).order(GridUnsafe.NATIVE_BYTE_ORDER));
/**
* Record type filter.
@@ -107,7 +103,7 @@ public class RecordV2Serializer implements RecordSerializer
{
ByteBufferBackedDataInput in,
WALPointer expPtr
) throws IOException, IgniteCheckedException {
- WALRecord.RecordType recType =
RecordV1Serializer.readRecordType(in);
+ RecordType recType = readRecordType(in);
if (recType == SWITCH_SEGMENT_RECORD)
throw new SegmentEofException("Reached end of segment", null);
@@ -119,8 +115,22 @@ public class RecordV2Serializer implements
RecordSerializer {
", expected pointer [idx=" + expPtr.index() + ", offset="
+ expPtr.fileOffset() + "]");
}
- if (recType.purpose() != WALRecord.RecordPurpose.INTERNAL
- && recordFilter != null && !recordFilter.apply(recType, ptr)) {
+ RecordType actualType = recType;
+
+ // In case of encrypted records we should check the type of the
nested record
+ if (recType == ENCRYPTED_RECORD || recType == ENCRYPTED_RECORD_V2)
{
+ in.buffer().mark();
+
+ // Ignore grpId (4 bytes) and record size (4 bytes)
+ in.skipBytes(4 + 4);
+
+ actualType = readRecordType(in);
+
+ in.buffer().reset();
+ }
+
+ if (actualType.purpose() != WALRecord.RecordPurpose.INTERNAL
+ && recordFilter != null && !recordFilter.apply(actualType,
ptr)) {
int toSkip = ptr.length() - REC_TYPE_SIZE -
FILE_WAL_POINTER_SIZE - CRC_SIZE;
assert toSkip >= 0 : "Too small saved record length: ptr=" +
ptr + ", type=" + recType;
@@ -245,7 +255,7 @@ public class RecordV2Serializer implements RecordSerializer
{
DataInput in,
WALPointer expPtr,
boolean skipPositionCheck,
- WALRecord.RecordType type
+ RecordType type
) throws IgniteCheckedException, IOException {
long idx = in.readLong();
int fileOff = in.readInt();
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccTxFailoverTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccTxFailoverTest.java
index fb5d5cd8ceb..bc1275e8c70 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccTxFailoverTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccTxFailoverTest.java
@@ -37,6 +37,7 @@ import
org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAhea
import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.GridAbstractTest;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.transactions.Transaction;
import org.apache.ignite.transactions.TransactionConcurrency;
@@ -75,9 +76,8 @@ public class CacheMvccTxFailoverTest extends
GridCommonAbstractTest {
/**
* @return Cache configuration.
*/
- @SuppressWarnings("unchecked")
protected CacheConfiguration<Integer, Integer> cacheConfiguration() {
- return defaultCacheConfiguration()
+ return GridAbstractTest.<Integer, Integer>defaultCacheConfiguration()
.setNearConfiguration(null)
.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT)
.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteLogicalRecoveryEncryptionTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteLogicalRecoveryEncryptionTest.java
new file mode 100644
index 00000000000..9274bc58e9d
--- /dev/null
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteLogicalRecoveryEncryptionTest.java
@@ -0,0 +1,114 @@
+/*
+ * 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.internal.processors.cache.persistence.db;
+
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.encryption.AbstractEncryptionTest;
+import
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
+import org.apache.ignite.spi.encryption.keystore.KeystoreEncryptionSpi;
+import org.apache.ignite.testframework.junits.GridAbstractTest;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Test;
+
+/**
+ * Class containing tests for logical recovery of encrypted caches.
+ */
+public class IgniteLogicalRecoveryEncryptionTest extends
GridCommonAbstractTest {
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String
igniteInstanceName) throws Exception {
+ KeystoreEncryptionSpi encSpi = new KeystoreEncryptionSpi();
+
+ encSpi.setKeyStorePath(AbstractEncryptionTest.KEYSTORE_PATH);
+
encSpi.setKeyStorePassword(AbstractEncryptionTest.KEYSTORE_PASSWORD.toCharArray());
+
+ return super.getConfiguration(igniteInstanceName)
+ .setEncryptionSpi(encSpi)
+ .setDataStorageConfiguration(new DataStorageConfiguration()
+ .setDefaultDataRegionConfiguration(new
DataRegionConfiguration()
+ .setPersistenceEnabled(true)
+ ));
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ stopAllGrids();
+
+ cleanPersistenceDir();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ stopAllGrids();
+
+ cleanPersistenceDir();
+ }
+
+ /**
+ * Tests a scenario that partition states of encrypted caches are
successfully restored by logical recovery.
+ */
+ @Test
+ public void testRecoverPartitionStates() throws Exception {
+ IgniteEx ignite = startTestGrid();
+
+ // Disable checkpoints to force logical recovery
+ GridCacheDatabaseSharedManager dbMgr =
(GridCacheDatabaseSharedManager)ignite
+ .context()
+ .cache()
+ .context()
+ .database();
+
+ dbMgr.enableCheckpoints(false).get();
+
+ // Create a dynamic cache to ensure that partition states get restored
(static caches may skip that step)
+ CacheConfiguration<Integer, Integer> cacheCfg =
GridAbstractTest.<Integer, Integer>defaultCacheConfiguration()
+ .setEncryptionEnabled(true);
+
+ IgniteCache<Integer, Integer> cache = ignite.createCache(cacheCfg);
+
+ for (int i = 0; i < 100; i++)
+ cache.put(i, i);
+
+ stopAllGrids();
+
+ ignite = startTestGrid();
+
+ cache = ignite.cache(DEFAULT_CACHE_NAME);
+
+ for (int i = 0; i < 100; i++)
+ assertEquals(i, cache.get(i).intValue());
+ }
+
+ /**
+ * Creates a cluster of two nodes.
+ */
+ private IgniteEx startTestGrid() throws Exception {
+ IgniteEx ignite = startGrids(2);
+
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ awaitPartitionMapExchange();
+
+ return ignite;
+ }
+}
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalDeltaConsistencyTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalDeltaConsistencyTest.java
index 1d5b345896b..dc6894e85bc 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalDeltaConsistencyTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalDeltaConsistencyTest.java
@@ -27,6 +27,7 @@ import org.apache.ignite.failure.FailureHandler;
import org.apache.ignite.failure.FailureType;
import org.apache.ignite.failure.StopNodeFailureHandler;
import
org.apache.ignite.internal.processors.cache.persistence.wal.memtracker.PageMemoryTrackerConfiguration;
+import org.apache.ignite.testframework.junits.GridAbstractTest;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
/**
@@ -51,9 +52,8 @@ public abstract class AbstractWalDeltaConsistencyTest extends
GridCommonAbstract
* @param name Cache name.
* @return Cache configuration.
*/
- @SuppressWarnings("unchecked")
protected <K, V> CacheConfiguration<K, V> cacheConfiguration(String name) {
- return defaultCacheConfiguration().setName(name);
+ return GridAbstractTest.<K,
V>defaultCacheConfiguration().setName(name);
}
/**
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxStateChangeEventTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxStateChangeEventTest.java
index 3761594f75c..e8eae496b49 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxStateChangeEventTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxStateChangeEventTest.java
@@ -31,6 +31,7 @@ import
org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.testframework.MvccFeatureChecker;
+import org.apache.ignite.testframework.junits.GridAbstractTest;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.transactions.Transaction;
import org.apache.ignite.transactions.TransactionConcurrency;
@@ -131,9 +132,8 @@ public class TxStateChangeEventTest extends
GridCommonAbstractTest {
}
/** */
- @SuppressWarnings("unchecked")
private CacheConfiguration<Integer, Integer> getCacheConfig() {
- return defaultCacheConfiguration().setBackups(2);
+ return GridAbstractTest.<Integer,
Integer>defaultCacheConfiguration().setBackups(2);
}
/**
diff --git
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index dfeb9c2c1f9..70144a12f41 100755
---
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -199,10 +199,10 @@ public abstract class GridAbstractTest extends
JUnitAssertAware {
private static final int DFLT_TOP_WAIT_TIMEOUT = 2000;
/** */
- private static final transient Map<Class<?>, IgniteTestResources> tests =
new ConcurrentHashMap<>();
+ private static final Map<Class<?>, IgniteTestResources> tests = new
ConcurrentHashMap<>();
/** Loggers with changed log level for test's purposes. */
- private static final transient Map<Logger, Level> changedLevels = new
ConcurrentHashMap<>();
+ private static final Map<Logger, Level> changedLevels = new
ConcurrentHashMap<>();
/** */
private static final MemoryMXBean memoryMxBean =
ManagementFactory.getMemoryMXBean();
@@ -258,16 +258,16 @@ public abstract class GridAbstractTest extends
JUnitAssertAware {
.around(runRule);
/** */
- private static transient boolean startGrid;
+ private static boolean startGrid;
/** */
- protected static transient IgniteLogger log;
+ protected static IgniteLogger log;
/** */
- private static transient ClassLoader clsLdr;
+ private static ClassLoader clsLdr;
/** */
- private static transient boolean stopGridErr;
+ private static boolean stopGridErr;
/** Timestamp for tests. */
private static long ts = System.currentTimeMillis();
@@ -345,8 +345,8 @@ public abstract class GridAbstractTest extends
JUnitAssertAware {
*/
protected void afterTest() throws Exception {
try {
- for (Logger logger : changedLevels.keySet())
- logger.setLevel(changedLevels.get(logger));
+ for (Map.Entry<Logger, Level> entry : changedLevels.entrySet())
+ entry.getKey().setLevel(entry.getValue());
}
finally {
changedLevels.clear();
@@ -2112,9 +2112,8 @@ public abstract class GridAbstractTest extends
JUnitAssertAware {
/**
* @return New cache configuration with modified defaults.
*/
- @SuppressWarnings("unchecked")
- public static CacheConfiguration defaultCacheConfiguration() {
- CacheConfiguration cfg = new CacheConfiguration(DEFAULT_CACHE_NAME);
+ public static <K, V> CacheConfiguration<K, V> defaultCacheConfiguration() {
+ CacheConfiguration<K, V> cfg = new
CacheConfiguration<>(DEFAULT_CACHE_NAME);
if (MvccFeatureChecker.forcedMvcc())
cfg.setAtomicityMode(TRANSACTIONAL_SNAPSHOT);
@@ -2403,13 +2402,8 @@ public abstract class GridAbstractTest extends
JUnitAssertAware {
/**
* @return Test resources.
*/
- private synchronized IgniteTestResources getIgniteTestResources() throws
IgniteCheckedException {
- IgniteTestResources rsrcs = tests.get(getClass());
-
- if (rsrcs == null)
- tests.put(getClass(), rsrcs = new IgniteTestResources());
-
- return rsrcs;
+ private IgniteTestResources getIgniteTestResources() {
+ return tests.computeIfAbsent(getClass(), cls -> new
IgniteTestResources());
}
/**
@@ -2768,7 +2762,7 @@ public abstract class GridAbstractTest extends
JUnitAssertAware {
/**
*
*/
- private static interface WriteReplaceOwner {
+ private interface WriteReplaceOwner {
/**
*
*/
@@ -2865,7 +2859,7 @@ public abstract class GridAbstractTest extends
JUnitAssertAware {
}
/** */
- public static interface TestIgniteCallable<R> extends Serializable {
+ public interface TestIgniteCallable<R> extends Serializable {
/**
* @param ignite Ignite.
*/
@@ -2922,7 +2916,7 @@ public abstract class GridAbstractTest extends
JUnitAssertAware {
}
/** */
- public static interface TestCacheCallable<K, V, R> extends Serializable {
+ public interface TestCacheCallable<K, V, R> extends Serializable {
/**
* @param ignite Ignite.
* @param cache Cache.
diff --git
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2DynamicColumnsAbstractBasicSelfTest.java
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2DynamicColumnsAbstractBasicSelfTest.java
index f0953e2fb47..797a8383ed8 100644
---
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2DynamicColumnsAbstractBasicSelfTest.java
+++
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2DynamicColumnsAbstractBasicSelfTest.java
@@ -32,6 +32,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.processors.query.QueryField;
import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.testframework.config.GridTestProperties;
+import org.apache.ignite.testframework.junits.GridAbstractTest;
import org.h2.jdbc.JdbcSQLException;
import org.junit.Assert;
import org.junit.Test;
@@ -164,7 +165,6 @@ public abstract class H2DynamicColumnsAbstractBasicSelfTest
extends DynamicColum
}
/** */
- @SuppressWarnings("unchecked")
@Test
public void testComplexOperations() {
IgniteCache<BinaryObject, BinaryObject> cache = ignite(nodeIndex())
@@ -178,8 +178,10 @@ public abstract class
H2DynamicColumnsAbstractBasicSelfTest extends DynamicColum
run(cache, "CREATE INDEX pidx1 ON Person(name, city desc)");
- CacheConfiguration<Integer, City> ccfg =
defaultCacheConfiguration().setName("City")
- .setIndexedTypes(Integer.class,
City.class).setSqlSchema(QueryUtils.DFLT_SCHEMA);
+ CacheConfiguration<Integer, City> ccfg = GridAbstractTest.<Integer,
City>defaultCacheConfiguration()
+ .setName("City")
+ .setIndexedTypes(Integer.class, City.class)
+ .setSqlSchema(QueryUtils.DFLT_SCHEMA);
ccfg.getQueryEntities().iterator().next().setKeyFieldName("id");
@@ -252,10 +254,10 @@ public abstract class
H2DynamicColumnsAbstractBasicSelfTest extends DynamicColum
/**
* Test that we can add columns dynamically to tables associated with non
dynamic caches storing user types as well.
*/
- @SuppressWarnings("unchecked")
@Test
public void testAddColumnToNonDynamicCacheWithRealValueType() throws
SQLException {
- CacheConfiguration<Integer, City> ccfg =
defaultCacheConfiguration().setName("City")
+ CacheConfiguration<Integer, City> ccfg = GridAbstractTest.<Integer,
City>defaultCacheConfiguration()
+ .setName("City")
.setIndexedTypes(Integer.class, City.class);
IgniteCache<Integer, ?> cache =
ignite(nodeIndex()).getOrCreateCache(ccfg);
@@ -299,11 +301,11 @@ public abstract class
H2DynamicColumnsAbstractBasicSelfTest extends DynamicColum
*
* @throws SQLException If failed.
*/
- @SuppressWarnings("unchecked")
@Test
public void testAddColumnUUID() throws SQLException {
- CacheConfiguration<Integer, Object> ccfg =
defaultCacheConfiguration().setName("GuidTest")
- .setIndexedTypes(Integer.class, GuidTest.class);
+ CacheConfiguration<Integer, Object> ccfg = GridAbstractTest.<Integer,
Object>defaultCacheConfiguration()
+ .setName("GuidTest")
+ .setIndexedTypes(Integer.class, GuidTest.class);
Random rnd = new Random();
@@ -674,10 +676,10 @@ public abstract class
H2DynamicColumnsAbstractBasicSelfTest extends DynamicColum
*
* @throws SQLException if failed.
*/
- @SuppressWarnings("unchecked")
@Test
public void testDropColumnFromNonDynamicCacheWithRealValueType() throws
SQLException {
- CacheConfiguration<Integer, City> ccfg =
defaultCacheConfiguration().setName("City")
+ CacheConfiguration<Integer, City> ccfg = GridAbstractTest.<Integer,
City>defaultCacheConfiguration()
+ .setName("City")
.setIndexedTypes(Integer.class, City.class);
IgniteCache<Integer, ?> cache =
ignite(nodeIndex()).getOrCreateCache(ccfg);
diff --git
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java
index c84a63a1b1d..7790acd7015 100644
---
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java
+++
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgnitePdsWithIndexingCoreTestSuite.java
@@ -30,6 +30,7 @@ import
org.apache.ignite.internal.processors.cache.persistence.IgnitePersistentS
import
org.apache.ignite.internal.processors.cache.persistence.PersistenceDirectoryWarningLoggingTest;
import
org.apache.ignite.internal.processors.cache.persistence.RestorePartitionStateDuringCheckpointTest;
import
org.apache.ignite.internal.processors.cache.persistence.db.IgniteCacheGroupsWithRestartsTest;
+import
org.apache.ignite.internal.processors.cache.persistence.db.IgniteLogicalRecoveryEncryptionTest;
import
org.apache.ignite.internal.processors.cache.persistence.db.IgniteLogicalRecoveryTest;
import
org.apache.ignite.internal.processors.cache.persistence.db.IgniteLogicalRecoveryWithParamsTest;
import
org.apache.ignite.internal.processors.cache.persistence.db.IgnitePdsMultiNodePutGetRestartTest;
@@ -98,6 +99,7 @@ import org.junit.runners.Suite;
IgniteLogicalRecoveryTest.class,
IgniteLogicalRecoveryWithParamsTest.class,
+ IgniteLogicalRecoveryEncryptionTest.class,
IgniteSequentialNodeCrashRecoveryTest.class,