This is an automated email from the ASF dual-hosted git repository.
tkalkirill pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 1c3b44e617 IGNITE-17727 Improve storage code after Tables
Configuration changes (#1111)
1c3b44e617 is described below
commit 1c3b44e617263c73191ac36ba280fd1afd335a65
Author: Alexander Polovtcev <[email protected]>
AuthorDate: Thu Sep 22 11:56:23 2022 +0300
IGNITE-17727 Improve storage code after Tables Configuration changes (#1111)
---
.../apache/ignite/configuration/NamedListView.java | 2 +
.../configuration/util/ConfigurationUtil.java | 16 ++-
.../apache/ignite/internal/index/IndexManager.java | 2 +-
.../internal/rocksdb/flush/RocksDbFlusher.java | 31 ++++--
.../storage/index/HashIndexDescriptor.java | 10 +-
.../storage/index/SortedIndexDescriptor.java | 19 ++--
.../ConcurrentHashMapMvTableStorageTest.java | 49 +++++----
.../index/AbstractSortedIndexStorageTest.java | 16 ++-
.../storage/index/TestHashIndexStorageTest.java | 23 ++--
.../storage/index/TestSortedIndexStorageTest.java | 25 ++---
.../storage/AbstractMvTableStorageTest.java | 116 ++++++---------------
.../chm/TestConcurrentHashMapMvTableStorage.java | 8 +-
.../chm/TestConcurrentHashMapStorageEngine.java | 4 +-
.../index/AbstractHashIndexStorageTest.java | 18 ++--
.../PersistentPageMemoryStorageEngine.java | 7 +-
.../VolatilePageMemoryStorageEngine.java | 7 +-
.../mv/AbstractPageMemoryMvPartitionStorage.java | 9 +-
.../PersistentPageMemoryHashIndexStorageTest.java | 65 ++++--------
.../VolatilePageMemoryHashIndexStorageTest.java | 53 +++-------
.../AbstractPageMemoryMvPartitionStorageTest.java | 9 --
...PersistentPageMemoryMvPartitionStorageTest.java | 45 ++++----
.../VolatilePageMemoryMvPartitionStorageTest.java | 58 ++++-------
.../storage/rocksdb/RocksDbStorageEngine.java | 13 +--
.../storage/rocksdb/RocksDbTableStorage.java | 17 +--
.../internal/storage/rocksdb/SortedIndex.java | 7 ++
.../rocksdb/RocksDbMvPartitionStorageTest.java | 33 ++----
.../storage/rocksdb/RocksDbMvTableStorageTest.java | 49 ++++-----
.../storage/rocksdb/RocksDbStorageEngineTest.java | 42 ++++----
.../rocksdb/index/RocksDbHashIndexStorageTest.java | 15 +--
.../index/RocksDbSortedIndexStorageTest.java | 15 +--
30 files changed, 320 insertions(+), 463 deletions(-)
diff --git
a/modules/configuration-api/src/main/java/org/apache/ignite/configuration/NamedListView.java
b/modules/configuration-api/src/main/java/org/apache/ignite/configuration/NamedListView.java
index 4abdc50f08..ead8415df6 100644
---
a/modules/configuration-api/src/main/java/org/apache/ignite/configuration/NamedListView.java
+++
b/modules/configuration-api/src/main/java/org/apache/ignite/configuration/NamedListView.java
@@ -18,6 +18,7 @@
package org.apache.ignite.configuration;
import java.util.List;
+import org.jetbrains.annotations.Nullable;
/**
* View type for a {@link NamedConfigurationTree}. Represents an immutable
snapshot of a named list configuration.
@@ -38,6 +39,7 @@ public interface NamedListView<VIEWT> {
* @param key Key string.
* @return Requested value or {@code null} if it's not found.
*/
+ @Nullable
VIEWT get(String key);
/**
diff --git
a/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/util/ConfigurationUtil.java
b/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/util/ConfigurationUtil.java
index 557ef7fc2f..f050af139d 100644
---
a/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/util/ConfigurationUtil.java
+++
b/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/util/ConfigurationUtil.java
@@ -1157,16 +1157,26 @@ public class ConfigurationUtil {
}
/**
- * Returns named list node element by its internal id rather than its name.
+ * Returns the element located in the given named list node under the
given internal ID.
+ *
+ * @param node Named list node.
+ * @param internalId Internal ID of the element.
+ * @param <N> Type of the element.
+ * @return Element located in the named list node under the given internal
ID.
*/
+ @Nullable
public static <N> N getByInternalId(NamedListView<N> node, UUID
internalId) {
return node.get(((NamedListNode<?>) node).keyByInternalId(internalId));
}
/**
- * Returns internal id for the value associated with the passed key.
+ * Extracts the internal ID of the element located in the given named list
node under the given name.
+ *
+ * @param node Named list node.
+ * @param name Name of the element inside the named list node.
+ * @return Internal ID of the element.
*/
- public static <N> UUID getInternalId(NamedListView<N> node, String name) {
+ public static UUID internalId(NamedListView<?> node, String name) {
return ((NamedListNode<?>) node).internalId(name);
}
diff --git
a/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
b/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
index 216370bfa0..6359a38627 100644
---
a/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
+++
b/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
@@ -151,7 +151,7 @@ public class IndexManager extends Producer<IndexEvent,
IndexEventParameters> imp
UUID tableId;
try {
- tableId =
ConfigurationUtil.getInternalId(tablesCfg.tables().value(), canonicalName);
+ tableId =
ConfigurationUtil.internalId(tablesCfg.tables().value(), canonicalName);
} catch (IllegalArgumentException e) {
throw new TableNotFoundException(canonicalName);
}
diff --git
a/modules/rocksdb-common/src/main/java/org/apache/ignite/internal/rocksdb/flush/RocksDbFlusher.java
b/modules/rocksdb-common/src/main/java/org/apache/ignite/internal/rocksdb/flush/RocksDbFlusher.java
index 63ea3ea4c3..77d69a2449 100644
---
a/modules/rocksdb-common/src/main/java/org/apache/ignite/internal/rocksdb/flush/RocksDbFlusher.java
+++
b/modules/rocksdb-common/src/main/java/org/apache/ignite/internal/rocksdb/flush/RocksDbFlusher.java
@@ -17,11 +17,11 @@
package org.apache.ignite.internal.rocksdb.flush;
+import java.util.ArrayList;
import java.util.List;
import java.util.SortedMap;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentSkipListMap;
-import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@@ -48,7 +48,10 @@ public class RocksDbFlusher {
private volatile RocksDB db;
/** List of all column families. */
- private final List<ColumnFamilyHandle> columnFamilyHandles = new
CopyOnWriteArrayList<>();
+ private final List<ColumnFamilyHandle> columnFamilyHandles = new
ArrayList<>();
+
+ /** Mutex for {@link #columnFamilyHandles} access. */
+ private final Object columnFamilyHandlesMux = new Object();
/** Scheduled pool to schedule flushes. */
private final ScheduledExecutorService scheduledPool;
@@ -133,7 +136,10 @@ public class RocksDbFlusher {
@SuppressWarnings("AssignmentOrReturnOfFieldWithMutableType")
public void init(RocksDB db, List<ColumnFamilyHandle> columnFamilyHandles)
{
this.db = db;
- this.columnFamilyHandles.addAll(columnFamilyHandles);
+
+ synchronized (columnFamilyHandlesMux) {
+ this.columnFamilyHandles.addAll(columnFamilyHandles);
+ }
synchronized (latestPersistedSequenceNumberMux) {
latestPersistedSequenceNumber = db.getLatestSequenceNumber();
@@ -144,12 +150,23 @@ public class RocksDbFlusher {
* Adds the given handle to the list of CF handles.
*/
public void addColumnFamily(ColumnFamilyHandle handle) {
- columnFamilyHandles.add(handle);
+ synchronized (columnFamilyHandlesMux) {
+ columnFamilyHandles.add(handle);
+ }
+ }
+
+ /**
+ * Removes the given handle to the list of CF handles.
+ */
+ public void removeColumnFamily(ColumnFamilyHandle handle) {
+ synchronized (columnFamilyHandlesMux) {
+ columnFamilyHandles.remove(handle);
+ }
}
/**
* Returns a future to wait next flush operation from the current point in
time. Uses {@link RocksDB#getLatestSequenceNumber()} to
- * achieve this, by fixing its value at the time of invokation. Storage is
considered flushed when at least one persisted column
+ * achieve this, by fixing its value at the time of invocation. Storage is
considered flushed when at least one persisted column
* family has its latest sequence number greater or equal to the one that
we fixed. This is enough to guarantee that all column families
* have up-to-data state as well, because flusher expects its users to
also have {@link Options#setAtomicFlush(boolean)} option
* enabled.
@@ -198,7 +215,9 @@ public class RocksDbFlusher {
try {
// Explicit list of CF handles is mandatory!
// Default flush is buggy and only invokes listener
methods for a single random CF.
- db.flush(flushOptions, columnFamilyHandles);
+ synchronized (columnFamilyHandlesMux) {
+ db.flush(flushOptions, columnFamilyHandles);
+ }
} catch (RocksDBException e) {
LOG.error("Error occurred during the explicit flush", e);
} finally {
diff --git
a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexDescriptor.java
b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexDescriptor.java
index d72f24406e..b1bc14a6a5 100644
---
a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexDescriptor.java
+++
b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexDescriptor.java
@@ -90,12 +90,10 @@ public class HashIndexDescriptor {
/**
* Creates an Index Descriptor from a given Table Configuration.
*
- * @param tableConfig Table configuration.
* @param tablesConfig Tables and indexes configuration.
* @param indexId Index id.
*/
- // TODO: IGNITE-17727 Fix redundant param.
- public HashIndexDescriptor(UUID indexId, TableView tableConfig, TablesView
tablesConfig) {
+ public HashIndexDescriptor(UUID indexId, TablesView tablesConfig) {
TableIndexView indexConfig =
ConfigurationUtil.getByInternalId(tablesConfig.indexes(), indexId);
if (indexConfig == null) {
@@ -109,6 +107,12 @@ public class HashIndexDescriptor {
));
}
+ TableView tableConfig =
ConfigurationUtil.getByInternalId(tablesConfig.tables(), indexConfig.tableId());
+
+ if (tableConfig == null) {
+ throw new StorageException(String.format("Table configuration for
\"%s\" could not be found", indexConfig.tableId()));
+ }
+
this.id = indexId;
String[] indexColumns = ((HashIndexView) indexConfig).columnNames();
diff --git
a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java
b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java
index 6e2361118b..d59cc1305f 100644
---
a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java
+++
b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java
@@ -127,11 +127,10 @@ public class SortedIndexDescriptor {
* Creates an Index Descriptor from a given Table Configuration.
*
* @param indexId Index ID.
- * @param tableConfig Table configuration.
+ * @param tablesConfig Tables configuration.
*/
- // TODO: IGNITE-17727 Fix redundant param.
- public SortedIndexDescriptor(UUID indexId, TableView tableConfig,
TablesView tablesConfig) {
- this(indexId, extractIndexColumnsConfiguration(indexId, tableConfig,
tablesConfig));
+ public SortedIndexDescriptor(UUID indexId, TablesView tablesConfig) {
+ this(indexId, extractIndexColumnsConfiguration(indexId, tablesConfig));
}
/**
@@ -146,11 +145,7 @@ public class SortedIndexDescriptor {
this.binaryTupleSchema = createSchema(columns);
}
- private static List<ColumnDescriptor> extractIndexColumnsConfiguration(
- UUID indexId,
- TableView tableConfig,
- TablesView tablesConfig
- ) {
+ private static List<ColumnDescriptor>
extractIndexColumnsConfiguration(UUID indexId, TablesView tablesConfig) {
TableIndexView indexConfig =
ConfigurationUtil.getByInternalId(tablesConfig.indexes(), indexId);
if (indexConfig == null) {
@@ -164,6 +159,12 @@ public class SortedIndexDescriptor {
));
}
+ TableView tableConfig =
ConfigurationUtil.getByInternalId(tablesConfig.tables(), indexConfig.tableId());
+
+ if (tableConfig == null) {
+ throw new StorageException(String.format("Table configuration for
\"%s\" could not be found", indexConfig.tableId()));
+ }
+
NamedListView<? extends IndexColumnView> indexColumns =
((SortedIndexView) indexConfig).columns();
return indexColumns.namedListKeys().stream()
diff --git
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/ConcurrentHashMapMvTableStorageTest.java
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/ConcurrentHashMapMvTableStorageTest.java
index 459d4cff90..ba8db5dd0a 100644
---
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/ConcurrentHashMapMvTableStorageTest.java
+++
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/ConcurrentHashMapMvTableStorageTest.java
@@ -17,11 +17,10 @@
package org.apache.ignite.internal.storage;
+import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.SortedIndexConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.TableConfiguration;
-import org.apache.ignite.configuration.schemas.table.TableIndexView;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
@@ -29,7 +28,8 @@ import
org.apache.ignite.internal.configuration.testframework.InjectConfiguratio
import
org.apache.ignite.internal.storage.chm.TestConcurrentHashMapMvTableStorage;
import
org.apache.ignite.internal.storage.chm.TestConcurrentHashMapStorageEngine;
import
org.apache.ignite.internal.storage.chm.schema.TestConcurrentHashMapDataStorageConfigurationSchema;
-import org.apache.ignite.internal.storage.engine.MvTableStorage;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtendWith;
/**
@@ -37,25 +37,34 @@ import org.junit.jupiter.api.extension.ExtendWith;
*/
@ExtendWith(ConfigurationExtension.class)
public class ConcurrentHashMapMvTableStorageTest extends
AbstractMvTableStorageTest {
- @InjectConfiguration(
- polymorphicExtensions = {
- TestConcurrentHashMapDataStorageConfigurationSchema.class,
- SortedIndexConfigurationSchema.class,
- HashIndexConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class
- },
- value = "mock.dataStorage.name = " +
TestConcurrentHashMapStorageEngine.ENGINE_NAME
- )
- private TableConfiguration tableConfig0;
+ private TestConcurrentHashMapMvTableStorage storage;
- @Override
- protected void setUp() {
- super.tableConfig = tableConfig0;
+ @BeforeEach
+ void setUp(
+ @InjectConfiguration(
+ polymorphicExtensions = {
+
TestConcurrentHashMapDataStorageConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
+ HashIndexConfigurationSchema.class,
+ SortedIndexConfigurationSchema.class,
+ NullValueDefaultConfigurationSchema.class,
+ UnlimitedBudgetConfigurationSchema.class
+ },
+ value = "mock.tables.foo.dataStorage.name = " +
TestConcurrentHashMapStorageEngine.ENGINE_NAME
+ )
+ TablesConfiguration tablesConfig
+ ) {
+ storage = new
TestConcurrentHashMapMvTableStorage(tablesConfig.tables().get("foo"),
tablesConfig);
+
+ storage.start();
+
+ initialize(storage, tablesConfig);
}
- @Override
- protected MvTableStorage tableStorage(TableIndexView sortedIdx,
TableIndexView hashIdx, TablesConfiguration tablesCfg) {
- return new TestConcurrentHashMapMvTableStorage(tableConfig, tablesCfg);
+ @AfterEach
+ void tearDown() {
+ if (storage != null) {
+ storage.stop();
+ }
}
}
diff --git
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java
index 70a1983bf5..d3eeec9657 100644
---
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java
+++
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.storage.index;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toUnmodifiableList;
+import static
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.addIndex;
import static
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
import static
org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders.column;
import static
org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders.tableBuilder;
@@ -27,7 +28,6 @@ import static
org.apache.ignite.internal.storage.index.SortedIndexStorage.GREATE
import static org.apache.ignite.internal.storage.index.SortedIndexStorage.LESS;
import static
org.apache.ignite.internal.storage.index.SortedIndexStorage.LESS_OR_EQUAL;
import static
org.apache.ignite.internal.testframework.IgniteTestUtils.randomString;
-import static
org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willBe;
import static
org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
@@ -43,6 +43,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
+import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.function.Predicate;
import java.util.stream.IntStream;
@@ -50,6 +51,7 @@ import java.util.stream.Stream;
import org.apache.ignite.configuration.schemas.table.TableConfiguration;
import org.apache.ignite.configuration.schemas.table.TableIndexView;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
+import org.apache.ignite.internal.configuration.util.ConfigurationUtil;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
import org.apache.ignite.internal.schema.BinaryTuplePrefix;
@@ -87,8 +89,6 @@ public abstract class AbstractSortedIndexStorageTest {
private static final int TEST_PARTITION = 0;
- private Random random;
-
private static List<ColumnDefinition> allTypesColumnDefinitions() {
Stream<ColumnType> allColumnTypes = Stream.of(
ColumnType.INT8,
@@ -114,6 +114,8 @@ public abstract class AbstractSortedIndexStorageTest {
.collect(toUnmodifiableList());
}
+ private final Random random;
+
private MvTableStorage tableStorage;
private MvPartitionStorage partitionStorage;
@@ -188,9 +190,13 @@ public abstract class AbstractSortedIndexStorageTest {
*/
private SortedIndexStorage createIndexStorage(ColumnarIndexDefinition
indexDefinition) {
CompletableFuture<Void> createIndexFuture =
- tablesCfg.indexes().change(chg ->
chg.create(indexDefinition.name(), idx -> convert(indexDefinition, idx)));
+ tablesCfg.indexes().change(chg ->
chg.create(indexDefinition.name(), idx -> {
+ UUID tableId =
ConfigurationUtil.internalId(tablesCfg.tables().value(), "foo");
+
+ addIndex(indexDefinition, tableId, idx);
+ }));
- assertThat(createIndexFuture, willBe(nullValue(Void.class)));
+ assertThat(createIndexFuture, willCompleteSuccessfully());
TableIndexView indexConfig =
tablesCfg.indexes().get(indexDefinition.name()).value();
diff --git
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/TestHashIndexStorageTest.java
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/TestHashIndexStorageTest.java
index 0d15c37249..63bf55d84a 100644
---
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/TestHashIndexStorageTest.java
+++
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/TestHashIndexStorageTest.java
@@ -18,9 +18,6 @@
package org.apache.ignite.internal.storage.index;
import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.ConstantValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.EntryCountBudgetConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.FunctionCallDefaultConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
import org.apache.ignite.configuration.schemas.table.TableConfiguration;
@@ -44,25 +41,19 @@ public class TestHashIndexStorageTest extends
AbstractHashIndexStorageTest {
@InjectConfiguration(
polymorphicExtensions = {
TestConcurrentHashMapDataStorageConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
HashIndexConfigurationSchema.class,
NullValueDefaultConfigurationSchema.class,
UnlimitedBudgetConfigurationSchema.class
},
- value = "mock.dataStorage.name = " +
TestConcurrentHashMapStorageEngine.ENGINE_NAME
+ value = "mock.tables.foo.dataStorage.name = " +
TestConcurrentHashMapStorageEngine.ENGINE_NAME
)
- TableConfiguration tableCfg,
-
- @InjectConfiguration(polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
- UnknownDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- })
TablesConfiguration tablesConfig
) {
- initialize(new TestConcurrentHashMapMvTableStorage(tableCfg,
tablesConfig), tablesConfig);
+ TableConfiguration tableConfig = tablesConfig.tables().get("foo");
+
+ var storage = new TestConcurrentHashMapMvTableStorage(tableConfig,
tablesConfig);
+
+ initialize(storage, tablesConfig);
}
}
diff --git
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/TestSortedIndexStorageTest.java
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/TestSortedIndexStorageTest.java
index fcb2b3a4bb..9ad702c8f0 100644
---
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/TestSortedIndexStorageTest.java
+++
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/TestSortedIndexStorageTest.java
@@ -18,10 +18,6 @@
package org.apache.ignite.internal.storage.index;
import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.ConstantValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.EntryCountBudgetConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.FunctionCallDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.SortedIndexConfigurationSchema;
import org.apache.ignite.configuration.schemas.table.TableConfiguration;
@@ -46,27 +42,18 @@ public class TestSortedIndexStorageTest extends
AbstractSortedIndexStorageTest {
@InjectConfiguration(
polymorphicExtensions = {
TestConcurrentHashMapDataStorageConfigurationSchema.class,
- HashIndexConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
SortedIndexConfigurationSchema.class,
NullValueDefaultConfigurationSchema.class,
UnlimitedBudgetConfigurationSchema.class
},
- value = "mock.dataStorage.name = " +
TestConcurrentHashMapStorageEngine.ENGINE_NAME
+ value = "mock.tables.foo.dataStorage.name = " +
TestConcurrentHashMapStorageEngine.ENGINE_NAME
)
- TableConfiguration tableCfg,
+ TablesConfiguration tablesConfig
+ ) {
+ TableConfiguration tableConfig = tablesConfig.tables().get("foo");
- @InjectConfiguration(polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
- SortedIndexConfigurationSchema.class,
- UnknownDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- })
- TablesConfiguration tablesConfig) {
- var storage = new TestConcurrentHashMapMvTableStorage(tableCfg,
tablesConfig);
+ var storage = new TestConcurrentHashMapMvTableStorage(tableConfig,
tablesConfig);
initialize(storage, tablesConfig);
}
diff --git
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
index 2642701dee..6b3fd3ddb4 100644
---
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
+++
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.storage;
-import static
org.apache.ignite.configuration.annotation.ConfigurationType.DISTRIBUTED;
import static
org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
@@ -30,24 +29,14 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import java.nio.ByteBuffer;
import java.util.List;
-import java.util.Map;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
-import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.ConstantValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.EntryCountBudgetConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.FunctionCallDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.SortedIndexConfigurationSchema;
import org.apache.ignite.configuration.schemas.table.TableConfiguration;
import org.apache.ignite.configuration.schemas.table.TableIndexView;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
-import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
import org.apache.ignite.internal.binarytuple.BinaryTupleBuilder;
-import org.apache.ignite.internal.configuration.ConfigurationRegistry;
-import
org.apache.ignite.internal.configuration.storage.TestConfigurationStorage;
+import org.apache.ignite.internal.configuration.util.ConfigurationUtil;
import org.apache.ignite.internal.schema.BinaryTuple;
import org.apache.ignite.internal.schema.BinaryTupleSchema;
import org.apache.ignite.internal.schema.BinaryTupleSchema.Element;
@@ -60,8 +49,7 @@ import org.apache.ignite.internal.storage.index.IndexRowImpl;
import org.apache.ignite.internal.util.Cursor;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
+import org.apache.ignite.schema.definition.index.IndexDefinition;
import org.junit.jupiter.api.Test;
/**
@@ -75,44 +63,25 @@ public abstract class AbstractMvTableStorageTest extends
BaseMvStoragesTest {
private static final int PARTITION_ID = 0;
- protected MvTableStorage tableStorage;
+ private MvTableStorage tableStorage;
- protected TableIndexView sortedIdx;
+ private TableIndexView sortedIdx;
- protected TableIndexView hashIdx;
+ private TableIndexView hashIdx;
- protected TableConfiguration tableConfig;
-
- protected abstract MvTableStorage tableStorage(TableIndexView sortedIdx,
TableIndexView hashIdx, TablesConfiguration tablesCfg);
-
- protected abstract void setUp();
-
- /** Configuration registry with one table for each test. */
- private ConfigurationRegistry confRegistry;
-
- @BeforeEach
- void setUpBase() {
- startTestRegistry();
-
- TablesConfiguration tablesCfg =
confRegistry.getConfiguration(TablesConfiguration.KEY);
+ /**
+ * Initializes the internal structures needed for tests.
+ *
+ * <p>This method *MUST* always be called in either subclass' constructor
or setUp method.
+ */
+ protected final void initialize(MvTableStorage tableStorage,
TablesConfiguration tablesCfg) {
+ createTestTable(tableStorage.configuration());
+ createTestIndexes(tablesCfg);
- createTestIndexes();
+ this.tableStorage = tableStorage;
sortedIdx = tablesCfg.indexes().get(SORTED_INDEX_NAME).value();
hashIdx = tablesCfg.indexes().get(HASH_INDEX_NAME).value();
-
- setUp();
-
- createTestTable();
-
- tableStorage = tableStorage(sortedIdx, hashIdx, tablesCfg);
-
- tableStorage.start();
- }
-
- @AfterEach
- void tearDownBase() {
- tableStorage.stop();
}
/**
@@ -222,7 +191,7 @@ public abstract class AbstractMvTableStorageTest extends
BaseMvStoragesTest {
var rowId1 = new RowId(PARTITION_ID);
var rowId2 = new RowId(PARTITION_ID + 1);
- BinaryTupleSchema schema = BinaryTupleSchema.create(new Element[] {
+ BinaryTupleSchema schema = BinaryTupleSchema.create(new Element[]{
new Element(NativeTypes.INT32, false),
new Element(NativeTypes.INT32, false)
});
@@ -303,44 +272,29 @@ public abstract class AbstractMvTableStorageTest extends
BaseMvStoragesTest {
);
}
- private void startTestRegistry() {
- confRegistry = new ConfigurationRegistry(
- List.of(TablesConfiguration.KEY),
- Map.of(),
- new TestConfigurationStorage(DISTRIBUTED),
- List.of(),
- List.of(
- HashIndexConfigurationSchema.class,
- SortedIndexConfigurationSchema.class,
- UnknownDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- )
+ private static void createTestIndexes(TablesConfiguration tablesConfig) {
+ List<IndexDefinition> indexDefinitions = List.of(
+ SchemaBuilders.sortedIndex(SORTED_INDEX_NAME)
+ .addIndexColumn("COLUMN0").done()
+ .build(),
+ SchemaBuilders.hashIndex(HASH_INDEX_NAME)
+ .withColumns("COLUMN0")
+ .build()
);
- confRegistry.start();
- }
+ UUID tableId =
ConfigurationUtil.internalId(tablesConfig.tables().value(), "foo");
- private void createTestIndexes() {
- CompletableFuture<Void> indexCreateFut =
confRegistry.getConfiguration(TablesConfiguration.KEY).indexes().change(ch -> {
- List.of(SchemaBuilders.sortedIndex(SORTED_INDEX_NAME)
- .addIndexColumn("COLUMN0").done()
- .build(),
- SchemaBuilders.hashIndex(HASH_INDEX_NAME)
- .withColumns("COLUMN0")
- .build()
- ).forEach(idxDef -> ch.create(idxDef.name(), c ->
- SchemaConfigurationConverter.addIndex(idxDef,
UUID.randomUUID(), c)));
- });
+ CompletableFuture<Void> indexCreateFut =
tablesConfig.indexes().change(ch ->
+ indexDefinitions.forEach(idxDef -> ch.create(idxDef.name(),
+ c -> SchemaConfigurationConverter.addIndex(idxDef,
tableId, c)
+ ))
+ );
assertThat(indexCreateFut, willCompleteSuccessfully());
}
- private void createTestTable() {
- TableDefinition tableDefinition =
SchemaBuilders.tableBuilder("PUBLIC", "TEST")
+ private static void createTestTable(TableConfiguration tableConfig) {
+ TableDefinition tableDefinition =
SchemaBuilders.tableBuilder("PUBLIC", "foo")
.columns(
SchemaBuilders.column("ID", ColumnType.INT32).build(),
SchemaBuilders.column("COLUMN0",
ColumnType.INT32).build()
@@ -348,11 +302,9 @@ public abstract class AbstractMvTableStorageTest extends
BaseMvStoragesTest {
.withPrimaryKey("ID")
.build();
- tableConfig.change(tblChg ->
SchemaConfigurationConverter.convert(tableDefinition, tblChg));
-
- CompletableFuture<Void> createTableFuture =
confRegistry.getConfiguration(TablesConfiguration.KEY).tables()
- .change(chg -> chg.create(tableDefinition.canonicalName(),
- tblChg ->
SchemaConfigurationConverter.convert(tableDefinition, tblChg)));
+ CompletableFuture<Void> createTableFuture = tableConfig.change(
+ tableChange ->
SchemaConfigurationConverter.convert(tableDefinition, tableChange)
+ );
assertThat(createTableFuture, willCompleteSuccessfully());
}
diff --git
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapMvTableStorage.java
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapMvTableStorage.java
index b4171d335a..1ff44ebf0a 100644
---
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapMvTableStorage.java
+++
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapMvTableStorage.java
@@ -38,14 +38,14 @@ import org.jetbrains.annotations.Nullable;
* Test table storage implementation.
*/
public class TestConcurrentHashMapMvTableStorage implements MvTableStorage {
- private final TableConfiguration tableCfg;
-
private final Map<Integer, MvPartitionStorage> partitions = new
ConcurrentHashMap<>();
private final Map<UUID, SortedIndices> sortedIndicesById = new
ConcurrentHashMap<>();
private final Map<UUID, HashIndices> hashIndicesById = new
ConcurrentHashMap<>();
+ private final TableConfiguration tableCfg;
+
private final TablesConfiguration tablesCfg;
/**
@@ -119,7 +119,7 @@ public class TestConcurrentHashMapMvTableStorage implements
MvTableStorage {
SortedIndices sortedIndices = sortedIndicesById.computeIfAbsent(
indexId,
- id -> new SortedIndices(new SortedIndexDescriptor(id,
tableCfg.value(), tablesCfg.value()))
+ id -> new SortedIndices(new SortedIndexDescriptor(id,
tablesCfg.value()))
);
return sortedIndices.getOrCreateStorage(partitionId);
@@ -133,7 +133,7 @@ public class TestConcurrentHashMapMvTableStorage implements
MvTableStorage {
HashIndices sortedIndices = hashIndicesById.computeIfAbsent(
indexId,
- id -> new HashIndices(new HashIndexDescriptor(id,
tableCfg.value(), tablesCfg.value()))
+ id -> new HashIndices(new HashIndexDescriptor(id,
tablesCfg.value()))
);
return sortedIndices.getOrCreateStorage(partitionId);
diff --git
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapStorageEngine.java
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapStorageEngine.java
index 4efe39e9c5..9e2aa172ed 100644
---
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapStorageEngine.java
+++
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/chm/TestConcurrentHashMapStorageEngine.java
@@ -46,7 +46,9 @@ public class TestConcurrentHashMapStorageEngine implements
StorageEngine {
/** {@inheritDoc} */
@Override
public MvTableStorage createMvTable(TableConfiguration tableCfg,
TablesConfiguration tablesCfg) throws StorageException {
- assert tableCfg.dataStorage().name().value().equals(ENGINE_NAME) :
tableCfg.dataStorage().name().value();
+ String dataStorageName = tableCfg.dataStorage().name().value();
+
+ assert dataStorageName.equals(ENGINE_NAME) : dataStorageName;
return new TestConcurrentHashMapMvTableStorage(tableCfg, tablesCfg);
}
diff --git
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
index 09d966abba..6c7996a851 100644
---
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
+++
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.storage.index;
import static java.util.stream.Collectors.toList;
+import static
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.addIndex;
import static
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
import static
org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders.column;
import static
org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders.tableBuilder;
@@ -30,10 +31,12 @@ import static org.hamcrest.Matchers.empty;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import java.util.Collection;
+import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import org.apache.ignite.configuration.schemas.table.TableConfiguration;
-import org.apache.ignite.configuration.schemas.table.TableIndexConfiguration;
+import org.apache.ignite.configuration.schemas.table.TableIndexView;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
+import org.apache.ignite.internal.configuration.util.ConfigurationUtil;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.storage.MvPartitionStorage;
import org.apache.ignite.internal.storage.RowId;
@@ -109,15 +112,18 @@ public abstract class AbstractHashIndexStorageTest {
.withColumns(INT_COLUMN_NAME, STR_COLUMN_NAME)
.build();
- CompletableFuture<Void> createIndexFuture =
- tablesConf.indexes().change(chg ->
chg.create(indexDefinition.name(),
- idx -> convert(indexDefinition, idx)));
+ CompletableFuture<Void> createIndexFuture = tablesConf.indexes()
+ .change(chg -> chg.create(indexDefinition.name(), idx -> {
+ UUID tableId =
ConfigurationUtil.internalId(tablesConf.tables().value(), "foo");
+
+ addIndex(indexDefinition, tableId, idx);
+ }));
assertThat(createIndexFuture, willCompleteSuccessfully());
- TableIndexConfiguration indexConfig =
tablesConf.indexes().get(indexDefinition.name());
+ TableIndexView indexConfig =
tablesConf.indexes().get(indexDefinition.name()).value();
- return tableStorage.getOrCreateHashIndex(TEST_PARTITION,
indexConfig.id().value());
+ return tableStorage.getOrCreateHashIndex(TEST_PARTITION,
indexConfig.id());
}
/**
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryStorageEngine.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryStorageEngine.java
index d462fc58ce..a9b45cd248 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryStorageEngine.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryStorageEngine.java
@@ -28,7 +28,6 @@ import java.util.stream.Stream;
import
org.apache.ignite.configuration.notifications.ConfigurationNamedListListener;
import
org.apache.ignite.configuration.notifications.ConfigurationNotificationEvent;
import org.apache.ignite.configuration.schemas.table.TableConfiguration;
-import org.apache.ignite.configuration.schemas.table.TableView;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import org.apache.ignite.internal.components.LongJvmPauseDetector;
import org.apache.ignite.internal.fileio.AsyncFileIoFactory;
@@ -189,11 +188,7 @@ public class PersistentPageMemoryStorageEngine implements
StorageEngine {
@Override
public PersistentPageMemoryTableStorage createMvTable(TableConfiguration
tableCfg, TablesConfiguration tablesCfg)
throws StorageException {
- TableView tableView = tableCfg.value();
-
- assert tableView.dataStorage().name().equals(ENGINE_NAME) :
tableCfg.dataStorage().name();
-
- PersistentPageMemoryDataStorageView dataStorageView =
(PersistentPageMemoryDataStorageView) tableView.dataStorage();
+ PersistentPageMemoryDataStorageView dataStorageView =
(PersistentPageMemoryDataStorageView) tableCfg.dataStorage().value();
return new PersistentPageMemoryTableStorage(this, tableCfg,
regions.get(dataStorageView.dataRegion()), tablesCfg);
}
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryStorageEngine.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryStorageEngine.java
index ee37d900f7..defca6d532 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryStorageEngine.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryStorageEngine.java
@@ -26,7 +26,6 @@ import java.util.concurrent.ConcurrentHashMap;
import
org.apache.ignite.configuration.notifications.ConfigurationNamedListListener;
import
org.apache.ignite.configuration.notifications.ConfigurationNotificationEvent;
import org.apache.ignite.configuration.schemas.table.TableConfiguration;
-import org.apache.ignite.configuration.schemas.table.TableView;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import org.apache.ignite.internal.pagememory.PageMemory;
import
org.apache.ignite.internal.pagememory.configuration.schema.VolatilePageMemoryDataRegionConfiguration;
@@ -95,11 +94,7 @@ public class VolatilePageMemoryStorageEngine implements
StorageEngine {
@Override
public VolatilePageMemoryTableStorage createMvTable(TableConfiguration
tableCfg, TablesConfiguration tablesCfg)
throws StorageException {
- TableView tableView = tableCfg.value();
-
- assert tableView.dataStorage().name().equals(ENGINE_NAME) :
tableView.dataStorage().name();
-
- VolatilePageMemoryDataStorageView dataStorageView =
(VolatilePageMemoryDataStorageView) tableView.dataStorage();
+ VolatilePageMemoryDataStorageView dataStorageView =
(VolatilePageMemoryDataStorageView) tableCfg.dataStorage().value();
return new VolatilePageMemoryTableStorage(tableCfg, tablesCfg,
regions.get(dataStorageView.dataRegion()));
}
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
index 62690b5242..87af015f28 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
@@ -32,7 +32,6 @@ import org.apache.ignite.configuration.NamedListView;
import org.apache.ignite.configuration.schemas.table.HashIndexView;
import org.apache.ignite.configuration.schemas.table.SortedIndexView;
import org.apache.ignite.configuration.schemas.table.TableIndexView;
-import org.apache.ignite.configuration.schemas.table.TableView;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import org.apache.ignite.hlc.HybridTimestamp;
import org.apache.ignite.internal.pagememory.PageIdAllocator;
@@ -168,9 +167,7 @@ public abstract class AbstractPageMemoryMvPartitionStorage
implements MvPartitio
}
private PageMemoryHashIndexStorage createOrRestoreHashIndex(IndexMeta
indexMeta) {
- TableView tableView = tableStorage.configuration().value();
-
- var indexDescriptor = new HashIndexDescriptor(indexMeta.id(),
tableView, tablesConfiguration.value());
+ var indexDescriptor = new HashIndexDescriptor(indexMeta.id(),
tablesConfiguration.value());
try {
PageMemory pageMemory = tableStorage.dataRegion().pageMemory();
@@ -181,9 +178,11 @@ public abstract class AbstractPageMemoryMvPartitionStorage
implements MvPartitio
? pageMemory.allocatePage(groupId, partitionId,
PageIdAllocator.FLAG_AUX)
: indexMeta.metaPageId();
+ String tableName = tableStorage.configuration().value().name();
+
HashIndexTree hashIndexTree = new HashIndexTree(
groupId,
- tableView.name(),
+ tableName,
partitionId,
pageMemory,
PageLockListenerNoOp.INSTANCE,
diff --git
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/index/PersistentPageMemoryHashIndexStorageTest.java
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/index/PersistentPageMemoryHashIndexStorageTest.java
index 4291582ea9..06d1e98e4c 100644
---
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/index/PersistentPageMemoryHashIndexStorageTest.java
+++
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/index/PersistentPageMemoryHashIndexStorageTest.java
@@ -19,20 +19,14 @@ package org.apache.ignite.internal.storage.pagememory.index;
import java.nio.file.Path;
import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.ConstantValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.EntryCountBudgetConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.FunctionCallDefaultConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.SortedIndexConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.TableConfiguration;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import
org.apache.ignite.internal.pagememory.configuration.schema.UnsafeMemoryAllocatorConfigurationSchema;
import org.apache.ignite.internal.pagememory.io.PageIoRegistry;
-import
org.apache.ignite.internal.schema.configuration.schema.TestDataStorageConfigurationSchema;
import org.apache.ignite.internal.storage.index.AbstractHashIndexStorageTest;
import
org.apache.ignite.internal.storage.pagememory.PersistentPageMemoryStorageEngine;
import
org.apache.ignite.internal.storage.pagememory.PersistentPageMemoryTableStorage;
@@ -51,51 +45,28 @@ import org.junit.jupiter.api.extension.ExtendWith;
*/
@ExtendWith({ConfigurationExtension.class, WorkDirectoryExtension.class})
class PersistentPageMemoryHashIndexStorageTest extends
AbstractHashIndexStorageTest {
- @WorkDirectory
- private Path workDir;
-
- @InjectConfiguration(polymorphicExtensions =
UnsafeMemoryAllocatorConfigurationSchema.class)
- private PersistentPageMemoryStorageEngineConfiguration engineConfig;
-
- @InjectConfiguration(
- name = "table",
- value = "mock.dataStorage.name = " +
PersistentPageMemoryStorageEngine.ENGINE_NAME,
- polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
- PersistentPageMemoryDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- }
- )
- private TableConfiguration tableCfg;
-
- @InjectConfiguration(
- name = "tables",
- polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
- PersistentPageMemoryDataStorageConfigurationSchema.class,
- HashIndexConfigurationSchema.class,
- SortedIndexConfigurationSchema.class,
- UnknownDataStorageConfigurationSchema.class,
- TestDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- }
- )
- TablesConfiguration tablesConfig;
-
private PersistentPageMemoryStorageEngine engine;
private PersistentPageMemoryTableStorage table;
@BeforeEach
- void setUp() {
+ void setUp(
+ @WorkDirectory
+ Path workDir,
+ @InjectConfiguration(polymorphicExtensions =
UnsafeMemoryAllocatorConfigurationSchema.class)
+ PersistentPageMemoryStorageEngineConfiguration engineConfig,
+ @InjectConfiguration(
+ polymorphicExtensions = {
+
PersistentPageMemoryDataStorageConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
+ HashIndexConfigurationSchema.class,
+ NullValueDefaultConfigurationSchema.class,
+ UnlimitedBudgetConfigurationSchema.class
+ },
+ value = "mock.tables.foo.dataStorage.name = " +
PersistentPageMemoryStorageEngine.ENGINE_NAME
+ )
+ TablesConfiguration tablesConfig
+ ) {
PageIoRegistry ioRegistry = new PageIoRegistry();
ioRegistry.loadFromServiceLoader();
@@ -104,7 +75,7 @@ class PersistentPageMemoryHashIndexStorageTest extends
AbstractHashIndexStorageT
engine.start();
- table = engine.createMvTable(tableCfg, tablesConfig);
+ table = engine.createMvTable(tablesConfig.tables().get("foo"),
tablesConfig);
table.start();
diff --git
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/index/VolatilePageMemoryHashIndexStorageTest.java
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/index/VolatilePageMemoryHashIndexStorageTest.java
index b45cb21917..61c71a02ab 100644
---
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/index/VolatilePageMemoryHashIndexStorageTest.java
+++
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/index/VolatilePageMemoryHashIndexStorageTest.java
@@ -18,13 +18,8 @@
package org.apache.ignite.internal.storage.pagememory.index;
import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.ConstantValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.EntryCountBudgetConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.FunctionCallDefaultConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.SortedIndexConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.TableConfiguration;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
@@ -47,42 +42,26 @@ import org.junit.jupiter.api.extension.ExtendWith;
*/
@ExtendWith(ConfigurationExtension.class)
class VolatilePageMemoryHashIndexStorageTest extends
AbstractHashIndexStorageTest {
- @InjectConfiguration(polymorphicExtensions =
UnsafeMemoryAllocatorConfigurationSchema.class)
- private VolatilePageMemoryStorageEngineConfiguration engineConfig;
-
- @InjectConfiguration(
- name = "table",
- value = "mock.dataStorage.name = " +
VolatilePageMemoryStorageEngine.ENGINE_NAME,
- polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
- VolatilePageMemoryDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- }
- )
- private TableConfiguration tableCfg;
-
- @InjectConfiguration(polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
- SortedIndexConfigurationSchema.class,
- UnknownDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- })
- TablesConfiguration tablesConfig;
-
private VolatilePageMemoryStorageEngine engine;
private VolatilePageMemoryTableStorage table;
@BeforeEach
- void setUp() {
+ void setUp(
+ @InjectConfiguration(polymorphicExtensions =
UnsafeMemoryAllocatorConfigurationSchema.class)
+ VolatilePageMemoryStorageEngineConfiguration engineConfig,
+ @InjectConfiguration(
+ polymorphicExtensions = {
+
VolatilePageMemoryDataStorageConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
+ HashIndexConfigurationSchema.class,
+ NullValueDefaultConfigurationSchema.class,
+ UnlimitedBudgetConfigurationSchema.class
+ },
+ value = "mock.tables.foo.dataStorage.name = " +
VolatilePageMemoryStorageEngine.ENGINE_NAME
+ )
+ TablesConfiguration tablesConfig
+ ) {
PageIoRegistry ioRegistry = new PageIoRegistry();
ioRegistry.loadFromServiceLoader();
@@ -91,7 +70,7 @@ class VolatilePageMemoryHashIndexStorageTest extends
AbstractHashIndexStorageTes
engine.start();
- table = engine.createMvTable(tableCfg, tablesConfig);
+ table = engine.createMvTable(tablesConfig.tables().get("foo"),
tablesConfig);
table.start();
diff --git
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorageTest.java
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorageTest.java
index dec668c4c6..dd54ec2c71 100644
---
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorageTest.java
+++
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorageTest.java
@@ -19,23 +19,17 @@ package org.apache.ignite.internal.storage.pagememory.mv;
import static java.util.stream.Collectors.joining;
-import java.nio.file.Path;
import java.util.stream.IntStream;
-import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import org.apache.ignite.internal.pagememory.io.PageIoRegistry;
import org.apache.ignite.internal.schema.BinaryRow;
import org.apache.ignite.internal.storage.AbstractMvPartitionStorageTest;
import org.apache.ignite.internal.storage.RowId;
-import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.Cursor;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
/**
* Base test for MV partition storages based on PageMemory.
*/
-@ExtendWith({ConfigurationExtension.class, WorkDirectoryExtension.class})
abstract class AbstractPageMemoryMvPartitionStorageTest extends
AbstractMvPartitionStorageTest {
protected final PageIoRegistry ioRegistry = new PageIoRegistry();
@@ -43,9 +37,6 @@ abstract class AbstractPageMemoryMvPartitionStorageTest
extends AbstractMvPartit
ioRegistry.loadFromServiceLoader();
}
- @WorkDirectory
- protected Path workDir;
-
/**
* Returns page size in bytes.
*/
diff --git
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorageTest.java
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorageTest.java
index 6da4872060..edeec6689b 100644
---
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorageTest.java
+++
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorageTest.java
@@ -18,35 +18,37 @@
package org.apache.ignite.internal.storage.pagememory.mv;
import static
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointState.FINISHED;
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import java.nio.file.Path;
import java.util.concurrent.TimeUnit;
import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.ConstantValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.EntryCountBudgetConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.FunctionCallDefaultConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.TableConfiguration;
+import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
import org.apache.ignite.internal.components.LongJvmPauseDetector;
+import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.logger.Loggers;
import
org.apache.ignite.internal.pagememory.configuration.schema.UnsafeMemoryAllocatorConfigurationSchema;
import org.apache.ignite.internal.storage.RowId;
import
org.apache.ignite.internal.storage.pagememory.PersistentPageMemoryStorageEngine;
import
org.apache.ignite.internal.storage.pagememory.PersistentPageMemoryTableStorage;
-import
org.apache.ignite.internal.storage.pagememory.configuration.schema.PersistentPageMemoryDataStorageChange;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.PersistentPageMemoryDataStorageConfigurationSchema;
-import
org.apache.ignite.internal.storage.pagememory.configuration.schema.PersistentPageMemoryDataStorageView;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.PersistentPageMemoryStorageEngineConfiguration;
-import
org.apache.ignite.internal.storage.pagememory.configuration.schema.PersistentPageMemoryStorageEngineConfigurationSchema;
+import org.apache.ignite.internal.testframework.WorkDirectory;
+import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+@ExtendWith({ConfigurationExtension.class, WorkDirectoryExtension.class})
class PersistentPageMemoryMvPartitionStorageTest extends
AbstractPageMemoryMvPartitionStorageTest {
+ @WorkDirectory
+ private Path workDir;
+
@InjectConfiguration(
value = "mock.checkpoint.checkpointDelayMillis = 0",
polymorphicExtensions =
UnsafeMemoryAllocatorConfigurationSchema.class
@@ -54,19 +56,16 @@ class PersistentPageMemoryMvPartitionStorageTest extends
AbstractPageMemoryMvPar
private PersistentPageMemoryStorageEngineConfiguration engineConfig;
@InjectConfiguration(
- name = "table",
polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
- UnknownDataStorageConfigurationSchema.class,
PersistentPageMemoryDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
+ HashIndexConfigurationSchema.class,
NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- }
+ UnlimitedBudgetConfigurationSchema.class
+ },
+ value = "mock.tables.foo.dataStorage.name = " +
PersistentPageMemoryStorageEngine.ENGINE_NAME
)
- private TableConfiguration tableCfg;
+ private TablesConfiguration tablesConfig;
private LongJvmPauseDetector longJvmPauseDetector;
@@ -75,7 +74,7 @@ class PersistentPageMemoryMvPartitionStorageTest extends
AbstractPageMemoryMvPar
private PersistentPageMemoryTableStorage table;
@BeforeEach
- void setUp() throws Exception {
+ void setUp() {
longJvmPauseDetector = new LongJvmPauseDetector("test",
Loggers.forClass(LongJvmPauseDetector.class));
longJvmPauseDetector.start();
@@ -84,16 +83,8 @@ class PersistentPageMemoryMvPartitionStorageTest extends
AbstractPageMemoryMvPar
engine.start();
- tableCfg
- .change(c -> c.changeDataStorage(dsc ->
dsc.convert(PersistentPageMemoryDataStorageChange.class)))
- .get(1, TimeUnit.SECONDS);
-
- assertEquals(
-
PersistentPageMemoryStorageEngineConfigurationSchema.DEFAULT_DATA_REGION_NAME,
- ((PersistentPageMemoryDataStorageView)
tableCfg.dataStorage().value()).dataRegion()
- );
+ table = engine.createMvTable(tablesConfig.tables().get("foo"),
tablesConfig);
- table = engine.createMvTable(tableCfg, null);
table.start();
storage = table.createMvPartitionStorage(PARTITION_ID);
diff --git
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorageTest.java
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorageTest.java
index 7d09497560..bab8f61365 100644
---
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorageTest.java
+++
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/VolatilePageMemoryMvPartitionStorageTest.java
@@ -17,74 +17,52 @@
package org.apache.ignite.internal.storage.pagememory.mv;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.nio.file.Path;
-import java.util.concurrent.TimeUnit;
import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.ConstantValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.EntryCountBudgetConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.FunctionCallDefaultConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.TableConfiguration;
+import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
+import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import
org.apache.ignite.internal.pagememory.configuration.schema.UnsafeMemoryAllocatorConfigurationSchema;
import
org.apache.ignite.internal.storage.pagememory.VolatilePageMemoryStorageEngine;
import
org.apache.ignite.internal.storage.pagememory.VolatilePageMemoryTableStorage;
-import
org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryDataStorageChange;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryDataStorageConfigurationSchema;
-import
org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryDataStorageView;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryStorageEngineConfiguration;
-import
org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryStorageEngineConfigurationSchema;
-import org.apache.ignite.internal.testframework.WorkDirectory;
import org.apache.ignite.internal.util.IgniteUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.ExtendWith;
+@ExtendWith(ConfigurationExtension.class)
class VolatilePageMemoryMvPartitionStorageTest extends
AbstractPageMemoryMvPartitionStorageTest {
@InjectConfiguration(polymorphicExtensions =
UnsafeMemoryAllocatorConfigurationSchema.class)
private VolatilePageMemoryStorageEngineConfiguration engineConfig;
- @InjectConfiguration(
- name = "table",
- polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
- UnknownDataStorageConfigurationSchema.class,
- VolatilePageMemoryDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- }
- )
- private TableConfiguration tableCfg;
-
private VolatilePageMemoryStorageEngine engine;
private VolatilePageMemoryTableStorage table;
- @WorkDirectory
- private Path workDir;
-
@BeforeEach
- void setUp() throws Exception {
+ void setUp(
+ @InjectConfiguration(
+ polymorphicExtensions = {
+
VolatilePageMemoryDataStorageConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
+ HashIndexConfigurationSchema.class,
+ NullValueDefaultConfigurationSchema.class,
+ UnlimitedBudgetConfigurationSchema.class
+ },
+ value = "mock.tables.foo.dataStorage.name = " +
VolatilePageMemoryStorageEngine.ENGINE_NAME
+ )
+ TablesConfiguration tablesConfig
+ ) {
engine = new VolatilePageMemoryStorageEngine(engineConfig, ioRegistry);
engine.start();
- tableCfg
- .change(c -> c.changeDataStorage(dsc ->
dsc.convert(VolatilePageMemoryDataStorageChange.class)))
- .get(1, TimeUnit.SECONDS);
-
- assertEquals(
-
VolatilePageMemoryStorageEngineConfigurationSchema.DEFAULT_DATA_REGION_NAME,
- ((VolatilePageMemoryDataStorageView)
tableCfg.dataStorage().value()).dataRegion()
- );
+ table = engine.createMvTable(tablesConfig.tables().get("foo"),
tablesConfig);
- table = engine.createMvTable(tableCfg, null);
table.start();
storage = table.createMvPartitionStorage(PARTITION_ID);
diff --git
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
index 099d2d6402..e97074e8ce 100644
---
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
+++
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
@@ -30,7 +30,6 @@ import java.util.concurrent.TimeUnit;
import
org.apache.ignite.configuration.notifications.ConfigurationNamedListListener;
import
org.apache.ignite.configuration.notifications.ConfigurationNotificationEvent;
import org.apache.ignite.configuration.schemas.table.TableConfiguration;
-import org.apache.ignite.configuration.schemas.table.TableView;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
@@ -150,22 +149,20 @@ public class RocksDbStorageEngine implements
StorageEngine {
/** {@inheritDoc} */
@Override
public RocksDbTableStorage createMvTable(TableConfiguration tableCfg,
TablesConfiguration tablesCfg) throws StorageException {
- TableView tableView = tableCfg.value();
+ RocksDbDataStorageView dataStorageView = (RocksDbDataStorageView)
tableCfg.dataStorage().value();
- assert tableView.dataStorage().name().equals(ENGINE_NAME) :
tableView.dataStorage().name();
-
- RocksDbDataStorageView dataStorageView = (RocksDbDataStorageView)
tableView.dataStorage();
+ assert dataStorageView.name().equals(ENGINE_NAME) :
dataStorageView.name();
RocksDbDataRegion dataRegion =
regions.get(dataStorageView.dataRegion());
- Path tablePath = storagePath.resolve(TABLE_DIR_PREFIX +
tableView.tableId());
+ Path tablePath = storagePath.resolve(TABLE_DIR_PREFIX +
tableCfg.tableId().value());
try {
Files.createDirectories(tablePath);
} catch (IOException e) {
- throw new StorageException("Failed to create table store directory
for " + tableView.name() + ": " + e.getMessage(), e);
+ throw new StorageException("Failed to create table store directory
for " + tableCfg.name().value(), e);
}
- return new RocksDbTableStorage(this, tablePath, tableCfg, dataRegion,
tablesCfg);
+ return new RocksDbTableStorage(this, tablePath, dataRegion, tableCfg,
tablesCfg);
}
}
diff --git
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbTableStorage.java
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbTableStorage.java
index 65bae91ba3..2668d81708 100644
---
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbTableStorage.java
+++
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbTableStorage.java
@@ -134,8 +134,8 @@ public class RocksDbTableStorage implements MvTableStorage {
RocksDbTableStorage(
RocksDbStorageEngine engine,
Path tablePath,
- TableConfiguration tableCfg,
RocksDbDataRegion dataRegion,
+ TableConfiguration tableCfg,
TablesConfiguration tablesCfg
) {
this.engine = engine;
@@ -234,7 +234,7 @@ public class RocksDbTableStorage implements MvTableStorage {
case SORTED_INDEX:
UUID indexId = sortedIndexId(cf.name());
- var indexDescriptor = new
SortedIndexDescriptor(indexId, tableCfg.value(), tablesCfg.value());
+ var indexDescriptor = new
SortedIndexDescriptor(indexId, tablesCfg.value());
sortedIndices.put(indexId, new SortedIndex(cf,
indexDescriptor));
@@ -414,7 +414,7 @@ public class RocksDbTableStorage implements MvTableStorage {
}
private SortedIndex createSortedIndex(UUID indexId) {
- var indexDescriptor = new SortedIndexDescriptor(indexId,
tableCfg.value(), tablesCfg.value());
+ var indexDescriptor = new SortedIndexDescriptor(indexId,
tablesCfg.value());
ColumnFamilyDescriptor cfDescriptor =
sortedIndexCfDescriptor(sortedIndexCfName(indexId), indexDescriptor);
@@ -433,7 +433,7 @@ public class RocksDbTableStorage implements MvTableStorage {
@Override
public HashIndexStorage getOrCreateHashIndex(int partitionId, UUID
indexId) {
HashIndex storages = hashIndices.computeIfAbsent(indexId, id -> {
- var indexDescriptor = new HashIndexDescriptor(indexId,
tableCfg.value(), tablesCfg.value());
+ var indexDescriptor = new HashIndexDescriptor(indexId,
tablesCfg.value());
return new HashIndex(hashIndexCf, indexDescriptor);
});
@@ -456,13 +456,18 @@ public class RocksDbTableStorage implements
MvTableStorage {
hashIdx.destroy();
}
+ // Sorted Indexes have a separate Column Family per index, so we
simply destroy it immediately after a flush completes
+ // in order to avoid concurrent access to the CF.
SortedIndex sortedIdx = sortedIndices.remove(indexId);
if (sortedIdx != null) {
+ // Remove the to-be destroyed CF from the flusher
+ flusher.removeColumnFamily(sortedIdx.indexCf().handle());
+
sortedIdx.destroy();
}
- if (hashIdx == null && sortedIdx == null) {
+ if (hashIdx == null) {
return CompletableFuture.completedFuture(null);
} else {
return awaitFlush(false);
@@ -546,7 +551,7 @@ public class RocksDbTableStorage implements MvTableStorage {
);
case SORTED_INDEX:
- var indexDescriptor = new
SortedIndexDescriptor(sortedIndexId(cfName), tableCfg.value(),
tablesCfg.value());
+ var indexDescriptor = new
SortedIndexDescriptor(sortedIndexId(cfName), tablesCfg.value());
return sortedIndexCfDescriptor(cfName, indexDescriptor);
diff --git
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/SortedIndex.java
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/SortedIndex.java
index f78447374e..b2343d05c6 100644
---
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/SortedIndex.java
+++
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/SortedIndex.java
@@ -51,6 +51,13 @@ class SortedIndex implements AutoCloseable {
);
}
+ /**
+ * Returns the Column Family associated with this index.
+ */
+ ColumnFamily indexCf() {
+ return indexCf;
+ }
+
/**
* Removes all data associated with the index.
*/
diff --git
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
index 099685d083..c312a3fd96 100644
---
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
+++
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
@@ -17,24 +17,20 @@
package org.apache.ignite.internal.storage.rocksdb;
-import static java.util.concurrent.TimeUnit.SECONDS;
import static
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbStorageEngineConfigurationSchema.DEFAULT_DATA_REGION_NAME;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import java.nio.file.Path;
import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.ConstantValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.EntryCountBudgetConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.FunctionCallDefaultConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
import org.apache.ignite.configuration.schemas.table.TableConfiguration;
+import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.storage.AbstractMvPartitionStorageTest;
-import
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbDataStorageChange;
import
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbDataStorageConfigurationSchema;
import
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbDataStorageView;
import
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbStorageEngineConfiguration;
@@ -58,35 +54,28 @@ public class RocksDbMvPartitionStorageTest extends
AbstractMvPartitionStorageTes
@BeforeEach
public void setUp(
@WorkDirectory Path workDir,
- @InjectConfiguration RocksDbStorageEngineConfiguration
engineConfig,
+ @InjectConfiguration("mock {flushDelayMillis = 0, defaultRegion
{size = 16536, writeBufferSize = 16536}}")
+ RocksDbStorageEngineConfiguration engineConfig,
@InjectConfiguration(
- name = "table",
polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
- UnknownDataStorageConfigurationSchema.class,
RocksDbDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
+ HashIndexConfigurationSchema.class,
NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- }
- ) TableConfiguration tableCfg
+ UnlimitedBudgetConfigurationSchema.class
+ },
+ value = "mock.tables.foo.dataStorage.name = " +
RocksDbStorageEngine.ENGINE_NAME
+ ) TablesConfiguration tablesCfg
) throws Exception {
- tableCfg.dataStorage().change(c ->
c.convert(RocksDbDataStorageChange.class)).get(1, SECONDS);
+ TableConfiguration tableCfg = tablesCfg.tables().get("foo");
assertThat(((RocksDbDataStorageView)
tableCfg.dataStorage().value()).dataRegion(),
equalTo(DEFAULT_DATA_REGION_NAME));
- engineConfig.change(cfg -> cfg
- .changeFlushDelayMillis(0)
- .changeDefaultRegion(c -> c.changeSize(16 *
1024).changeWriteBufferSize(16 * 1024))
- ).get(1, SECONDS);
-
engine = new RocksDbStorageEngine(engineConfig, workDir);
engine.start();
- table = engine.createMvTable(tableCfg, null);
+ table = engine.createMvTable(tableCfg, tablesCfg);
table.start();
diff --git
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
index 2d247e6afe..12da6cafc3 100644
---
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
+++
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
@@ -28,14 +28,12 @@ import static org.hamcrest.MatcherAssert.assertThat;
import java.nio.file.Path;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
+import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.SortedIndexConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.TableConfiguration;
-import org.apache.ignite.configuration.schemas.table.TableIndexView;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
-import org.apache.ignite.internal.configuration.ConfigurationRegistry;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.storage.AbstractMvTableStorageTest;
@@ -48,6 +46,7 @@ import org.apache.ignite.internal.testframework.WorkDirectory;
import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteUtils;
import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -57,50 +56,46 @@ import org.junit.jupiter.api.extension.ExtendWith;
@ExtendWith(WorkDirectoryExtension.class)
@ExtendWith(ConfigurationExtension.class)
public class RocksDbMvTableStorageTest extends AbstractMvTableStorageTest {
- private RocksDbStorageEngine engine;
-
- @InjectConfiguration("mock {flushDelayMillis = 0, defaultRegion {size =
16536, writeBufferSize = 16536}}")
- private RocksDbStorageEngineConfiguration rocksDbEngineConfig;
-
@InjectConfiguration(
- name = "table",
- value = "mock { partitions = 512, dataStorage.name = rocksdb }",
polymorphicExtensions = {
RocksDbDataStorageConfigurationSchema.class,
- SortedIndexConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
HashIndexConfigurationSchema.class,
+ SortedIndexConfigurationSchema.class,
NullValueDefaultConfigurationSchema.class,
UnlimitedBudgetConfigurationSchema.class
- }
+ },
+ value = "mock.tables.foo{ partitions = 512, dataStorage.name = " +
RocksDbStorageEngine.ENGINE_NAME + "}"
)
- private TableConfiguration tableCfg0;
+ private TablesConfiguration tablesConfig;
- @WorkDirectory
- private Path workDir;
-
- private ConfigurationRegistry confRegistry;
+ private RocksDbStorageEngine engine;
- @Override
- protected void setUp() {
- super.tableConfig = tableCfg0;
- }
+ private MvTableStorage tableStorage;
- @Override
- protected MvTableStorage tableStorage(TableIndexView sortedIdx,
TableIndexView hashIdx, TablesConfiguration tablesCfg) {
+ @BeforeEach
+ void setUp(
+ @WorkDirectory Path workDir,
+ @InjectConfiguration("mock {flushDelayMillis = 0, defaultRegion
{size = 16536, writeBufferSize = 16536}}")
+ RocksDbStorageEngineConfiguration rocksDbEngineConfig
+ ) {
engine = new RocksDbStorageEngine(rocksDbEngineConfig, workDir);
engine.start();
- MvTableStorage storage = engine.createMvTable(tableConfig, tablesCfg);
+ tableStorage = engine.createMvTable(tablesConfig.tables().get("foo"),
tablesConfig);
- assertThat(storage, is(instanceOf(RocksDbTableStorage.class)));
+ assertThat(tableStorage, is(instanceOf(RocksDbTableStorage.class)));
+
+ tableStorage.start();
- return storage;
+ initialize(tableStorage, tablesConfig);
}
@AfterEach
void tearDown() throws Exception {
IgniteUtils.closeAll(
+ tableStorage == null ? null : tableStorage::stop,
engine == null ? null : engine::stop
);
}
@@ -149,7 +144,7 @@ public class RocksDbMvTableStorageTest extends
AbstractMvTableStorageTest {
tableStorage.stop();
- tableStorage = engine.createMvTable(tableConfig, null);
+ tableStorage = engine.createMvTable(tablesConfig.tables().get("foo"),
tablesConfig);
tableStorage.start();
diff --git
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngineTest.java
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngineTest.java
index ff6d527f27..76cf7d3219 100644
---
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngineTest.java
+++
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngineTest.java
@@ -24,12 +24,10 @@ import static org.hamcrest.Matchers.is;
import java.nio.file.Path;
import java.util.concurrent.CompletableFuture;
-import
org.apache.ignite.configuration.schemas.table.ConstantValueDefaultConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.EntryCountBudgetConfigurationSchema;
-import
org.apache.ignite.configuration.schemas.table.FunctionCallDefaultConfigurationSchema;
+import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.TableConfiguration;
+import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
@@ -70,20 +68,18 @@ public class RocksDbStorageEngineTest {
@Test
void testCreateTableWithDefaultDataRegion(
@InjectConfiguration(
- value = "mock.dataStorage.name=rocksdb",
- name = "table",
polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
RocksDbDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
+ HashIndexConfigurationSchema.class,
NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- }
- ) TableConfiguration tableCfg
+ UnlimitedBudgetConfigurationSchema.class
+ },
+ value = "mock.tables.foo.dataStorage.name=" +
RocksDbStorageEngine.ENGINE_NAME
+ )
+ TablesConfiguration tablesConfig
) {
- MvTableStorage table = engine.createMvTable(tableCfg, null);
+ MvTableStorage table =
engine.createMvTable(tablesConfig.tables().get("foo"), tablesConfig);
table.start();
@@ -101,18 +97,16 @@ public class RocksDbStorageEngineTest {
@Test
void testCreateTableWithDynamicCustomDataRegion(
@InjectConfiguration(
- value = "mock.dataStorage{name=rocksdb,
dataRegion=foobar}",
- name = "table",
polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
RocksDbDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
+ HashIndexConfigurationSchema.class,
NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- }
- ) TableConfiguration tableCfg
+ UnlimitedBudgetConfigurationSchema.class
+ },
+ value = "mock.tables.foo.dataStorage{name=" +
RocksDbStorageEngine.ENGINE_NAME + ", dataRegion=foobar}"
+ )
+ TablesConfiguration tablesConfig
) {
String customRegionName = "foobar";
@@ -121,7 +115,7 @@ public class RocksDbStorageEngineTest {
assertThat(engineConfigChangeFuture, willCompleteSuccessfully());
- MvTableStorage table = engine.createMvTable(tableCfg, null);
+ MvTableStorage table =
engine.createMvTable(tablesConfig.tables().get("foo"), tablesConfig);
table.start();
diff --git
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbHashIndexStorageTest.java
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbHashIndexStorageTest.java
index 0db33a89b6..44918fa1a0 100644
---
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbHashIndexStorageTest.java
+++
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbHashIndexStorageTest.java
@@ -21,7 +21,6 @@ import java.nio.file.Path;
import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.TableConfiguration;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
@@ -56,20 +55,12 @@ public class RocksDbHashIndexStorageTest extends
AbstractHashIndexStorageTest {
@InjectConfiguration(
polymorphicExtensions = {
RocksDbDataStorageConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
HashIndexConfigurationSchema.class,
NullValueDefaultConfigurationSchema.class,
UnlimitedBudgetConfigurationSchema.class
},
- value = "mock.dataStorage.name = " +
RocksDbStorageEngine.ENGINE_NAME
- )
- TableConfiguration tableCfg,
- @InjectConfiguration(
- polymorphicExtensions = {
- HashIndexConfigurationSchema.class,
- UnknownDataStorageConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class
- }
+ value = "mock.tables.foo.dataStorage.name = " +
RocksDbStorageEngine.ENGINE_NAME
)
TablesConfiguration tablesConfig
) {
@@ -77,7 +68,7 @@ public class RocksDbHashIndexStorageTest extends
AbstractHashIndexStorageTest {
engine.start();
- tableStorage = engine.createMvTable(tableCfg, tablesConfig);
+ tableStorage = engine.createMvTable(tablesConfig.tables().get("foo"),
tablesConfig);
tableStorage.start();
diff --git
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbSortedIndexStorageTest.java
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbSortedIndexStorageTest.java
index f46c29e5e4..8e33efc3bb 100644
---
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbSortedIndexStorageTest.java
+++
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbSortedIndexStorageTest.java
@@ -21,7 +21,6 @@ import java.nio.file.Path;
import
org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
import
org.apache.ignite.configuration.schemas.table.SortedIndexConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.TableConfiguration;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
@@ -56,20 +55,12 @@ public class RocksDbSortedIndexStorageTest extends
AbstractSortedIndexStorageTes
@InjectConfiguration(
polymorphicExtensions = {
RocksDbDataStorageConfigurationSchema.class,
+ UnknownDataStorageConfigurationSchema.class,
SortedIndexConfigurationSchema.class,
NullValueDefaultConfigurationSchema.class,
UnlimitedBudgetConfigurationSchema.class
},
- value = "mock.dataStorage.name = " +
RocksDbStorageEngine.ENGINE_NAME
- )
- TableConfiguration tableCfg,
- @InjectConfiguration(
- polymorphicExtensions = {
- SortedIndexConfigurationSchema.class,
- UnknownDataStorageConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class
- }
+ value = "mock.tables.foo.dataStorage.name = " +
RocksDbStorageEngine.ENGINE_NAME
)
TablesConfiguration tablesConfig
) {
@@ -77,7 +68,7 @@ public class RocksDbSortedIndexStorageTest extends
AbstractSortedIndexStorageTes
engine.start();
- tableStorage = engine.createMvTable(tableCfg, tablesConfig);
+ tableStorage = engine.createMvTable(tablesConfig.tables().get("foo"),
tablesConfig);
tableStorage.start();